From 038a074018897c3992fce5bfd972970efc98f745 Mon Sep 17 00:00:00 2001 From: Allison Kemmerle Date: Wed, 22 Jan 2025 14:32:54 -0500 Subject: [PATCH] Add support for create-override command --- commands/account.ts | 2 ++ commands/account/createOverride.ts | 58 ++++++++++++++++++++++++++++++ commands/account/list.ts | 5 +++ lang/en.lyaml | 10 ++++++ 4 files changed, 75 insertions(+) create mode 100644 commands/account/createOverride.ts diff --git a/commands/account.ts b/commands/account.ts index 42f9685ce..d29406aa4 100644 --- a/commands/account.ts +++ b/commands/account.ts @@ -7,6 +7,7 @@ const use = require('./account/use'); const info = require('./account/info'); const remove = require('./account/remove'); const clean = require('./account/clean'); +const createOverride = require('./account/createOverride'); const i18nKey = 'commands.account'; @@ -23,6 +24,7 @@ exports.builder = yargs => { .command(info) .command(remove) .command(clean) + .command(createOverride) .demandCommand(1, ''); return yargs; diff --git a/commands/account/createOverride.ts b/commands/account/createOverride.ts new file mode 100644 index 000000000..4f152d19d --- /dev/null +++ b/commands/account/createOverride.ts @@ -0,0 +1,58 @@ +// @ts-nocheck +const fs = require('fs-extra'); +const path = require('path'); +const { getCwd } = require('@hubspot/local-dev-lib/path'); +const { logger } = require('@hubspot/local-dev-lib/logger'); +const { + getConfigPath, + getAccountId, +} = require('@hubspot/local-dev-lib/config'); +const { addConfigOptions } = require('../../lib/commonOpts'); +const { i18n } = require('../../lib/lang'); +import { EXIT_CODES } from '../../lib/enums/exitCodes'; +const { selectAccountFromConfig } = require('../../lib/prompts/accountsPrompt'); + +const i18nKey = 'commands.account.subcommands.createOverride'; +exports.describe = null; // i18n(`${i18nKey}.describe`); + +exports.command = 'create-override [account]'; + +exports.handler = async options => { + let overrideDefaultAccount = options.account; + + if (!overrideDefaultAccount) { + overrideDefaultAccount = await selectAccountFromConfig(); + } else if (!getAccountId(overrideDefaultAccount)) { + logger.error( + i18n(`${i18nKey}.errors.accountNotFound`, { + specifiedAccount: overrideDefaultAccount, + configPath: getConfigPath(), + }) + ); + overrideDefaultAccount = await selectAccountFromConfig(); + } + const accountId = getAccountId(overrideDefaultAccount); + + try { + const overrideFilePath = path.join(getCwd(), '.hs-account'); + await fs.writeFile(overrideFilePath, accountId.toString(), 'utf8'); + logger.success(i18n(`${i18nKey}.success`, { overrideFilePath })); + } catch (e) { + logger.error(i18n(`${i18nKey}.errors.writeFile`, { error: e.message })); + process.exit(EXIT_CODES.ERROR); + } +}; + +exports.builder = yargs => { + addConfigOptions(yargs); + + yargs.example([ + ['$0 accounts create-override', i18n(`${i18nKey}.examples.default`)], + [ + '$0 accounts create-override 12345678', + i18n(`${i18nKey}.examples.withAccountId`), + ], + ]); + + return yargs; +}; diff --git a/commands/account/list.ts b/commands/account/list.ts index d2a6cd4ec..335a0619f 100644 --- a/commands/account/list.ts +++ b/commands/account/list.ts @@ -4,6 +4,7 @@ const { getConfigPath, getConfigDefaultAccount, getConfigAccounts, + getDefaultAccountOverrideFilePath, } = require('@hubspot/local-dev-lib/config'); const { getAccountIdentifier, @@ -85,6 +86,7 @@ exports.handler = async options => { trackCommandUsage('accounts-list', null, derivedAccountId); const configPath = getConfigPath(); + const overrideFilePath = getDefaultAccountOverrideFilePath(); const accountsList = getConfigAccounts(); const mappedPortalData = sortAndMapPortals(accountsList); const portalData = getPortalData(mappedPortalData); @@ -97,6 +99,9 @@ exports.handler = async options => { ); logger.log(i18n(`${i18nKey}.configPath`, { configPath })); + if (overrideFilePath) { + logger.log(i18n(`${i18nKey}.overrideFilePath`, { overrideFilePath })); + } logger.log( i18n(`${i18nKey}.defaultAccount`, { account: getConfigDefaultAccount(), diff --git a/lang/en.lyaml b/lang/en.lyaml index cc26408d5..56ce99742 100644 --- a/lang/en.lyaml +++ b/lang/en.lyaml @@ -21,11 +21,21 @@ en: account: describe: "Commands for managing configured accounts." subcommands: + createOverride: + describe: "Create a new default account override file (.hs-account) in the current working directory." + success: "Default account override file created at {{ overrideFilePath }}" + errors: + writeFile: "Unable to create the default account override file: {{ error }}" + accountNotFound: "The account \"{{ specifiedAccount }}\" could not be found in {{ configPath }}" + examples: + default: "Create a new default account override file (.hs-account) in the current working directory" + withAccountId: "Create a new default account override file (.hs-account) in the current working directory, using the account with accountId \"1234567\"" list: accounts: "{{#bold}}Accounts{{/bold}}:" defaultAccount: "{{#bold}}Default account{{/bold}}: {{ account }}" describe: "List names of accounts defined in config." configPath: "{{#bold}}Config path{{/bold}}: {{ configPath }}" + overrideFilePath: "{{#bold}}Default account override file path{{/bold}}: {{ overrideFilePath }}" labels: accountId: "Account ID" authType: "Auth Type"