@factiii/stack 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +420 -0
- package/bin/factiii +229 -0
- package/dist/cli/check-config.d.ts +9 -0
- package/dist/cli/check-config.d.ts.map +1 -0
- package/dist/cli/check-config.js +19 -0
- package/dist/cli/check-config.js.map +1 -0
- package/dist/cli/deploy-secrets.d.ts +16 -0
- package/dist/cli/deploy-secrets.d.ts.map +1 -0
- package/dist/cli/deploy-secrets.js +227 -0
- package/dist/cli/deploy-secrets.js.map +1 -0
- package/dist/cli/deploy.d.ts +30 -0
- package/dist/cli/deploy.d.ts.map +1 -0
- package/dist/cli/deploy.js +306 -0
- package/dist/cli/deploy.js.map +1 -0
- package/dist/cli/deployer.d.ts +13 -0
- package/dist/cli/deployer.d.ts.map +1 -0
- package/dist/cli/deployer.js +21 -0
- package/dist/cli/deployer.js.map +1 -0
- package/dist/cli/dev-sync.d.ts +30 -0
- package/dist/cli/dev-sync.d.ts.map +1 -0
- package/dist/cli/dev-sync.js +500 -0
- package/dist/cli/dev-sync.js.map +1 -0
- package/dist/cli/execute-plugin-command.d.ts +25 -0
- package/dist/cli/execute-plugin-command.d.ts.map +1 -0
- package/dist/cli/execute-plugin-command.js +237 -0
- package/dist/cli/execute-plugin-command.js.map +1 -0
- package/dist/cli/fix.d.ts +22 -0
- package/dist/cli/fix.d.ts.map +1 -0
- package/dist/cli/fix.js +267 -0
- package/dist/cli/fix.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +31 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +9 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +190 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/plugin-commands.d.ts +22 -0
- package/dist/cli/plugin-commands.d.ts.map +1 -0
- package/dist/cli/plugin-commands.js +121 -0
- package/dist/cli/plugin-commands.js.map +1 -0
- package/dist/cli/scan.d.ts +66 -0
- package/dist/cli/scan.d.ts.map +1 -0
- package/dist/cli/scan.js +511 -0
- package/dist/cli/scan.js.map +1 -0
- package/dist/cli/secrets.d.ts +19 -0
- package/dist/cli/secrets.d.ts.map +1 -0
- package/dist/cli/secrets.js +318 -0
- package/dist/cli/secrets.js.map +1 -0
- package/dist/cli/undeploy.d.ts +9 -0
- package/dist/cli/undeploy.d.ts.map +1 -0
- package/dist/cli/undeploy.js +95 -0
- package/dist/cli/undeploy.js.map +1 -0
- package/dist/cli/upgrade.d.ts +9 -0
- package/dist/cli/upgrade.d.ts.map +1 -0
- package/dist/cli/upgrade.js +24 -0
- package/dist/cli/upgrade.js.map +1 -0
- package/dist/cli/validate.d.ts +9 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +20 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/generators/generate-factiii-auto.d.ts +31 -0
- package/dist/generators/generate-factiii-auto.d.ts.map +1 -0
- package/dist/generators/generate-factiii-auto.js +251 -0
- package/dist/generators/generate-factiii-auto.js.map +1 -0
- package/dist/generators/generate-factiii-yml.d.ts +23 -0
- package/dist/generators/generate-factiii-yml.d.ts.map +1 -0
- package/dist/generators/generate-factiii-yml.js +228 -0
- package/dist/generators/generate-factiii-yml.js.map +1 -0
- package/dist/generators/index.d.ts +8 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +14 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/addons/server-mode/index.d.ts +57 -0
- package/dist/plugins/addons/server-mode/index.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/index.js +136 -0
- package/dist/plugins/addons/server-mode/index.js.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.d.ts +17 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.js +461 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.js.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.d.ts +12 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.js +246 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.js.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.d.ts +14 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.js +113 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.js.map +1 -0
- package/dist/plugins/approved.json +13 -0
- package/dist/plugins/frameworks/prisma-trpc/index.d.ts +65 -0
- package/dist/plugins/frameworks/prisma-trpc/index.d.ts.map +1 -0
- package/dist/plugins/frameworks/prisma-trpc/index.js +668 -0
- package/dist/plugins/frameworks/prisma-trpc/index.js.map +1 -0
- package/dist/plugins/index.d.ts +101 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +411 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/interfaces/addon.d.ts +43 -0
- package/dist/plugins/interfaces/addon.d.ts.map +1 -0
- package/dist/plugins/interfaces/addon.js +53 -0
- package/dist/plugins/interfaces/addon.js.map +1 -0
- package/dist/plugins/interfaces/framework.d.ts +43 -0
- package/dist/plugins/interfaces/framework.d.ts.map +1 -0
- package/dist/plugins/interfaces/framework.js +53 -0
- package/dist/plugins/interfaces/framework.js.map +1 -0
- package/dist/plugins/interfaces/index.d.ts +10 -0
- package/dist/plugins/interfaces/index.d.ts.map +1 -0
- package/dist/plugins/interfaces/index.js +17 -0
- package/dist/plugins/interfaces/index.js.map +1 -0
- package/dist/plugins/interfaces/pipeline.d.ts +78 -0
- package/dist/plugins/interfaces/pipeline.d.ts.map +1 -0
- package/dist/plugins/interfaces/pipeline.js +82 -0
- package/dist/plugins/interfaces/pipeline.js.map +1 -0
- package/dist/plugins/interfaces/server.d.ts +65 -0
- package/dist/plugins/interfaces/server.d.ts.map +1 -0
- package/dist/plugins/interfaces/server.js +72 -0
- package/dist/plugins/interfaces/server.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/ec2.d.ts +9 -0
- package/dist/plugins/pipelines/aws/configs/ec2.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/ec2.js +34 -0
- package/dist/plugins/pipelines/aws/configs/ec2.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.d.ts +13 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.js +86 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/index.d.ts +14 -0
- package/dist/plugins/pipelines/aws/configs/index.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/index.js +21 -0
- package/dist/plugins/pipelines/aws/configs/index.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/types.d.ts +36 -0
- package/dist/plugins/pipelines/aws/configs/types.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/types.js +9 -0
- package/dist/plugins/pipelines/aws/configs/types.js.map +1 -0
- package/dist/plugins/pipelines/aws/dev.d.ts +10 -0
- package/dist/plugins/pipelines/aws/dev.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/dev.js +70 -0
- package/dist/plugins/pipelines/aws/dev.js.map +1 -0
- package/dist/plugins/pipelines/aws/index.d.ts +118 -0
- package/dist/plugins/pipelines/aws/index.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/index.js +346 -0
- package/dist/plugins/pipelines/aws/index.js.map +1 -0
- package/dist/plugins/pipelines/aws/prod.d.ts +19 -0
- package/dist/plugins/pipelines/aws/prod.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/prod.js +362 -0
- package/dist/plugins/pipelines/aws/prod.js.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts +7 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.js +31 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.js.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/config.d.ts +7 -0
- package/dist/plugins/pipelines/aws/scanfix/config.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/config.js +134 -0
- package/dist/plugins/pipelines/aws/scanfix/config.js.map +1 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts +65 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.js +221 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.js.map +1 -0
- package/dist/plugins/pipelines/factiii/index.d.ts +195 -0
- package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/index.js +862 -0
- package/dist/plugins/pipelines/factiii/index.js.map +1 -0
- package/dist/plugins/pipelines/factiii/prod.d.ts +17 -0
- package/dist/plugins/pipelines/factiii/prod.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/prod.js +282 -0
- package/dist/plugins/pipelines/factiii/prod.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.js +80 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.js +43 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js +237 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js +169 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js.map +1 -0
- package/dist/plugins/pipelines/factiii/staging.d.ts +25 -0
- package/dist/plugins/pipelines/factiii/staging.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/staging.js +223 -0
- package/dist/plugins/pipelines/factiii/staging.js.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/detection.d.ts +36 -0
- package/dist/plugins/pipelines/factiii/utils/detection.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/detection.js +140 -0
- package/dist/plugins/pipelines/factiii/utils/detection.js.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.d.ts +16 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.js +129 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.js.map +1 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-prod.yml +112 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-staging.yml +112 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-command.yml +130 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-deploy.yml +198 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-dev-sync.yml +179 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-fix.yml +176 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-scan.yml +176 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-undeploy.yml +95 -0
- package/dist/plugins/servers/amazon-linux/index.d.ts +93 -0
- package/dist/plugins/servers/amazon-linux/index.d.ts.map +1 -0
- package/dist/plugins/servers/amazon-linux/index.js +217 -0
- package/dist/plugins/servers/amazon-linux/index.js.map +1 -0
- package/dist/plugins/servers/mac/dev.d.ts +10 -0
- package/dist/plugins/servers/mac/dev.d.ts.map +1 -0
- package/dist/plugins/servers/mac/dev.js +71 -0
- package/dist/plugins/servers/mac/dev.js.map +1 -0
- package/dist/plugins/servers/mac/index.d.ts +101 -0
- package/dist/plugins/servers/mac/index.d.ts.map +1 -0
- package/dist/plugins/servers/mac/index.js +257 -0
- package/dist/plugins/servers/mac/index.js.map +1 -0
- package/dist/plugins/servers/mac/scanfix/config.d.ts +7 -0
- package/dist/plugins/servers/mac/scanfix/config.d.ts.map +1 -0
- package/dist/plugins/servers/mac/scanfix/config.js +168 -0
- package/dist/plugins/servers/mac/scanfix/config.js.map +1 -0
- package/dist/plugins/servers/mac/scanfix/containers.d.ts +7 -0
- package/dist/plugins/servers/mac/scanfix/containers.d.ts.map +1 -0
- package/dist/plugins/servers/mac/scanfix/containers.js +167 -0
- package/dist/plugins/servers/mac/scanfix/containers.js.map +1 -0
- package/dist/plugins/servers/mac/scanfix/system.d.ts +7 -0
- package/dist/plugins/servers/mac/scanfix/system.d.ts.map +1 -0
- package/dist/plugins/servers/mac/scanfix/system.js +144 -0
- package/dist/plugins/servers/mac/scanfix/system.js.map +1 -0
- package/dist/plugins/servers/mac/staging.d.ts +21 -0
- package/dist/plugins/servers/mac/staging.d.ts.map +1 -0
- package/dist/plugins/servers/mac/staging.js +708 -0
- package/dist/plugins/servers/mac/staging.js.map +1 -0
- package/dist/plugins/servers/ubuntu/index.d.ts +93 -0
- package/dist/plugins/servers/ubuntu/index.d.ts.map +1 -0
- package/dist/plugins/servers/ubuntu/index.js +224 -0
- package/dist/plugins/servers/ubuntu/index.js.map +1 -0
- package/dist/plugins/servers/windows/index.d.ts +90 -0
- package/dist/plugins/servers/windows/index.d.ts.map +1 -0
- package/dist/plugins/servers/windows/index.js +205 -0
- package/dist/plugins/servers/windows/index.js.map +1 -0
- package/dist/scanfix/commands/index.d.ts +27 -0
- package/dist/scanfix/commands/index.d.ts.map +1 -0
- package/dist/scanfix/commands/index.js +97 -0
- package/dist/scanfix/commands/index.js.map +1 -0
- package/dist/scanfix/commands/mac.d.ts +11 -0
- package/dist/scanfix/commands/mac.d.ts.map +1 -0
- package/dist/scanfix/commands/mac.js +31 -0
- package/dist/scanfix/commands/mac.js.map +1 -0
- package/dist/scanfix/commands/ubuntu.d.ts +11 -0
- package/dist/scanfix/commands/ubuntu.d.ts.map +1 -0
- package/dist/scanfix/commands/ubuntu.js +30 -0
- package/dist/scanfix/commands/ubuntu.js.map +1 -0
- package/dist/scanfix/fixes/certbot.d.ts +25 -0
- package/dist/scanfix/fixes/certbot.d.ts.map +1 -0
- package/dist/scanfix/fixes/certbot.js +136 -0
- package/dist/scanfix/fixes/certbot.js.map +1 -0
- package/dist/scanfix/fixes/docker.d.ts +29 -0
- package/dist/scanfix/fixes/docker.d.ts.map +1 -0
- package/dist/scanfix/fixes/docker.js +149 -0
- package/dist/scanfix/fixes/docker.js.map +1 -0
- package/dist/scanfix/fixes/git.d.ts +20 -0
- package/dist/scanfix/fixes/git.d.ts.map +1 -0
- package/dist/scanfix/fixes/git.js +71 -0
- package/dist/scanfix/fixes/git.js.map +1 -0
- package/dist/scanfix/fixes/index.d.ts +11 -0
- package/dist/scanfix/fixes/index.d.ts.map +1 -0
- package/dist/scanfix/fixes/index.js +27 -0
- package/dist/scanfix/fixes/index.js.map +1 -0
- package/dist/scanfix/fixes/node.d.ts +20 -0
- package/dist/scanfix/fixes/node.d.ts.map +1 -0
- package/dist/scanfix/fixes/node.js +71 -0
- package/dist/scanfix/fixes/node.js.map +1 -0
- package/dist/scanfix/fixes/pnpm.d.ts +20 -0
- package/dist/scanfix/fixes/pnpm.d.ts.map +1 -0
- package/dist/scanfix/fixes/pnpm.js +122 -0
- package/dist/scanfix/fixes/pnpm.js.map +1 -0
- package/dist/scanfix/index.d.ts +23 -0
- package/dist/scanfix/index.d.ts.map +1 -0
- package/dist/scanfix/index.js +44 -0
- package/dist/scanfix/index.js.map +1 -0
- package/dist/scanfix/platform.d.ts +20 -0
- package/dist/scanfix/platform.d.ts.map +1 -0
- package/dist/scanfix/platform.js +48 -0
- package/dist/scanfix/platform.js.map +1 -0
- package/dist/scanfix/ssl-cert-helper.d.ts +27 -0
- package/dist/scanfix/ssl-cert-helper.d.ts.map +1 -0
- package/dist/scanfix/ssl-cert-helper.js +117 -0
- package/dist/scanfix/ssl-cert-helper.js.map +1 -0
- package/dist/scanfix/types.d.ts +27 -0
- package/dist/scanfix/types.d.ts.map +1 -0
- package/dist/scanfix/types.js +8 -0
- package/dist/scanfix/types.js.map +1 -0
- package/dist/scripts/check-existing-secrets.d.ts +6 -0
- package/dist/scripts/check-existing-secrets.d.ts.map +1 -0
- package/dist/scripts/check-existing-secrets.js +86 -0
- package/dist/scripts/check-existing-secrets.js.map +1 -0
- package/dist/scripts/generate-all.d.ts +40 -0
- package/dist/scripts/generate-all.d.ts.map +1 -0
- package/dist/scripts/generate-all.js +373 -0
- package/dist/scripts/generate-all.js.map +1 -0
- package/dist/scripts/get-repo-name.d.ts +6 -0
- package/dist/scripts/get-repo-name.d.ts.map +1 -0
- package/dist/scripts/get-repo-name.js +54 -0
- package/dist/scripts/get-repo-name.js.map +1 -0
- package/dist/scripts/index.d.ts +7 -0
- package/dist/scripts/index.d.ts.map +1 -0
- package/dist/scripts/index.js +14 -0
- package/dist/scripts/index.js.map +1 -0
- package/dist/scripts/validate-env-files.d.ts +6 -0
- package/dist/scripts/validate-env-files.d.ts.map +1 -0
- package/dist/scripts/validate-env-files.js +126 -0
- package/dist/scripts/validate-env-files.js.map +1 -0
- package/dist/scripts/validate-example-values.d.ts +8 -0
- package/dist/scripts/validate-example-values.d.ts.map +1 -0
- package/dist/scripts/validate-example-values.js +88 -0
- package/dist/scripts/validate-example-values.js.map +1 -0
- package/dist/scripts/validate-factiii-yml.d.ts +6 -0
- package/dist/scripts/validate-factiii-yml.d.ts.map +1 -0
- package/dist/scripts/validate-factiii-yml.js +71 -0
- package/dist/scripts/validate-factiii-yml.js.map +1 -0
- package/dist/types/cli.d.ts +138 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +8 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/config.d.ts +113 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +8 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +25 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/plugin.d.ts +352 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +8 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/utils/ansible-vault-secrets.d.ts +95 -0
- package/dist/utils/ansible-vault-secrets.d.ts.map +1 -0
- package/dist/utils/ansible-vault-secrets.js +406 -0
- package/dist/utils/ansible-vault-secrets.js.map +1 -0
- package/dist/utils/config-helpers.d.ts +72 -0
- package/dist/utils/config-helpers.d.ts.map +1 -0
- package/dist/utils/config-helpers.js +171 -0
- package/dist/utils/config-helpers.js.map +1 -0
- package/dist/utils/config-schema.d.ts +17 -0
- package/dist/utils/config-schema.d.ts.map +1 -0
- package/dist/utils/config-schema.js +100 -0
- package/dist/utils/config-schema.js.map +1 -0
- package/dist/utils/config-validator.d.ts +29 -0
- package/dist/utils/config-validator.d.ts.map +1 -0
- package/dist/utils/config-validator.js +146 -0
- package/dist/utils/config-validator.js.map +1 -0
- package/dist/utils/deployment-report.d.ts +100 -0
- package/dist/utils/deployment-report.d.ts.map +1 -0
- package/dist/utils/deployment-report.js +225 -0
- package/dist/utils/deployment-report.js.map +1 -0
- package/dist/utils/dns-validator.d.ts +19 -0
- package/dist/utils/dns-validator.d.ts.map +1 -0
- package/dist/utils/dns-validator.js +94 -0
- package/dist/utils/dns-validator.js.map +1 -0
- package/dist/utils/env-validator.d.ts +108 -0
- package/dist/utils/env-validator.d.ts.map +1 -0
- package/dist/utils/env-validator.js +342 -0
- package/dist/utils/env-validator.js.map +1 -0
- package/dist/utils/github-workflow-monitor.d.ts +49 -0
- package/dist/utils/github-workflow-monitor.d.ts.map +1 -0
- package/dist/utils/github-workflow-monitor.js +145 -0
- package/dist/utils/github-workflow-monitor.js.map +1 -0
- package/dist/utils/index.d.ts +18 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +48 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/secret-prompts.d.ts +67 -0
- package/dist/utils/secret-prompts.d.ts.map +1 -0
- package/dist/utils/secret-prompts.js +369 -0
- package/dist/utils/secret-prompts.js.map +1 -0
- package/dist/utils/server-check.d.ts +43 -0
- package/dist/utils/server-check.d.ts.map +1 -0
- package/dist/utils/server-check.js +397 -0
- package/dist/utils/server-check.js.map +1 -0
- package/dist/utils/ssh-deploy.d.ts +70 -0
- package/dist/utils/ssh-deploy.d.ts.map +1 -0
- package/dist/utils/ssh-deploy.js +268 -0
- package/dist/utils/ssh-deploy.js.map +1 -0
- package/dist/utils/ssh-helper.d.ts +40 -0
- package/dist/utils/ssh-helper.d.ts.map +1 -0
- package/dist/utils/ssh-helper.js +221 -0
- package/dist/utils/ssh-helper.js.map +1 -0
- package/dist/utils/template-generator.d.ts +42 -0
- package/dist/utils/template-generator.d.ts.map +1 -0
- package/dist/utils/template-generator.js +223 -0
- package/dist/utils/template-generator.js.map +1 -0
- package/dist/utils/version-check.d.ts +69 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +211 -0
- package/dist/utils/version-check.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dev Sync Command
|
|
3
|
+
*
|
|
4
|
+
* DEV/TESTING ONLY - Syncs locally built infrastructure to remote servers
|
|
5
|
+
* for testing beta features of @factiii/stack itself before releasing.
|
|
6
|
+
*
|
|
7
|
+
* SETUP:
|
|
8
|
+
* In repositories you are testing with, add this to package.json:
|
|
9
|
+
* "devDependencies": {
|
|
10
|
+
* "@factiii/stack": "link:../infrastructure"
|
|
11
|
+
* }
|
|
12
|
+
*
|
|
13
|
+
* Then use dev-sync to SSH and copy/paste the current infrastructure folder
|
|
14
|
+
* to staging/prod servers. This simulates pulling from npm without having
|
|
15
|
+
* the package published to npm.
|
|
16
|
+
*
|
|
17
|
+
* PRODUCTION:
|
|
18
|
+
* When @factiii/stack is published to npm, this command will be disabled.
|
|
19
|
+
* Production deployments will use npm to install @factiii/stack normally,
|
|
20
|
+
* so no infrastructure folder will exist on servers - npm handles it.
|
|
21
|
+
*
|
|
22
|
+
* This is NOT for testing app code - only for developing the infrastructure package.
|
|
23
|
+
* Uses direct SCP to transfer infrastructure to servers (no GitHub releases/workflows).
|
|
24
|
+
*/
|
|
25
|
+
import type { DevSyncOptions } from '../types/index.js';
|
|
26
|
+
/**
|
|
27
|
+
* Dev sync command - sync locally built infrastructure to servers
|
|
28
|
+
*/
|
|
29
|
+
export declare function devSync(options?: DevSyncOptions): Promise<void>;
|
|
30
|
+
//# sourceMappingURL=dev-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-sync.d.ts","sourceRoot":"","sources":["../../src/cli/dev-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAUH,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAybvE;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EzE"}
|
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dev Sync Command
|
|
4
|
+
*
|
|
5
|
+
* DEV/TESTING ONLY - Syncs locally built infrastructure to remote servers
|
|
6
|
+
* for testing beta features of @factiii/stack itself before releasing.
|
|
7
|
+
*
|
|
8
|
+
* SETUP:
|
|
9
|
+
* In repositories you are testing with, add this to package.json:
|
|
10
|
+
* "devDependencies": {
|
|
11
|
+
* "@factiii/stack": "link:../infrastructure"
|
|
12
|
+
* }
|
|
13
|
+
*
|
|
14
|
+
* Then use dev-sync to SSH and copy/paste the current infrastructure folder
|
|
15
|
+
* to staging/prod servers. This simulates pulling from npm without having
|
|
16
|
+
* the package published to npm.
|
|
17
|
+
*
|
|
18
|
+
* PRODUCTION:
|
|
19
|
+
* When @factiii/stack is published to npm, this command will be disabled.
|
|
20
|
+
* Production deployments will use npm to install @factiii/stack normally,
|
|
21
|
+
* so no infrastructure folder will exist on servers - npm handles it.
|
|
22
|
+
*
|
|
23
|
+
* This is NOT for testing app code - only for developing the infrastructure package.
|
|
24
|
+
* Uses direct SCP to transfer infrastructure to servers (no GitHub releases/workflows).
|
|
25
|
+
*/
|
|
26
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
27
|
+
if (k2 === undefined) k2 = k;
|
|
28
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
29
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
30
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
31
|
+
}
|
|
32
|
+
Object.defineProperty(o, k2, desc);
|
|
33
|
+
}) : (function(o, m, k, k2) {
|
|
34
|
+
if (k2 === undefined) k2 = k;
|
|
35
|
+
o[k2] = m[k];
|
|
36
|
+
}));
|
|
37
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
38
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
39
|
+
}) : function(o, v) {
|
|
40
|
+
o["default"] = v;
|
|
41
|
+
});
|
|
42
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
43
|
+
var ownKeys = function(o) {
|
|
44
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
45
|
+
var ar = [];
|
|
46
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
47
|
+
return ar;
|
|
48
|
+
};
|
|
49
|
+
return ownKeys(o);
|
|
50
|
+
};
|
|
51
|
+
return function (mod) {
|
|
52
|
+
if (mod && mod.__esModule) return mod;
|
|
53
|
+
var result = {};
|
|
54
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
55
|
+
__setModuleDefault(result, mod);
|
|
56
|
+
return result;
|
|
57
|
+
};
|
|
58
|
+
})();
|
|
59
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
60
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
61
|
+
};
|
|
62
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
63
|
+
exports.devSync = devSync;
|
|
64
|
+
const fs = __importStar(require("fs"));
|
|
65
|
+
const path = __importStar(require("path"));
|
|
66
|
+
const os = __importStar(require("os"));
|
|
67
|
+
const readline = __importStar(require("readline"));
|
|
68
|
+
const child_process = __importStar(require("child_process"));
|
|
69
|
+
const util_1 = require("util");
|
|
70
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
71
|
+
const config_helpers_js_1 = require("../utils/config-helpers.js");
|
|
72
|
+
const exec = (0, util_1.promisify)(child_process.exec);
|
|
73
|
+
/**
|
|
74
|
+
* Get path to dev-sync config file
|
|
75
|
+
*/
|
|
76
|
+
function getDevSyncConfigPath() {
|
|
77
|
+
const homeDir = os.homedir();
|
|
78
|
+
const factiiiDir = path.join(homeDir, '.factiii');
|
|
79
|
+
return path.join(factiiiDir, 'dev-sync.json');
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Load dev-sync config from ~/.factiii/dev-sync.json
|
|
83
|
+
*/
|
|
84
|
+
function loadDevSyncConfig() {
|
|
85
|
+
const configPath = getDevSyncConfigPath();
|
|
86
|
+
if (!fs.existsSync(configPath)) {
|
|
87
|
+
return { sshKeys: {} };
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
const content = fs.readFileSync(configPath, 'utf8');
|
|
91
|
+
const config = JSON.parse(content);
|
|
92
|
+
return config || { sshKeys: {} };
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
// If config file is corrupted, return empty config
|
|
96
|
+
console.warn(`[!] Could not read dev-sync config: ${error instanceof Error ? error.message : String(error)}`);
|
|
97
|
+
return { sshKeys: {} };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Save dev-sync config to ~/.factiii/dev-sync.json
|
|
102
|
+
*/
|
|
103
|
+
function saveDevSyncConfig(config) {
|
|
104
|
+
const configPath = getDevSyncConfigPath();
|
|
105
|
+
const factiiiDir = path.dirname(configPath);
|
|
106
|
+
// Create ~/.factiii directory if it doesn't exist
|
|
107
|
+
if (!fs.existsSync(factiiiDir)) {
|
|
108
|
+
fs.mkdirSync(factiiiDir, { mode: 0o700 });
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', { mode: 0o600 });
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.warn(`[!] Could not save dev-sync config: ${error instanceof Error ? error.message : String(error)}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Load config from factiii.yml
|
|
119
|
+
*/
|
|
120
|
+
function loadConfig(rootDir) {
|
|
121
|
+
const configPath = path.join(rootDir, 'factiii.yml');
|
|
122
|
+
if (!fs.existsSync(configPath)) {
|
|
123
|
+
console.error('[ERROR] factiii.yml not found in current directory');
|
|
124
|
+
console.error(' Make sure you are running this from your app repository');
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
return js_yaml_1.default.load(fs.readFileSync(configPath, 'utf8')) ?? {};
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
132
|
+
console.error(`[ERROR] Error parsing factiii.yml: ${errorMessage}`);
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Find infrastructure path by looking for link: in package.json
|
|
138
|
+
*/
|
|
139
|
+
function findInfrastructurePath(rootDir) {
|
|
140
|
+
const packageJsonPath = path.join(rootDir, 'package.json');
|
|
141
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
142
|
+
console.error('[ERROR] package.json not found');
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
146
|
+
// Check devDependencies for link: dependency
|
|
147
|
+
const devDeps = packageJson.devDependencies || {};
|
|
148
|
+
const factiiiStack = devDeps['@factiii/stack'];
|
|
149
|
+
if (!factiiiStack || !factiiiStack.startsWith('link:')) {
|
|
150
|
+
console.error('[ERROR] No link: dependency found for @factiii/stack in package.json');
|
|
151
|
+
console.error(' Expected: "@factiii/stack": "link:/path/to/infrastructure"');
|
|
152
|
+
console.error(' This command requires a local link to the infrastructure package');
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
// Extract path from link:
|
|
156
|
+
const infraPath = factiiiStack.replace('link:', '');
|
|
157
|
+
const resolvedPath = path.resolve(rootDir, infraPath);
|
|
158
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
159
|
+
console.error(`[ERROR] Infrastructure path not found: ${resolvedPath}`);
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
return resolvedPath;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get target environments based on config and options
|
|
166
|
+
* Supports both v1.x and v2.0.0 config formats
|
|
167
|
+
*/
|
|
168
|
+
function getTargetEnvironments(config, options) {
|
|
169
|
+
const environments = [];
|
|
170
|
+
const allEnvs = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
171
|
+
const envNames = Object.keys(allEnvs);
|
|
172
|
+
if (options.staging) {
|
|
173
|
+
// Look for any staging-type environment
|
|
174
|
+
const stagingEnv = envNames.find(name => name.startsWith('staging') || name.startsWith('stage-'));
|
|
175
|
+
if (stagingEnv) {
|
|
176
|
+
environments.push(stagingEnv);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
console.warn('[!] Staging environment not configured in factiii.yml');
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (options.prod) {
|
|
183
|
+
// Look for any prod-type environment
|
|
184
|
+
const prodEnv = envNames.find(name => name.startsWith('prod') || name === 'production');
|
|
185
|
+
if (prodEnv) {
|
|
186
|
+
environments.push(prodEnv);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
console.warn('[!] Production environment not configured in factiii.yml');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// If no specific environment specified, sync to all configured
|
|
193
|
+
if (!options.staging && !options.prod) {
|
|
194
|
+
// Add all configured environments
|
|
195
|
+
environments.push(...envNames);
|
|
196
|
+
}
|
|
197
|
+
if (environments.length === 0) {
|
|
198
|
+
console.error('[ERROR] No environments configured in factiii.yml');
|
|
199
|
+
console.error(' Add staging and/or prod environments to factiii.yml');
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
202
|
+
return environments;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Auto-increment dev version in package.json
|
|
206
|
+
* Converts 2.0.1 -> 2.0.1-d1, or 2.0.1-d1 -> 2.0.1-d2
|
|
207
|
+
*/
|
|
208
|
+
function incrementDevVersion(infraPath) {
|
|
209
|
+
const packageJsonPath = path.join(infraPath, 'package.json');
|
|
210
|
+
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
211
|
+
let version = pkg.version;
|
|
212
|
+
// If has -d suffix, increment; otherwise add -d1
|
|
213
|
+
if (version.includes('-d')) {
|
|
214
|
+
const match = version.match(/-d(\d+)$/);
|
|
215
|
+
if (match) {
|
|
216
|
+
const num = parseInt(match[1], 10) + 1;
|
|
217
|
+
version = version.replace(/-d\d+$/, `-d${num}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
version = `${version}-d1`;
|
|
222
|
+
}
|
|
223
|
+
// Update package.json
|
|
224
|
+
pkg.version = version;
|
|
225
|
+
fs.writeFileSync(packageJsonPath, JSON.stringify(pkg, null, 2) + '\n');
|
|
226
|
+
return version;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Build infrastructure locally
|
|
230
|
+
*/
|
|
231
|
+
async function buildInfrastructure(infraPath) {
|
|
232
|
+
console.log('Building infrastructure locally...');
|
|
233
|
+
try {
|
|
234
|
+
const { stdout, stderr } = await exec('npm run build', {
|
|
235
|
+
cwd: infraPath,
|
|
236
|
+
env: { ...process.env, NODE_ENV: 'production' }
|
|
237
|
+
});
|
|
238
|
+
if (stderr && !stderr.includes('npm WARN')) {
|
|
239
|
+
console.log(stderr);
|
|
240
|
+
}
|
|
241
|
+
console.log('[OK] Built successfully\n');
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
console.error('[ERROR] Build failed:');
|
|
245
|
+
if (error instanceof Error && 'stdout' in error) {
|
|
246
|
+
console.error(error.stdout);
|
|
247
|
+
console.error(error.stderr);
|
|
248
|
+
}
|
|
249
|
+
process.exit(1);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Create tarball of infrastructure
|
|
254
|
+
*/
|
|
255
|
+
async function createTarball(infraPath) {
|
|
256
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'factiii-dev-sync-'));
|
|
257
|
+
const tarPath = path.join(tmpDir, 'infrastructure.tar.gz');
|
|
258
|
+
console.log('Creating artifact...');
|
|
259
|
+
try {
|
|
260
|
+
// Create tar excluding node_modules and .git
|
|
261
|
+
await exec(`tar -czf "${tarPath}" --exclude='node_modules' --exclude='.git' --exclude='*.log' -C "${infraPath}" .`, { maxBuffer: 50 * 1024 * 1024 } // 50MB buffer
|
|
262
|
+
);
|
|
263
|
+
const stats = fs.statSync(tarPath);
|
|
264
|
+
const sizeMB = (stats.size / 1024 / 1024).toFixed(2);
|
|
265
|
+
console.log(`[OK] Artifact created (${sizeMB} MB)\n`);
|
|
266
|
+
return tarPath;
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
console.error('[ERROR] Failed to create tarball:');
|
|
270
|
+
console.error(error);
|
|
271
|
+
process.exit(1);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Get SSH key from environment, saved config, or prompt user
|
|
276
|
+
*/
|
|
277
|
+
async function getOrPromptSSHKey(environment) {
|
|
278
|
+
// Check environment variable first
|
|
279
|
+
const envVar = environment === 'staging' ? 'STAGING_SSH' : 'PROD_SSH';
|
|
280
|
+
const sshKeyFromEnv = process.env[envVar];
|
|
281
|
+
if (sshKeyFromEnv) {
|
|
282
|
+
// Check if it's a file path
|
|
283
|
+
if (fs.existsSync(sshKeyFromEnv)) {
|
|
284
|
+
// It's a file path - use it directly
|
|
285
|
+
return path.resolve(sshKeyFromEnv);
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
// It's the key content - save to temp file
|
|
289
|
+
const tmpDir = os.tmpdir();
|
|
290
|
+
const keyPath = path.join(tmpDir, `factiii-ssh-${environment}-${Date.now()}`);
|
|
291
|
+
fs.writeFileSync(keyPath, sshKeyFromEnv);
|
|
292
|
+
fs.chmodSync(keyPath, 0o600);
|
|
293
|
+
return keyPath;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// Check saved config file
|
|
297
|
+
const config = loadDevSyncConfig();
|
|
298
|
+
const configKey = environment === 'staging' ? 'stagingPath' : 'prodPath';
|
|
299
|
+
const savedPath = config.sshKeys[configKey];
|
|
300
|
+
if (savedPath && fs.existsSync(savedPath)) {
|
|
301
|
+
const resolvedPath = path.resolve(savedPath);
|
|
302
|
+
console.log(`[OK] Using saved SSH key path: ${resolvedPath}\n`);
|
|
303
|
+
return resolvedPath;
|
|
304
|
+
}
|
|
305
|
+
// If saved path doesn't exist, remove it from config
|
|
306
|
+
if (savedPath && !fs.existsSync(savedPath)) {
|
|
307
|
+
const updatedConfig = { ...config };
|
|
308
|
+
delete updatedConfig.sshKeys[configKey];
|
|
309
|
+
saveDevSyncConfig(updatedConfig);
|
|
310
|
+
}
|
|
311
|
+
// Prompt user for SSH key
|
|
312
|
+
console.log(`\nSSH key not found in ${envVar} environment variable`);
|
|
313
|
+
console.log(' Please provide your SSH private key for this environment');
|
|
314
|
+
console.log(' You can paste the key content or provide a file path');
|
|
315
|
+
console.log(' Note: File paths will be remembered for next time (key content will not be saved)\n');
|
|
316
|
+
const rl = readline.createInterface({
|
|
317
|
+
input: process.stdin,
|
|
318
|
+
output: process.stdout
|
|
319
|
+
});
|
|
320
|
+
return new Promise((resolve, reject) => {
|
|
321
|
+
rl.question('SSH key (paste content or file path): ', async (answer) => {
|
|
322
|
+
rl.close();
|
|
323
|
+
let keyPath;
|
|
324
|
+
const trimmed = answer.trim();
|
|
325
|
+
let isFilePath = false;
|
|
326
|
+
// Check if it's a file path
|
|
327
|
+
if (fs.existsSync(trimmed)) {
|
|
328
|
+
keyPath = path.resolve(trimmed);
|
|
329
|
+
isFilePath = true;
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
// It's the key content - save to temp file
|
|
333
|
+
const tmpDir = os.tmpdir();
|
|
334
|
+
keyPath = path.join(tmpDir, `factiii-ssh-${environment}-${Date.now()}`);
|
|
335
|
+
fs.writeFileSync(keyPath, trimmed);
|
|
336
|
+
fs.chmodSync(keyPath, 0o600);
|
|
337
|
+
isFilePath = false;
|
|
338
|
+
}
|
|
339
|
+
// Verify it's a valid key file
|
|
340
|
+
if (!fs.existsSync(keyPath)) {
|
|
341
|
+
console.error('[ERROR] SSH key file not found');
|
|
342
|
+
process.exit(1);
|
|
343
|
+
}
|
|
344
|
+
// Save file path to config for next time (only if it's a file path, not key content)
|
|
345
|
+
if (isFilePath) {
|
|
346
|
+
const updatedConfig = loadDevSyncConfig();
|
|
347
|
+
updatedConfig.sshKeys[configKey] = keyPath;
|
|
348
|
+
saveDevSyncConfig(updatedConfig);
|
|
349
|
+
console.log('[OK] SSH key path saved for next time\n');
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
console.log('[OK] Using SSH key (not saved - use file path to remember)\n');
|
|
353
|
+
}
|
|
354
|
+
resolve(keyPath);
|
|
355
|
+
});
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* SCP tarball to server and extract
|
|
360
|
+
*/
|
|
361
|
+
async function syncToServer(tarPath, environment, config, sshKeyPath) {
|
|
362
|
+
// Get environment config (supports both v1.x and v2.0.0 formats)
|
|
363
|
+
const allEnvs = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
364
|
+
const envConfig = allEnvs[environment];
|
|
365
|
+
if (!envConfig?.domain) {
|
|
366
|
+
console.error(`[ERROR] ${environment} domain not configured in factiii.yml`);
|
|
367
|
+
process.exit(1);
|
|
368
|
+
}
|
|
369
|
+
const host = envConfig.domain;
|
|
370
|
+
const user = envConfig.ssh_user || 'ubuntu';
|
|
371
|
+
console.log(`Syncing to ${environment} (${user}@${host})...`);
|
|
372
|
+
try {
|
|
373
|
+
// SCP tarball to server
|
|
374
|
+
console.log(' Uploading tarball...');
|
|
375
|
+
await exec(`scp -i "${sshKeyPath}" -o StrictHostKeyChecking=no "${tarPath}" "${user}@${host}:/tmp/infrastructure.tar.gz"`, { maxBuffer: 50 * 1024 * 1024 });
|
|
376
|
+
// SSH to server and extract
|
|
377
|
+
console.log(' Extracting on server...');
|
|
378
|
+
await exec(`ssh -i "${sshKeyPath}" -o StrictHostKeyChecking=no "${user}@${host}" \
|
|
379
|
+
"mkdir -p ~/.factiii/infrastructure && \
|
|
380
|
+
cd ~/.factiii/infrastructure && \
|
|
381
|
+
tar -xzf /tmp/infrastructure.tar.gz && \
|
|
382
|
+
rm /tmp/infrastructure.tar.gz && \
|
|
383
|
+
echo 'Installing infrastructure dependencies...' && \
|
|
384
|
+
export PATH=\"/opt/homebrew/bin:/usr/local/bin:\$PATH\" && \
|
|
385
|
+
if [ -f 'pnpm-lock.yaml' ]; then \
|
|
386
|
+
command -v pnpm >/dev/null 2>&1 || npm install -g pnpm && \
|
|
387
|
+
pnpm install; \
|
|
388
|
+
else \
|
|
389
|
+
npm install; \
|
|
390
|
+
fi && \
|
|
391
|
+
echo '[OK] Infrastructure synced successfully'"`);
|
|
392
|
+
console.log(` [OK] Synced to ${environment}\n`);
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
console.error(`[ERROR] Failed to sync to ${environment}:`);
|
|
396
|
+
if (error instanceof Error) {
|
|
397
|
+
console.error(` ${error.message}`);
|
|
398
|
+
}
|
|
399
|
+
throw error;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Deploy after sync (optional)
|
|
404
|
+
*/
|
|
405
|
+
async function deployAfterSync(environment, config, sshKeyPath) {
|
|
406
|
+
// Get environment config (supports both v1.x and v2.0.0 formats)
|
|
407
|
+
const allEnvs = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
408
|
+
const envConfig = allEnvs[environment];
|
|
409
|
+
if (!envConfig?.domain) {
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
const host = envConfig.domain;
|
|
413
|
+
const user = envConfig.ssh_user || 'ubuntu';
|
|
414
|
+
const repoName = config.name || 'app';
|
|
415
|
+
console.log(`Deploying to ${environment}...`);
|
|
416
|
+
try {
|
|
417
|
+
await exec(`ssh -i "${sshKeyPath}" -o StrictHostKeyChecking=no "${user}@${host}" \
|
|
418
|
+
"export PATH=\"/opt/homebrew/bin:/usr/local/bin:\$PATH\" && \
|
|
419
|
+
cd ~/.factiii/${repoName} && \
|
|
420
|
+
GITHUB_ACTIONS=true node ~/.factiii/infrastructure/bin/factiii deploy --${environment}"`);
|
|
421
|
+
console.log(` [OK] Deployed to ${environment}\n`);
|
|
422
|
+
}
|
|
423
|
+
catch (error) {
|
|
424
|
+
console.error(`[ERROR] Deployment failed for ${environment}:`);
|
|
425
|
+
if (error instanceof Error) {
|
|
426
|
+
console.error(` ${error.message}`);
|
|
427
|
+
}
|
|
428
|
+
throw error;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Dev sync command - sync locally built infrastructure to servers
|
|
433
|
+
*/
|
|
434
|
+
async function devSync(options = {}) {
|
|
435
|
+
const rootDir = options.rootDir ?? process.cwd();
|
|
436
|
+
console.log('DEV SYNC - Testing uncommitted infrastructure changes');
|
|
437
|
+
console.log('[!] This is a development command - not for production releases');
|
|
438
|
+
console.log('[!] Only for testing @factiii/stack beta features\n');
|
|
439
|
+
// 1. Load config and validate
|
|
440
|
+
const config = loadConfig(rootDir);
|
|
441
|
+
const infraPath = findInfrastructurePath(rootDir);
|
|
442
|
+
const environments = getTargetEnvironments(config, options);
|
|
443
|
+
console.log(`Infrastructure path: ${infraPath}`);
|
|
444
|
+
console.log(`Target environments: ${environments.join(', ')}\n`);
|
|
445
|
+
// 2. Increment dev version
|
|
446
|
+
const devVersion = incrementDevVersion(infraPath);
|
|
447
|
+
console.log(`Dev version: ${devVersion}\n`);
|
|
448
|
+
// 3. Build infrastructure locally
|
|
449
|
+
await buildInfrastructure(infraPath);
|
|
450
|
+
// 4. Create tarball
|
|
451
|
+
const tarPath = await createTarball(infraPath);
|
|
452
|
+
// 5. Sync to each environment
|
|
453
|
+
const sshKeyPaths = new Map();
|
|
454
|
+
const cleanupPaths = [];
|
|
455
|
+
try {
|
|
456
|
+
for (const env of environments) {
|
|
457
|
+
// Get SSH key for this environment
|
|
458
|
+
let sshKeyPath = sshKeyPaths.get(env);
|
|
459
|
+
if (!sshKeyPath) {
|
|
460
|
+
sshKeyPath = await getOrPromptSSHKey(env);
|
|
461
|
+
sshKeyPaths.set(env, sshKeyPath);
|
|
462
|
+
// Track temp files for cleanup (only if we created them)
|
|
463
|
+
if (sshKeyPath.includes(os.tmpdir())) {
|
|
464
|
+
cleanupPaths.push(sshKeyPath);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
// Sync to server
|
|
468
|
+
await syncToServer(tarPath, env, config, sshKeyPath);
|
|
469
|
+
// Optionally deploy
|
|
470
|
+
if (options.deploy) {
|
|
471
|
+
await deployAfterSync(env, config, sshKeyPath);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
console.log('[OK] Dev sync complete!');
|
|
475
|
+
}
|
|
476
|
+
catch (error) {
|
|
477
|
+
console.error('\n[ERROR] Dev sync failed');
|
|
478
|
+
throw error;
|
|
479
|
+
}
|
|
480
|
+
finally {
|
|
481
|
+
// Cleanup temp files
|
|
482
|
+
try {
|
|
483
|
+
// Remove tarball
|
|
484
|
+
if (fs.existsSync(tarPath)) {
|
|
485
|
+
fs.unlinkSync(tarPath);
|
|
486
|
+
fs.rmdirSync(path.dirname(tarPath));
|
|
487
|
+
}
|
|
488
|
+
// Remove SSH key temp files
|
|
489
|
+
for (const keyPath of cleanupPaths) {
|
|
490
|
+
if (fs.existsSync(keyPath)) {
|
|
491
|
+
fs.unlinkSync(keyPath);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
catch (error) {
|
|
496
|
+
// Ignore cleanup errors
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
//# sourceMappingURL=dev-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-sync.js","sourceRoot":"","sources":["../../src/cli/dev-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execute Plugin Command
|
|
3
|
+
*
|
|
4
|
+
* Executes plugin commands with proper stage routing.
|
|
5
|
+
* Follows the same pattern as deploy:
|
|
6
|
+
* 1. Determine target stage from --staging or --prod
|
|
7
|
+
* 2. Check prodSafety - block destructive ops without --force
|
|
8
|
+
* 3. Ask pipeline plugin canReach(stage)
|
|
9
|
+
* 4. If via: 'workflow' -> trigger workflow
|
|
10
|
+
* 5. If via: 'local' -> execute command directly
|
|
11
|
+
*/
|
|
12
|
+
import type { FactiiiConfig, Stage, Reachability, PluginCommand } from '../types/index.js';
|
|
13
|
+
/**
|
|
14
|
+
* Pipeline plugin class interface for commands
|
|
15
|
+
*/
|
|
16
|
+
interface PipelinePluginClass {
|
|
17
|
+
id: string;
|
|
18
|
+
canReach(stage: Stage, config: FactiiiConfig): Reachability;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Execute a plugin command with proper stage routing
|
|
22
|
+
*/
|
|
23
|
+
export declare function executePluginCommand(command: PluginCommand, options: Record<string, unknown>, pipelinePlugin: PipelinePluginClass): Promise<void>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=execute-plugin-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-plugin-command.d.ts","sourceRoot":"","sources":["../../src/cli/execute-plugin-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,YAAY,EACZ,aAAa,EAEd,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,GAAG,YAAY,CAAC;CAC7D;AAsHD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,cAAc,EAAE,mBAAmB,GAClC,OAAO,CAAC,IAAI,CAAC,CA4Ff"}
|