@swovohq/fuel 0.2.0-alpha.4 → 0.2.0-alpha.41
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/LICENSE +21 -0
- package/README.md +231 -0
- package/dist/bin/fuel.js +150 -55
- package/dist/bin/fuel.js.map +1 -1
- package/dist/commands/config-verify.d.ts +4 -0
- package/dist/commands/config-verify.d.ts.map +1 -0
- package/dist/commands/config-verify.js +66 -0
- package/dist/commands/config-verify.js.map +1 -0
- package/dist/commands/create-app.d.ts +7 -2
- package/dist/commands/create-app.d.ts.map +1 -1
- package/dist/commands/create-app.js +84 -49
- package/dist/commands/create-app.js.map +1 -1
- package/dist/commands/infra-deploy.d.ts +5 -0
- package/dist/commands/infra-deploy.d.ts.map +1 -1
- package/dist/commands/infra-deploy.js +59 -15
- package/dist/commands/infra-deploy.js.map +1 -1
- package/dist/commands/infra-destroy.d.ts +2 -0
- package/dist/commands/infra-destroy.d.ts.map +1 -1
- package/dist/commands/infra-destroy.js +5 -6
- package/dist/commands/infra-destroy.js.map +1 -1
- package/dist/commands/infra-init.d.ts +1 -0
- package/dist/commands/infra-init.d.ts.map +1 -1
- package/dist/commands/infra-init.js +99 -14
- package/dist/commands/infra-init.js.map +1 -1
- package/dist/commands/migrate-init.d.ts.map +1 -1
- package/dist/commands/migrate-init.js +28 -12
- package/dist/commands/migrate-init.js.map +1 -1
- package/dist/engines/template-source.d.ts.map +1 -1
- package/dist/engines/template-source.js +14 -1
- package/dist/engines/template-source.js.map +1 -1
- package/dist/infra/config-loader.d.ts.map +1 -1
- package/dist/infra/config-loader.js +10 -2
- package/dist/infra/config-loader.js.map +1 -1
- package/dist/infra/config-writer.d.ts +2 -7
- package/dist/infra/config-writer.d.ts.map +1 -1
- package/dist/infra/config-writer.js +5 -11
- package/dist/infra/config-writer.js.map +1 -1
- package/dist/infra/credentials.d.ts +10 -2
- package/dist/infra/credentials.d.ts.map +1 -1
- package/dist/infra/credentials.js +44 -25
- package/dist/infra/credentials.js.map +1 -1
- package/dist/infra/git-client.d.ts +1 -1
- package/dist/infra/git-client.d.ts.map +1 -1
- package/dist/infra/git-client.js +8 -4
- package/dist/infra/git-client.js.map +1 -1
- package/dist/infra/github-client.d.ts +6 -0
- package/dist/infra/github-client.d.ts.map +1 -0
- package/dist/infra/github-client.js +36 -0
- package/dist/infra/github-client.js.map +1 -0
- package/dist/infra/orchestrator.d.ts +5 -2
- package/dist/infra/orchestrator.d.ts.map +1 -1
- package/dist/infra/orchestrator.js +85 -71
- package/dist/infra/orchestrator.js.map +1 -1
- package/dist/infra/port-utils.d.ts +4 -0
- package/dist/infra/port-utils.d.ts.map +1 -0
- package/dist/infra/port-utils.js +77 -0
- package/dist/infra/port-utils.js.map +1 -0
- package/dist/infra/preflight.d.ts +1 -1
- package/dist/infra/preflight.d.ts.map +1 -1
- package/dist/infra/preflight.js +4 -4
- package/dist/infra/preflight.js.map +1 -1
- package/dist/infra/s3-state-bucket.d.ts +1 -1
- package/dist/infra/s3-state-bucket.d.ts.map +1 -1
- package/dist/infra/s3-state-bucket.js +21 -26
- package/dist/infra/s3-state-bucket.js.map +1 -1
- package/dist/infra/secrets-manager-client.d.ts.map +1 -1
- package/dist/infra/secrets-manager-client.js +35 -1
- package/dist/infra/secrets-manager-client.js.map +1 -1
- package/dist/infra/template-engine.d.ts +1 -1
- package/dist/infra/template-engine.d.ts.map +1 -1
- package/dist/infra/template-engine.js +16 -29
- package/dist/infra/template-engine.js.map +1 -1
- package/dist/infra/tofu-runner.d.ts +5 -8
- package/dist/infra/tofu-runner.d.ts.map +1 -1
- package/dist/infra/tofu-runner.js +42 -80
- package/dist/infra/tofu-runner.js.map +1 -1
- package/package.json +10 -6
- package/schema/fuel.schema.json +158 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.isPortAvailable = isPortAvailable;
|
|
37
|
+
exports.findAvailablePort = findAvailablePort;
|
|
38
|
+
exports.patchDotEnvPort = patchDotEnvPort;
|
|
39
|
+
const net = __importStar(require("net"));
|
|
40
|
+
const fs = __importStar(require("fs-extra"));
|
|
41
|
+
function isPortAvailable(port) {
|
|
42
|
+
return new Promise((resolve) => {
|
|
43
|
+
const server = net.createServer();
|
|
44
|
+
server.once('error', () => resolve(false));
|
|
45
|
+
server.once('listening', () => {
|
|
46
|
+
server.close(() => resolve(true));
|
|
47
|
+
});
|
|
48
|
+
server.listen(port, '127.0.0.1');
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async function findAvailablePort(preferredPort) {
|
|
52
|
+
if (await isPortAvailable(preferredPort)) {
|
|
53
|
+
return preferredPort;
|
|
54
|
+
}
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
const server = net.createServer();
|
|
57
|
+
server.once('error', reject);
|
|
58
|
+
server.once('listening', () => {
|
|
59
|
+
const addr = server.address();
|
|
60
|
+
const port = addr.port;
|
|
61
|
+
server.close(() => resolve(port));
|
|
62
|
+
});
|
|
63
|
+
server.listen(0, '127.0.0.1');
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async function patchDotEnvPort(envFilePath, key, port) {
|
|
67
|
+
let content = await fs.readFile(envFilePath, 'utf-8');
|
|
68
|
+
const regex = new RegExp(`^${key}=.*$`, 'm');
|
|
69
|
+
if (regex.test(content)) {
|
|
70
|
+
content = content.replace(regex, `${key}=${port}`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
content = content.trimEnd() + `\n${key}=${port}\n`;
|
|
74
|
+
}
|
|
75
|
+
await fs.writeFile(envFilePath, content, 'utf-8');
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=port-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port-utils.js","sourceRoot":"","sources":["../../src/infra/port-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,0CASC;AAED,8CAcC;AAED,0CAaC;AA3CD,yCAA0B;AAC1B,6CAA8B;AAE9B,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;QACjC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,aAAqB;IAC3D,IAAI,MAAM,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,OAAO,aAAa,CAAA;IACtB,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;QACjC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC5B,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAqB,CAAA;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACtB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,GAAW,EACX,IAAY;IAEZ,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACrD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5C,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IACpD,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,IAAI,IAAI,IAAI,CAAA;IACpD,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AACnD,CAAC"}
|
|
@@ -5,5 +5,5 @@ export interface PreflightResult {
|
|
|
5
5
|
credentials: Credentials;
|
|
6
6
|
tofuVersion: string;
|
|
7
7
|
}
|
|
8
|
-
export declare function runPreflight(configPath: string): Promise<PreflightResult>;
|
|
8
|
+
export declare function runPreflight(configPath: string, credentialOverrides?: Partial<Record<import('./types').CredentialKey, string>>): Promise<PreflightResult>;
|
|
9
9
|
//# sourceMappingURL=preflight.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/infra/preflight.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAclD,wBAAgB,gBAAgB,IAAI,MAAM,CA2BzC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,YAAY,
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/infra/preflight.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAclD,wBAAgB,gBAAgB,IAAI,MAAM,CA2BzC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,GAC7E,OAAO,CAAC,eAAe,CAAC,CA8B1B"}
|
package/dist/infra/preflight.js
CHANGED
|
@@ -41,7 +41,7 @@ function checkTofuVersion() {
|
|
|
41
41
|
}
|
|
42
42
|
return `${match[1]}.${match[2]}.${match[3]}`;
|
|
43
43
|
}
|
|
44
|
-
async function runPreflight(configPath) {
|
|
44
|
+
async function runPreflight(configPath, credentialOverrides) {
|
|
45
45
|
// Check 1: tofu binary
|
|
46
46
|
let tofuVersion;
|
|
47
47
|
try {
|
|
@@ -54,7 +54,7 @@ async function runPreflight(configPath) {
|
|
|
54
54
|
// Check 2: credentials
|
|
55
55
|
let credentials;
|
|
56
56
|
try {
|
|
57
|
-
credentials = await (0, credentials_1.resolveCredentials)();
|
|
57
|
+
credentials = await (0, credentials_1.resolveCredentials)(undefined, credentialOverrides);
|
|
58
58
|
pass('AWS credentials valid');
|
|
59
59
|
pass('GitHub token valid');
|
|
60
60
|
}
|
|
@@ -65,10 +65,10 @@ async function runPreflight(configPath) {
|
|
|
65
65
|
let config;
|
|
66
66
|
try {
|
|
67
67
|
config = await (0, config_loader_1.loadInfraConfig)(configPath);
|
|
68
|
-
pass(`
|
|
68
|
+
pass(`fuel.yml valid — ${config.apps.length} app(s) (${config.apps.map((a) => a.name).join(', ')})`);
|
|
69
69
|
}
|
|
70
70
|
catch (err) {
|
|
71
|
-
fail('
|
|
71
|
+
fail('fuel.yml', err.message);
|
|
72
72
|
}
|
|
73
73
|
return { config: config, credentials: credentials, tofuVersion: tofuVersion };
|
|
74
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/infra/preflight.ts"],"names":[],"mappings":";;;;;AAkBA,4CA2BC;AAQD,
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/infra/preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Credentials } from './types';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function deriveSuffix(projectName: string): string;
|
|
3
3
|
export declare function buildStateBucketName(projectName: string, suffix: string): string;
|
|
4
4
|
export declare function ensureStateBucket(credentials: Credentials, bucketName: string): Promise<void>;
|
|
5
5
|
//# sourceMappingURL=s3-state-bucket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-state-bucket.d.ts","sourceRoot":"","sources":["../../src/infra/s3-state-bucket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"s3-state-bucket.d.ts","sourceRoot":"","sources":["../../src/infra/s3-state-bucket.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAyCf"}
|
|
@@ -36,29 +36,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.
|
|
39
|
+
exports.deriveSuffix = deriveSuffix;
|
|
40
40
|
exports.buildStateBucketName = buildStateBucketName;
|
|
41
41
|
exports.ensureStateBucket = ensureStateBucket;
|
|
42
42
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
43
|
-
const fs = __importStar(require("fs-extra"));
|
|
44
|
-
const path = __importStar(require("path"));
|
|
45
43
|
const crypto = __importStar(require("crypto"));
|
|
46
44
|
const chalk_1 = __importDefault(require("chalk"));
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return crypto.randomBytes(4).toString('hex');
|
|
50
|
-
}
|
|
51
|
-
async function loadOrCreateSuffix(projectRoot) {
|
|
52
|
-
const stateFilePath = path.join(projectRoot, STATE_FILE);
|
|
53
|
-
if (await fs.pathExists(stateFilePath)) {
|
|
54
|
-
const state = await fs.readJson(stateFilePath);
|
|
55
|
-
if (state.stateBucketSuffix) {
|
|
56
|
-
return state.stateBucketSuffix;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
const suffix = generateSuffix();
|
|
60
|
-
await fs.writeJson(stateFilePath, { stateBucketSuffix: suffix }, { spaces: 2 });
|
|
61
|
-
return suffix;
|
|
45
|
+
function deriveSuffix(projectName) {
|
|
46
|
+
return crypto.createHash('sha256').update(projectName).digest('hex').slice(0, 8);
|
|
62
47
|
}
|
|
63
48
|
function buildStateBucketName(projectName, suffix) {
|
|
64
49
|
return `${projectName}-infrastructure-tf-${suffix}`;
|
|
@@ -77,16 +62,26 @@ async function ensureStateBucket(credentials, bucketName) {
|
|
|
77
62
|
return;
|
|
78
63
|
}
|
|
79
64
|
catch (err) {
|
|
80
|
-
|
|
81
|
-
|
|
65
|
+
const statusCode = err['$metadata']?.httpStatusCode;
|
|
66
|
+
if (statusCode !== 404 && err.name !== 'NotFound') {
|
|
67
|
+
const detail = err.message || err.name || 'Unknown error';
|
|
68
|
+
throw new Error(`Failed to check state bucket "${bucketName}" (HTTP ${statusCode || '?'}): ${detail}\n` +
|
|
69
|
+
'Verify your AWS credentials have s3:HeadBucket permission and the region is correct.');
|
|
82
70
|
}
|
|
83
71
|
}
|
|
84
72
|
console.log(chalk_1.default.cyan(` Creating state bucket: ${bucketName}`));
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
73
|
+
try {
|
|
74
|
+
await client.send(new client_s3_1.CreateBucketCommand({ Bucket: bucketName }));
|
|
75
|
+
await client.send(new client_s3_1.PutBucketVersioningCommand({
|
|
76
|
+
Bucket: bucketName,
|
|
77
|
+
VersioningConfiguration: { Status: 'Enabled' },
|
|
78
|
+
}));
|
|
79
|
+
console.log(chalk_1.default.green(` ✓ State bucket created with versioning enabled`));
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
const detail = err.message || err.name || 'Unknown error';
|
|
83
|
+
throw new Error(`Failed to create state bucket "${bucketName}": ${detail}\n` +
|
|
84
|
+
'Verify your AWS credentials have s3:CreateBucket permission and the region is correct.');
|
|
85
|
+
}
|
|
91
86
|
}
|
|
92
87
|
//# sourceMappingURL=s3-state-bucket.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-state-bucket.js","sourceRoot":"","sources":["../../src/infra/s3-state-bucket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"s3-state-bucket.js","sourceRoot":"","sources":["../../src/infra/s3-state-bucket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,oCAEC;AAED,oDAEC;AAED,8CA4CC;AA9DD,kDAK2B;AAC3B,+CAAgC;AAChC,kDAAyB;AAGzB,SAAgB,YAAY,CAAC,WAAmB;IAC9C,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAClF,CAAC;AAED,SAAgB,oBAAoB,CAAC,WAAmB,EAAE,MAAc;IACtE,OAAO,GAAG,WAAW,sBAAsB,MAAM,EAAE,CAAA;AACrD,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,WAAwB,EACxB,UAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,oBAAQ,CAAC;QAC1B,MAAM,EAAE,WAAW,CAAC,UAAU;QAC9B,WAAW,EAAE;YACX,WAAW,EAAE,WAAW,CAAC,iBAAiB;YAC1C,eAAe,EAAE,WAAW,CAAC,qBAAqB;SACnD;KACF,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,6BAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC,CAAA;QAC1E,OAAM;IACR,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,EAAE,cAAc,CAAA;QACnD,IAAI,UAAU,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,eAAe,CAAA;YACzD,MAAM,IAAI,KAAK,CACb,iCAAiC,UAAU,WAAW,UAAU,IAAI,GAAG,MAAM,MAAM,IAAI;gBACrF,sFAAsF,CACzF,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC,CAAA;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,+BAAmB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QAClE,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,sCAA0B,CAAC;YAC7B,MAAM,EAAE,UAAU;YAClB,uBAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;SAC/C,CAAC,CACH,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAA;IAC9E,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,eAAe,CAAA;QACzD,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,MAAM,MAAM,IAAI;YAC1D,wFAAwF,CAC3F,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets-manager-client.d.ts","sourceRoot":"","sources":["../../src/infra/secrets-manager-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"secrets-manager-client.d.ts","sourceRoot":"","sources":["../../src/infra/secrets-manager-client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,wBAAsB,SAAS,CAC7B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -1,7 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.putSecret = putSecret;
|
|
4
37
|
const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
|
|
38
|
+
const YAML = __importStar(require("yaml"));
|
|
5
39
|
async function putSecret(credentials, name, value) {
|
|
6
40
|
const client = new client_secrets_manager_1.SecretsManagerClient({
|
|
7
41
|
region: credentials.AWS_REGION,
|
|
@@ -10,7 +44,7 @@ async function putSecret(credentials, name, value) {
|
|
|
10
44
|
secretAccessKey: credentials.AWS_SECRET_ACCESS_KEY,
|
|
11
45
|
},
|
|
12
46
|
});
|
|
13
|
-
const secretString =
|
|
47
|
+
const secretString = YAML.stringify(value);
|
|
14
48
|
try {
|
|
15
49
|
await client.send(new client_secrets_manager_1.CreateSecretCommand({ Name: name, SecretString: secretString }));
|
|
16
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets-manager-client.js","sourceRoot":"","sources":["../../src/infra/secrets-manager-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"secrets-manager-client.js","sourceRoot":"","sources":["../../src/infra/secrets-manager-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,8BAwBC;AAhCD,4EAIwC;AACxC,2CAA4B;AAGrB,KAAK,UAAU,SAAS,CAC7B,WAAwB,EACxB,IAAY,EACZ,KAA8B;IAE9B,MAAM,MAAM,GAAG,IAAI,6CAAoB,CAAC;QACtC,MAAM,EAAE,WAAW,CAAC,UAAU;QAC9B,WAAW,EAAE;YACX,WAAW,EAAE,WAAW,CAAC,iBAAiB;YAC1C,eAAe,EAAE,WAAW,CAAC,qBAAqB;SACnD;KACF,CAAC,CAAA;IAEF,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAE1C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,4CAAmB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;IACxF,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;YACzC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,8CAAqB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;QAC9F,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -39,5 +39,5 @@ export declare function copyWorkflowFiles(projectDir: string, config: InfraConfi
|
|
|
39
39
|
* - FUEL_INFRA_PATH env var (override for testing / CI)
|
|
40
40
|
* - process.cwd()/../fuel-infrastructure (default monorepo layout)
|
|
41
41
|
*/
|
|
42
|
-
export declare function generateInfra(targetRoot: string, config: InfraConfig, credentials: Credentials): Promise<void>;
|
|
42
|
+
export declare function generateInfra(targetRoot: string, config: InfraConfig, credentials: Credentials, infraSourcePath?: string): Promise<void>;
|
|
43
43
|
//# sourceMappingURL=template-engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-engine.d.ts","sourceRoot":"","sources":["../../src/infra/template-engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"template-engine.d.ts","sourceRoot":"","sources":["../../src/infra/template-engine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAUlD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAenE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAMpE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBzE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA2Ef;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,WAAW,EACxB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
|
|
@@ -46,27 +46,12 @@ exports.copyWorkflowFiles = copyWorkflowFiles;
|
|
|
46
46
|
exports.generateInfra = generateInfra;
|
|
47
47
|
const fs = __importStar(require("fs-extra"));
|
|
48
48
|
const path = __importStar(require("path"));
|
|
49
|
-
const crypto = __importStar(require("crypto"));
|
|
50
49
|
const chalk_1 = __importDefault(require("chalk"));
|
|
51
50
|
const s3_state_bucket_1 = require("./s3-state-bucket");
|
|
52
51
|
// Modules that must never be removed during pruning, regardless of main.tf references
|
|
53
52
|
const MODULES_DONT_REMOVE = ['secret-main'];
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
*/
|
|
57
|
-
function generateDbPassword() {
|
|
58
|
-
return crypto.randomBytes(16).toString('hex');
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Fetch the caller's public IPv4 address and return it as a /32 CIDR block.
|
|
62
|
-
*/
|
|
63
|
-
async function fetchPublicIpCidr() {
|
|
64
|
-
const res = await fetch('https://checkip.amazonaws.com');
|
|
65
|
-
if (!res.ok) {
|
|
66
|
-
throw new Error(`Failed to fetch public IP: ${res.status} ${res.statusText}`);
|
|
67
|
-
}
|
|
68
|
-
const ip = (await res.text()).trim();
|
|
69
|
-
return `${ip}/32`;
|
|
53
|
+
function slugify(name) {
|
|
54
|
+
return name.replace(/[^a-z0-9]/gi, '_').toLowerCase();
|
|
70
55
|
}
|
|
71
56
|
/**
|
|
72
57
|
* Parse a .tfvars file content into a Record<string, string>.
|
|
@@ -129,8 +114,9 @@ async function patchDefaultTfvars(infraRoot, config, credentials) {
|
|
|
129
114
|
const vars = parseTfvars(content);
|
|
130
115
|
vars['project_name'] = config.name;
|
|
131
116
|
vars['aws_region'] = credentials.AWS_REGION;
|
|
132
|
-
vars['
|
|
133
|
-
vars['
|
|
117
|
+
vars['db_username'] = slugify(config.name);
|
|
118
|
+
vars['db_name'] = slugify(config.name);
|
|
119
|
+
vars['github_repo_name'] = `${config.name}-monorepo`;
|
|
134
120
|
await fs.writeFile(filePath, serializeTfvars(vars), 'utf8');
|
|
135
121
|
}
|
|
136
122
|
/**
|
|
@@ -163,19 +149,19 @@ async function copyWorkflowFiles(projectDir, config, infraSrcRoot) {
|
|
|
163
149
|
const workflowsDir = path.join(projectDir, '.github', 'workflows');
|
|
164
150
|
await fs.ensureDir(workflowsDir);
|
|
165
151
|
// Read template files
|
|
166
|
-
const deployTemplatePath = path.join(infraSrcRoot, '
|
|
167
|
-
const testsTemplatePath = path.join(infraSrcRoot, '
|
|
152
|
+
const deployTemplatePath = path.join(infraSrcRoot, 'templates', 'ecs', 'workflows', 'build_and_deploy.yml');
|
|
153
|
+
const testsTemplatePath = path.join(infraSrcRoot, 'templates', 'ecs', 'workflows', 'tests.yml');
|
|
168
154
|
const deployTemplate = await fs.readFile(deployTemplatePath, 'utf8');
|
|
169
155
|
const testsContent = await fs.readFile(testsTemplatePath, 'utf8');
|
|
170
156
|
// Copy tests.yml as-is
|
|
171
157
|
await fs.writeFile(path.join(workflowsDir, 'tests.yml'), testsContent, 'utf8');
|
|
172
158
|
// Helper: apply substitutions for a given service entry
|
|
173
159
|
function applySubstitutions(template, name, dockerfile, buildEnv, branch, secretName) {
|
|
174
|
-
const
|
|
175
|
-
? Object.entries(buildEnv)
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
160
|
+
const buildArgLines = buildEnv && Object.keys(buildEnv).length > 0
|
|
161
|
+
? Object.entries(buildEnv).map(([k, v]) => `${k}=${v}`)
|
|
162
|
+
: [];
|
|
163
|
+
const buildArgsIndent = template.match(/^(\s*)BUILDARGS$/m)?.[1] ?? '';
|
|
164
|
+
const buildArgs = buildArgLines.join(`\n${buildArgsIndent}`);
|
|
179
165
|
return template
|
|
180
166
|
.replaceAll('REPLACEME', name)
|
|
181
167
|
.replaceAll('DOCKERFILE', dockerfile)
|
|
@@ -202,8 +188,9 @@ async function copyWorkflowFiles(projectDir, config, infraSrcRoot) {
|
|
|
202
188
|
* - FUEL_INFRA_PATH env var (override for testing / CI)
|
|
203
189
|
* - process.cwd()/../fuel-infrastructure (default monorepo layout)
|
|
204
190
|
*/
|
|
205
|
-
async function generateInfra(targetRoot, config, credentials) {
|
|
206
|
-
const infraSourceRoot =
|
|
191
|
+
async function generateInfra(targetRoot, config, credentials, infraSourcePath) {
|
|
192
|
+
const infraSourceRoot = infraSourcePath ??
|
|
193
|
+
process.env.FUEL_INFRA_PATH ??
|
|
207
194
|
path.resolve(__dirname, '..', '..', '..', 'infra');
|
|
208
195
|
const infraRoot = path.join(targetRoot, 'infra');
|
|
209
196
|
const templateSrc = path.join(infraSourceRoot, 'templates', 'ecs');
|
|
@@ -220,7 +207,7 @@ async function generateInfra(targetRoot, config, credentials) {
|
|
|
220
207
|
// Step 3: Patch main.tf — replace ../../modules with ./modules
|
|
221
208
|
await patchMainTf(infraRoot);
|
|
222
209
|
// Step 4: Patch backend.tf — replace {project_name}, {aws_region}, and {unique_suffix}
|
|
223
|
-
const suffix =
|
|
210
|
+
const suffix = (0, s3_state_bucket_1.deriveSuffix)(config.name);
|
|
224
211
|
await patchBackendTf(infraRoot, config.name, credentials.AWS_REGION, suffix);
|
|
225
212
|
// Step 5: Patch default.tfvars — fill ssl, project_name, aws_region, db_password
|
|
226
213
|
await patchDefaultTfvars(infraRoot, config, credentials);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-engine.js","sourceRoot":"","sources":["../../src/infra/template-engine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"template-engine.js","sourceRoot":"","sources":["../../src/infra/template-engine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,kCAeC;AAMD,0CAMC;AAKD,kCAKC;AAKD,wCAaC;AAKD,gDAgBC;AAMD,gDAoBC;AAMD,8CA+EC;AAUD,sCA+CC;AArQD,6CAA8B;AAC9B,2CAA4B;AAC5B,kDAAyB;AAEzB,uDAAgD;AAEhD,sFAAsF;AACtF,MAAM,mBAAmB,GAAG,CAAC,aAAa,CAAC,CAAA;AAE3C,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;AACvD,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,OAAe;IACzC,MAAM,MAAM,GAA2B,EAAE,CAAA;IACzC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,SAAQ;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;QACvC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACxC,kCAAkC;QAClC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5B,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACrB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,IAA4B;IAC1D,OAAO,CACL,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;SAChC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CACrB,CAAA;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW,CAAC,SAAiB;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;IAChE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC/C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,WAAmB,EACnB,SAAiB,EACjB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,OAAO;SACpB,UAAU,CAAC,gBAAgB,EAAE,WAAW,CAAC;SACzC,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC;SACrC,UAAU,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAA;IAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAC/C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CACtC,SAAiB,EACjB,MAAmB,EACnB,WAAwB;IAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;IACvD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IAEjC,IAAI,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,IAAI,CAAA;IAClC,IAAI,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,UAAU,CAAA;IAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,WAAW,CAAA;IAEpD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;AAC7D,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,kBAAkB,CAAC,SAAiB;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAErD,0EAA0E;IAC1E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,mBAAmB,CAAC,CAAA;IACxD,MAAM,KAAK,GAAG,sCAAsC,CAAA;IACpD,IAAI,KAA6B,CAAA;IACjC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAErE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,iBAAiB,CACrC,UAAkB,EAClB,MAAmB,EACnB,YAAoB;IAEpB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;IAClE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IAEhC,sBAAsB;IACtB,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,YAAY,EACZ,WAAW,EACX,KAAK,EACL,WAAW,EACX,sBAAsB,CACvB,CAAA;IACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CACjC,YAAY,EACZ,WAAW,EACX,KAAK,EACL,WAAW,EACX,WAAW,CACZ,CAAA;IAED,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;IACpE,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;IAEjE,uBAAuB;IACvB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;IAE9E,wDAAwD;IACxD,SAAS,kBAAkB,CACzB,QAAgB,EAChB,IAAY,EACZ,UAAkB,EAClB,QAA4C,EAC5C,MAAc,EACd,UAAkB;QAElB,MAAM,aAAa,GACjB,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;YAC1C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,CAAC,CAAC,EAAE,CAAA;QACR,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACtE,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,eAAe,EAAE,CAAC,CAAA;QAE5D,OAAO,QAAQ;aACZ,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC;aAC7B,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC;aACpC,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC;aAClC,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC;aACnC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACzC,CAAC;IAED,gCAAgC;IAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,kBAAkB,CAChC,cAAc,EACd,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,UAAU,IAAI,YAAY,EAC9B,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,MAAM,IAAI,MAAM,EACpB,GAAG,GAAG,CAAC,IAAI,UAAU,CACtB,CAAA;QACD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAEhF,mDAAmD;QACnD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,kBAAkB,CACtC,cAAc,EACd,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,UAAU,IAAI,YAAY,EACjC,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,MAAM,IAAI,MAAM,EACpB,GAAG,GAAG,CAAC,IAAI,UAAU,CACtB,CAAA;YACD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,IAAI,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;QAC3F,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,aAAa,CACjC,UAAkB,EAClB,MAAmB,EACnB,WAAwB,EACxB,eAAwB;IAExB,MAAM,eAAe,GACnB,eAAe;QACf,OAAO,CAAC,GAAG,CAAC,eAAe;QAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;IAExD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,8BAA8B,WAAW,IAAI;YAC3C,8EAA8E,CACjF,CAAA;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAA;IAEvD,8DAA8D;IAC9D,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IAErC,mEAAmE;IACnE,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;IAE1D,+DAA+D;IAC/D,MAAM,WAAW,CAAC,SAAS,CAAC,CAAA;IAE5B,uFAAuF;IACvF,MAAM,MAAM,GAAG,IAAA,8BAAY,EAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxC,MAAM,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAE5E,iFAAiF;IACjF,MAAM,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IAExD,0DAA0D;IAC1D,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAA;IAEnC,+EAA+E;IAC/E,MAAM,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;IAE5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAA;AACxD,CAAC"}
|
|
@@ -1,26 +1,23 @@
|
|
|
1
1
|
import { Credentials } from './types';
|
|
2
2
|
export interface TofuRunResult {
|
|
3
|
-
|
|
4
|
-
failedPass: number | null;
|
|
3
|
+
success: boolean;
|
|
5
4
|
outputs: Record<string, {
|
|
6
5
|
value: any;
|
|
7
6
|
type: string;
|
|
8
7
|
}> | null;
|
|
9
8
|
}
|
|
10
9
|
export interface TofuVars {
|
|
11
|
-
db_password: string;
|
|
12
10
|
db_username: string;
|
|
13
11
|
db_name: string;
|
|
12
|
+
github_repo_name: string;
|
|
14
13
|
}
|
|
15
|
-
export declare class
|
|
16
|
-
|
|
17
|
-
readonly completedPasses: number[];
|
|
18
|
-
constructor(failedPass: number, completedPasses: number[]);
|
|
14
|
+
export declare class TofuApplyError extends Error {
|
|
15
|
+
constructor();
|
|
19
16
|
}
|
|
20
17
|
export interface TofuSequenceOptions {
|
|
21
18
|
planOnly?: boolean;
|
|
22
19
|
}
|
|
23
20
|
export declare function buildDestroyArgs(credentials: Credentials, tofuVars: TofuVars): string[];
|
|
24
21
|
export declare function runTofuDestroy(infraDir: string, credentials: Credentials, tofuVars: TofuVars): Promise<void>;
|
|
25
|
-
export declare function
|
|
22
|
+
export declare function runTofuApply(infraDir: string, credentials: Credentials, tofuVars?: TofuVars, options?: TofuSequenceOptions): Promise<TofuRunResult>;
|
|
26
23
|
//# sourceMappingURL=tofu-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tofu-runner.d.ts","sourceRoot":"","sources":["../../src/infra/tofu-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGrC,MAAM,WAAW,aAAa;IAC5B,
|
|
1
|
+
{"version":3,"file":"tofu-runner.d.ts","sourceRoot":"","sources":["../../src/infra/tofu-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGrC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAA;CAC7D;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,qBAAa,cAAe,SAAQ,KAAK;;CAKxC;AAyBD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAwGD,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,GACjB,MAAM,EAAE,CAMV;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,QAAQ,EACnB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,CAAC,CA8CxB"}
|