feat: auto create config folder and player network

This commit is contained in:
Justin Lin committed 2024-10-16 14:13:41 +08:00
1 parent 91ebaec22c
commit b449d84c54
5 files changed
+25 -2

No files matched your search

+13
View File
@@ -47,9 +47,22 @@ export async function createContainer(
]
}
const option = newContainerOptions(name, imageId, { binds })
await createNetworkIfNotExists(config.docker.network)
return engine.createContainer(option)
}
async function createNetworkIfNotExists(network: string) {
const dockerNetworks = await engine.listNetworks({
filters: {
name: [network],
},
})
if (dockerNetworks.length === 0) {
console.log('Creating player network', network)
await engine.createNetwork({ Name: network })
}
}
async function questHomeExists(imageId: string) {
try {
const stat = await fs.stat(`${config.projectRoot}/quests/${imageId}/home`)
+5
View File
@@ -1,4 +1,5 @@
import fs from 'fs'
import path from 'path'
import ssh2 from 'ssh2'
const {
@@ -17,6 +18,10 @@ export function loadOrCreateKeyPair(privateKeyPath: string): KeyPair {
const publicKey = fs.readFileSync(publicKeyPath, 'utf8')
return { privateKey, publicKey }
}
const dir = path.dirname(privateKeyPath)
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true })
}
const keyPair = generateKeyPair()
fs.writeFileSync(privateKeyPath, keyPair.privateKey, {
mode: 0o600,