@getcoconut/cli
Version:
A tool for locally emulating and mocking Pulumi Cloud projects.
49 lines • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.action = exports.command = void 0;
const tslib_1 = require("tslib");
const fs = require("fs-extra");
const os = require("os");
const path = require("path");
const uniqid = require("uniqid");
const automation_1 = require("@pulumi/pulumi/automation");
const commander_1 = require("commander");
const errors_1 = require("../errors");
const utils_1 = require("../utils");
const pulumiProgram_1 = require("./mock/pulumiProgram");
exports.command = new commander_1.Command('mock')
.description('mock a Pulumi Cloud project')
.action(action);
function action(options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const projectName = path.basename(options.projectDir);
const projectFile = path.join(options.projectDir, 'index.ts');
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), `coconut-${projectName}-`));
console.info(`mocking project ${projectFile}...`);
if (!fs.pathExistsSync(projectFile)) {
throw new errors_1.CustomError('project file does not exist');
}
fs.ensureDirSync(tempDir);
const workspace = yield automation_1.LocalWorkspace.create({
projectSettings: {
name: projectName,
runtime: 'nodejs',
backend: { url: `file://${tempDir}` },
},
envVars: {
PULUMI_CONFIG_PASSPHRASE: uniqid(),
},
program: pulumiProgram_1.pulumiProgram(projectFile),
});
const stack = yield automation_1.Stack.createOrSelect('mock', workspace);
yield stack.setConfig('cloud:provider', { value: 'mock' });
const result = yield stack.up();
const outputs = utils_1.unmarshalOutputs(result.outputs);
// write outputs to configured outputs targets
utils_1.writeOutputs(outputs, 'mock');
// write outputs to console
console.info(JSON.stringify(outputs, null, 4));
});
}
exports.action = action;
//# sourceMappingURL=mock.js.map