@pulumi/esc-sdk
Version:
NodeJS SDK for Pulumi ESC
92 lines • 3.56 kB
JavaScript
;
// Copyright 2025, Pulumi Corporation. All rights reserved.
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCurrentAccount = exports.getStoredCredentials = exports.getEscCurrentAccountName = exports.getPathToCredsFile = exports.getEscBookkeepingDir = exports.getPulumiHomeDir = void 0;
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
/*
Pulumi workspace and account logic for python SDK.
This is a partial port of ESC and Pulumi CLI code found in
https://github.com/pulumi/esc/tree/main/cmd/esc/cli/workspace
*/
// Returns the path of the ".pulumi" folder where Pulumi puts its artifacts.
function getPulumiHomeDir() {
// Allow the folder we use to be overridden by an environment variable
const dirEnv = process.env.PULUMI_HOME;
if (dirEnv) {
return dirEnv;
}
// Otherwise, use the current user's home dir + .pulumi
const homeDir = process.env.HOME || process.env.USERPROFILE || process.env.HOMEPATH;
if (!homeDir) {
throw new Error('Unable to determine home directory.');
}
return path_1.default.join(homeDir, '.pulumi');
}
exports.getPulumiHomeDir = getPulumiHomeDir;
// Returns the path of the ".esc" folder inside Pulumi home dir.
function getEscBookkeepingDir() {
const homeDir = getPulumiHomeDir();
return path_1.default.join(homeDir, '.esc');
}
exports.getEscBookkeepingDir = getEscBookkeepingDir;
// Returns the path to the esc credentials file on disk.
function getPathToCredsFile(dir) {
return path_1.default.join(dir, 'credentials.json');
}
exports.getPathToCredsFile = getPathToCredsFile;
// Returns the current account name from the ESC credentials file.
function getEscCurrentAccountName() {
try {
const credsFile = getPathToCredsFile(getEscBookkeepingDir());
if (!fs_1.default.existsSync(credsFile)) {
return null;
}
const parsedData = JSON.parse(fs_1.default.readFileSync(credsFile, 'utf-8'));
return parsedData === null || parsedData === void 0 ? void 0 : parsedData.name;
}
catch (error) {
console.error(`An unexpected error occurred: ${error}`);
return null;
}
}
exports.getEscCurrentAccountName = getEscCurrentAccountName;
// Reads and parses credentials from the Pulumi credentials file.
function getStoredCredentials() {
try {
const credsFile = getPathToCredsFile(getPulumiHomeDir());
if (!fs_1.default.existsSync(credsFile)) {
return null;
}
const parsedData = JSON.parse(fs_1.default.readFileSync(credsFile, 'utf8'));
return parsedData;
}
catch (error) {
console.error(`An unexpected error occurred: ${error}`);
return null;
}
}
exports.getStoredCredentials = getStoredCredentials;
// Gets current account values from credentials file.
function getCurrentAccount() {
let backendUrl = getEscCurrentAccountName();
const pulumiCredentials = getStoredCredentials();
if (!pulumiCredentials) {
return {};
}
if (!backendUrl) {
backendUrl = pulumiCredentials.current;
}
if (!backendUrl || !(backendUrl in pulumiCredentials.accounts)) {
return {};
}
return {
account: pulumiCredentials.accounts[backendUrl],
backendUrl,
};
}
exports.getCurrentAccount = getCurrentAccount;
//# sourceMappingURL=workspace.js.map