UNPKG

@pulumi/esc-sdk

Version:
92 lines 3.56 kB
"use strict"; // 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