tambahan
This commit is contained in:
22
bin/g3n.ts
22
bin/g3n.ts
@@ -173,7 +173,27 @@ function handleCompose(name?: string): void {
|
||||
return;
|
||||
}
|
||||
|
||||
compose(name);
|
||||
if (!args.env) {
|
||||
console.error("❌ Compose env (staging/prod) is required");
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.env !== "staging" && args.env !== "prod") {
|
||||
console.error("❌ Compose env (staging/prod) is required");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!args.port) {
|
||||
console.error("❌ Compose port is required");
|
||||
return;
|
||||
}
|
||||
|
||||
if(args.port.length !== 2) {
|
||||
console.error("❌ Compose port must be 2 digits");
|
||||
return;
|
||||
}
|
||||
|
||||
compose(name, args.env, Number(args.port));
|
||||
console.log(`✅ Compose file generated for ${name}`);
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ networks:
|
||||
`
|
||||
}
|
||||
|
||||
const generate = (name: string) => {
|
||||
const generate = (name: string, env: "staging" | "prod", port: number) => {
|
||||
return `
|
||||
#!/bin/bash
|
||||
|
||||
@@ -86,7 +86,9 @@ echo "Generating directory..."
|
||||
mkdir -p data data/app data/postgres data/frpc data/ssh
|
||||
|
||||
echo "Generating authorized_keys..."
|
||||
touch data/ssh/authorized_keys
|
||||
cat << EOF > data/ssh/authorized_keys
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDfXPd7ab21qdKtKKdv2bLxIa9hEqq2oLLj7c3i/rN2f bip@bips-Air
|
||||
EOF
|
||||
|
||||
echo "Generating frpc.toml..."
|
||||
touch data/frpc/frpc.toml
|
||||
@@ -102,31 +104,31 @@ transport.tls.enable = true
|
||||
|
||||
auth_token = ""
|
||||
|
||||
[ssh-cld-dkr-staging-${name}.wibudev.com]
|
||||
[ssh-cld-dkr-${env}-${name}.wibudev.com]
|
||||
type = tcp
|
||||
local_ip = ${name}-dev
|
||||
local_port = 22
|
||||
remote_port = 5102
|
||||
remote_port = 51${port}
|
||||
|
||||
[postgres-cld-dkr-staging-${name}.wibudev.com]
|
||||
[postgres-cld-dkr-${env}-${name}.wibudev.com]
|
||||
type = tcp
|
||||
local_ip = ${name}-postgres
|
||||
local_port = 5432
|
||||
remote_port = 5202
|
||||
remote_port = 52${port}
|
||||
|
||||
[cld-dkr-staging-${name}.wibudev.com]
|
||||
[cld-dkr-${env}-${name}.wibudev.com]
|
||||
type = http
|
||||
local_ip = ${name}-prod
|
||||
local_port = 3000
|
||||
custom_domains = "cld-dkr-staging-${name}.wibudev.com"
|
||||
custom_domains = "cld-dkr-${env}-${name}.wibudev.com"
|
||||
EOF
|
||||
`
|
||||
}
|
||||
|
||||
async function compose(name: string) {
|
||||
async function compose(name: string, env: "staging" | "prod", port: number) {
|
||||
const composeFile = text(name);
|
||||
await fs.writeFile(`./compose.yml`, composeFile);
|
||||
Bun.spawnSync(["bash", "-c", generate(name)]);
|
||||
Bun.spawnSync(["bash", "-c", generate(name, env, port)]);
|
||||
console.log("✅ Compose file generated");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user