@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
package/dist/cli/scan.js
ADDED
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Scan Command
|
|
4
|
+
*
|
|
5
|
+
* Runs scan side of all plugin fixes.
|
|
6
|
+
* Returns problems found (which are the fixes that need to run).
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* npx factiii scan # Scan all stages
|
|
10
|
+
* npx factiii scan --dev # Scan dev only
|
|
11
|
+
* npx factiii scan --staging # Scan staging only
|
|
12
|
+
* npx factiii scan --prod # Scan prod only
|
|
13
|
+
*
|
|
14
|
+
* ============================================================
|
|
15
|
+
* STAGE EXECUTION PATTERN - DO NOT MODIFY WITHOUT READING
|
|
16
|
+
* ============================================================
|
|
17
|
+
*
|
|
18
|
+
* How this works:
|
|
19
|
+
*
|
|
20
|
+
* 1. User specifies stage: --dev, --secrets, --staging, --prod
|
|
21
|
+
* Or no flag = all stages in order
|
|
22
|
+
*
|
|
23
|
+
* 2. This file groups all plugin fixes by their stage property
|
|
24
|
+
*
|
|
25
|
+
* 3. For each requested stage, asks PIPELINE PLUGIN: canReach(stage)?
|
|
26
|
+
* - { reachable: true, via: 'local' } → run fixes locally
|
|
27
|
+
* - { reachable: true, via: 'workflow' } → pipeline triggers workflow
|
|
28
|
+
* - { reachable: false, reason: '...' } → show error, stop
|
|
29
|
+
*
|
|
30
|
+
* CRITICAL: This file does NOT know about:
|
|
31
|
+
* - GITHUB_TOKEN (that's pipeline plugin's concern)
|
|
32
|
+
* - SSH keys (that's pipeline plugin's concern)
|
|
33
|
+
* - How to trigger workflows (that's pipeline plugin's concern)
|
|
34
|
+
*
|
|
35
|
+
* This file ONLY:
|
|
36
|
+
* - Collects fixes from all plugins
|
|
37
|
+
* - Groups them by stage
|
|
38
|
+
* - Asks pipeline if each stage is reachable
|
|
39
|
+
* - Runs fixes for reachable stages
|
|
40
|
+
*
|
|
41
|
+
* This keeps scan.ts compatible with ANY pipeline plugin.
|
|
42
|
+
*
|
|
43
|
+
* ============================================================
|
|
44
|
+
* FOR PIPELINE PLUGIN AUTHORS:
|
|
45
|
+
* ============================================================
|
|
46
|
+
*
|
|
47
|
+
* When your workflow/CI SSHs to a server, you MUST call the
|
|
48
|
+
* command with the specific stage flag:
|
|
49
|
+
*
|
|
50
|
+
* npx factiii fix --staging # NOT just "npx factiii fix"
|
|
51
|
+
* npx factiii scan --prod # NOT just "npx factiii scan"
|
|
52
|
+
*
|
|
53
|
+
* Without the stage flag, the command will try to run ALL stages
|
|
54
|
+
* and may try to trigger workflows for stages it can't reach.
|
|
55
|
+
*
|
|
56
|
+
* Your canReach() should return 'local' when running on the
|
|
57
|
+
* target server (e.g., check GITHUB_ACTIONS or CI env vars).
|
|
58
|
+
*
|
|
59
|
+
* ============================================================
|
|
60
|
+
*/
|
|
61
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
62
|
+
if (k2 === undefined) k2 = k;
|
|
63
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
64
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
65
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
66
|
+
}
|
|
67
|
+
Object.defineProperty(o, k2, desc);
|
|
68
|
+
}) : (function(o, m, k, k2) {
|
|
69
|
+
if (k2 === undefined) k2 = k;
|
|
70
|
+
o[k2] = m[k];
|
|
71
|
+
}));
|
|
72
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
73
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
74
|
+
}) : function(o, v) {
|
|
75
|
+
o["default"] = v;
|
|
76
|
+
});
|
|
77
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
78
|
+
var ownKeys = function(o) {
|
|
79
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
80
|
+
var ar = [];
|
|
81
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
82
|
+
return ar;
|
|
83
|
+
};
|
|
84
|
+
return ownKeys(o);
|
|
85
|
+
};
|
|
86
|
+
return function (mod) {
|
|
87
|
+
if (mod && mod.__esModule) return mod;
|
|
88
|
+
var result = {};
|
|
89
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
90
|
+
__setModuleDefault(result, mod);
|
|
91
|
+
return result;
|
|
92
|
+
};
|
|
93
|
+
})();
|
|
94
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
95
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
96
|
+
};
|
|
97
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
98
|
+
exports.scan = scan;
|
|
99
|
+
const fs = __importStar(require("fs"));
|
|
100
|
+
const path = __importStar(require("path"));
|
|
101
|
+
const child_process_1 = require("child_process");
|
|
102
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
103
|
+
const index_js_1 = require("../plugins/index.js");
|
|
104
|
+
const config_helpers_js_1 = require("../utils/config-helpers.js");
|
|
105
|
+
/**
|
|
106
|
+
* Load relevant plugins based on config
|
|
107
|
+
*/
|
|
108
|
+
async function loadPlugins(rootDir) {
|
|
109
|
+
const config = loadConfig(rootDir);
|
|
110
|
+
// If no config exists, tell user to run init
|
|
111
|
+
if (!config || Object.keys(config).length === 0) {
|
|
112
|
+
const configPath = path.join(rootDir, 'factiii.yml');
|
|
113
|
+
if (fs.existsSync(configPath)) {
|
|
114
|
+
const content = fs.readFileSync(configPath, 'utf8');
|
|
115
|
+
if (!content || content.trim().length === 0) {
|
|
116
|
+
console.error('\n[ERROR] factiii.yml is empty.');
|
|
117
|
+
console.error(' Run: npx factiii init --force\n');
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
console.error('\n[ERROR] factiii.yml contains no valid configuration.');
|
|
121
|
+
console.error(' Check your YAML syntax or run: npx factiii init --force\n');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
console.error('\n[ERROR] No factiii.yml found.');
|
|
126
|
+
console.error(' Run: npx factiii init\n');
|
|
127
|
+
}
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
return (await (0, index_js_1.loadRelevantPlugins)(rootDir, config));
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Load config from factiii.yml
|
|
134
|
+
*/
|
|
135
|
+
function loadConfig(rootDir) {
|
|
136
|
+
const configPath = path.join(rootDir, 'factiii.yml');
|
|
137
|
+
if (!fs.existsSync(configPath)) {
|
|
138
|
+
return {};
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
return js_yaml_1.default.load(fs.readFileSync(configPath, 'utf8')) ?? {};
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
145
|
+
console.error('[!] Error parsing factiii.yml: ' + errorMessage);
|
|
146
|
+
return {};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Generate env var fixes from plugin requiredEnvVars
|
|
151
|
+
*/
|
|
152
|
+
function generateEnvVarFixes(plugin, rootDir, _config) {
|
|
153
|
+
const fixes = [];
|
|
154
|
+
for (const varName of plugin.requiredEnvVars ?? []) {
|
|
155
|
+
// Check .env.example has the var
|
|
156
|
+
fixes.push({
|
|
157
|
+
id: 'missing-env-example-' + varName.toLowerCase(),
|
|
158
|
+
stage: 'dev',
|
|
159
|
+
severity: 'critical',
|
|
160
|
+
description: varName + ' not found in .env.example',
|
|
161
|
+
plugin: plugin.id,
|
|
162
|
+
scan: async () => {
|
|
163
|
+
const envPath = path.join(rootDir, '.env.example');
|
|
164
|
+
if (!fs.existsSync(envPath))
|
|
165
|
+
return true;
|
|
166
|
+
const content = fs.readFileSync(envPath, 'utf8');
|
|
167
|
+
return !content.includes(varName + '=');
|
|
168
|
+
},
|
|
169
|
+
fix: null,
|
|
170
|
+
manualFix: 'Add ' + varName + '=your_value to .env.example (format: KEY=value, one per line)',
|
|
171
|
+
});
|
|
172
|
+
// Check .env.staging has the var (only if staging environment is defined)
|
|
173
|
+
fixes.push({
|
|
174
|
+
id: 'missing-env-staging-' + varName.toLowerCase(),
|
|
175
|
+
stage: 'staging',
|
|
176
|
+
severity: 'critical',
|
|
177
|
+
description: varName + ' not found in .env.staging',
|
|
178
|
+
plugin: plugin.id,
|
|
179
|
+
scan: async (config) => {
|
|
180
|
+
// Only check if staging environment is defined in config
|
|
181
|
+
const hasStagingEnv = config?.environments?.staging;
|
|
182
|
+
if (!hasStagingEnv)
|
|
183
|
+
return false; // Skip check if staging not configured
|
|
184
|
+
const envPath = path.join(rootDir, '.env.staging');
|
|
185
|
+
if (!fs.existsSync(envPath))
|
|
186
|
+
return true;
|
|
187
|
+
const content = fs.readFileSync(envPath, 'utf8');
|
|
188
|
+
return !content.includes(varName + '=');
|
|
189
|
+
},
|
|
190
|
+
fix: null,
|
|
191
|
+
manualFix: 'Add ' + varName + '=staging_value to .env.staging (use your staging environment value)',
|
|
192
|
+
});
|
|
193
|
+
// Check .env.prod has the var (only if prod environment is defined)
|
|
194
|
+
fixes.push({
|
|
195
|
+
id: 'missing-env-prod-' + varName.toLowerCase(),
|
|
196
|
+
stage: 'prod',
|
|
197
|
+
severity: 'critical',
|
|
198
|
+
description: varName + ' not found in .env.prod',
|
|
199
|
+
plugin: plugin.id,
|
|
200
|
+
scan: async (config) => {
|
|
201
|
+
// Only check if prod environment is defined in config
|
|
202
|
+
const hasProdEnv = config?.environments?.prod || config?.environments?.production;
|
|
203
|
+
if (!hasProdEnv)
|
|
204
|
+
return false; // Skip check if prod not configured
|
|
205
|
+
const envPath = path.join(rootDir, '.env.prod');
|
|
206
|
+
if (!fs.existsSync(envPath))
|
|
207
|
+
return true;
|
|
208
|
+
const content = fs.readFileSync(envPath, 'utf8');
|
|
209
|
+
return !content.includes(varName + '=');
|
|
210
|
+
},
|
|
211
|
+
fix: null,
|
|
212
|
+
manualFix: 'Add ' + varName + '=production_value to .env.prod (use your production environment value)',
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
return fixes;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get status icon and label for a stage based on reachability and problems
|
|
219
|
+
*/
|
|
220
|
+
function getStageStatus(stage, reach, problemCount) {
|
|
221
|
+
// Stage is not reachable
|
|
222
|
+
if (reach && !reach.reachable) {
|
|
223
|
+
return {
|
|
224
|
+
icon: '[X]',
|
|
225
|
+
label: 'Cannot reach',
|
|
226
|
+
detail: reach.reason,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
// Stage is reachable remotely (pipeline handles it)
|
|
230
|
+
if (reach && reach.reachable && reach.via !== 'local') {
|
|
231
|
+
return {
|
|
232
|
+
icon: '[~]',
|
|
233
|
+
label: 'Via ' + reach.via,
|
|
234
|
+
detail: 'Handled by pipeline plugin',
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
// Stage is directly reachable (local)
|
|
238
|
+
if (problemCount === 0) {
|
|
239
|
+
return {
|
|
240
|
+
icon: '[OK]',
|
|
241
|
+
label: 'Ready',
|
|
242
|
+
detail: 'local',
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
return {
|
|
247
|
+
icon: '[X]',
|
|
248
|
+
label: problemCount + ' issue' + (problemCount > 1 ? 's' : ''),
|
|
249
|
+
detail: 'local',
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Display problems grouped by stage with clear pipeline status
|
|
255
|
+
*/
|
|
256
|
+
function displayProblems(problems, reachability, options = {}) {
|
|
257
|
+
if (options.silent)
|
|
258
|
+
return;
|
|
259
|
+
const stages = ['dev', 'secrets', 'staging', 'prod'];
|
|
260
|
+
let totalProblems = 0;
|
|
261
|
+
const unreachableStages = [];
|
|
262
|
+
// Count total problems (only for locally-scanned stages)
|
|
263
|
+
for (const stage of stages) {
|
|
264
|
+
if (reachability[stage]) {
|
|
265
|
+
const stageProblems = problems[stage] ?? [];
|
|
266
|
+
const reach = reachability[stage];
|
|
267
|
+
if (reach?.reachable && reach.via === 'local') {
|
|
268
|
+
totalProblems += stageProblems.length;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// Header
|
|
273
|
+
console.log('\nPIPELINE STATUS\n');
|
|
274
|
+
// Stage status overview
|
|
275
|
+
for (const stage of stages) {
|
|
276
|
+
const reach = reachability[stage];
|
|
277
|
+
if (!reach)
|
|
278
|
+
continue; // Stage wasn't checked
|
|
279
|
+
const problemCount = problems[stage]?.length ?? 0;
|
|
280
|
+
const status = getStageStatus(stage, reach, problemCount);
|
|
281
|
+
// Format: [STAGE] icon Status (detail)
|
|
282
|
+
const stageLabel = ('[' + stage.toUpperCase() + ']').padEnd(10);
|
|
283
|
+
const statusLine = stageLabel + ' ' + status.icon + ' ' + status.label;
|
|
284
|
+
if (status.detail && status.label !== 'Cannot reach') {
|
|
285
|
+
console.log(statusLine + ' (' + status.detail + ')');
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
console.log(statusLine);
|
|
289
|
+
}
|
|
290
|
+
// Track unreachable stages for blockers section
|
|
291
|
+
if (!reach.reachable) {
|
|
292
|
+
unreachableStages.push({ stage, reason: reach.reason });
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// Blockers section (only if there are unreachable stages)
|
|
296
|
+
if (unreachableStages.length > 0) {
|
|
297
|
+
console.log('\n' + '-'.repeat(60));
|
|
298
|
+
console.log('BLOCKERS');
|
|
299
|
+
console.log('-'.repeat(60) + '\n');
|
|
300
|
+
for (const { stage, reason } of unreachableStages) {
|
|
301
|
+
console.log('[ERROR] ' + stage.toUpperCase() + ' unreachable: ' + reason);
|
|
302
|
+
// Provide smart hints based on the actual reason
|
|
303
|
+
if (reason.includes('vault_path')) {
|
|
304
|
+
console.log(' Hint: Add ansible config to factiii.yml:');
|
|
305
|
+
console.log(' ansible:');
|
|
306
|
+
console.log(' vault_path: group_vars/all/vault.yml');
|
|
307
|
+
console.log(' vault_password_file: ~/.vault_pass');
|
|
308
|
+
}
|
|
309
|
+
else if (reason.includes('Vault password')) {
|
|
310
|
+
console.log(' Hint: Create vault password file or set ANSIBLE_VAULT_PASSWORD env var');
|
|
311
|
+
}
|
|
312
|
+
else if (reason.includes('SSH key')) {
|
|
313
|
+
console.log(' Hint: Run: npx factiii secrets write-ssh-keys');
|
|
314
|
+
}
|
|
315
|
+
else if (reason.includes('GITHUB_TOKEN')) {
|
|
316
|
+
console.log(' Hint: Run: export GITHUB_TOKEN=your_token');
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// Issues section (only if there are problems)
|
|
321
|
+
if (totalProblems > 0) {
|
|
322
|
+
console.log('\n' + '-'.repeat(60));
|
|
323
|
+
console.log('ISSUES BY STAGE');
|
|
324
|
+
console.log('-'.repeat(60) + '\n');
|
|
325
|
+
for (const stage of stages) {
|
|
326
|
+
const reach = reachability[stage];
|
|
327
|
+
if (!reach)
|
|
328
|
+
continue;
|
|
329
|
+
const stageProblems = problems[stage] ?? [];
|
|
330
|
+
// Skip stages not scanned locally
|
|
331
|
+
if (!reach.reachable || reach.via !== 'local') {
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
if (stageProblems.length > 0) {
|
|
335
|
+
console.log(stage.toUpperCase() + ':');
|
|
336
|
+
for (const problem of stageProblems) {
|
|
337
|
+
const icon = problem.fix ? '[fix]' : '[man]';
|
|
338
|
+
const autoFix = problem.fix ? '(auto-fixable)' : '(manual)';
|
|
339
|
+
console.log(' ' + icon + ' ' + problem.description + ' ' + autoFix);
|
|
340
|
+
}
|
|
341
|
+
console.log('');
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// Summary
|
|
346
|
+
console.log('-'.repeat(60));
|
|
347
|
+
if (totalProblems === 0 && unreachableStages.length === 0) {
|
|
348
|
+
console.log('[OK] All checks passed!\n');
|
|
349
|
+
}
|
|
350
|
+
else if (totalProblems === 0 && unreachableStages.length > 0) {
|
|
351
|
+
console.log('[!] Some stages cannot be reached. Fix blockers above.\n');
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
console.log('Found ' + totalProblems + ' issue' + (totalProblems > 1 ? 's' : '') + '.');
|
|
355
|
+
console.log('Hint: Run: npx factiii fix\n');
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Get pipeline plugin from loaded plugins
|
|
360
|
+
*/
|
|
361
|
+
function getPipelinePlugin(plugins) {
|
|
362
|
+
return plugins.find((p) => p.category === 'pipeline');
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Main scan function
|
|
366
|
+
*/
|
|
367
|
+
async function scan(options = {}) {
|
|
368
|
+
const rootDir = options.rootDir ?? process.cwd();
|
|
369
|
+
const config = loadConfig(rootDir);
|
|
370
|
+
// If commit hash provided, verify we're scanning the right code
|
|
371
|
+
if (options.commit) {
|
|
372
|
+
try {
|
|
373
|
+
const currentCommit = (0, child_process_1.execSync)('git rev-parse HEAD', {
|
|
374
|
+
cwd: rootDir,
|
|
375
|
+
encoding: 'utf8',
|
|
376
|
+
}).trim();
|
|
377
|
+
if (!options.silent) {
|
|
378
|
+
console.log('Scanning commit: ' + options.commit.substring(0, 7));
|
|
379
|
+
}
|
|
380
|
+
if (currentCommit !== options.commit) {
|
|
381
|
+
console.warn('[!] Warning: Expected commit ' + options.commit.substring(0, 7) + ' but found ' + currentCommit.substring(0, 7));
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
catch {
|
|
385
|
+
// Not a git repo or git not available, skip verification
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
// Determine which stages to scan
|
|
389
|
+
let stages = ['dev', 'secrets', 'staging', 'prod'];
|
|
390
|
+
if (options.dev)
|
|
391
|
+
stages = ['dev'];
|
|
392
|
+
else if (options.secrets)
|
|
393
|
+
stages = ['secrets'];
|
|
394
|
+
else if (options.staging)
|
|
395
|
+
stages = ['staging'];
|
|
396
|
+
else if (options.prod)
|
|
397
|
+
stages = ['prod'];
|
|
398
|
+
else if (options.stages)
|
|
399
|
+
stages = options.stages;
|
|
400
|
+
// Load all plugins
|
|
401
|
+
const plugins = await loadPlugins(rootDir);
|
|
402
|
+
// Get pipeline plugin to check reachability
|
|
403
|
+
const pipelinePlugin = getPipelinePlugin(plugins);
|
|
404
|
+
// Check reachability for each stage
|
|
405
|
+
// Separate local vs remote stages — pipeline plugin handles remote
|
|
406
|
+
const reachability = {};
|
|
407
|
+
const localStages = [];
|
|
408
|
+
const remoteStages = [];
|
|
409
|
+
for (const stage of stages) {
|
|
410
|
+
if (pipelinePlugin && typeof pipelinePlugin.canReach === 'function') {
|
|
411
|
+
reachability[stage] = pipelinePlugin.canReach(stage, config);
|
|
412
|
+
if (reachability[stage]?.reachable) {
|
|
413
|
+
if (reachability[stage].via === 'local') {
|
|
414
|
+
localStages.push(stage);
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
remoteStages.push(stage);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
// No pipeline plugin or no canReach method - assume all reachable locally
|
|
423
|
+
reachability[stage] = { reachable: true, via: 'local' };
|
|
424
|
+
localStages.push(stage);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
// Collect all fixes from all plugins
|
|
428
|
+
const allFixes = [];
|
|
429
|
+
for (const plugin of plugins) {
|
|
430
|
+
// Add plugin fixes
|
|
431
|
+
for (const fix of plugin.fixes ?? []) {
|
|
432
|
+
allFixes.push({ ...fix, plugin: plugin.id });
|
|
433
|
+
}
|
|
434
|
+
// Add auto-generated env var fixes
|
|
435
|
+
const envFixes = generateEnvVarFixes(plugin, rootDir, config);
|
|
436
|
+
allFixes.push(...envFixes);
|
|
437
|
+
}
|
|
438
|
+
// Run scan() for each fix, collect problems found
|
|
439
|
+
const problems = {
|
|
440
|
+
dev: [],
|
|
441
|
+
secrets: [],
|
|
442
|
+
staging: [],
|
|
443
|
+
prod: [],
|
|
444
|
+
};
|
|
445
|
+
if (!options.silent) {
|
|
446
|
+
console.log('Scanning...\n');
|
|
447
|
+
}
|
|
448
|
+
// Get target server OS for each stage (for OS filtering)
|
|
449
|
+
const environments = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
450
|
+
const stageToOS = {};
|
|
451
|
+
for (const [name, env] of Object.entries(environments)) {
|
|
452
|
+
// Map environment names to stages
|
|
453
|
+
if (name.startsWith('staging') || name.startsWith('stage-')) {
|
|
454
|
+
stageToOS['staging'] = env.server;
|
|
455
|
+
}
|
|
456
|
+
else if (name.startsWith('prod') || name === 'production') {
|
|
457
|
+
stageToOS['prod'] = env.server;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
for (const fix of allFixes) {
|
|
461
|
+
// Skip if stage not in local stages
|
|
462
|
+
if (!localStages.includes(fix.stage))
|
|
463
|
+
continue;
|
|
464
|
+
// OS filtering: Skip fixes that don't match the target OS
|
|
465
|
+
if (fix.os) {
|
|
466
|
+
const targetOS = stageToOS[fix.stage];
|
|
467
|
+
if (targetOS) {
|
|
468
|
+
const fixOSList = Array.isArray(fix.os) ? fix.os : [fix.os];
|
|
469
|
+
if (!fixOSList.includes(targetOS)) {
|
|
470
|
+
continue; // Skip this fix - OS doesn't match
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
const startTime = performance.now();
|
|
475
|
+
try {
|
|
476
|
+
// Run the scan function
|
|
477
|
+
const hasProblem = await fix.scan(config, rootDir);
|
|
478
|
+
const duration = performance.now() - startTime;
|
|
479
|
+
// Log timing for slow checks (> 500ms)
|
|
480
|
+
if (duration > 500 && !options.silent) {
|
|
481
|
+
console.log(' [' + duration.toFixed(0) + 'ms] ' + fix.id);
|
|
482
|
+
}
|
|
483
|
+
if (hasProblem) {
|
|
484
|
+
problems[fix.stage].push(fix);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
catch (e) {
|
|
488
|
+
// Scan failed - treat as problem
|
|
489
|
+
if (!options.silent) {
|
|
490
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
491
|
+
console.log(' [!] Error scanning ' + fix.id + ': ' + errorMessage);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
// Remote stages: delegate to pipeline plugin
|
|
496
|
+
if (remoteStages.length > 0 && !options.silent) {
|
|
497
|
+
const PipelineClass = pipelinePlugin;
|
|
498
|
+
if (PipelineClass) {
|
|
499
|
+
const pipeline = new PipelineClass(config);
|
|
500
|
+
for (const stage of remoteStages) {
|
|
501
|
+
await pipeline.scanStage(stage, {});
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
// Display problems grouped by stage
|
|
506
|
+
displayProblems(problems, reachability, options);
|
|
507
|
+
// Return the fixes needed (problems found)
|
|
508
|
+
return problems;
|
|
509
|
+
}
|
|
510
|
+
exports.default = scan;
|
|
511
|
+
//# sourceMappingURL=scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/cli/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secrets Command
|
|
3
|
+
*
|
|
4
|
+
* Manages secrets via Ansible Vault.
|
|
5
|
+
*
|
|
6
|
+
* Actions:
|
|
7
|
+
* list - List all secrets (SSH keys + env vars)
|
|
8
|
+
* set - Set a secret (SSH keys, AWS credentials)
|
|
9
|
+
* check - Check if secrets exist
|
|
10
|
+
* set-env - Set environment variable for a stage
|
|
11
|
+
* list-env - List environment variable keys for a stage
|
|
12
|
+
* deploy - Deploy secrets to staging/prod servers
|
|
13
|
+
* write-ssh-keys - Write SSH keys to ~/.ssh/ (for workflows)
|
|
14
|
+
*/
|
|
15
|
+
import type { SecretsOptions } from '../types/index.js';
|
|
16
|
+
export type SecretsAction = 'list' | 'set' | 'check' | 'set-env' | 'list-env' | 'deploy' | 'write-ssh-keys';
|
|
17
|
+
export declare function secrets(action: SecretsAction, secretName?: string, options?: SecretsOptions): Promise<void>;
|
|
18
|
+
export default secrets;
|
|
19
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/cli/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,mBAAmB,CAAC;AAEvE,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,KAAK,GACL,OAAO,GACP,SAAS,GACT,UAAU,GACV,QAAQ,GACR,gBAAgB,CAAC;AA+BrB,wBAAsB,OAAO,CAC3B,MAAM,EAAE,aAAa,EACrB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAwPf;AAED,eAAe,OAAO,CAAC"}
|