@factiii/stack 0.1.24 → 0.1.26
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 +81 -60
- package/bin/{factiii → stack} +12 -12
- package/dist/cli/check-config.js +1 -1
- package/dist/cli/check-config.js.map +1 -1
- package/dist/cli/deploy-secrets.d.ts.map +1 -1
- package/dist/cli/deploy-secrets.js +11 -11
- package/dist/cli/deploy-secrets.js.map +1 -1
- package/dist/cli/deploy.d.ts.map +1 -1
- package/dist/cli/deploy.js +19 -9
- package/dist/cli/deploy.js.map +1 -1
- package/dist/cli/dev-sync.d.ts.map +1 -1
- package/dist/cli/dev-sync.js +10 -9
- package/dist/cli/dev-sync.js.map +1 -1
- package/dist/cli/execute-plugin-command.d.ts.map +1 -1
- package/dist/cli/execute-plugin-command.js +7 -7
- package/dist/cli/execute-plugin-command.js.map +1 -1
- package/dist/cli/fix.d.ts.map +1 -1
- package/dist/cli/fix.js +24 -4
- package/dist/cli/fix.js.map +1 -1
- package/dist/cli/init.d.ts +3 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +382 -69
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/pr-check.d.ts.map +1 -1
- package/dist/cli/pr-check.js +5 -4
- package/dist/cli/pr-check.js.map +1 -1
- package/dist/cli/scan.d.ts +6 -6
- package/dist/cli/scan.d.ts.map +1 -1
- package/dist/cli/scan.js +46 -30
- package/dist/cli/scan.js.map +1 -1
- package/dist/cli/secrets.d.ts.map +1 -1
- package/dist/cli/secrets.js +17 -16
- package/dist/cli/secrets.js.map +1 -1
- package/dist/cli/undeploy.d.ts.map +1 -1
- package/dist/cli/undeploy.js +4 -4
- package/dist/cli/undeploy.js.map +1 -1
- package/dist/cli/upgrade.d.ts +1 -1
- package/dist/cli/upgrade.js +5 -5
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/cli/validate.js +1 -1
- package/dist/cli/validate.js.map +1 -1
- package/dist/constants/config-files.d.ts +23 -0
- package/dist/constants/config-files.d.ts.map +1 -0
- package/dist/constants/config-files.js +88 -0
- package/dist/constants/config-files.js.map +1 -0
- package/dist/generators/{generate-factiii-auto.d.ts → generate-stack-auto.d.ts} +4 -4
- package/dist/generators/generate-stack-auto.d.ts.map +1 -0
- package/dist/generators/{generate-factiii-auto.js → generate-stack-auto.js} +15 -13
- package/dist/generators/generate-stack-auto.js.map +1 -0
- package/dist/generators/{generate-factiii-yml.d.ts → generate-stack-yml.d.ts} +5 -5
- package/dist/generators/generate-stack-yml.d.ts.map +1 -0
- package/dist/generators/{generate-factiii-yml.js → generate-stack-yml.js} +16 -15
- package/dist/generators/generate-stack-yml.js.map +1 -0
- package/dist/generators/index.d.ts +2 -2
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +5 -5
- package/dist/generators/index.js.map +1 -1
- package/dist/plugins/pipelines/aws/index.js +3 -3
- package/dist/plugins/pipelines/aws/index.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/credentials.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/credentials.js +36 -44
- package/dist/plugins/pipelines/aws/scanfix/credentials.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.js +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/iam.js +2 -2
- package/dist/plugins/pipelines/aws/scanfix/iam.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/rds.js +2 -2
- package/dist/plugins/pipelines/aws/scanfix/rds.js.map +1 -1
- package/dist/plugins/pipelines/factiii/index.d.ts +5 -3
- package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/index.js +14 -77
- package/dist/plugins/pipelines/factiii/index.js.map +1 -1
- package/dist/plugins/pipelines/factiii/pr-check.d.ts +1 -1
- package/dist/plugins/pipelines/factiii/pr-check.js +1 -1
- package/dist/plugins/pipelines/factiii/prod.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/prod.js +3 -3
- package/dist/plugins/pipelines/factiii/prod.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.js +10 -11
- package/dist/plugins/pipelines/factiii/scanfix/config.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/env-files.d.ts +12 -0
- package/dist/plugins/pipelines/factiii/scanfix/env-files.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/env-files.js +310 -0
- package/dist/plugins/pipelines/factiii/scanfix/env-files.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/local-config.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/local-config.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/local-config.js +70 -0
- package/dist/plugins/pipelines/factiii/scanfix/local-config.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js +6 -6
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js +16 -26
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js.map +1 -1
- package/dist/plugins/pipelines/factiii/staging.d.ts +1 -1
- package/dist/plugins/pipelines/factiii/staging.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/staging.js +3 -2
- package/dist/plugins/pipelines/factiii/staging.js.map +1 -1
- package/dist/plugins/pipelines/factiii/utils/workflows.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/utils/workflows.js +6 -21
- package/dist/plugins/pipelines/factiii/utils/workflows.js.map +1 -1
- package/dist/plugins/pipelines/factiii/workflows/stack-ci.yml +56 -0
- package/dist/plugins/pipelines/factiii/workflows/stack-cicd-prod.yml +54 -0
- package/dist/plugins/servers/mac/scanfix/containers.js +1 -1
- package/dist/plugins/servers/mac/scanfix/containers.js.map +1 -1
- package/dist/scanfix/fixes/pnpm.d.ts.map +1 -1
- package/dist/scanfix/fixes/pnpm.js +2 -2
- package/dist/scanfix/fixes/pnpm.js.map +1 -1
- package/dist/scripts/generate-all.d.ts.map +1 -1
- package/dist/scripts/generate-all.js +9 -8
- package/dist/scripts/generate-all.js.map +1 -1
- package/dist/scripts/get-repo-name.d.ts +1 -1
- package/dist/scripts/get-repo-name.js +5 -3
- package/dist/scripts/get-repo-name.js.map +1 -1
- package/dist/scripts/validate-env-files.js +7 -1
- package/dist/scripts/validate-env-files.js.map +1 -1
- package/dist/scripts/validate-example-values.d.ts +1 -1
- package/dist/scripts/validate-example-values.js +3 -2
- package/dist/scripts/validate-example-values.js.map +1 -1
- package/dist/scripts/validate-stack-yml.d.ts +6 -0
- package/dist/scripts/validate-stack-yml.d.ts.map +1 -0
- package/dist/scripts/{validate-factiii-yml.js → validate-stack-yml.js} +15 -11
- package/dist/scripts/validate-stack-yml.js.map +1 -0
- package/dist/utils/config-helpers.d.ts +15 -0
- package/dist/utils/config-helpers.d.ts.map +1 -1
- package/dist/utils/config-helpers.js +57 -5
- package/dist/utils/config-helpers.js.map +1 -1
- package/dist/utils/config-validator.d.ts +2 -2
- package/dist/utils/config-validator.d.ts.map +1 -1
- package/dist/utils/config-validator.js +7 -6
- package/dist/utils/config-validator.js.map +1 -1
- package/dist/utils/config-writer.d.ts +2 -2
- package/dist/utils/config-writer.d.ts.map +1 -1
- package/dist/utils/config-writer.js +6 -6
- package/dist/utils/config-writer.js.map +1 -1
- package/dist/utils/deployment-report.js +4 -4
- package/dist/utils/deployment-report.js.map +1 -1
- package/dist/utils/ssh-helper.js +6 -6
- package/dist/utils/ssh-helper.js.map +1 -1
- package/dist/utils/template-generator.js +1 -1
- package/dist/utils/version-check.d.ts +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +9 -8
- package/dist/utils/version-check.js.map +1 -1
- package/package.json +8 -2
- package/dist/generators/generate-factiii-auto.d.ts.map +0 -1
- package/dist/generators/generate-factiii-auto.js.map +0 -1
- package/dist/generators/generate-factiii-yml.d.ts.map +0 -1
- package/dist/generators/generate-factiii-yml.js.map +0 -1
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-prod.yml +0 -112
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-staging.yml +0 -117
- package/dist/plugins/pipelines/factiii/workflows/factiii-command.yml +0 -130
- package/dist/plugins/pipelines/factiii/workflows/factiii-deploy.yml +0 -198
- package/dist/plugins/pipelines/factiii/workflows/factiii-dev-sync.yml +0 -179
- package/dist/plugins/pipelines/factiii/workflows/factiii-fix.yml +0 -176
- package/dist/plugins/pipelines/factiii/workflows/factiii-pr-check.yml +0 -103
- package/dist/plugins/pipelines/factiii/workflows/factiii-scan.yml +0 -176
- package/dist/plugins/pipelines/factiii/workflows/factiii-undeploy.yml +0 -95
- package/dist/scripts/validate-factiii-yml.d.ts +0 -6
- package/dist/scripts/validate-factiii-yml.d.ts.map +0 -1
- package/dist/scripts/validate-factiii-yml.js.map +0 -1
package/dist/cli/init.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Init Command
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* First run: creates configs, sets up vault, explains what future runs will auto-fix.
|
|
6
|
+
* Subsequent runs: auto-fixes everything without prompts.
|
|
7
|
+
* Use --force to regenerate stack.yml from scratch.
|
|
6
8
|
*/
|
|
7
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
10
|
if (k2 === undefined) k2 = k;
|
|
@@ -37,15 +39,262 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
37
39
|
return result;
|
|
38
40
|
};
|
|
39
41
|
})();
|
|
42
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
43
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
44
|
+
};
|
|
40
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
46
|
exports.init = init;
|
|
42
47
|
const path = __importStar(require("path"));
|
|
48
|
+
const config_files_js_1 = require("../constants/config-files.js");
|
|
43
49
|
const fs = __importStar(require("fs"));
|
|
44
50
|
const os = __importStar(require("os"));
|
|
51
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
45
52
|
const child_process_1 = require("child_process");
|
|
46
|
-
const
|
|
47
|
-
const
|
|
53
|
+
const generate_stack_yml_js_1 = require("../generators/generate-stack-yml.js");
|
|
54
|
+
const generate_stack_auto_js_1 = require("../generators/generate-stack-auto.js");
|
|
48
55
|
const secret_prompts_js_1 = require("../utils/secret-prompts.js");
|
|
56
|
+
const config_helpers_js_1 = require("../utils/config-helpers.js");
|
|
57
|
+
/**
|
|
58
|
+
* Detect the dev OS from process.platform
|
|
59
|
+
*/
|
|
60
|
+
function detectDevOS() {
|
|
61
|
+
if (process.platform === 'darwin')
|
|
62
|
+
return 'mac';
|
|
63
|
+
if (process.platform === 'win32')
|
|
64
|
+
return 'windows';
|
|
65
|
+
return 'ubuntu';
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Append a line to .gitignore if not already present
|
|
69
|
+
*/
|
|
70
|
+
function ensureGitignored(rootDir, entry) {
|
|
71
|
+
const gitignorePath = path.join(rootDir, '.gitignore');
|
|
72
|
+
let content = '';
|
|
73
|
+
if (fs.existsSync(gitignorePath)) {
|
|
74
|
+
content = fs.readFileSync(gitignorePath, 'utf8');
|
|
75
|
+
}
|
|
76
|
+
const lines = content.split('\n').map((l) => l.trim());
|
|
77
|
+
if (lines.includes(entry)) {
|
|
78
|
+
return false; // already present
|
|
79
|
+
}
|
|
80
|
+
const separator = content.length > 0 && !content.endsWith('\n') ? '\n' : '';
|
|
81
|
+
fs.appendFileSync(gitignorePath, separator + entry + '\n');
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create stack.local.yml with detected OS if it doesn't exist
|
|
86
|
+
*/
|
|
87
|
+
function ensureLocalConfig(rootDir) {
|
|
88
|
+
const localPath = (0, config_files_js_1.getStackLocalPath)(rootDir);
|
|
89
|
+
if (fs.existsSync(localPath)) {
|
|
90
|
+
console.log(' [OK] ' + config_files_js_1.STACK_LOCAL_FILENAME + ' already exists');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const devOS = detectDevOS();
|
|
94
|
+
const content = '# Local machine config (gitignored - each developer has their own)\n' +
|
|
95
|
+
'# Generated by: npx stack init\n' +
|
|
96
|
+
'\n' +
|
|
97
|
+
'dev_os: ' + devOS + '\n';
|
|
98
|
+
fs.writeFileSync(localPath, content, 'utf8');
|
|
99
|
+
console.log(' [OK] Created ' + config_files_js_1.STACK_LOCAL_FILENAME + ' (dev_os: ' + devOS + ')');
|
|
100
|
+
// Ensure both naming conventions are gitignored
|
|
101
|
+
ensureGitignored(rootDir, config_files_js_1.STACK_LOCAL_FILENAME);
|
|
102
|
+
ensureGitignored(rootDir, 'factiii.local.yml');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Copy .env.example to .env.staging and .env.prod if they don't exist.
|
|
106
|
+
* Does NOT store in vault — user needs to edit values first.
|
|
107
|
+
*/
|
|
108
|
+
function ensureEnvFiles(rootDir) {
|
|
109
|
+
const examplePath = path.join(rootDir, '.env.example');
|
|
110
|
+
if (!fs.existsSync(examplePath)) {
|
|
111
|
+
console.log(' [--] No .env.example found - skipping env file setup');
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const exampleContent = fs.readFileSync(examplePath, 'utf8');
|
|
115
|
+
let created = false;
|
|
116
|
+
const stagingPath = path.join(rootDir, '.env.staging');
|
|
117
|
+
if (!fs.existsSync(stagingPath)) {
|
|
118
|
+
fs.writeFileSync(stagingPath, exampleContent, 'utf8');
|
|
119
|
+
console.log(' [OK] Created .env.staging from .env.example');
|
|
120
|
+
created = true;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
console.log(' [OK] .env.staging already exists');
|
|
124
|
+
}
|
|
125
|
+
const prodPath = path.join(rootDir, '.env.prod');
|
|
126
|
+
if (!fs.existsSync(prodPath)) {
|
|
127
|
+
fs.writeFileSync(prodPath, exampleContent, 'utf8');
|
|
128
|
+
console.log(' [OK] Created .env.prod from .env.example');
|
|
129
|
+
created = true;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
console.log(' [OK] .env.prod already exists');
|
|
133
|
+
}
|
|
134
|
+
// Ensure env files are gitignored
|
|
135
|
+
ensureGitignored(rootDir, '.env.staging');
|
|
136
|
+
ensureGitignored(rootDir, '.env.prod');
|
|
137
|
+
if (created) {
|
|
138
|
+
console.log('');
|
|
139
|
+
console.log(' >> Edit .env.staging and .env.prod with real values,');
|
|
140
|
+
console.log(' then run `npx stack fix` to store them in the vault.');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Load config and prompt for missing secrets (SSH keys, AWS credentials)
|
|
145
|
+
*/
|
|
146
|
+
async function promptForMissingSecrets(rootDir) {
|
|
147
|
+
const configPath = (0, config_files_js_1.getStackConfigPath)(rootDir);
|
|
148
|
+
if (!fs.existsSync(configPath))
|
|
149
|
+
return;
|
|
150
|
+
let config;
|
|
151
|
+
try {
|
|
152
|
+
config = js_yaml_1.default.load(fs.readFileSync(configPath, 'utf8')) ?? {};
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
if (!config.ansible?.vault_path)
|
|
158
|
+
return;
|
|
159
|
+
const environments = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
160
|
+
const hasStaging = !!environments.staging;
|
|
161
|
+
const hasProd = !!environments.prod || !!environments.production;
|
|
162
|
+
const hasAWS = Object.values(environments).some((env) => env.pipeline === 'aws' || env.access_key_id);
|
|
163
|
+
if (!hasStaging && !hasProd && !hasAWS)
|
|
164
|
+
return;
|
|
165
|
+
let vault;
|
|
166
|
+
try {
|
|
167
|
+
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../utils/ansible-vault-secrets.js')));
|
|
168
|
+
vault = new AnsibleVaultSecrets({
|
|
169
|
+
vault_path: config.ansible.vault_path,
|
|
170
|
+
vault_password_file: config.ansible.vault_password_file ?? '~/.vault_pass',
|
|
171
|
+
rootDir,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
console.log('\n Checking secrets...\n');
|
|
178
|
+
// Check STAGING_SSH
|
|
179
|
+
if (hasStaging) {
|
|
180
|
+
try {
|
|
181
|
+
const check = await vault.checkSecrets(['STAGING_SSH']);
|
|
182
|
+
if (check.missing.includes('STAGING_SSH')) {
|
|
183
|
+
const addNow = await (0, secret_prompts_js_1.confirm)(' Add staging SSH key now? (skip to do later with: npx stack secrets set STAGING_SSH)', false);
|
|
184
|
+
if (addNow) {
|
|
185
|
+
const value = await (0, secret_prompts_js_1.promptForSecret)('STAGING_SSH', config);
|
|
186
|
+
if (value) {
|
|
187
|
+
await vault.setSecret('STAGING_SSH', value);
|
|
188
|
+
console.log(' [OK] STAGING_SSH stored in vault');
|
|
189
|
+
await extractSSHKeyToFile(vault, 'staging', rootDir);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
console.log(' [--] Skipped STAGING_SSH');
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
console.log(' [OK] STAGING_SSH already in vault');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch (e) {
|
|
201
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
202
|
+
console.log(' [!] Could not check STAGING_SSH: ' + msg);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// Check PROD_SSH
|
|
206
|
+
if (hasProd) {
|
|
207
|
+
try {
|
|
208
|
+
const check = await vault.checkSecrets(['PROD_SSH']);
|
|
209
|
+
if (check.missing.includes('PROD_SSH')) {
|
|
210
|
+
const addNow = await (0, secret_prompts_js_1.confirm)(' Add prod SSH key now? (skip to do later with: npx stack secrets set PROD_SSH)', false);
|
|
211
|
+
if (addNow) {
|
|
212
|
+
const value = await (0, secret_prompts_js_1.promptForSecret)('PROD_SSH', config);
|
|
213
|
+
if (value) {
|
|
214
|
+
await vault.setSecret('PROD_SSH', value);
|
|
215
|
+
console.log(' [OK] PROD_SSH stored in vault');
|
|
216
|
+
await extractSSHKeyToFile(vault, 'prod', rootDir);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
console.log(' [--] Skipped PROD_SSH');
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
console.log(' [OK] PROD_SSH already in vault');
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch (e) {
|
|
228
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
229
|
+
console.log(' [!] Could not check PROD_SSH: ' + msg);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// Check AWS_SECRET_ACCESS_KEY
|
|
233
|
+
if (hasAWS) {
|
|
234
|
+
try {
|
|
235
|
+
const check = await vault.checkSecrets(['AWS_SECRET_ACCESS_KEY']);
|
|
236
|
+
if (check.missing.includes('AWS_SECRET_ACCESS_KEY')) {
|
|
237
|
+
const addNow = await (0, secret_prompts_js_1.confirm)(' Add AWS Secret Access Key now?', false);
|
|
238
|
+
if (addNow) {
|
|
239
|
+
const value = await (0, secret_prompts_js_1.promptForSecret)('AWS_SECRET_ACCESS_KEY', config);
|
|
240
|
+
if (value) {
|
|
241
|
+
await vault.setSecret('AWS_SECRET_ACCESS_KEY', value);
|
|
242
|
+
console.log(' [OK] AWS_SECRET_ACCESS_KEY stored in vault');
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
console.log(' [--] Skipped AWS_SECRET_ACCESS_KEY');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
console.log(' [OK] AWS_SECRET_ACCESS_KEY already in vault');
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
catch (e) {
|
|
254
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
255
|
+
console.log(' [!] Could not check AWS_SECRET_ACCESS_KEY: ' + msg);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Extract SSH key from vault to ~/.ssh/{stage}_deploy_key
|
|
261
|
+
* With safety check: asks before overwriting existing key
|
|
262
|
+
*/
|
|
263
|
+
async function extractSSHKeyToFile(vault, stage, _rootDir) {
|
|
264
|
+
const keyName = stage + '_deploy_key';
|
|
265
|
+
const sshDir = path.join(os.homedir(), '.ssh');
|
|
266
|
+
const keyPath = path.join(sshDir, keyName);
|
|
267
|
+
// Safety check: don't overwrite existing keys without asking
|
|
268
|
+
if (fs.existsSync(keyPath)) {
|
|
269
|
+
const overwrite = await (0, secret_prompts_js_1.confirm)(' SSH key already exists at ' + keyPath + ' - overwrite?', false);
|
|
270
|
+
if (!overwrite) {
|
|
271
|
+
console.log(' [--] Keeping existing key at ' + keyPath);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
try {
|
|
276
|
+
const key = await vault.getSSHKey(stage);
|
|
277
|
+
if (!key) {
|
|
278
|
+
console.log(' [!] No ' + stage.toUpperCase() + '_SSH key found in vault');
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
if (!fs.existsSync(sshDir)) {
|
|
282
|
+
fs.mkdirSync(sshDir, { recursive: true });
|
|
283
|
+
}
|
|
284
|
+
fs.writeFileSync(keyPath, key, 'utf8');
|
|
285
|
+
try {
|
|
286
|
+
fs.chmodSync(keyPath, 0o600);
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
// Windows doesn't support chmod
|
|
290
|
+
}
|
|
291
|
+
console.log(' [OK] Wrote SSH key to ' + keyPath);
|
|
292
|
+
}
|
|
293
|
+
catch (e) {
|
|
294
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
295
|
+
console.log(' [!] Failed to extract SSH key: ' + msg);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
49
298
|
/**
|
|
50
299
|
* Check if ansible-vault CLI is available
|
|
51
300
|
*/
|
|
@@ -58,53 +307,56 @@ function checkAnsibleVault() {
|
|
|
58
307
|
return false;
|
|
59
308
|
}
|
|
60
309
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
310
|
+
/**
|
|
311
|
+
* Ensure group_vars/all/ directory and encrypted vault file exist.
|
|
312
|
+
* Returns what was fixed (empty array if nothing needed fixing).
|
|
313
|
+
*/
|
|
314
|
+
async function ensureVaultSetup(rootDir, vaultPassFile) {
|
|
315
|
+
const fixed = [];
|
|
316
|
+
const groupVarsDir = path.join(rootDir, 'group_vars', 'all');
|
|
317
|
+
if (!fs.existsSync(groupVarsDir)) {
|
|
318
|
+
fs.mkdirSync(groupVarsDir, { recursive: true });
|
|
319
|
+
fixed.push('Created ' + groupVarsDir);
|
|
71
320
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
321
|
+
const vaultFilePath = path.join(rootDir, 'group_vars', 'all', 'vault.yml');
|
|
322
|
+
if (!fs.existsSync(vaultFilePath)) {
|
|
323
|
+
try {
|
|
324
|
+
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../utils/ansible-vault-secrets.js')));
|
|
325
|
+
const vault = new AnsibleVaultSecrets({
|
|
326
|
+
vault_path: 'group_vars/all/vault.yml',
|
|
327
|
+
vault_password_file: '~/.vault_pass',
|
|
328
|
+
rootDir,
|
|
329
|
+
});
|
|
330
|
+
await vault.setSecret('_initialized', 'true');
|
|
331
|
+
fixed.push('Created encrypted vault at group_vars/all/vault.yml');
|
|
76
332
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
else if (!options.force) {
|
|
82
|
-
shouldCreateAuto = await (0, secret_prompts_js_1.confirm)('factiiiAuto.yml already exists. Overwrite it?', false);
|
|
83
|
-
if (!shouldCreateAuto) {
|
|
84
|
-
console.log('Skipping factiiiAuto.yml');
|
|
333
|
+
catch (e) {
|
|
334
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
335
|
+
fixed.push('Failed to create vault: ' + msg);
|
|
85
336
|
}
|
|
86
337
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
338
|
+
return fixed;
|
|
339
|
+
}
|
|
340
|
+
async function init(options = {}) {
|
|
341
|
+
const rootDir = options.rootDir ?? process.cwd();
|
|
342
|
+
const configPath = (0, config_files_js_1.getStackConfigPath)(rootDir);
|
|
343
|
+
const isFirstRun = !fs.existsSync(configPath);
|
|
344
|
+
if (isFirstRun || options.force) {
|
|
345
|
+
await firstRun(rootDir, options);
|
|
94
346
|
}
|
|
95
347
|
else {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
348
|
+
await autoFix(rootDir);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* First run: create configs, set up vault, explain what future runs will do.
|
|
353
|
+
*/
|
|
354
|
+
async function firstRun(rootDir, options) {
|
|
355
|
+
console.log('Initializing Factiii Stack...\n');
|
|
356
|
+
// Generate stack.yml
|
|
357
|
+
const created = (0, generate_stack_yml_js_1.generateFactiiiYml)(rootDir, { force: true });
|
|
358
|
+
if (created) {
|
|
359
|
+
await (0, generate_stack_auto_js_1.generateFactiiiAuto)(rootDir, { force: true });
|
|
108
360
|
}
|
|
109
361
|
// Check prerequisites
|
|
110
362
|
console.log('\nChecking prerequisites...\n');
|
|
@@ -127,12 +379,17 @@ async function init(options = {}) {
|
|
|
127
379
|
console.log(' sudo yum install ansible (RHEL/CentOS)');
|
|
128
380
|
}
|
|
129
381
|
}
|
|
130
|
-
// Vault setup (
|
|
131
|
-
if (hasAnsibleVault
|
|
382
|
+
// Vault setup (interactive, first time only)
|
|
383
|
+
if (hasAnsibleVault) {
|
|
132
384
|
const vaultPassFile = path.join(os.homedir(), '.vault_pass');
|
|
133
385
|
const hasExistingVaultPass = fs.existsSync(vaultPassFile);
|
|
134
386
|
if (hasExistingVaultPass) {
|
|
135
387
|
console.log(' [OK] Vault password file exists at ' + vaultPassFile);
|
|
388
|
+
// Auto-create vault structure if password exists
|
|
389
|
+
const vaultFixes = await ensureVaultSetup(rootDir, vaultPassFile);
|
|
390
|
+
for (const fix of vaultFixes) {
|
|
391
|
+
console.log(' [OK] ' + fix);
|
|
392
|
+
}
|
|
136
393
|
}
|
|
137
394
|
else {
|
|
138
395
|
console.log('');
|
|
@@ -141,7 +398,6 @@ async function init(options = {}) {
|
|
|
141
398
|
console.log('\n Create a vault password (keep this safe - you need it to access secrets):');
|
|
142
399
|
const vaultPassword = await (0, secret_prompts_js_1.promptSingleLine)(' Vault password: ');
|
|
143
400
|
if (vaultPassword && vaultPassword.trim().length > 0) {
|
|
144
|
-
// Write vault password file
|
|
145
401
|
fs.writeFileSync(vaultPassFile, vaultPassword.trim(), 'utf8');
|
|
146
402
|
try {
|
|
147
403
|
fs.chmodSync(vaultPassFile, 0o600);
|
|
@@ -150,27 +406,9 @@ async function init(options = {}) {
|
|
|
150
406
|
// Windows doesn't support chmod - that's OK
|
|
151
407
|
}
|
|
152
408
|
console.log(' [OK] Vault password saved to ' + vaultPassFile);
|
|
153
|
-
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
fs.mkdirSync(groupVarsDir, { recursive: true });
|
|
157
|
-
console.log(' [OK] Created ' + groupVarsDir);
|
|
158
|
-
}
|
|
159
|
-
// Initialize vault file
|
|
160
|
-
try {
|
|
161
|
-
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../utils/ansible-vault-secrets.js')));
|
|
162
|
-
const vault = new AnsibleVaultSecrets({
|
|
163
|
-
vault_path: 'group_vars/all/vault.yml',
|
|
164
|
-
vault_password_file: '~/.vault_pass',
|
|
165
|
-
rootDir,
|
|
166
|
-
});
|
|
167
|
-
await vault.setSecret('_initialized', 'true');
|
|
168
|
-
console.log(' [OK] Created encrypted vault at group_vars/all/vault.yml');
|
|
169
|
-
}
|
|
170
|
-
catch (e) {
|
|
171
|
-
const msg = e instanceof Error ? e.message : String(e);
|
|
172
|
-
console.log(' [!] Failed to create vault: ' + msg);
|
|
173
|
-
console.log(' You can set it up later with: npx factiii secrets set <KEY>');
|
|
409
|
+
const vaultFixes = await ensureVaultSetup(rootDir, vaultPassFile);
|
|
410
|
+
for (const fix of vaultFixes) {
|
|
411
|
+
console.log(' [OK] ' + fix);
|
|
174
412
|
}
|
|
175
413
|
}
|
|
176
414
|
else {
|
|
@@ -180,11 +418,86 @@ async function init(options = {}) {
|
|
|
180
418
|
else {
|
|
181
419
|
console.log(' [!] Skipped vault setup. Set up later:');
|
|
182
420
|
console.log(' 1. Create vault password: echo "your-password" > ~/.vault_pass');
|
|
183
|
-
console.log(' 2. Store a secret: npx
|
|
421
|
+
console.log(' 2. Store a secret: npx stack secrets set STAGING_SSH');
|
|
184
422
|
}
|
|
185
423
|
}
|
|
186
424
|
}
|
|
425
|
+
// Create stack.local.yml with detected OS
|
|
426
|
+
console.log('');
|
|
427
|
+
ensureLocalConfig(rootDir);
|
|
428
|
+
// Copy .env.example to .env.staging / .env.prod
|
|
187
429
|
console.log('');
|
|
430
|
+
ensureEnvFiles(rootDir);
|
|
431
|
+
// Prompt for missing secrets (SSH keys, AWS credentials)
|
|
432
|
+
if (hasAnsibleVault) {
|
|
433
|
+
await promptForMissingSecrets(rootDir);
|
|
434
|
+
}
|
|
435
|
+
// Tell the user what future runs will auto-fix
|
|
436
|
+
console.log('\n ────────────────────────────────────────────────');
|
|
437
|
+
console.log(' From now on, running `npx stack init` will auto-fix:');
|
|
438
|
+
console.log(' - Refresh auto-detected config (' + config_files_js_1.STACK_AUTO_FILENAME + ')');
|
|
439
|
+
console.log(' - Verify prerequisites (ansible-vault)');
|
|
440
|
+
console.log(' - Repair vault directory and files if missing');
|
|
441
|
+
console.log(' - Create ' + config_files_js_1.STACK_LOCAL_FILENAME + ' if missing');
|
|
442
|
+
console.log(' - Use --force to regenerate ' + config_files_js_1.STACK_CONFIG_FILENAME + ' from scratch');
|
|
443
|
+
console.log(' ────────────────────────────────────────────────\n');
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Subsequent runs: auto-fix everything without prompts.
|
|
447
|
+
* Only reports what was actually changed.
|
|
448
|
+
*/
|
|
449
|
+
async function autoFix(rootDir) {
|
|
450
|
+
const fixed = [];
|
|
451
|
+
// Always refresh auto-detected config
|
|
452
|
+
const autoPath = (0, config_files_js_1.getStackAutoPath)(rootDir);
|
|
453
|
+
const oldAutoContent = fs.existsSync(autoPath)
|
|
454
|
+
? fs.readFileSync(autoPath, 'utf8')
|
|
455
|
+
: '';
|
|
456
|
+
await (0, generate_stack_auto_js_1.generateFactiiiAuto)(rootDir, { force: true });
|
|
457
|
+
const newAutoPath = (0, config_files_js_1.getStackAutoPath)(rootDir);
|
|
458
|
+
const newAutoContent = fs.existsSync(newAutoPath)
|
|
459
|
+
? fs.readFileSync(newAutoPath, 'utf8')
|
|
460
|
+
: '';
|
|
461
|
+
if (oldAutoContent !== newAutoContent) {
|
|
462
|
+
fixed.push('Updated auto config with latest detection');
|
|
463
|
+
}
|
|
464
|
+
// Check prerequisites
|
|
465
|
+
const hasAnsibleVault = checkAnsibleVault();
|
|
466
|
+
if (!hasAnsibleVault) {
|
|
467
|
+
fixed.push('ansible-vault not found - install it to manage secrets');
|
|
468
|
+
}
|
|
469
|
+
// Auto-repair vault setup if vault password exists
|
|
470
|
+
if (hasAnsibleVault) {
|
|
471
|
+
const vaultPassFile = path.join(os.homedir(), '.vault_pass');
|
|
472
|
+
if (fs.existsSync(vaultPassFile)) {
|
|
473
|
+
const vaultFixes = await ensureVaultSetup(rootDir, vaultPassFile);
|
|
474
|
+
fixed.push(...vaultFixes);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
// Auto-create stack.local.yml if missing
|
|
478
|
+
const localPath = (0, config_files_js_1.getStackLocalPath)(rootDir);
|
|
479
|
+
if (!fs.existsSync(localPath)) {
|
|
480
|
+
const devOS = detectDevOS();
|
|
481
|
+
const content = '# Local machine config (gitignored - each developer has their own)\n' +
|
|
482
|
+
'# Generated by: npx stack init\n' +
|
|
483
|
+
'\n' +
|
|
484
|
+
'dev_os: ' + devOS + '\n';
|
|
485
|
+
fs.writeFileSync(localPath, content, 'utf8');
|
|
486
|
+
ensureGitignored(rootDir, config_files_js_1.STACK_LOCAL_FILENAME);
|
|
487
|
+
ensureGitignored(rootDir, 'factiii.local.yml');
|
|
488
|
+
fixed.push('Created ' + config_files_js_1.STACK_LOCAL_FILENAME + ' (dev_os: ' + devOS + ')');
|
|
489
|
+
}
|
|
490
|
+
// Report results
|
|
491
|
+
if (fixed.length === 0) {
|
|
492
|
+
console.log('Everything up to date.');
|
|
493
|
+
}
|
|
494
|
+
else {
|
|
495
|
+
console.log('Auto-fixed:\n');
|
|
496
|
+
for (const fix of fixed) {
|
|
497
|
+
console.log(' [OK] ' + fix);
|
|
498
|
+
}
|
|
499
|
+
console.log('');
|
|
500
|
+
}
|
|
188
501
|
}
|
|
189
502
|
exports.default = init;
|
|
190
503
|
//# sourceMappingURL=init.js.map
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-check.d.ts","sourceRoot":"","sources":["../../src/cli/pr-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"pr-check.d.ts","sourceRoot":"","sources":["../../src/cli/pr-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA6BH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyBD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAqFlF;AAED,eAAe,OAAO,CAAC"}
|
package/dist/cli/pr-check.js
CHANGED
|
@@ -50,13 +50,14 @@ exports.prCheck = prCheck;
|
|
|
50
50
|
const fs = __importStar(require("fs"));
|
|
51
51
|
const path = __importStar(require("path"));
|
|
52
52
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
53
|
+
const config_files_js_1 = require("../constants/config-files.js");
|
|
53
54
|
const index_js_1 = require("../plugins/index.js");
|
|
54
55
|
const ssh_helper_js_1 = require("../utils/ssh-helper.js");
|
|
55
56
|
const github_status_js_1 = require("../utils/github-status.js");
|
|
56
57
|
const pr_check_js_1 = require("../plugins/pipelines/factiii/pr-check.js");
|
|
57
58
|
const config_helpers_js_1 = require("../utils/config-helpers.js");
|
|
58
59
|
function loadConfig(rootDir) {
|
|
59
|
-
const configPath =
|
|
60
|
+
const configPath = (0, config_files_js_1.getStackConfigPath)(rootDir);
|
|
60
61
|
if (!fs.existsSync(configPath)) {
|
|
61
62
|
return {};
|
|
62
63
|
}
|
|
@@ -86,7 +87,7 @@ async function prCheck(options = {}) {
|
|
|
86
87
|
const environments = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
87
88
|
const stagingConfig = environments.staging;
|
|
88
89
|
if (!stagingConfig?.domain) {
|
|
89
|
-
console.log('\n❌ Staging not configured in
|
|
90
|
+
console.log('\n❌ Staging not configured in config (staging.domain required)');
|
|
90
91
|
return { success: false, error: 'Staging not configured' };
|
|
91
92
|
}
|
|
92
93
|
const plugins = await (0, index_js_1.loadRelevantPlugins)(rootDir, config);
|
|
@@ -102,10 +103,10 @@ async function prCheck(options = {}) {
|
|
|
102
103
|
}
|
|
103
104
|
// On server: run builds directly and report
|
|
104
105
|
if (process.env.GITHUB_ACTIONS === 'true' || process.env.FACTIII_ON_SERVER === 'true') {
|
|
105
|
-
// When SSH'd from workflow, we're run with cwd=repo (workflow does: cd $REPO_DIR && npx
|
|
106
|
+
// When SSH'd from workflow, we're run with cwd=repo (workflow does: cd $REPO_DIR && npx stack pr-check)
|
|
106
107
|
const repoName = config.name ?? 'app';
|
|
107
108
|
const defaultRepoDir = path.join(process.env.HOME ?? '', '.factiii', repoName);
|
|
108
|
-
const repoDir = fs.existsSync(
|
|
109
|
+
const repoDir = fs.existsSync((0, config_files_js_1.getStackConfigPath)(process.cwd()))
|
|
109
110
|
? process.cwd()
|
|
110
111
|
: defaultRepoDir;
|
|
111
112
|
if (!fs.existsSync(repoDir)) {
|
package/dist/cli/pr-check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-check.js","sourceRoot":"","sources":["../../src/cli/pr-check.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"pr-check.js","sourceRoot":"","sources":["../../src/cli/pr-check.ts"],"names":[],"mappings":"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"}
|