UNPKG

genezio

Version:

Command line utility to interact with Genezio infrastructure.

73 lines (72 loc) 2.92 kB
import { readUTF8File, writeToFile } from "./file.js"; import os from "os"; import path from "path"; import fs from "fs"; import { debugLogger } from "./logging.js"; import { GENEZIO_REGISTRY } from "../constants.js"; import { packageManagers } from "../packageManagers/packageManager.js"; import getUser from "../requests/getUser.js"; import { UserError } from "../errors.js"; export async function getAuthToken() { // Check if GENEZIO_TOKEN is set if (process.env["GENEZIO_TOKEN"]) { debugLogger.debug("Using GENEZIO_TOKEN to authenticate because it's defined in this environment"); const result = process.env["GENEZIO_TOKEN"].trim(); return result; } const homeDirectory = os.homedir(); const loginConfigFilePath = path.join(homeDirectory, ".geneziorc"); try { const result = await readUTF8File(loginConfigFilePath); return result.trim(); } catch (error) { debugLogger.debug(`An error occurred during getAuthToken ${error}`); return undefined; } } export async function isLoggedIn() { try { await getUser(); return true; } catch (error) { if (process.env["GENEZIO_TOKEN"]) { throw new UserError("GENEZIO_TOKEN is set but it's invalid. Please check your token."); } return false; } } export async function setupScopedRepositoryAuth(token) { const packageManagerList = Object.values(packageManagers); const addScopedRegistriesPromises = packageManagerList.map((packageManager) => packageManager.addScopedRegistry("genezio-sdk", `https://${GENEZIO_REGISTRY}/npm`, token)); await Promise.allSettled(addScopedRegistriesPromises).then((results) => { results.forEach((result, i) => { if (result.status === "rejected") { debugLogger.debug(`${packageManagerList[i].command} scoped registry set failed: ${result.reason}`); } }); }); } export async function saveAuthToken(token) { const homeDirectory = os.homedir(); const loginConfigFile = ".geneziorc"; // Add token to .geneziorc file await writeToFile(homeDirectory, loginConfigFile, token, true); // Add scoped registry to all package managers configuration file await setupScopedRepositoryAuth(token); } export async function removeAuthToken() { const homeDirectory = os.homedir(); const loginConfigFilePath = path.join(homeDirectory, ".geneziorc"); const geneziorcPromise = new Promise((resolve, reject) => { fs.unlink(loginConfigFilePath, (error) => { if (error) { reject(error); } resolve(); }); }); const removeScopedRegistryPromises = Object.values(packageManagers).map((packageManager) => packageManager.removeScopedRegistry("genezio-sdk")); return Promise.allSettled([geneziorcPromise, ...removeScopedRegistryPromises]); }