@sprucelabs/spruce-cli 14.29.2 → 14.29.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/build/__tests__/behavioral/events/CreatingAListener.test.d.ts +1 -0
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +67 -24
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/{ListeningToAnEventYouCreate.test.d.ts → events/ListeningToAnEventYouCreate.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{ListeningToAnEventYouCreate.test.js → events/ListeningToAnEventYouCreate.test.js} +2 -2
- package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -0
- package/build/__tests__/implementation/PkgService.test.js +3 -6
- package/build/__tests__/implementation/PkgService.test.js.map +1 -1
- package/build/cli.js +9 -7
- package/build/cli.js.map +1 -1
- package/build/features/deploy/actions/HerokuAction.js.map +1 -1
- package/build/features/skill/actions/RegisterAction.js +1 -0
- package/build/features/skill/actions/RegisterAction.js.map +1 -1
- package/build/schemas/v2020_07_22/personWithToken.builder.js +1 -0
- package/build/schemas/v2020_07_22/personWithToken.builder.js.map +1 -1
- package/build/services/PkgService.d.ts +4 -16
- package/build/services/PkgService.js +11 -127
- package/build/services/PkgService.js.map +1 -1
- package/build/services/ServiceFactory.d.ts +1 -2
- package/build/services/ServiceFactory.js +2 -4
- package/build/services/ServiceFactory.js.map +1 -1
- package/build/types/cli.types.d.ts +1 -6
- package/build/types/cli.types.js +8 -0
- package/build/types/cli.types.js.map +1 -1
- package/package.json +34 -34
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +20 -0
- package/src/__tests__/behavioral/{ListeningToAnEventYouCreate.test.ts → events/ListeningToAnEventYouCreate.test.ts} +2 -2
- package/src/__tests__/implementation/PkgService.test.ts +1 -2
- package/src/cli.ts +4 -1
- package/src/features/deploy/actions/HerokuAction.ts +1 -2
- package/src/features/skill/actions/RegisterAction.ts +3 -0
- package/src/schemas/v2020_07_22/personWithToken.builder.ts +1 -0
- package/src/services/PkgService.ts +13 -93
- package/src/services/ServiceFactory.ts +10 -7
- package/src/types/cli.types.ts +1 -6
- package/build/__tests__/behavioral/ListeningToAnEventYouCreate.test.js.map +0 -1
- package/build/__tests__/behavioral/README.md +0 -8
- package/build/__tests__/implementation/AuthService.test.d.ts +0 -14
- package/build/__tests__/implementation/AuthService.test.js +0 -255
- package/build/__tests__/implementation/AuthService.test.js.map +0 -1
- package/build/__tests__/implementation/README.md +0 -5
- package/build/components/README.md +0 -5
- package/build/services/AuthService.d.ts +0 -23
- package/build/services/AuthService.js +0 -109
- package/build/services/AuthService.js.map +0 -1
- package/src/__tests__/behavioral/README.md +0 -8
- package/src/__tests__/implementation/AuthService.test.ts +0 -95
- package/src/__tests__/implementation/README.md +0 -5
- package/src/components/README.md +0 -5
- package/src/services/AuthService.ts +0 -91
package/build/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts"],"names":["Cli","cwd","featureInstaller","serviceFactory","emitter","attacher","actionExecuter","on","off","emit","options","install","code","getFeature","isInstalled","skill","status","errors","SpruceError","commandService","Service","command","shouldRunOnSourceFiles","execute","results","resultParts","stdout","split","HEALTH_DIVIDER","JSON","parse","error","originalError","apiClients","key","disconnect","program","CliGlobalEmitter","Emitter","process","ImportService","enableCaching","ServiceFactory","apiClientFactory","buildApiClientFactory","storeFactory","StoreFactory","homeDir","osUtil","homedir","ui","graphicsInterface","TerminalInterface","writerFactory","WriterFactory","templates","settings","linter","optionOverrides","loadOptionOverrides","blockedCommands","loadCommandBlocks","actionFactory","ActionFactory","ActionExecuter","featureInstallerFactory","FeatureInstallerFactory","WithAllFeatures","FeatureCommandAttacher","codes","featureCodes","feature","attachFeature","commands","sort","a","b","_name","localeCompare","action","_","args","cli","pkg","blocks","doesExist","get","mapped","overrides","Object","keys","forEach","argParserUtil","bootOptions","apiClientUtil","generateClientCacheKey","connectToApi","connect","eventsContracts","require","MercuryClientFactory","Client","contracts","host","DEFAULT_HOST","allowSelfSignedCrt","client","shouldAuthAsCurrentSkill","shouldAuthAsLoggedInPerson","auth","skillId","apiKey","getCurrentSkill","id","person","getLoggedInPerson","token","length","authenticate","run","argv","Command","storeOptionsAsProperties","option","dirIdx","findIndex","v","dir","newCwd","diskUtil","resolvePath","terminal","env","CLI_RENDER_STACK_TRACES","clear","renderHero","CLI_HERO","isAskingForVersion","json","renderHeadline","version","Boot","HOST","setupInFlightEntertainment","parseAsync","_actionResults","getClients","doesSupportColor","ENABLE_INSTALL_INTERTAINMENT","CommandService","__dirname","InFlightEntertainment","setup","FeatureInstaller","startInFlightIntertainmentHandler","didUpdateHandler","start","message","writeStatus","stopInFlightIntertainmentHandler","stop"],"mappings":"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","sourcesContent":["import osUtil from 'os'\nimport {\n\tConnectionOptions,\n\tMercuryClientFactory,\n} from '@sprucelabs/mercury-client'\nimport { MercuryEventEmitter, SpruceSchemas } from '@sprucelabs/mercury-types'\nimport {\n\tdiskUtil,\n\tHealthCheckResults,\n\tHEALTH_DIVIDER,\n} from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport { Command, CommanderStatic } from 'commander'\nimport './addons/filePrompt.addon'\nimport { CLI_HERO, DEFAULT_HOST } from './constants'\nimport SpruceError from './errors/SpruceError'\nimport ActionExecuter from './features/ActionExecuter'\nimport ActionFactory from './features/ActionFactory'\nimport FeatureCommandAttacher, {\n\tBlockedCommands,\n\tOptionOverrides,\n} from './features/FeatureCommandAttacher'\nimport FeatureInstaller from './features/FeatureInstaller'\nimport FeatureInstallerFactory from './features/FeatureInstallerFactory'\nimport { FeatureCode, InstallFeatureOptions } from './features/features.types'\nimport CliGlobalEmitter, {\n\tGlobalEmitter,\n\tGlobalEventContract,\n} from './GlobalEmitter'\nimport InFlightEntertainment from './InFlightEntertainment'\nimport TerminalInterface from './interfaces/TerminalInterface'\nimport CommandService from './services/CommandService'\nimport ImportService from './services/ImportService'\nimport PkgService from './services/PkgService'\nimport ServiceFactory from './services/ServiceFactory'\nimport StoreFactory from './stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from './types/apiClient.types'\nimport { GraphicsInterface } from './types/cli.types'\nimport apiClientUtil from './utilities/apiClient.utility'\nimport { argParserUtil } from './utilities/argParser.utility'\nimport WriterFactory from './writers/WriterFactory'\n\ninterface HealthOptions {\n\tshouldRunOnSourceFiles?: boolean\n}\n\nexport interface CliInterface extends MercuryEventEmitter<GlobalEventContract> {\n\tinstallFeatures: FeatureInstaller['install']\n\tgetFeature: FeatureInstaller['getFeature']\n\tcheckHealth(options?: HealthOptions): Promise<HealthCheckResults>\n}\n\nexport interface CliBootOptions {\n\tcwd?: string\n\thomeDir?: string\n\tprogram?: CommanderStatic['program']\n\tgraphicsInterface?: GraphicsInterface\n\temitter?: GlobalEmitter\n\tapiClientFactory?: ApiClientFactory\n\tfeatureInstaller?: FeatureInstaller\n\thost?: string\n}\n\ntype PromiseCache = Record<string, Promise<ApiClient>>\n\nexport default class Cli implements CliInterface {\n\tprivate cwd: string\n\tprivate featureInstaller: FeatureInstaller\n\tprivate serviceFactory: ServiceFactory\n\tpublic readonly emitter: GlobalEmitter\n\tprivate static apiClients: PromiseCache = {}\n\tprivate attacher?: FeatureCommandAttacher\n\tprivate actionExecuter?: ActionExecuter\n\n\tprivate constructor(\n\t\tcwd: string,\n\t\tfeatureInstaller: FeatureInstaller,\n\t\tserviceFactory: ServiceFactory,\n\t\temitter: GlobalEmitter,\n\t\tattacher?: FeatureCommandAttacher,\n\t\tactionExecuter?: ActionExecuter\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.featureInstaller = featureInstaller\n\t\tthis.serviceFactory = serviceFactory\n\t\tthis.emitter = emitter\n\t\tthis.attacher = attacher\n\t\tthis.actionExecuter = actionExecuter\n\t}\n\n\tpublic static async resetApiClients() {\n\t\tfor (const key in this.apiClients) {\n\t\t\tawait (await this.apiClients[key]).disconnect()\n\t\t}\n\n\t\tthis.apiClients = {}\n\t}\n\n\tpublic getAttacher() {\n\t\treturn this.attacher\n\t}\n\n\tpublic getActionExecuter() {\n\t\treturn this.actionExecuter\n\t}\n\n\tpublic async on(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.on(...args)\n\t}\n\n\tpublic async off(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.off(...args)\n\t}\n\n\tpublic async emit(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.emit(...args)\n\t}\n\n\tpublic async installFeatures(options: InstallFeatureOptions) {\n\t\treturn this.featureInstaller.install(options)\n\t}\n\n\tpublic getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async checkHealth(\n\t\toptions?: HealthOptions\n\t): Promise<HealthCheckResults> {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (!isInstalled) {\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tcode: 'SKILL_NOT_INSTALLED',\n\t\t\t\t\t\t}),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst commandService = this.serviceFactory.Service(this.cwd, 'command')\n\t\t\tconst command =\n\t\t\t\toptions?.shouldRunOnSourceFiles === false\n\t\t\t\t\t? 'yarn health'\n\t\t\t\t\t: 'yarn health.local'\n\t\t\tconst results = await commandService.execute(command)\n\t\t\tconst resultParts = results.stdout.split(HEALTH_DIVIDER)\n\n\t\t\treturn JSON.parse(resultParts[1]) as HealthCheckResults\n\t\t} catch (originalError: any) {\n\t\t\tconst error = new SpruceError({\n\t\t\t\tcode: 'BOOT_ERROR',\n\t\t\t\toriginalError,\n\t\t\t})\n\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [error],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static async Boot(options?: CliBootOptions): Promise<CliInterface> {\n\t\tconst program = options?.program\n\t\tconst emitter = options?.emitter ?? CliGlobalEmitter.Emitter()\n\n\t\tlet cwd = options?.cwd ?? process.cwd()\n\n\t\tImportService.enableCaching()\n\n\t\tconst serviceFactory = new ServiceFactory()\n\t\tconst apiClientFactory =\n\t\t\toptions?.apiClientFactory ??\n\t\t\tCli.buildApiClientFactory(cwd, serviceFactory, options)\n\n\t\tconst storeFactory = new StoreFactory({\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: options?.homeDir ?? osUtil.homedir(),\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t})\n\n\t\tconst ui = options?.graphicsInterface ?? new TerminalInterface(cwd)\n\t\tlet featureInstaller: FeatureInstaller | undefined\n\n\t\tconst writerFactory = new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui,\n\t\t\tsettings: serviceFactory.Service(cwd, 'settings'),\n\t\t\tlinter: serviceFactory.Service(cwd, 'lint'),\n\t\t})\n\n\t\tconst optionOverrides = this.loadOptionOverrides(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst blockedCommands = this.loadCommandBlocks(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\tui,\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory,\n\t\t\ttemplates,\n\t\t\twriterFactory,\n\t\t\tblockedCommands,\n\t\t\toptionOverrides,\n\t\t})\n\n\t\tconst actionExecuter = new ActionExecuter({\n\t\t\tactionFactory,\n\t\t\tui,\n\t\t\temitter,\n\t\t\t//@ts-ignore\n\t\t\tfeatureInstallerFactory: () => featureInstaller,\n\t\t})\n\n\t\tfeatureInstaller =\n\t\t\toptions?.featureInstaller ??\n\t\t\tFeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\tlet attacher: FeatureCommandAttacher | undefined\n\n\t\tif (program) {\n\t\t\tattacher = new FeatureCommandAttacher({\n\t\t\t\tprogram,\n\t\t\t\tui,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\t\tconst codes = FeatureInstallerFactory.featureCodes\n\n\t\t\tfor (const code of codes) {\n\t\t\t\tconst feature = featureInstaller.getFeature(code)\n\t\t\t\tawait attacher.attachFeature(feature)\n\t\t\t}\n\n\t\t\tprogram.commands.sort((a: any, b: any) => a._name.localeCompare(b._name))\n\n\t\t\tprogram.action((_, command) => {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'INVALID_COMMAND',\n\t\t\t\t\targs: command.args || [],\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\tconst cli = new Cli(\n\t\t\tcwd,\n\t\t\tfeatureInstaller,\n\t\t\tserviceFactory,\n\t\t\temitter,\n\t\t\tattacher,\n\t\t\tactionExecuter\n\t\t)\n\n\t\treturn cli as CliInterface\n\t}\n\n\tprivate static loadCommandBlocks(pkg: PkgService): BlockedCommands {\n\t\tlet blocks: BlockedCommands = {}\n\t\tif (pkg.doesExist()) {\n\t\t\tblocks = pkg.get('skill.blockedCommands') ?? {}\n\t\t}\n\t\treturn blocks\n\t}\n\n\tprivate static loadOptionOverrides(pkg: PkgService): OptionOverrides {\n\t\tconst mapped: OptionOverrides = {}\n\n\t\tif (pkg.doesExist()) {\n\t\t\tconst overrides = pkg.get('skill.commandOverrides')\n\n\t\t\tObject.keys(overrides ?? {}).forEach((command) => {\n\t\t\t\tconst options = argParserUtil.parse(overrides[command])\n\t\t\t\tmapped[command] = options\n\t\t\t})\n\t\t}\n\t\treturn mapped\n\t}\n\n\tpublic static buildApiClientFactory(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): ApiClientFactory {\n\t\tconst apiClientFactory = async (options?: ApiClientFactoryOptions) => {\n\t\t\tconst key = apiClientUtil.generateClientCacheKey(options)\n\n\t\t\tif (!Cli.apiClients[key]) {\n\t\t\t\tCli.apiClients[key] = Cli.connectToApi(\n\t\t\t\t\tcwd,\n\t\t\t\t\tserviceFactory,\n\t\t\t\t\toptions,\n\t\t\t\t\tbootOptions\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn Cli.apiClients[key]\n\t\t}\n\n\t\treturn apiClientFactory\n\t}\n\n\tprivate static async connectToApi(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\toptions?: ApiClientFactoryOptions,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): Promise<ApiClient> {\n\t\tconst connect = bootOptions?.apiClientFactory\n\t\t\t? bootOptions.apiClientFactory\n\t\t\t: async () => {\n\t\t\t\t\tconst eventsContracts =\n\t\t\t\t\t\trequire('#spruce/events/events.contract').default\n\n\t\t\t\t\tconst client: ApiClient = await MercuryClientFactory.Client({\n\t\t\t\t\t\tcontracts: eventsContracts as any,\n\t\t\t\t\t\thost: bootOptions?.host ?? DEFAULT_HOST,\n\t\t\t\t\t\tallowSelfSignedCrt: true,\n\t\t\t\t\t\t...bootOptions,\n\t\t\t\t\t})\n\n\t\t\t\t\treturn client\n\t\t\t }\n\n\t\tconst {\n\t\t\tshouldAuthAsCurrentSkill = false,\n\t\t\tshouldAuthAsLoggedInPerson = true,\n\t\t} = options ?? {}\n\n\t\tconst client = await connect()\n\n\t\tlet auth: SpruceSchemas.Mercury.v2020_12_25.AuthenticateEmitPayload = {}\n\n\t\tif (options?.skillId && options?.apiKey) {\n\t\t\tauth = {\n\t\t\t\tskillId: options.skillId,\n\t\t\t\tapiKey: options.apiKey,\n\t\t\t}\n\t\t} else if (shouldAuthAsCurrentSkill) {\n\t\t\tconst skill = serviceFactory.Service(cwd, 'auth').getCurrentSkill()\n\n\t\t\tif (skill) {\n\t\t\t\tauth = {\n\t\t\t\t\tskillId: skill.id,\n\t\t\t\t\tapiKey: skill.apiKey,\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (shouldAuthAsLoggedInPerson) {\n\t\t\tconst person = serviceFactory.Service(cwd, 'auth').getLoggedInPerson()\n\n\t\t\tif (person) {\n\t\t\t\tauth.token = person.token\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(auth).length > 0) {\n\t\t\tawait client.authenticate({\n\t\t\t\t...(auth as any),\n\t\t\t})\n\n\t\t\t//@ts-ignore\n\t\t\tclient.auth = auth\n\t\t}\n\n\t\treturn client\n\t}\n}\n\nexport async function run(argv: string[] = []): Promise<void> {\n\tconst program = new Command()\n\tlet cwd = process.cwd()\n\n\tprogram.storeOptionsAsProperties(false)\n\tprogram.option('--no-color', 'Disable color output in the console')\n\tprogram.option(\n\t\t'-d, --directory <path>',\n\t\t'The working directory to execute the command'\n\t)\n\tprogram.option('-v, --version', 'The version of the cli')\n\n\tconst dirIdx = process.argv.findIndex(\n\t\t(v) => v === '--directory' || v === '-d'\n\t)\n\n\tif (dirIdx > -1) {\n\t\tconst dir = process.argv[dirIdx + 1]\n\t\tconst newCwd = diskUtil.resolvePath(cwd, dir)\n\t\tcwd = newCwd\n\t}\n\n\tconst terminal = new TerminalInterface(\n\t\tcwd,\n\t\tprocess.env.CLI_RENDER_STACK_TRACES !== 'false'\n\t)\n\tterminal.clear()\n\tterminal.renderHero(CLI_HERO)\n\n\tconst isAskingForVersion =\n\t\tprocess.argv.findIndex((v) => v === '--version' || v === '-v') > -1\n\n\tif (isAskingForVersion) {\n\t\tconst json = require('../package.json')\n\t\tterminal.renderHeadline(`Version ${json.version}`)\n\t\treturn\n\t}\n\n\tawait Cli.Boot({\n\t\tprogram,\n\t\tcwd,\n\t\thost: process.env.HOST,\n\t\tgraphicsInterface: terminal,\n\t})\n\n\tawait setupInFlightEntertainment(terminal)\n\n\tconst command = await program.parseAsync(argv)\n\n\t//@ts-ignore\n\tconst results = await command._actionResults[0]\n\n\tfor (const client of MercuryClientFactory.getClients()) {\n\t\tawait client.disconnect()\n\t}\n\n\treturn results\n}\n\nasync function setupInFlightEntertainment(ui: TerminalInterface) {\n\tif (\n\t\tTerminalInterface.doesSupportColor() &&\n\t\tprocess.env.ENABLE_INSTALL_INTERTAINMENT !== 'false'\n\t) {\n\t\tconst command = new CommandService(diskUtil.resolvePath(__dirname, '../'))\n\t\tInFlightEntertainment.setup({ command, ui })\n\n\t\tFeatureInstaller.startInFlightIntertainmentHandler = (didUpdateHandler) => {\n\t\t\tInFlightEntertainment.start()\n\t\t\tdidUpdateHandler((message) => {\n\t\t\t\tInFlightEntertainment.writeStatus(message)\n\t\t\t})\n\t\t}\n\n\t\tFeatureInstaller.stopInFlightIntertainmentHandler = () => {\n\t\t\tInFlightEntertainment.stop()\n\t\t}\n\t}\n}\n"],"file":"cli.js"}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"names":["Cli","cwd","featureInstaller","serviceFactory","emitter","attacher","actionExecuter","on","off","emit","options","install","code","getFeature","isInstalled","skill","status","errors","SpruceError","commandService","Service","command","shouldRunOnSourceFiles","execute","results","resultParts","stdout","split","HEALTH_DIVIDER","JSON","parse","error","originalError","apiClients","key","disconnect","program","CliGlobalEmitter","Emitter","process","ImportService","enableCaching","ServiceFactory","apiClientFactory","buildApiClientFactory","storeFactory","StoreFactory","homeDir","osUtil","homedir","ui","graphicsInterface","TerminalInterface","writerFactory","WriterFactory","templates","settings","linter","optionOverrides","loadOptionOverrides","blockedCommands","loadCommandBlocks","actionFactory","ActionFactory","ActionExecuter","featureInstallerFactory","FeatureInstallerFactory","WithAllFeatures","FeatureCommandAttacher","codes","featureCodes","feature","attachFeature","commands","sort","a","b","_name","localeCompare","action","_","args","cli","pkg","blocks","doesExist","get","mapped","overrides","Object","keys","forEach","argParserUtil","bootOptions","apiClientUtil","generateClientCacheKey","connectToApi","connect","eventsContracts","require","MercuryClientFactory","Client","contracts","host","DEFAULT_HOST","allowSelfSignedCrt","client","shouldAuthAsCurrentSkill","shouldAuthAsLoggedInPerson","auth","doesPkgExist","skillId","apiKey","getCurrentSkill","id","person","getLoggedInPerson","token","length","authenticate","run","argv","Command","storeOptionsAsProperties","option","dirIdx","findIndex","v","dir","newCwd","diskUtil","resolvePath","terminal","env","CLI_RENDER_STACK_TRACES","clear","renderHero","CLI_HERO","isAskingForVersion","json","renderHeadline","version","Boot","HOST","setupInFlightEntertainment","parseAsync","_actionResults","getClients","doesSupportColor","ENABLE_INSTALL_INTERTAINMENT","CommandService","__dirname","InFlightEntertainment","setup","FeatureInstaller","startInFlightIntertainmentHandler","didUpdateHandler","start","message","writeStatus","stopInFlightIntertainmentHandler","stop"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAKA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AAEA;;AAIA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAOA;;AACA;;AACA;;;;;;;;;;;;IAyBqBA,G;AASpB,eACCC,GADD,EAECC,gBAFD,EAGCC,cAHD,EAICC,OAJD,EAKCC,QALD,EAMCC,cAND,EAOE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD,SAAKL,GAAL,GAAWA,GAAX;AACA,SAAKC,gBAAL,GAAwBA,gBAAxB;AACA,SAAKC,cAAL,GAAsBA,cAAtB;AACA,SAAKC,OAAL,GAAeA,OAAf;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,cAAL,GAAsBA,cAAtB;AACA;;;;WAUD,uBAAqB;AACpB,aAAO,KAAKD,QAAZ;AACA;;;WAED,6BAA2B;AAC1B,aAAO,KAAKC,cAAZ;AACA;;;;8FAED;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iDAEQ,sBAAKF,OAAL,EAAaG,EAAb,4BAFR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;+FAKA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kDAEQ,uBAAKH,OAAL,EAAaI,GAAb,8BAFR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;gGAKA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kDAEQ,uBAAKJ,OAAL,EAAaK,IAAb,8BAFR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;2GAKA,kBAA6BC,OAA7B;AAAA;AAAA;AAAA;AAAA;AAAA,kDACQ,KAAKR,gBAAL,CAAsBS,OAAtB,CAA8BD,OAA9B,CADR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAIA,oBAAyCE,IAAzC,EAAkD;AACjD,aAAO,KAAKV,gBAAL,CAAsBW,UAAtB,CAAiCD,IAAjC,CAAP;AACA;;;;uGAED,kBACCF,OADD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAG2B,KAAKR,gBAAL,CAAsBY,WAAtB,CAAkC,OAAlC,CAH3B;;AAAA;AAGOA,gBAAAA,WAHP;;AAAA,oBAKMA,WALN;AAAA;AAAA;AAAA;;AAAA,kDAMS;AACNC,kBAAAA,KAAK,EAAE;AACNC,oBAAAA,MAAM,EAAE,QADF;AAENC,oBAAAA,MAAM,EAAE,CACP,IAAIC,uBAAJ,CAAgB;AACf;AACAN,sBAAAA,IAAI,EAAE;AAFS,qBAAhB,CADO;AAFF;AADD,iBANT;;AAAA;AAAA;AAoBQO,gBAAAA,cApBR,GAoByB,KAAKhB,cAAL,CAAoBiB,OAApB,CAA4B,KAAKnB,GAAjC,EAAsC,SAAtC,CApBzB;AAqBQoB,gBAAAA,OArBR,GAsBG,CAAAX,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEY,sBAAT,MAAoC,KAApC,GACG,aADH,GAEG,mBAxBN;AAAA;AAAA,uBAyBwBH,cAAc,CAACI,OAAf,CAAuBF,OAAvB,CAzBxB;;AAAA;AAyBQG,gBAAAA,OAzBR;AA0BQC,gBAAAA,WA1BR,GA0BsBD,OAAO,CAACE,MAAR,CAAeC,KAAf,CAAqBC,gCAArB,CA1BtB;AAAA,kDA4BSC,IAAI,CAACC,KAAL,CAAWL,WAAW,CAAC,CAAD,CAAtB,CA5BT;;AAAA;AAAA;AAAA;AA8BQM,gBAAAA,KA9BR,GA8BgB,IAAIb,uBAAJ,CAAgB;AAC7BN,kBAAAA,IAAI,EAAE,YADuB;AAE7BoB,kBAAAA,aAAa;AAFgB,iBAAhB,CA9BhB;AAAA,kDAmCS;AACNjB,kBAAAA,KAAK,EAAE;AACNC,oBAAAA,MAAM,EAAE,QADF;AAENC,oBAAAA,MAAM,EAAE,CAACc,KAAD;AAFF;AADD,iBAnCT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;2GAvCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4DACmB,KAAKE,UADxB;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACYC,gBAAAA,GADZ;AAAA;AAAA,uBAEe,KAAKD,UAAL,CAAgBC,GAAhB,CAFf;;AAAA;AAAA;AAAA,sCAEqCC,UAFrC;;AAAA;AAAA;AAAA;;AAAA;AAKC,qBAAKF,UAAL,GAAkB,EAAlB;;AALD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;gGAmFA,kBAAyBvB,OAAzB;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AACO0B,gBAAAA,OADP,GACiB1B,OADjB,aACiBA,OADjB,uBACiBA,OAAO,CAAE0B,OAD1B;AAEOhC,gBAAAA,OAFP,uBAEiBM,OAFjB,aAEiBA,OAFjB,uBAEiBA,OAAO,CAAEN,OAF1B,+DAEqCiC,0BAAiBC,OAAjB,EAFrC;AAIKrC,gBAAAA,GAJL,mBAIWS,OAJX,aAIWA,OAJX,uBAIWA,OAAO,CAAET,GAJpB,uDAI2BsC,OAAO,CAACtC,GAAR,EAJ3B;;AAMCuC,0CAAcC,aAAd;;AAEMtC,gBAAAA,cARP,GAQwB,IAAIuC,0BAAJ,EARxB;AASOC,gBAAAA,gBATP,4BAUEjC,OAVF,aAUEA,OAVF,uBAUEA,OAAO,CAAEiC,gBAVX,yEAWE3C,GAAG,CAAC4C,qBAAJ,CAA0B3C,GAA1B,EAA+BE,cAA/B,EAA+CO,OAA/C,CAXF;AAaOmC,gBAAAA,YAbP,GAasB,IAAIC,wBAAJ,CAAiB;AACrC7C,kBAAAA,GAAG,EAAHA,GADqC;AAErCE,kBAAAA,cAAc,EAAdA,cAFqC;AAGrC4C,kBAAAA,OAAO,sBAAErC,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAEqC,OAAX,+DAAsBC,eAAOC,OAAP,EAHQ;AAIrC7C,kBAAAA,OAAO,EAAPA,OAJqC;AAKrCuC,kBAAAA,gBAAgB,EAAhBA;AALqC,iBAAjB,CAbtB;AAqBOO,gBAAAA,EArBP,4BAqBYxC,OArBZ,aAqBYA,OArBZ,uBAqBYA,OAAO,CAAEyC,iBArBrB,yEAqB0C,IAAIC,6BAAJ,CAAsBnD,GAAtB,CArB1C;AAwBOoD,gBAAAA,aAxBP,GAwBuB,IAAIC,yBAAJ,CAAkB;AACvCC,kBAAAA,SAAS,EAATA,0BADuC;AAEvCL,kBAAAA,EAAE,EAAFA,EAFuC;AAGvCM,kBAAAA,QAAQ,EAAErD,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,UAA5B,CAH6B;AAIvCwD,kBAAAA,MAAM,EAAEtD,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,MAA5B;AAJ+B,iBAAlB,CAxBvB;AA+BOyD,gBAAAA,eA/BP,GA+ByB,KAAKC,mBAAL,CACvBxD,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,KAA5B,CADuB,CA/BzB;AAmCO2D,gBAAAA,eAnCP,GAmCyB,KAAKC,iBAAL,CACvB1D,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,KAA5B,CADuB,CAnCzB;AAuCO6D,gBAAAA,aAvCP,GAuCuB,IAAIC,yBAAJ,CAAkB;AACvCb,kBAAAA,EAAE,EAAFA,EADuC;AAEvC9C,kBAAAA,OAAO,EAAPA,OAFuC;AAGvCuC,kBAAAA,gBAAgB,EAAhBA,gBAHuC;AAIvC1C,kBAAAA,GAAG,EAAHA,GAJuC;AAKvCE,kBAAAA,cAAc,EAAdA,cALuC;AAMvC0C,kBAAAA,YAAY,EAAZA,YANuC;AAOvCU,kBAAAA,SAAS,EAATA,0BAPuC;AAQvCF,kBAAAA,aAAa,EAAbA,aARuC;AASvCO,kBAAAA,eAAe,EAAfA,eATuC;AAUvCF,kBAAAA,eAAe,EAAfA;AAVuC,iBAAlB,CAvCvB;AAoDOpD,gBAAAA,cApDP,GAoDwB,IAAI0D,0BAAJ,CAAmB;AACzCF,kBAAAA,aAAa,EAAbA,aADyC;AAEzCZ,kBAAAA,EAAE,EAAFA,EAFyC;AAGzC9C,kBAAAA,OAAO,EAAPA,OAHyC;AAIzC;AACA6D,kBAAAA,uBAAuB,EAAE;AAAA,2BAAM/D,gBAAN;AAAA;AALgB,iBAAnB,CApDxB;AA4DCA,gBAAAA,gBAAgB,4BACfQ,OADe,aACfA,OADe,uBACfA,OAAO,CAAER,gBADM,yEAEfgE,oCAAwBC,eAAxB,CAAwC;AACvClE,kBAAAA,GAAG,EAAHA,GADuC;AAEvCE,kBAAAA,cAAc,EAAdA,cAFuC;AAGvC0C,kBAAAA,YAAY,EAAZA,YAHuC;AAIvCK,kBAAAA,EAAE,EAAFA,EAJuC;AAKvC9C,kBAAAA,OAAO,EAAPA,OALuC;AAMvCuC,kBAAAA,gBAAgB,EAAhBA,gBANuC;AAOvCrC,kBAAAA,cAAc,EAAdA;AAPuC,iBAAxC,CAFD;;AA5DD,qBA0EK8B,OA1EL;AAAA;AAAA;AAAA;;AA2EE/B,gBAAAA,QAAQ,GAAG,IAAI+D,kCAAJ,CAA2B;AACrChC,kBAAAA,OAAO,EAAPA,OADqC;AAErCc,kBAAAA,EAAE,EAAFA,EAFqC;AAGrC5C,kBAAAA,cAAc,EAAdA;AAHqC,iBAA3B,CAAX;AAMM+D,gBAAAA,KAjFR,GAiFgBH,oCAAwBI,YAjFxC;AAAA,uDAmFqBD,KAnFrB;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAmFazD,gBAAAA,IAnFb;AAoFS2D,gBAAAA,OApFT,GAoFmBrE,gBAAgB,CAACW,UAAjB,CAA4BD,IAA5B,CApFnB;AAAA;AAAA,uBAqFSP,QAAQ,CAACmE,aAAT,CAAuBD,OAAvB,CArFT;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAwFEnC,gBAAAA,OAAO,CAACqC,QAAR,CAAiBC,IAAjB,CAAsB,UAACC,CAAD,EAASC,CAAT;AAAA,yBAAoBD,CAAC,CAACE,KAAF,CAAQC,aAAR,CAAsBF,CAAC,CAACC,KAAxB,CAApB;AAAA,iBAAtB;AAEAzC,gBAAAA,OAAO,CAAC2C,MAAR,CAAe,UAACC,CAAD,EAAI3D,OAAJ,EAAgB;AAC9B,wBAAM,IAAIH,uBAAJ,CAAgB;AACrBN,oBAAAA,IAAI,EAAE,iBADe;AAErBqE,oBAAAA,IAAI,EAAE5D,OAAO,CAAC4D,IAAR,IAAgB;AAFD,mBAAhB,CAAN;AAIA,iBALD;;AA1FF;AAkGOC,gBAAAA,GAlGP,GAkGa,IAAIlF,GAAJ,CACXC,GADW,EAEXC,gBAFW,EAGXC,cAHW,EAIXC,OAJW,EAKXC,QALW,EAMXC,cANW,CAlGb;AAAA,kDA2GQ4E,GA3GR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA8GA,2BAAiCC,GAAjC,EAAmE;AAClE,UAAIC,MAAuB,GAAG,EAA9B;;AACA,UAAID,GAAG,CAACE,SAAJ,EAAJ,EAAqB;AAAA;;AACpBD,QAAAA,MAAM,eAAGD,GAAG,CAACG,GAAJ,CAAQ,uBAAR,CAAH,+CAAuC,EAA7C;AACA;;AACD,aAAOF,MAAP;AACA;;;WAED,6BAAmCD,GAAnC,EAAqE;AACpE,UAAMI,MAAuB,GAAG,EAAhC;;AAEA,UAAIJ,GAAG,CAACE,SAAJ,EAAJ,EAAqB;AACpB,YAAMG,SAAS,GAAGL,GAAG,CAACG,GAAJ,CAAQ,wBAAR,CAAlB;AAEAG,QAAAA,MAAM,CAACC,IAAP,CAAYF,SAAZ,aAAYA,SAAZ,cAAYA,SAAZ,GAAyB,EAAzB,EAA6BG,OAA7B,CAAqC,UAACtE,OAAD,EAAa;AACjD,cAAMX,OAAO,GAAGkF,yBAAc9D,KAAd,CAAoB0D,SAAS,CAACnE,OAAD,CAA7B,CAAhB;;AACAkE,UAAAA,MAAM,CAAClE,OAAD,CAAN,GAAkBX,OAAlB;AACA,SAHD;AAIA;;AACD,aAAO6E,MAAP;AACA;;;WAED,+BACCtF,GADD,EAECE,cAFD,EAGC0F,WAHD,EAIoB;AACnB,UAAMlD,gBAAgB;AAAA,iGAAG,kBAAOjC,OAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAClBwB,kBAAAA,GADkB,GACZ4D,sBAAcC,sBAAd,CAAqCrF,OAArC,CADY;;AAGxB,sBAAI,CAACV,GAAG,CAACiC,UAAJ,CAAeC,GAAf,CAAL,EAA0B;AACzBlC,oBAAAA,GAAG,CAACiC,UAAJ,CAAeC,GAAf,IAAsBlC,GAAG,CAACgG,YAAJ,CACrB/F,GADqB,EAErBE,cAFqB,EAGrBO,OAHqB,EAIrBmF,WAJqB,CAAtB;AAMA;;AAVuB,oDAYjB7F,GAAG,CAACiC,UAAJ,CAAeC,GAAf,CAZiB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAH;;AAAA,wBAAhBS,gBAAgB;AAAA;AAAA;AAAA,SAAtB;;AAeA,aAAOA,gBAAP;AACA;;;;wGAED,mBACC1C,GADD,EAECE,cAFD,EAGCO,OAHD,EAICmF,WAJD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAMOI,gBAAAA,OANP,GAMiBJ,WAAW,SAAX,IAAAA,WAAW,WAAX,IAAAA,WAAW,CAAElD,gBAAb,GACbkD,WAAW,CAAClD,gBADC,8FAEb;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AACMuD,0BAAAA,eADN,GAECC,OAAO,oCAAP,WAFD;AAAA;AAAA,iCAIgCC,oCAAqBC,MAArB;AAC/BC,4BAAAA,SAAS,EAAEJ,eADoB;AAE/BK,4BAAAA,IAAI,uBAAEV,WAAF,aAAEA,WAAF,uBAAEA,WAAW,CAAEU,IAAf,iEAAuBC,uBAFI;AAG/BC,4BAAAA,kBAAkB,EAAE;AAHW,6BAI5BZ,WAJ4B,EAJhC;;AAAA;AAIMa,0BAAAA,MAJN;AAAA,4DAWOA,MAXP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAFa,EANjB;AAAA,wBAyBKhG,OAzBL,aAyBKA,OAzBL,cAyBKA,OAzBL,GAyBgB,EAzBhB,gCAuBEiG,wBAvBF,EAuBEA,wBAvBF,sCAuB6B,KAvB7B,wDAwBEC,0BAxBF,EAwBEA,0BAxBF,sCAwB+B,IAxB/B;AAAA;AAAA,uBA2BsBX,OAAO,EA3B7B;;AAAA;AA2BOS,gBAAAA,MA3BP;AA6BKG,gBAAAA,IA7BL,GA6BuE,EA7BvE;AA+BO1B,gBAAAA,GA/BP,GA+BahF,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,KAA5B,CA/Bb;AAgCO6G,gBAAAA,YAhCP,GAgCsB3B,GAAG,CAACE,SAAJ,EAhCtB;;AAkCC,oBAAI3E,OAAO,SAAP,IAAAA,OAAO,WAAP,IAAAA,OAAO,CAAEqG,OAAT,IAAoBrG,OAApB,aAAoBA,OAApB,eAAoBA,OAAO,CAAEsG,MAAjC,EAAyC;AACxCH,kBAAAA,IAAI,GAAG;AACNE,oBAAAA,OAAO,EAAErG,OAAO,CAACqG,OADX;AAENC,oBAAAA,MAAM,EAAEtG,OAAO,CAACsG;AAFV,mBAAP;AAIA,iBALD,MAKO,IAAIL,wBAAJ,EAA8B;AAC9B5F,kBAAAA,KAD8B,GACtBZ,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,MAA5B,EAAoCgH,eAApC,EADsB;;AAGpC,sBAAIlG,KAAJ,EAAW;AACV8F,oBAAAA,IAAI,GAAG;AACNE,sBAAAA,OAAO,EAAEhG,KAAK,CAACmG,EADT;AAENF,sBAAAA,MAAM,EAAEjG,KAAK,CAACiG;AAFR,qBAAP;AAIA;AACD,iBATM,MASA,IAAIF,YAAY,IAAIF,0BAApB,EAAgD;AAChDO,kBAAAA,MADgD,GACvChH,cAAc,CAACiB,OAAf,CAAuBnB,GAAvB,EAA4B,MAA5B,EAAoCmH,iBAApC,EADuC;;AAGtD,sBAAID,MAAJ,EAAY;AACXN,oBAAAA,IAAI,CAACQ,KAAL,GAAaF,MAAM,CAACE,KAApB;AACA;AACD;;AAtDF,sBAwDK5B,MAAM,CAACC,IAAP,CAAYmB,IAAZ,EAAkBS,MAAlB,GAA2B,CAxDhC;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAyDQZ,MAAM,CAACa,YAAP,mBACDV,IADC,EAzDR;;AAAA;AA6DE;AACAH,gBAAAA,MAAM,CAACG,IAAP,GAAcA,IAAd;;AA9DF;AAAA,mDAiEQH,MAjER;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;;;iCAvQoB1G,G,gBAKsB,E;;SAuUrBwH,G;;;;;uFAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAmBC,YAAAA,IAAnB,iEAAoC,EAApC;AACArF,YAAAA,OADA,GACU,IAAIsF,kBAAJ,EADV;AAEFzH,YAAAA,GAFE,GAEIsC,OAAO,CAACtC,GAAR,EAFJ;AAINmC,YAAAA,OAAO,CAACuF,wBAAR,CAAiC,KAAjC;AACAvF,YAAAA,OAAO,CAACwF,MAAR,CAAe,YAAf,EAA6B,qCAA7B;AACAxF,YAAAA,OAAO,CAACwF,MAAR,CACC,wBADD,EAEC,8CAFD;AAIAxF,YAAAA,OAAO,CAACwF,MAAR,CAAe,eAAf,EAAgC,wBAAhC;AAEMC,YAAAA,MAZA,GAYStF,OAAO,CAACkF,IAAR,CAAaK,SAAb,CACd,UAACC,CAAD;AAAA,qBAAOA,CAAC,KAAK,aAAN,IAAuBA,CAAC,KAAK,IAApC;AAAA,aADc,CAZT;;AAgBN,gBAAIF,MAAM,GAAG,CAAC,CAAd,EAAiB;AACVG,cAAAA,GADU,GACJzF,OAAO,CAACkF,IAAR,CAAaI,MAAM,GAAG,CAAtB,CADI;AAEVI,cAAAA,MAFU,GAEDC,2BAASC,WAAT,CAAqBlI,GAArB,EAA0B+H,GAA1B,CAFC;AAGhB/H,cAAAA,GAAG,GAAGgI,MAAN;AACA;;AAEKG,YAAAA,QAtBA,GAsBW,IAAIhF,6BAAJ,CAChBnD,GADgB,EAEhBsC,OAAO,CAAC8F,GAAR,CAAYC,uBAAZ,KAAwC,OAFxB,CAtBX;AA0BNF,YAAAA,QAAQ,CAACG,KAAT;AACAH,YAAAA,QAAQ,CAACI,UAAT,CAAoBC,mBAApB;AAEMC,YAAAA,kBA7BA,GA8BLnG,OAAO,CAACkF,IAAR,CAAaK,SAAb,CAAuB,UAACC,CAAD;AAAA,qBAAOA,CAAC,KAAK,WAAN,IAAqBA,CAAC,KAAK,IAAlC;AAAA,aAAvB,IAAiE,CAAC,CA9B7D;;AAAA,iBAgCFW,kBAhCE;AAAA;AAAA;AAAA;;AAiCCC,YAAAA,IAjCD,GAiCQxC,OAAO,mBAjCf;AAkCLiC,YAAAA,QAAQ,CAACQ,cAAT,mBAAmCD,IAAI,CAACE,OAAxC;AAlCK;;AAAA;AAAA;AAAA,mBAsCA7I,GAAG,CAAC8I,IAAJ,CAAS;AACd1G,cAAAA,OAAO,EAAPA,OADc;AAEdnC,cAAAA,GAAG,EAAHA,GAFc;AAGdsG,cAAAA,IAAI,EAAEhE,OAAO,CAAC8F,GAAR,CAAYU,IAHJ;AAId5F,cAAAA,iBAAiB,EAAEiF;AAJL,aAAT,CAtCA;;AAAA;AAAA;AAAA,mBA6CAY,0BAA0B,CAACZ,QAAD,CA7C1B;;AAAA;AAAA;AAAA,mBA+CgBhG,OAAO,CAAC6G,UAAR,CAAmBxB,IAAnB,CA/ChB;;AAAA;AA+CApG,YAAAA,OA/CA;AAAA;AAAA,mBAkDgBA,OAAO,CAAC6H,cAAR,CAAuB,CAAvB,CAlDhB;;AAAA;AAkDA1H,YAAAA,OAlDA;AAAA,oDAoDe4E,oCAAqB+C,UAArB,EApDf;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAoDKzC,YAAAA,MApDL;AAAA;AAAA,mBAqDCA,MAAM,CAACvE,UAAP,EArDD;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA,+CAwDCX,OAxDD;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SA2DQwH,0B;;;;;8GAAf,mBAA0C9F,EAA1C;AAAA;AAAA;AAAA;AAAA;AAAA;AACC,gBACCE,8BAAkBgG,gBAAlB,MACA7G,OAAO,CAAC8F,GAAR,CAAYgB,4BAAZ,KAA6C,OAF9C,EAGE;AACKhI,cAAAA,OADL,GACe,IAAIiI,0BAAJ,CAAmBpB,2BAASC,WAAT,CAAqBoB,SAArB,EAAgC,KAAhC,CAAnB,CADf;;AAEDC,gDAAsBC,KAAtB,CAA4B;AAAEpI,gBAAAA,OAAO,EAAPA,OAAF;AAAW6B,gBAAAA,EAAE,EAAFA;AAAX,eAA5B;;AAEAwG,2CAAiBC,iCAAjB,GAAqD,UAACC,gBAAD,EAAsB;AAC1EJ,kDAAsBK,KAAtB;;AACAD,gBAAAA,gBAAgB,CAAC,UAACE,OAAD,EAAa;AAC7BN,oDAAsBO,WAAtB,CAAkCD,OAAlC;AACA,iBAFe,CAAhB;AAGA,eALD;;AAOAJ,2CAAiBM,gCAAjB,GAAoD,YAAM;AACzDR,kDAAsBS,IAAtB;AACA,eAFD;AAGA;;AAlBF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import osUtil from 'os'\nimport {\n\tConnectionOptions,\n\tMercuryClientFactory,\n} from '@sprucelabs/mercury-client'\nimport { MercuryEventEmitter, SpruceSchemas } from '@sprucelabs/mercury-types'\nimport {\n\tdiskUtil,\n\tHealthCheckResults,\n\tHEALTH_DIVIDER,\n} from '@sprucelabs/spruce-skill-utils'\nimport { templates } from '@sprucelabs/spruce-templates'\nimport { Command, CommanderStatic } from 'commander'\nimport './addons/filePrompt.addon'\nimport { CLI_HERO, DEFAULT_HOST } from './constants'\nimport SpruceError from './errors/SpruceError'\nimport ActionExecuter from './features/ActionExecuter'\nimport ActionFactory from './features/ActionFactory'\nimport FeatureCommandAttacher, {\n\tBlockedCommands,\n\tOptionOverrides,\n} from './features/FeatureCommandAttacher'\nimport FeatureInstaller from './features/FeatureInstaller'\nimport FeatureInstallerFactory from './features/FeatureInstallerFactory'\nimport { FeatureCode, InstallFeatureOptions } from './features/features.types'\nimport CliGlobalEmitter, {\n\tGlobalEmitter,\n\tGlobalEventContract,\n} from './GlobalEmitter'\nimport InFlightEntertainment from './InFlightEntertainment'\nimport TerminalInterface from './interfaces/TerminalInterface'\nimport CommandService from './services/CommandService'\nimport ImportService from './services/ImportService'\nimport PkgService from './services/PkgService'\nimport ServiceFactory from './services/ServiceFactory'\nimport StoreFactory from './stores/StoreFactory'\nimport {\n\tApiClient,\n\tApiClientFactory,\n\tApiClientFactoryOptions,\n} from './types/apiClient.types'\nimport { GraphicsInterface } from './types/cli.types'\nimport apiClientUtil from './utilities/apiClient.utility'\nimport { argParserUtil } from './utilities/argParser.utility'\nimport WriterFactory from './writers/WriterFactory'\n\ninterface HealthOptions {\n\tshouldRunOnSourceFiles?: boolean\n}\n\nexport interface CliInterface extends MercuryEventEmitter<GlobalEventContract> {\n\tinstallFeatures: FeatureInstaller['install']\n\tgetFeature: FeatureInstaller['getFeature']\n\tcheckHealth(options?: HealthOptions): Promise<HealthCheckResults>\n}\n\nexport interface CliBootOptions {\n\tcwd?: string\n\thomeDir?: string\n\tprogram?: CommanderStatic['program']\n\tgraphicsInterface?: GraphicsInterface\n\temitter?: GlobalEmitter\n\tapiClientFactory?: ApiClientFactory\n\tfeatureInstaller?: FeatureInstaller\n\thost?: string\n}\n\ntype PromiseCache = Record<string, Promise<ApiClient>>\n\nexport default class Cli implements CliInterface {\n\tprivate cwd: string\n\tprivate featureInstaller: FeatureInstaller\n\tprivate serviceFactory: ServiceFactory\n\tpublic readonly emitter: GlobalEmitter\n\tprivate static apiClients: PromiseCache = {}\n\tprivate attacher?: FeatureCommandAttacher\n\tprivate actionExecuter?: ActionExecuter\n\n\tprivate constructor(\n\t\tcwd: string,\n\t\tfeatureInstaller: FeatureInstaller,\n\t\tserviceFactory: ServiceFactory,\n\t\temitter: GlobalEmitter,\n\t\tattacher?: FeatureCommandAttacher,\n\t\tactionExecuter?: ActionExecuter\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.featureInstaller = featureInstaller\n\t\tthis.serviceFactory = serviceFactory\n\t\tthis.emitter = emitter\n\t\tthis.attacher = attacher\n\t\tthis.actionExecuter = actionExecuter\n\t}\n\n\tpublic static async resetApiClients() {\n\t\tfor (const key in this.apiClients) {\n\t\t\tawait (await this.apiClients[key]).disconnect()\n\t\t}\n\n\t\tthis.apiClients = {}\n\t}\n\n\tpublic getAttacher() {\n\t\treturn this.attacher\n\t}\n\n\tpublic getActionExecuter() {\n\t\treturn this.actionExecuter\n\t}\n\n\tpublic async on(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.on(...args)\n\t}\n\n\tpublic async off(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.off(...args)\n\t}\n\n\tpublic async emit(...args: any[]) {\n\t\t//@ts-ignore\n\t\treturn this.emitter.emit(...args)\n\t}\n\n\tpublic async installFeatures(options: InstallFeatureOptions) {\n\t\treturn this.featureInstaller.install(options)\n\t}\n\n\tpublic getFeature<C extends FeatureCode>(code: C) {\n\t\treturn this.featureInstaller.getFeature(code)\n\t}\n\n\tpublic async checkHealth(\n\t\toptions?: HealthOptions\n\t): Promise<HealthCheckResults> {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (!isInstalled) {\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tcode: 'SKILL_NOT_INSTALLED',\n\t\t\t\t\t\t}),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst commandService = this.serviceFactory.Service(this.cwd, 'command')\n\t\t\tconst command =\n\t\t\t\toptions?.shouldRunOnSourceFiles === false\n\t\t\t\t\t? 'yarn health'\n\t\t\t\t\t: 'yarn health.local'\n\t\t\tconst results = await commandService.execute(command)\n\t\t\tconst resultParts = results.stdout.split(HEALTH_DIVIDER)\n\n\t\t\treturn JSON.parse(resultParts[1]) as HealthCheckResults\n\t\t} catch (originalError: any) {\n\t\t\tconst error = new SpruceError({\n\t\t\t\tcode: 'BOOT_ERROR',\n\t\t\t\toriginalError,\n\t\t\t})\n\n\t\t\treturn {\n\t\t\t\tskill: {\n\t\t\t\t\tstatus: 'failed',\n\t\t\t\t\terrors: [error],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic static async Boot(options?: CliBootOptions): Promise<CliInterface> {\n\t\tconst program = options?.program\n\t\tconst emitter = options?.emitter ?? CliGlobalEmitter.Emitter()\n\n\t\tlet cwd = options?.cwd ?? process.cwd()\n\n\t\tImportService.enableCaching()\n\n\t\tconst serviceFactory = new ServiceFactory()\n\t\tconst apiClientFactory =\n\t\t\toptions?.apiClientFactory ??\n\t\t\tCli.buildApiClientFactory(cwd, serviceFactory, options)\n\n\t\tconst storeFactory = new StoreFactory({\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\thomeDir: options?.homeDir ?? osUtil.homedir(),\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t})\n\n\t\tconst ui = options?.graphicsInterface ?? new TerminalInterface(cwd)\n\t\tlet featureInstaller: FeatureInstaller | undefined\n\n\t\tconst writerFactory = new WriterFactory({\n\t\t\ttemplates,\n\t\t\tui,\n\t\t\tsettings: serviceFactory.Service(cwd, 'settings'),\n\t\t\tlinter: serviceFactory.Service(cwd, 'lint'),\n\t\t})\n\n\t\tconst optionOverrides = this.loadOptionOverrides(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst blockedCommands = this.loadCommandBlocks(\n\t\t\tserviceFactory.Service(cwd, 'pkg')\n\t\t)\n\n\t\tconst actionFactory = new ActionFactory({\n\t\t\tui,\n\t\t\temitter,\n\t\t\tapiClientFactory,\n\t\t\tcwd,\n\t\t\tserviceFactory,\n\t\t\tstoreFactory,\n\t\t\ttemplates,\n\t\t\twriterFactory,\n\t\t\tblockedCommands,\n\t\t\toptionOverrides,\n\t\t})\n\n\t\tconst actionExecuter = new ActionExecuter({\n\t\t\tactionFactory,\n\t\t\tui,\n\t\t\temitter,\n\t\t\t//@ts-ignore\n\t\t\tfeatureInstallerFactory: () => featureInstaller,\n\t\t})\n\n\t\tfeatureInstaller =\n\t\t\toptions?.featureInstaller ??\n\t\t\tFeatureInstallerFactory.WithAllFeatures({\n\t\t\t\tcwd,\n\t\t\t\tserviceFactory,\n\t\t\t\tstoreFactory,\n\t\t\t\tui,\n\t\t\t\temitter,\n\t\t\t\tapiClientFactory,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\tlet attacher: FeatureCommandAttacher | undefined\n\n\t\tif (program) {\n\t\t\tattacher = new FeatureCommandAttacher({\n\t\t\t\tprogram,\n\t\t\t\tui,\n\t\t\t\tactionExecuter,\n\t\t\t})\n\n\t\t\tconst codes = FeatureInstallerFactory.featureCodes\n\n\t\t\tfor (const code of codes) {\n\t\t\t\tconst feature = featureInstaller.getFeature(code)\n\t\t\t\tawait attacher.attachFeature(feature)\n\t\t\t}\n\n\t\t\tprogram.commands.sort((a: any, b: any) => a._name.localeCompare(b._name))\n\n\t\t\tprogram.action((_, command) => {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'INVALID_COMMAND',\n\t\t\t\t\targs: command.args || [],\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\tconst cli = new Cli(\n\t\t\tcwd,\n\t\t\tfeatureInstaller,\n\t\t\tserviceFactory,\n\t\t\temitter,\n\t\t\tattacher,\n\t\t\tactionExecuter\n\t\t)\n\n\t\treturn cli as CliInterface\n\t}\n\n\tprivate static loadCommandBlocks(pkg: PkgService): BlockedCommands {\n\t\tlet blocks: BlockedCommands = {}\n\t\tif (pkg.doesExist()) {\n\t\t\tblocks = pkg.get('skill.blockedCommands') ?? {}\n\t\t}\n\t\treturn blocks\n\t}\n\n\tprivate static loadOptionOverrides(pkg: PkgService): OptionOverrides {\n\t\tconst mapped: OptionOverrides = {}\n\n\t\tif (pkg.doesExist()) {\n\t\t\tconst overrides = pkg.get('skill.commandOverrides')\n\n\t\t\tObject.keys(overrides ?? {}).forEach((command) => {\n\t\t\t\tconst options = argParserUtil.parse(overrides[command])\n\t\t\t\tmapped[command] = options\n\t\t\t})\n\t\t}\n\t\treturn mapped\n\t}\n\n\tpublic static buildApiClientFactory(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): ApiClientFactory {\n\t\tconst apiClientFactory = async (options?: ApiClientFactoryOptions) => {\n\t\t\tconst key = apiClientUtil.generateClientCacheKey(options)\n\n\t\t\tif (!Cli.apiClients[key]) {\n\t\t\t\tCli.apiClients[key] = Cli.connectToApi(\n\t\t\t\t\tcwd,\n\t\t\t\t\tserviceFactory,\n\t\t\t\t\toptions,\n\t\t\t\t\tbootOptions\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn Cli.apiClients[key]\n\t\t}\n\n\t\treturn apiClientFactory\n\t}\n\n\tprivate static async connectToApi(\n\t\tcwd: string,\n\t\tserviceFactory: ServiceFactory,\n\t\toptions?: ApiClientFactoryOptions,\n\t\tbootOptions?: CliBootOptions & ConnectionOptions\n\t): Promise<ApiClient> {\n\t\tconst connect = bootOptions?.apiClientFactory\n\t\t\t? bootOptions.apiClientFactory\n\t\t\t: async () => {\n\t\t\t\t\tconst eventsContracts =\n\t\t\t\t\t\trequire('#spruce/events/events.contract').default\n\n\t\t\t\t\tconst client: ApiClient = await MercuryClientFactory.Client({\n\t\t\t\t\t\tcontracts: eventsContracts as any,\n\t\t\t\t\t\thost: bootOptions?.host ?? DEFAULT_HOST,\n\t\t\t\t\t\tallowSelfSignedCrt: true,\n\t\t\t\t\t\t...bootOptions,\n\t\t\t\t\t})\n\n\t\t\t\t\treturn client\n\t\t\t }\n\n\t\tconst {\n\t\t\tshouldAuthAsCurrentSkill = false,\n\t\t\tshouldAuthAsLoggedInPerson = true,\n\t\t} = options ?? {}\n\n\t\tconst client = await connect()\n\n\t\tlet auth: SpruceSchemas.Mercury.v2020_12_25.AuthenticateEmitPayload = {}\n\n\t\tconst pkg = serviceFactory.Service(cwd, 'pkg')\n\t\tconst doesPkgExist = pkg.doesExist()\n\n\t\tif (options?.skillId && options?.apiKey) {\n\t\t\tauth = {\n\t\t\t\tskillId: options.skillId,\n\t\t\t\tapiKey: options.apiKey,\n\t\t\t}\n\t\t} else if (shouldAuthAsCurrentSkill) {\n\t\t\tconst skill = serviceFactory.Service(cwd, 'auth').getCurrentSkill()\n\n\t\t\tif (skill) {\n\t\t\t\tauth = {\n\t\t\t\t\tskillId: skill.id,\n\t\t\t\t\tapiKey: skill.apiKey,\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (doesPkgExist && shouldAuthAsLoggedInPerson) {\n\t\t\tconst person = serviceFactory.Service(cwd, 'auth').getLoggedInPerson()\n\n\t\t\tif (person) {\n\t\t\t\tauth.token = person.token\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(auth).length > 0) {\n\t\t\tawait client.authenticate({\n\t\t\t\t...(auth as any),\n\t\t\t})\n\n\t\t\t//@ts-ignore\n\t\t\tclient.auth = auth\n\t\t}\n\n\t\treturn client\n\t}\n}\n\nexport async function run(argv: string[] = []): Promise<void> {\n\tconst program = new Command()\n\tlet cwd = process.cwd()\n\n\tprogram.storeOptionsAsProperties(false)\n\tprogram.option('--no-color', 'Disable color output in the console')\n\tprogram.option(\n\t\t'-d, --directory <path>',\n\t\t'The working directory to execute the command'\n\t)\n\tprogram.option('-v, --version', 'The version of the cli')\n\n\tconst dirIdx = process.argv.findIndex(\n\t\t(v) => v === '--directory' || v === '-d'\n\t)\n\n\tif (dirIdx > -1) {\n\t\tconst dir = process.argv[dirIdx + 1]\n\t\tconst newCwd = diskUtil.resolvePath(cwd, dir)\n\t\tcwd = newCwd\n\t}\n\n\tconst terminal = new TerminalInterface(\n\t\tcwd,\n\t\tprocess.env.CLI_RENDER_STACK_TRACES !== 'false'\n\t)\n\tterminal.clear()\n\tterminal.renderHero(CLI_HERO)\n\n\tconst isAskingForVersion =\n\t\tprocess.argv.findIndex((v) => v === '--version' || v === '-v') > -1\n\n\tif (isAskingForVersion) {\n\t\tconst json = require('../package.json')\n\t\tterminal.renderHeadline(`Version ${json.version}`)\n\t\treturn\n\t}\n\n\tawait Cli.Boot({\n\t\tprogram,\n\t\tcwd,\n\t\thost: process.env.HOST,\n\t\tgraphicsInterface: terminal,\n\t})\n\n\tawait setupInFlightEntertainment(terminal)\n\n\tconst command = await program.parseAsync(argv)\n\n\t//@ts-ignore\n\tconst results = await command._actionResults[0]\n\n\tfor (const client of MercuryClientFactory.getClients()) {\n\t\tawait client.disconnect()\n\t}\n\n\treturn results\n}\n\nasync function setupInFlightEntertainment(ui: TerminalInterface) {\n\tif (\n\t\tTerminalInterface.doesSupportColor() &&\n\t\tprocess.env.ENABLE_INSTALL_INTERTAINMENT !== 'false'\n\t) {\n\t\tconst command = new CommandService(diskUtil.resolvePath(__dirname, '../'))\n\t\tInFlightEntertainment.setup({ command, ui })\n\n\t\tFeatureInstaller.startInFlightIntertainmentHandler = (didUpdateHandler) => {\n\t\t\tInFlightEntertainment.start()\n\t\t\tdidUpdateHandler((message) => {\n\t\t\t\tInFlightEntertainment.writeStatus(message)\n\t\t\t})\n\t\t}\n\n\t\tFeatureInstaller.stopInFlightIntertainmentHandler = () => {\n\t\t\tInFlightEntertainment.stop()\n\t\t}\n\t}\n}\n"],"file":"cli.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/deploy/actions/HerokuAction.ts"],"names":["optionsSchema","id","description","fields","teamName","type","label","isRequired","shouldRunSilently","isPrivate","shouldBuildAndLint","defaultValue","shouldRunTests","DeployAction","options","results","assertRegisteredSkill","assertDependencies","assertLoggedInToHeroku","setupGitRepo","setupGitRemote","setupProcFile","procResults","actionUtil","mergeActionResults","assertNoPendingGitChanges","errors","validateAndNormalizeOptions","buildAndLint","runTests","deploy","ui","clear","skill","Service","getCurrentSkill","summaryLines","name","slug","apiKey","SpruceError","code","stage","friendlyMessage","execute","failed","stdout","toLowerCase","search","command","confirm","pass","pkg","skillName","get","prompt","namesUtil","toKebab","args","env","HOME","process","procFile","diskUtil","resolvePath","cwd","files","doesFileExist","writeFile","push","action","path","inRepo","missing","hint","length","dependencies","featureInstaller","isInstalled","isTestInstalled","startLoading","Action","watchMode","shouldReportWhileRunning","testResults","isSkillInstalled","build","shouldFixLintFirst","buildResults","AbstractAction"],"mappings":"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","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport { SkillAuth } from '../../../services/AuthService'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'deployHeroku',\n\tdescription: 'Deploy your skill to Heroku.',\n\tfields: {\n\t\tteamName: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'team name',\n\t\t\tisRequired: false,\n\t\t},\n\t\tshouldRunSilently: {\n\t\t\ttype: 'boolean',\n\t\t\tisPrivate: true,\n\t\t},\n\t\tshouldBuildAndLint: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t\tshouldRunTests: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class DeployAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = optionsSchema\n\tpublic commandAliases = ['deploy.heroku']\n\tpublic invocationMessage = 'Deploying to Heroku... 🚀'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\tawait this.assertRegisteredSkill()\n\t\t\tawait this.assertDependencies()\n\t\t\tawait this.assertLoggedInToHeroku()\n\t\t\tawait this.setupGitRepo()\n\t\t\tawait this.setupGitRemote()\n\n\t\t\tconst procResults = await this.setupProcFile()\n\t\t\tresults = actionUtil.mergeActionResults(results, procResults)\n\n\t\t\tawait this.assertNoPendingGitChanges()\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\n\t\tconst { shouldBuildAndLint, shouldRunTests } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tif (shouldBuildAndLint) {\n\t\t\tresults = await this.buildAndLint()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tif (shouldRunTests) {\n\t\t\tresults = await this.runTests()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tawait this.deploy()\n\n\t\tthis.ui.clear()\n\n\t\tconst skill = this.Service('auth').getCurrentSkill() as SkillAuth\n\n\t\tresults.summaryLines = [\n\t\t\t`You are good to go!`,\n\t\t\t\"You gotta make sure that your ENV's are set on Heroku to the following:\\n\",\n\t\t\t`SKILL_NAME=${skill.name}`,\n\t\t\t`SKILL_SLUG=${skill.slug}`,\n\t\t\t`SKILL_ID=${skill.id}`,\n\t\t\t`SKILL_API_KEY=${skill.apiKey}`,\n\t\t]\n\n\t\treturn results\n\t}\n\n\tprivate assertRegisteredSkill() {\n\t\tconst skill = this.Service('auth').getCurrentSkill()\n\t\tif (!skill) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'skill',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You have to register your skill. Try `spruce login && spruce register` to get going!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async deploy() {\n\t\tawait this.Service('command').execute(\n\t\t\t'git push --set-upstream heroku master'\n\t\t)\n\t}\n\n\tprivate async assertNoPendingGitChanges() {\n\t\tconst results = await this.Service('command').execute('git status')\n\n\t\tconst failed =\n\t\t\t(results.stdout ?? '').toLowerCase().search('not staged') > -1 ||\n\t\t\t(results.stdout ?? '').toLowerCase().search('no commits') > -1\n\n\t\tif (failed) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You have pending changes. Commit them and try again!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async setupGitRemote() {\n\t\tconst command = this.Service('command')\n\n\t\ttry {\n\t\t\tawait command.execute('git ls-remote heroku')\n\n\t\t\treturn\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch {}\n\n\t\tconst confirm = await this.ui.confirm(\n\t\t\t`I didn't find a a remote named \"heroku\", want me to create one?`\n\t\t)\n\n\t\tif (!confirm) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'remote',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You need to setup a remote named \"heroku\" that Heroku will pull from.',\n\t\t\t})\n\t\t}\n\n\t\tlet pass = false\n\t\tlet label =\n\t\t\t'What name do you wanna give your app on heroku (using-kebab-case)?'\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst skillName = pkg.get('name')\n\n\t\tdo {\n\t\t\tlet name = await this.ui.prompt({\n\t\t\t\ttype: 'text',\n\t\t\t\tlabel,\n\t\t\t\tdefaultValue: skillName,\n\t\t\t\tisRequired: true,\n\t\t\t})\n\n\t\t\tname = namesUtil.toKebab(name)\n\n\t\t\ttry {\n\t\t\t\tawait command.execute('heroku create', {\n\t\t\t\t\targs: [name],\n\t\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t\t})\n\n\t\t\t\tpass = true\n\t\t\t} catch {\n\t\t\t\tlabel = `Uh oh, \"${name}\" is taken, try again!`\n\t\t\t}\n\t\t} while (!pass)\n\n\t\ttry {\n\t\t\tawait command.execute('heroku buildpacks:set heroku/nodejs', {\n\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t})\n\t\t} catch {\n\t\t\tthrow new SpruceError({ code: 'DEPLOY_FAILED', stage: 'remote' })\n\t\t}\n\t}\n\n\tprivate async setupProcFile(): Promise<FeatureActionResponse> {\n\t\tconst procFile = diskUtil.resolvePath(this.cwd, 'Procfile')\n\t\tconst results: FeatureActionResponse = {\n\t\t\tfiles: [],\n\t\t}\n\t\tif (!diskUtil.doesFileExist(procFile)) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`I don't see a Procfile, which Heroku needs to know how to run your skill. Want me to create one?`\n\t\t\t)\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\t\tstage: 'procfile',\n\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t'You are gonna need to create a Procfile in your project root so heroku knows how to run your skill.',\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdiskUtil.writeFile(procFile, 'worker: npm run boot')\n\t\t\tresults.files?.push({\n\t\t\t\tname: 'Procfile',\n\t\t\t\taction: 'generated',\n\t\t\t\tpath: procFile,\n\t\t\t\tdescription: 'Used by Heroku to know how to run your skill.',\n\t\t\t})\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async setupGitRepo() {\n\t\tconst command = this.Service('command')\n\n\t\tlet inRepo = true\n\t\ttry {\n\t\t\tawait command.execute('git status')\n\t\t} catch {\n\t\t\tinRepo = false\n\t\t}\n\n\t\tif (!inRepo) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t'You are not in a git repo. Would you like to initialize one now?'\n\t\t\t)\n\n\t\t\ttry {\n\t\t\t\tif (confirm) {\n\t\t\t\t\tawait command.execute('git init')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t} catch {}\n\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You must be in a git repo to deploy!',\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async assertLoggedInToHeroku() {\n\t\ttry {\n\t\t\tawait this.Service('command').execute('grep api.heroku.com ~/.netrc')\n\t\t} catch {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'heroku',\n\t\t\t\tfriendlyMessage: `You gotta be logged in using \\`heroku login\\` before you can deploy.!`,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async assertDependencies() {\n\t\tconst command = this.Service('command')\n\t\tconst missing: { name: string; hint: string }[] = []\n\n\t\ttry {\n\t\t\tawait command.execute('which heroku')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'heroku',\n\t\t\t\thint: 'Follow install instructions @ https://devcenter.heroku.com/articles/heroku-cli#download-and-install',\n\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tawait command.execute('which git')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'git',\n\t\t\t\thint: 'Follow install instructions @ https://git-scm.com/downloads',\n\t\t\t})\n\t\t}\n\n\t\tif (missing.length > 0) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'MISSING_DEPENDENCIES',\n\t\t\t\tdependencies: missing,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async runTests() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isTestInstalled = await this.featureInstaller.isInstalled('test')\n\n\t\tif (isTestInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Testing your skill. Hold onto your pants. 👖')\n\n\t\t\t\tconst testResults = await this.Action('test', 'test').execute({\n\t\t\t\t\twatchMode: 'off',\n\t\t\t\t\tshouldReportWhileRunning: false,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, testResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'testing' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n\n\tprivate async buildAndLint() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (isSkillInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Building your skill. This may take a minute...')\n\n\t\t\t\tconst buildResults = await this.Service('build').build({\n\t\t\t\t\tshouldFixLintFirst: true,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, buildResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'building' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n}\n"],"file":"HerokuAction.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/deploy/actions/HerokuAction.ts"],"names":["optionsSchema","id","description","fields","teamName","type","label","isRequired","shouldRunSilently","isPrivate","shouldBuildAndLint","defaultValue","shouldRunTests","DeployAction","options","results","assertRegisteredSkill","assertDependencies","assertLoggedInToHeroku","setupGitRepo","setupGitRemote","setupProcFile","procResults","actionUtil","mergeActionResults","assertNoPendingGitChanges","errors","validateAndNormalizeOptions","buildAndLint","runTests","deploy","ui","clear","skill","Service","getCurrentSkill","summaryLines","name","slug","apiKey","SpruceError","code","stage","friendlyMessage","execute","failed","stdout","toLowerCase","search","command","confirm","pass","pkg","skillName","get","prompt","namesUtil","toKebab","args","env","HOME","process","procFile","diskUtil","resolvePath","cwd","files","doesFileExist","writeFile","push","action","path","inRepo","missing","hint","length","dependencies","featureInstaller","isInstalled","isTestInstalled","startLoading","Action","watchMode","shouldReportWhileRunning","testResults","isSkillInstalled","build","shouldFixLintFirst","buildResults","AbstractAction"],"mappings":"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","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { diskUtil, namesUtil, SkillAuth } from '@sprucelabs/spruce-skill-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport actionUtil from '../../../utilities/action.utility'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'deployHeroku',\n\tdescription: 'Deploy your skill to Heroku.',\n\tfields: {\n\t\tteamName: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'team name',\n\t\t\tisRequired: false,\n\t\t},\n\t\tshouldRunSilently: {\n\t\t\ttype: 'boolean',\n\t\t\tisPrivate: true,\n\t\t},\n\t\tshouldBuildAndLint: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t\tshouldRunTests: {\n\t\t\ttype: 'boolean',\n\t\t\tdefaultValue: true,\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class DeployAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = optionsSchema\n\tpublic commandAliases = ['deploy.heroku']\n\tpublic invocationMessage = 'Deploying to Heroku... 🚀'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\ttry {\n\t\t\tawait this.assertRegisteredSkill()\n\t\t\tawait this.assertDependencies()\n\t\t\tawait this.assertLoggedInToHeroku()\n\t\t\tawait this.setupGitRepo()\n\t\t\tawait this.setupGitRemote()\n\n\t\t\tconst procResults = await this.setupProcFile()\n\t\t\tresults = actionUtil.mergeActionResults(results, procResults)\n\n\t\t\tawait this.assertNoPendingGitChanges()\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\n\t\tconst { shouldBuildAndLint, shouldRunTests } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tif (shouldBuildAndLint) {\n\t\t\tresults = await this.buildAndLint()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tif (shouldRunTests) {\n\t\t\tresults = await this.runTests()\n\n\t\t\tif (results.errors) {\n\t\t\t\treturn results\n\t\t\t}\n\t\t}\n\n\t\tawait this.deploy()\n\n\t\tthis.ui.clear()\n\n\t\tconst skill = this.Service('auth').getCurrentSkill() as SkillAuth\n\n\t\tresults.summaryLines = [\n\t\t\t`You are good to go!`,\n\t\t\t\"You gotta make sure that your ENV's are set on Heroku to the following:\\n\",\n\t\t\t`SKILL_NAME=${skill.name}`,\n\t\t\t`SKILL_SLUG=${skill.slug}`,\n\t\t\t`SKILL_ID=${skill.id}`,\n\t\t\t`SKILL_API_KEY=${skill.apiKey}`,\n\t\t]\n\n\t\treturn results\n\t}\n\n\tprivate assertRegisteredSkill() {\n\t\tconst skill = this.Service('auth').getCurrentSkill()\n\t\tif (!skill) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'skill',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You have to register your skill. Try `spruce login && spruce register` to get going!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async deploy() {\n\t\tawait this.Service('command').execute(\n\t\t\t'git push --set-upstream heroku master'\n\t\t)\n\t}\n\n\tprivate async assertNoPendingGitChanges() {\n\t\tconst results = await this.Service('command').execute('git status')\n\n\t\tconst failed =\n\t\t\t(results.stdout ?? '').toLowerCase().search('not staged') > -1 ||\n\t\t\t(results.stdout ?? '').toLowerCase().search('no commits') > -1\n\n\t\tif (failed) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You have pending changes. Commit them and try again!',\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async setupGitRemote() {\n\t\tconst command = this.Service('command')\n\n\t\ttry {\n\t\t\tawait command.execute('git ls-remote heroku')\n\n\t\t\treturn\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch {}\n\n\t\tconst confirm = await this.ui.confirm(\n\t\t\t`I didn't find a a remote named \"heroku\", want me to create one?`\n\t\t)\n\n\t\tif (!confirm) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'remote',\n\t\t\t\tfriendlyMessage:\n\t\t\t\t\t'You need to setup a remote named \"heroku\" that Heroku will pull from.',\n\t\t\t})\n\t\t}\n\n\t\tlet pass = false\n\t\tlet label =\n\t\t\t'What name do you wanna give your app on heroku (using-kebab-case)?'\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst skillName = pkg.get('name')\n\n\t\tdo {\n\t\t\tlet name = await this.ui.prompt({\n\t\t\t\ttype: 'text',\n\t\t\t\tlabel,\n\t\t\t\tdefaultValue: skillName,\n\t\t\t\tisRequired: true,\n\t\t\t})\n\n\t\t\tname = namesUtil.toKebab(name)\n\n\t\t\ttry {\n\t\t\t\tawait command.execute('heroku create', {\n\t\t\t\t\targs: [name],\n\t\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t\t})\n\n\t\t\t\tpass = true\n\t\t\t} catch {\n\t\t\t\tlabel = `Uh oh, \"${name}\" is taken, try again!`\n\t\t\t}\n\t\t} while (!pass)\n\n\t\ttry {\n\t\t\tawait command.execute('heroku buildpacks:set heroku/nodejs', {\n\t\t\t\tenv: { HOME: process.env.HOME },\n\t\t\t})\n\t\t} catch {\n\t\t\tthrow new SpruceError({ code: 'DEPLOY_FAILED', stage: 'remote' })\n\t\t}\n\t}\n\n\tprivate async setupProcFile(): Promise<FeatureActionResponse> {\n\t\tconst procFile = diskUtil.resolvePath(this.cwd, 'Procfile')\n\t\tconst results: FeatureActionResponse = {\n\t\t\tfiles: [],\n\t\t}\n\t\tif (!diskUtil.doesFileExist(procFile)) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t`I don't see a Procfile, which Heroku needs to know how to run your skill. Want me to create one?`\n\t\t\t)\n\t\t\tif (!confirm) {\n\t\t\t\tthrow new SpruceError({\n\t\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\t\tstage: 'procfile',\n\t\t\t\t\tfriendlyMessage:\n\t\t\t\t\t\t'You are gonna need to create a Procfile in your project root so heroku knows how to run your skill.',\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdiskUtil.writeFile(procFile, 'worker: npm run boot')\n\t\t\tresults.files?.push({\n\t\t\t\tname: 'Procfile',\n\t\t\t\taction: 'generated',\n\t\t\t\tpath: procFile,\n\t\t\t\tdescription: 'Used by Heroku to know how to run your skill.',\n\t\t\t})\n\t\t}\n\n\t\treturn results\n\t}\n\n\tprivate async setupGitRepo() {\n\t\tconst command = this.Service('command')\n\n\t\tlet inRepo = true\n\t\ttry {\n\t\t\tawait command.execute('git status')\n\t\t} catch {\n\t\t\tinRepo = false\n\t\t}\n\n\t\tif (!inRepo) {\n\t\t\tconst confirm = await this.ui.confirm(\n\t\t\t\t'You are not in a git repo. Would you like to initialize one now?'\n\t\t\t)\n\n\t\t\ttry {\n\t\t\t\tif (confirm) {\n\t\t\t\t\tawait command.execute('git init')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t} catch {}\n\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'git',\n\t\t\t\tfriendlyMessage: 'You must be in a git repo to deploy!',\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async assertLoggedInToHeroku() {\n\t\ttry {\n\t\t\tawait this.Service('command').execute('grep api.heroku.com ~/.netrc')\n\t\t} catch {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'DEPLOY_FAILED',\n\t\t\t\tstage: 'heroku',\n\t\t\t\tfriendlyMessage: `You gotta be logged in using \\`heroku login\\` before you can deploy.!`,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async assertDependencies() {\n\t\tconst command = this.Service('command')\n\t\tconst missing: { name: string; hint: string }[] = []\n\n\t\ttry {\n\t\t\tawait command.execute('which heroku')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'heroku',\n\t\t\t\thint: 'Follow install instructions @ https://devcenter.heroku.com/articles/heroku-cli#download-and-install',\n\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tawait command.execute('which git')\n\t\t} catch {\n\t\t\tmissing.push({\n\t\t\t\tname: 'git',\n\t\t\t\thint: 'Follow install instructions @ https://git-scm.com/downloads',\n\t\t\t})\n\t\t}\n\n\t\tif (missing.length > 0) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'MISSING_DEPENDENCIES',\n\t\t\t\tdependencies: missing,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate async runTests() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isTestInstalled = await this.featureInstaller.isInstalled('test')\n\n\t\tif (isTestInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Testing your skill. Hold onto your pants. 👖')\n\n\t\t\t\tconst testResults = await this.Action('test', 'test').execute({\n\t\t\t\t\twatchMode: 'off',\n\t\t\t\t\tshouldReportWhileRunning: false,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, testResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'testing' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n\n\tprivate async buildAndLint() {\n\t\tlet results: FeatureActionResponse = {}\n\n\t\tconst isSkillInstalled = await this.featureInstaller.isInstalled('skill')\n\n\t\tif (isSkillInstalled) {\n\t\t\ttry {\n\t\t\t\tthis.ui.startLoading('Building your skill. This may take a minute...')\n\n\t\t\t\tconst buildResults = await this.Service('build').build({\n\t\t\t\t\tshouldFixLintFirst: true,\n\t\t\t\t})\n\n\t\t\t\tresults = actionUtil.mergeActionResults(results, buildResults)\n\t\t\t} catch (err) {\n\t\t\t\tresults = {\n\t\t\t\t\terrors: [\n\t\t\t\t\t\tnew SpruceError({ code: 'DEPLOY_FAILED', stage: 'building' }),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results\n\t}\n}\n"],"file":"HerokuAction.js"}
|
|
@@ -121,6 +121,7 @@ var RegisterAction = /*#__PURE__*/function (_AbstractAction) {
|
|
|
121
121
|
_context.prev = 14;
|
|
122
122
|
_context.t0 = _context["catch"](7);
|
|
123
123
|
return _context.abrupt("return", {
|
|
124
|
+
hints: ["If you've already registered your skill, try 'spruce skill.login'!"],
|
|
124
125
|
errors: [_context.t0]
|
|
125
126
|
});
|
|
126
127
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/features/skill/actions/RegisterAction.ts"],"names":["optionsSchema","id","description","fields","nameReadable","type","label","isRequired","nameKebab","RegisterAction","options","validateAndNormalizeOptions","connectToApi","client","emit","payload","name","slug","results","eventResponseUtil","getFirstResponseOrThrow","skill","summaryLines","generateSkillSummaryLines","Service","updateCurrentSkill","hints","meta","errors","AbstractAction","apiKey"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;;;;;AAGA,IAAMA,aAAa,GAAG,yBAAY;AACjCC,EAAAA,EAAE,EAAE,qBAD6B;AAEjCC,EAAAA,WAAW,EACV,oFAHgC;AAIjCC,EAAAA,MAAM,EAAE;AACPC,IAAAA,YAAY,EAAE;AACbC,MAAAA,IAAI,EAAE,MADO;AAEbC,MAAAA,KAAK,8BAFQ;AAGbC,MAAAA,UAAU,EAAE;AAHC,KADP;AAMPC,IAAAA,SAAS,EAAE;AACVH,MAAAA,IAAI,EAAE,MADI;AAEVC,MAAAA,KAAK,EAAE,MAFG;AAGVC,MAAAA,UAAU,EAAE;AAHF,KANJ;AAWPL,IAAAA,WAAW,EAAE;AACZG,MAAAA,IAAI,EAAE,MADM;AAEZC,MAAAA,KAAK,EAAE;AAFK;AAXN;AAJyB,CAAZ,CAAtB;;IAyBqBG,c;;;;;;;;;;;;;;;sGACkBT,a;uGACd,CAAC,gBAAD,EAAmB,UAAnB,C;0GACG,8B;;;;;;;mGAE3B,iBAAqBU,OAArB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,wCAEE,KAAKC,2BAAL,CAAiCD,OAAjC,CAFF,EACSN,YADT,yBACSA,YADT,EACuBI,SADvB,yBACuBA,SADvB,EACkCN,WADlC,yBACkCA,WADlC;AAAA;AAAA,uBAIsB,KAAKU,YAAL,EAJtB;;AAAA;AAIOC,gBAAAA,MAJP;AAAA;AAAA,uBAKuBA,MAAM,CAACC,IAAP,CAAY,6BAAZ,EAA2C;AAChEC,kBAAAA,OAAO,EAAE;AACRC,oBAAAA,IAAI,EAAEZ,YADE;AAERa,oBAAAA,IAAI,EAAET,SAFE;AAGRN,oBAAAA,WAAW,EAAXA;AAHQ;AADuD,iBAA3C,CALvB;;AAAA;AAKOgB,gBAAAA,OALP;AAAA;AAAA,wCAcoBC,oCAAkBC,uBAAlB,CAA0CF,OAA1C,CAdpB,EAcUG,KAdV,yBAcUA,KAdV;AAgBQC,gBAAAA,YAhBR,GAgBuBC,yBAAyB,CAACF,KAAD,CAhBhD;AAkBE,qBAAKG,OAAL,CAAa,MAAb,EAAqBC,kBAArB,CAAwCJ,KAAxC;AAlBF,iDAoBS;AACNC,kBAAAA,YAAY,EAAZA,YADM;AAENI,kBAAAA,KAAK,EAAE,CACN,2BADM,EAEN,2CAFM,EAGN,oDAHM,CAFD;AAONC,kBAAAA,IAAI,EAAE;AACLN,oBAAAA,KAAK,EAALA;AADK;AAPA,iBApBT;;AAAA;AAAA;AAAA;AAAA,iDAgCS;
|
|
1
|
+
{"version":3,"sources":["../../../../src/features/skill/actions/RegisterAction.ts"],"names":["optionsSchema","id","description","fields","nameReadable","type","label","isRequired","nameKebab","RegisterAction","options","validateAndNormalizeOptions","connectToApi","client","emit","payload","name","slug","results","eventResponseUtil","getFirstResponseOrThrow","skill","summaryLines","generateSkillSummaryLines","Service","updateCurrentSkill","hints","meta","errors","AbstractAction","apiKey"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;;;;;AAGA,IAAMA,aAAa,GAAG,yBAAY;AACjCC,EAAAA,EAAE,EAAE,qBAD6B;AAEjCC,EAAAA,WAAW,EACV,oFAHgC;AAIjCC,EAAAA,MAAM,EAAE;AACPC,IAAAA,YAAY,EAAE;AACbC,MAAAA,IAAI,EAAE,MADO;AAEbC,MAAAA,KAAK,8BAFQ;AAGbC,MAAAA,UAAU,EAAE;AAHC,KADP;AAMPC,IAAAA,SAAS,EAAE;AACVH,MAAAA,IAAI,EAAE,MADI;AAEVC,MAAAA,KAAK,EAAE,MAFG;AAGVC,MAAAA,UAAU,EAAE;AAHF,KANJ;AAWPL,IAAAA,WAAW,EAAE;AACZG,MAAAA,IAAI,EAAE,MADM;AAEZC,MAAAA,KAAK,EAAE;AAFK;AAXN;AAJyB,CAAZ,CAAtB;;IAyBqBG,c;;;;;;;;;;;;;;;sGACkBT,a;uGACd,CAAC,gBAAD,EAAmB,UAAnB,C;0GACG,8B;;;;;;;mGAE3B,iBAAqBU,OAArB;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,wCAEE,KAAKC,2BAAL,CAAiCD,OAAjC,CAFF,EACSN,YADT,yBACSA,YADT,EACuBI,SADvB,yBACuBA,SADvB,EACkCN,WADlC,yBACkCA,WADlC;AAAA;AAAA,uBAIsB,KAAKU,YAAL,EAJtB;;AAAA;AAIOC,gBAAAA,MAJP;AAAA;AAAA,uBAKuBA,MAAM,CAACC,IAAP,CAAY,6BAAZ,EAA2C;AAChEC,kBAAAA,OAAO,EAAE;AACRC,oBAAAA,IAAI,EAAEZ,YADE;AAERa,oBAAAA,IAAI,EAAET,SAFE;AAGRN,oBAAAA,WAAW,EAAXA;AAHQ;AADuD,iBAA3C,CALvB;;AAAA;AAKOgB,gBAAAA,OALP;AAAA;AAAA,wCAcoBC,oCAAkBC,uBAAlB,CAA0CF,OAA1C,CAdpB,EAcUG,KAdV,yBAcUA,KAdV;AAgBQC,gBAAAA,YAhBR,GAgBuBC,yBAAyB,CAACF,KAAD,CAhBhD;AAkBE,qBAAKG,OAAL,CAAa,MAAb,EAAqBC,kBAArB,CAAwCJ,KAAxC;AAlBF,iDAoBS;AACNC,kBAAAA,YAAY,EAAZA,YADM;AAENI,kBAAAA,KAAK,EAAE,CACN,2BADM,EAEN,2CAFM,EAGN,oDAHM,CAFD;AAONC,kBAAAA,IAAI,EAAE;AACLN,oBAAAA,KAAK,EAALA;AADK;AAPA,iBApBT;;AAAA;AAAA;AAAA;AAAA,iDAgCS;AACNK,kBAAAA,KAAK,EAAE,sEADD;AAINE,kBAAAA,MAAM,EAAE;AAJF,iBAhCT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAL2CC,2B;;;;AA+CrC,SAASN,yBAAT,CAAmCF,KAAnC,EAA2D;AACjE,SAAO,iBACGA,KAAK,CAACL,IADT,mBAEGK,KAAK,CAACJ,IAFT,iBAGCI,KAAK,CAACpB,EAHP,sBAIMoB,KAAK,CAACS,MAJZ,EAAP;AAMA","sourcesContent":["import { buildSchema, SchemaValues } from '@sprucelabs/schema'\nimport { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport { RegisteredSkill } from '../../../types/cli.types'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'registerSkillAction',\n\tdescription:\n\t\t'Register your skill with Mercury so you can start communicating with other skills.',\n\tfields: {\n\t\tnameReadable: {\n\t\t\ttype: 'text',\n\t\t\tlabel: `What is your skill's name?`,\n\t\t\tisRequired: true,\n\t\t},\n\t\tnameKebab: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Slug',\n\t\t\tisRequired: true,\n\t\t},\n\t\tdescription: {\n\t\t\ttype: 'text',\n\t\t\tlabel: 'Describe your skill',\n\t\t},\n\t},\n})\n\ntype OptionsSchema = typeof optionsSchema\ntype Options = SchemaValues<OptionsSchema>\n\nexport default class RegisterAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema: OptionsSchema = optionsSchema\n\tpublic commandAliases = ['register.skill', 'register']\n\tpublic invocationMessage = 'Registering your skill... ⚡️'\n\n\tpublic async execute(options: Options): Promise<FeatureActionResponse> {\n\t\tconst { nameReadable, nameKebab, description } =\n\t\t\tthis.validateAndNormalizeOptions(options)\n\n\t\tconst client = await this.connectToApi()\n\t\tconst results = await client.emit('register-skill::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tname: nameReadable,\n\t\t\t\tslug: nameKebab,\n\t\t\t\tdescription,\n\t\t\t},\n\t\t})\n\n\t\ttry {\n\t\t\tconst { skill } = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\t\tconst summaryLines = generateSkillSummaryLines(skill)\n\n\t\t\tthis.Service('auth').updateCurrentSkill(skill)\n\n\t\t\treturn {\n\t\t\t\tsummaryLines,\n\t\t\t\thints: [\n\t\t\t\t\t'Your skill is registered.',\n\t\t\t\t\t'You can check your .env for more details.',\n\t\t\t\t\t\"If you're ready to deploy, try `spruce deploy`. 🚀\",\n\t\t\t\t],\n\t\t\t\tmeta: {\n\t\t\t\t\tskill,\n\t\t\t\t},\n\t\t\t}\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\thints: [\n\t\t\t\t\t`If you've already registered your skill, try 'spruce skill.login'!`,\n\t\t\t\t],\n\t\t\t\terrors: [err],\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function generateSkillSummaryLines(skill: RegisteredSkill) {\n\treturn [\n\t\t`Name: ${skill.name}`,\n\t\t`Slug: ${skill.slug}`,\n\t\t`ID: ${skill.id}`,\n\t\t`API Key: ${skill.apiKey}`,\n\t]\n}\n"],"file":"RegisterAction.js"}
|
|
@@ -11,6 +11,7 @@ var _schema = require("@sprucelabs/schema");
|
|
|
11
11
|
|
|
12
12
|
var _person = _interopRequireDefault(require("../../.spruce/schemas/spruce/v2020_07_22/person.schema"));
|
|
13
13
|
|
|
14
|
+
// eslint-disable-next-line spruce/prohibit-import-of-schema-in-builders
|
|
14
15
|
var _default = (0, _schema.buildSchema)({
|
|
15
16
|
id: 'personWithToken',
|
|
16
17
|
description: 'A stripped down cli user with token details for login',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/schemas/v2020_07_22/personWithToken.builder.ts"],"names":["id","description","fields","personSchema","casualName","token","type","isRequired","isLoggedIn","label"],"mappings":";;;;;;;;;AAAA;;
|
|
1
|
+
{"version":3,"sources":["../../../src/schemas/v2020_07_22/personWithToken.builder.ts"],"names":["id","description","fields","personSchema","casualName","token","type","isRequired","isLoggedIn","label"],"mappings":";;;;;;;;;AAAA;;AAEA;;AADA;eAGe,yBAAY;AAC1BA,EAAAA,EAAE,EAAE,iBADsB;AAE1BC,EAAAA,WAAW,EAAE,uDAFa;AAG1BC,EAAAA,MAAM,EAAE;AACPF,IAAAA,EAAE,EAAEG,mBAAaD,MAAb,CAAoBF,EADjB;AAEPI,IAAAA,UAAU,EAAED,mBAAaD,MAAb,CAAoBE,UAFzB;AAGPC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE,MAAR;AAAgBC,MAAAA,UAAU,EAAE;AAA5B,KAHA;AAIPC,IAAAA,UAAU,EAAE;AACXF,MAAAA,IAAI,EAAE,SADK;AAEXG,MAAAA,KAAK,EAAE;AAFI;AAJL;AAHkB,CAAZ,C","sourcesContent":["import { buildSchema } from '@sprucelabs/schema'\n// eslint-disable-next-line spruce/prohibit-import-of-schema-in-builders\nimport personSchema from '#spruce/schemas/spruce/v2020_07_22/person.schema'\n\nexport default buildSchema({\n\tid: 'personWithToken',\n\tdescription: 'A stripped down cli user with token details for login',\n\tfields: {\n\t\tid: personSchema.fields.id,\n\t\tcasualName: personSchema.fields.casualName,\n\t\ttoken: { type: 'text', isRequired: true },\n\t\tisLoggedIn: {\n\t\t\ttype: 'boolean',\n\t\t\tlabel: 'Logged in',\n\t\t},\n\t},\n})\n"],"file":"personWithToken.builder.js"}
|
|
@@ -1,22 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PkgService as BasePkgService } from '@sprucelabs/spruce-skill-utils';
|
|
2
2
|
import CommandService from './CommandService';
|
|
3
3
|
export interface AddOptions {
|
|
4
4
|
isDev?: boolean;
|
|
5
5
|
shouldForceInstall?: boolean;
|
|
6
6
|
shouldCleanupLockFiles?: boolean;
|
|
7
7
|
}
|
|
8
|
-
export default class PkgService extends
|
|
9
|
-
private
|
|
10
|
-
|
|
11
|
-
set(options: {
|
|
12
|
-
path: string | string[];
|
|
13
|
-
value: string | Record<string, any> | undefined;
|
|
14
|
-
}): void;
|
|
15
|
-
doesExist(): boolean;
|
|
16
|
-
unset(path: string | string[]): void;
|
|
17
|
-
readPackage(): Record<string, any | undefined>;
|
|
18
|
-
private buildPath;
|
|
19
|
-
isInstalled(pkg: string): boolean;
|
|
8
|
+
export default class PkgService extends BasePkgService {
|
|
9
|
+
private commandService;
|
|
10
|
+
constructor(cwd: string, commandService: CommandService);
|
|
20
11
|
install(pkg?: string[] | string, options?: AddOptions): Promise<{
|
|
21
12
|
totalInstalled: number;
|
|
22
13
|
totalSkipped: number;
|
|
@@ -25,8 +16,5 @@ export default class PkgService extends CommandService {
|
|
|
25
16
|
executable: string;
|
|
26
17
|
args: any[];
|
|
27
18
|
};
|
|
28
|
-
deleteLockFile(): void;
|
|
29
19
|
uninstall(pkg: string[] | string): Promise<void>;
|
|
30
|
-
stripLatest(name: string): string;
|
|
31
|
-
buildPackageName(dep: NpmPackage): string;
|
|
32
20
|
}
|
|
@@ -31,16 +31,8 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
31
31
|
|
|
32
32
|
var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
|
|
33
33
|
|
|
34
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
35
|
-
|
|
36
|
-
var _lodash = require("lodash");
|
|
37
|
-
|
|
38
|
-
var _SpruceError = _interopRequireDefault(require("../errors/SpruceError"));
|
|
39
|
-
|
|
40
34
|
var _isCi = _interopRequireDefault(require("../utilities/isCi"));
|
|
41
35
|
|
|
42
|
-
var _CommandService2 = _interopRequireDefault(require("./CommandService"));
|
|
43
|
-
|
|
44
36
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
45
37
|
|
|
46
38
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
@@ -51,98 +43,22 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
51
43
|
|
|
52
44
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
53
45
|
|
|
54
|
-
var PkgService = /*#__PURE__*/function (
|
|
55
|
-
(0, _inherits2["default"])(PkgService,
|
|
46
|
+
var PkgService = /*#__PURE__*/function (_BasePkgService) {
|
|
47
|
+
(0, _inherits2["default"])(PkgService, _BasePkgService);
|
|
56
48
|
|
|
57
49
|
var _super = _createSuper(PkgService);
|
|
58
50
|
|
|
59
|
-
function PkgService() {
|
|
51
|
+
function PkgService(cwd, commandService) {
|
|
60
52
|
var _this;
|
|
61
53
|
|
|
62
54
|
(0, _classCallCheck2["default"])(this, PkgService);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
69
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_parsedPkg", void 0);
|
|
55
|
+
_this = _super.call(this, cwd);
|
|
56
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "commandService", void 0);
|
|
57
|
+
_this.commandService = commandService;
|
|
70
58
|
return _this;
|
|
71
59
|
}
|
|
72
60
|
|
|
73
61
|
(0, _createClass2["default"])(PkgService, [{
|
|
74
|
-
key: "get",
|
|
75
|
-
value: function get(path) {
|
|
76
|
-
var contents = this.readPackage();
|
|
77
|
-
return (0, _lodash.get)(contents, path);
|
|
78
|
-
}
|
|
79
|
-
}, {
|
|
80
|
-
key: "set",
|
|
81
|
-
value: function set(options) {
|
|
82
|
-
var path = options.path,
|
|
83
|
-
value = options.value;
|
|
84
|
-
var contents = this.readPackage();
|
|
85
|
-
var updated = (0, _lodash.set)(contents, path, value);
|
|
86
|
-
var destination = this.buildPath();
|
|
87
|
-
|
|
88
|
-
_fsExtra["default"].outputFileSync(destination, JSON.stringify(updated, null, 2));
|
|
89
|
-
|
|
90
|
-
this._parsedPkg = undefined;
|
|
91
|
-
}
|
|
92
|
-
}, {
|
|
93
|
-
key: "doesExist",
|
|
94
|
-
value: function doesExist() {
|
|
95
|
-
return _spruceSkillUtils.diskUtil.doesFileExist(this.buildPath());
|
|
96
|
-
}
|
|
97
|
-
}, {
|
|
98
|
-
key: "unset",
|
|
99
|
-
value: function unset(path) {
|
|
100
|
-
this.set({
|
|
101
|
-
path: path,
|
|
102
|
-
value: undefined
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}, {
|
|
106
|
-
key: "readPackage",
|
|
107
|
-
value: function readPackage() {
|
|
108
|
-
if (this._parsedPkg) {
|
|
109
|
-
return this._parsedPkg;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
var packagePath = this.buildPath();
|
|
113
|
-
|
|
114
|
-
try {
|
|
115
|
-
var contents = _fsExtra["default"].readFileSync(packagePath).toString();
|
|
116
|
-
|
|
117
|
-
var parsed = JSON.parse(contents);
|
|
118
|
-
this._parsedPkg = parsed;
|
|
119
|
-
return parsed;
|
|
120
|
-
} catch (err) {
|
|
121
|
-
throw new _SpruceError["default"]({
|
|
122
|
-
code: 'FAILED_TO_IMPORT',
|
|
123
|
-
file: packagePath,
|
|
124
|
-
originalError: err
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}, {
|
|
129
|
-
key: "buildPath",
|
|
130
|
-
value: function buildPath() {
|
|
131
|
-
return _path["default"].join(this.cwd, 'package.json');
|
|
132
|
-
}
|
|
133
|
-
}, {
|
|
134
|
-
key: "isInstalled",
|
|
135
|
-
value: function isInstalled(pkg) {
|
|
136
|
-
try {
|
|
137
|
-
var _contents$dependencie, _contents$devDependen;
|
|
138
|
-
|
|
139
|
-
var contents = this.readPackage();
|
|
140
|
-
return !!((_contents$dependencie = contents.dependencies) !== null && _contents$dependencie !== void 0 && _contents$dependencie[pkg]) || !!((_contents$devDependen = contents.devDependencies) !== null && _contents$devDependen !== void 0 && _contents$devDependen[pkg]);
|
|
141
|
-
} catch (e) {
|
|
142
|
-
return false;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}, {
|
|
146
62
|
key: "install",
|
|
147
63
|
value: function () {
|
|
148
64
|
var _install = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(pkg, options) {
|
|
@@ -161,7 +77,7 @@ var PkgService = /*#__PURE__*/function (_CommandService) {
|
|
|
161
77
|
}
|
|
162
78
|
|
|
163
79
|
_context.next = 5;
|
|
164
|
-
return this.execute('yarn', {
|
|
80
|
+
return this.commandService.execute('yarn', {
|
|
165
81
|
args: ['install']
|
|
166
82
|
});
|
|
167
83
|
|
|
@@ -206,7 +122,7 @@ var PkgService = /*#__PURE__*/function (_CommandService) {
|
|
|
206
122
|
|
|
207
123
|
_PkgService$buildComm = PkgService.buildCommandAndArgs(toInstall, options), executable = _PkgService$buildComm.executable, args = _PkgService$buildComm.args;
|
|
208
124
|
_context.next = 19;
|
|
209
|
-
return this.execute(executable, {
|
|
125
|
+
return this.commandService.execute(executable, {
|
|
210
126
|
args: args
|
|
211
127
|
});
|
|
212
128
|
|
|
@@ -221,7 +137,7 @@ var PkgService = /*#__PURE__*/function (_CommandService) {
|
|
|
221
137
|
}
|
|
222
138
|
|
|
223
139
|
_context.next = 24;
|
|
224
|
-
return this.execute('yarn', {
|
|
140
|
+
return this.commandService.execute('yarn', {
|
|
225
141
|
args: ['install']
|
|
226
142
|
});
|
|
227
143
|
|
|
@@ -247,21 +163,6 @@ var PkgService = /*#__PURE__*/function (_CommandService) {
|
|
|
247
163
|
|
|
248
164
|
return install;
|
|
249
165
|
}()
|
|
250
|
-
}, {
|
|
251
|
-
key: "deleteLockFile",
|
|
252
|
-
value: function deleteLockFile() {
|
|
253
|
-
var files = ['package-lock.json', 'yarn.lock'];
|
|
254
|
-
|
|
255
|
-
for (var _i = 0, _files = files; _i < _files.length; _i++) {
|
|
256
|
-
var file = _files[_i];
|
|
257
|
-
|
|
258
|
-
var lock = _path["default"].join(this.cwd, file);
|
|
259
|
-
|
|
260
|
-
if (_spruceSkillUtils.diskUtil.doesFileExist(lock)) {
|
|
261
|
-
_spruceSkillUtils.diskUtil.deleteFile(lock);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
166
|
}, {
|
|
266
167
|
key: "uninstall",
|
|
267
168
|
value: function () {
|
|
@@ -274,7 +175,7 @@ var PkgService = /*#__PURE__*/function (_CommandService) {
|
|
|
274
175
|
packages = Array.isArray(pkg) ? pkg : [pkg];
|
|
275
176
|
args = ['uninstall'].concat((0, _toConsumableArray2["default"])(packages));
|
|
276
177
|
_context2.next = 4;
|
|
277
|
-
return this.execute('npm', {
|
|
178
|
+
return this.commandService.execute('npm', {
|
|
278
179
|
args: args
|
|
279
180
|
});
|
|
280
181
|
|
|
@@ -297,23 +198,6 @@ var PkgService = /*#__PURE__*/function (_CommandService) {
|
|
|
297
198
|
|
|
298
199
|
return uninstall;
|
|
299
200
|
}()
|
|
300
|
-
}, {
|
|
301
|
-
key: "stripLatest",
|
|
302
|
-
value: function stripLatest(name) {
|
|
303
|
-
return name.replace('@latest', '');
|
|
304
|
-
}
|
|
305
|
-
}, {
|
|
306
|
-
key: "buildPackageName",
|
|
307
|
-
value: function buildPackageName(dep) {
|
|
308
|
-
var name = dep.name,
|
|
309
|
-
version = dep.version;
|
|
310
|
-
|
|
311
|
-
if (!version) {
|
|
312
|
-
return name;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
return "".concat(name, "@").concat(version);
|
|
316
|
-
}
|
|
317
201
|
}], [{
|
|
318
202
|
key: "buildCommandAndArgs",
|
|
319
203
|
value: function buildCommandAndArgs(toInstall, options) {
|
|
@@ -333,7 +217,7 @@ var PkgService = /*#__PURE__*/function (_CommandService) {
|
|
|
333
217
|
}
|
|
334
218
|
}]);
|
|
335
219
|
return PkgService;
|
|
336
|
-
}(
|
|
220
|
+
}(_spruceSkillUtils.PkgService);
|
|
337
221
|
|
|
338
222
|
exports["default"] = PkgService;
|
|
339
223
|
//# sourceMappingURL=PkgService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/PkgService.ts"],"names":["PkgService","path","contents","readPackage","options","value","updated","destination","buildPath","fs","outputFileSync","JSON","stringify","_parsedPkg","undefined","diskUtil","doesFileExist","set","packagePath","readFileSync","toString","parsed","parse","err","SpruceError","code","file","originalError","pathUtil","join","cwd","pkg","dependencies","devDependencies","e","shouldCleanupLockFiles","deleteLockFile","bind","execute","args","totalInstalled","totalSkipped","packages","Array","isArray","toInstall","labsModules","thisPackage","isInstalled","shouldForceInstall","startsWith","push","stripLatest","buildCommandAndArgs","executable","doesDirExist","length","files","lock","deleteFile","install","name","replace","dep","version","createRandomTempDir","filter","a","isDev","CommandService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;;;;;IAQqBA,U;;;;;;;;;;;;;;;;;;;;;WAGpB,aAAWC,IAAX,EAAoC;AACnC,UAAMC,QAAQ,GAAG,KAAKC,WAAL,EAAjB;AACA,aAAO,iBAAID,QAAJ,EAAcD,IAAd,CAAP;AACA;;;WAED,aAAWG,OAAX,EAGG;AACF,UAAQH,IAAR,GAAwBG,OAAxB,CAAQH,IAAR;AAAA,UAAcI,KAAd,GAAwBD,OAAxB,CAAcC,KAAd;AACA,UAAMH,QAAQ,GAAG,KAAKC,WAAL,EAAjB;AACA,UAAMG,OAAO,GAAG,iBAAIJ,QAAJ,EAAcD,IAAd,EAAoBI,KAApB,CAAhB;AACA,UAAME,WAAW,GAAG,KAAKC,SAAL,EAApB;;AAEAC,0BAAGC,cAAH,CAAkBH,WAAlB,EAA+BI,IAAI,CAACC,SAAL,CAAeN,OAAf,EAAwB,IAAxB,EAA8B,CAA9B,CAA/B;;AACA,WAAKO,UAAL,GAAkBC,SAAlB;AACA;;;WAED,qBAAmB;AAClB,aAAOC,2BAASC,aAAT,CAAuB,KAAKR,SAAL,EAAvB,CAAP;AACA;;;WAED,eAAaP,IAAb,EAAsC;AACrC,WAAKgB,GAAL,CAAS;AAAEhB,QAAAA,IAAI,EAAJA,IAAF;AAAQI,QAAAA,KAAK,EAAES;AAAf,OAAT;AACA;;;WAED,uBAAsD;AACrD,UAAI,KAAKD,UAAT,EAAqB;AACpB,eAAO,KAAKA,UAAZ;AACA;;AACD,UAAMK,WAAW,GAAG,KAAKV,SAAL,EAApB;;AAEA,UAAI;AACH,YAAMN,QAAQ,GAAGO,oBAAGU,YAAH,CAAgBD,WAAhB,EAA6BE,QAA7B,EAAjB;;AACA,YAAMC,MAAM,GAAGV,IAAI,CAACW,KAAL,CAAWpB,QAAX,CAAf;AACA,aAAKW,UAAL,GAAkBQ,MAAlB;AAEA,eAAOA,MAAP;AACA,OAND,CAME,OAAOE,GAAP,EAAiB;AAClB,cAAM,IAAIC,uBAAJ,CAAgB;AACrBC,UAAAA,IAAI,EAAE,kBADe;AAErBC,UAAAA,IAAI,EAAER,WAFe;AAGrBS,UAAAA,aAAa,EAAEJ;AAHM,SAAhB,CAAN;AAKA;AACD;;;WAED,qBAAoB;AACnB,aAAOK,iBAASC,IAAT,CAAc,KAAKC,GAAnB,EAAwB,cAAxB,CAAP;AACA;;;WAED,qBAAmBC,GAAnB,EAAgC;AAC/B,UAAI;AAAA;;AACH,YAAM7B,QAAQ,GAAG,KAAKC,WAAL,EAAjB;AAEA,eAAO,CAAC,2BAACD,QAAQ,CAAC8B,YAAV,kDAAC,sBAAwBD,GAAxB,CAAD,CAAD,IAAkC,CAAC,2BAAC7B,QAAQ,CAAC+B,eAAV,kDAAC,sBAA2BF,GAA3B,CAAD,CAA1C;AACA,OAJD,CAIE,OAAOG,CAAP,EAAU;AACX,eAAO,KAAP;AACA;AACD;;;;mGAED,iBAAqBH,GAArB,EAA8C3B,OAA9C;AAAA;;AAAA;AAAA;AAAA;AAAA;AACO+B,gBAAAA,sBADP,GACgC,CAAA/B,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAE+B,sBAAT,MAAoC,KADpE;AAEOC,gBAAAA,cAFP,GAEwBD,sBAAsB,GAC1C,KAAKC,cAAL,CAAoBC,IAApB,CAAyB,IAAzB,CAD0C,GAE1C,YAAM,CAAE,CAJZ;;AAAA,oBAMMN,GANN;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAOQ,KAAKO,OAAL,CAAa,MAAb,EAAqB;AAAEC,kBAAAA,IAAI,EAAE,CAAC,SAAD;AAAR,iBAArB,CAPR;;AAAA;AAQEH,gBAAAA,cAAc;AARhB,iDASS;AAAEI,kBAAAA,cAAc,EAAE,CAAC,CAAnB;AAAsBC,kBAAAA,YAAY,EAAE,CAAC;AAArC,iBATT;;AAAA;AAYCL,gBAAAA,cAAc;AAERM,gBAAAA,QAdP,GAckBC,KAAK,CAACC,OAAN,CAAcb,GAAd,IAAqBA,GAArB,GAA2B,CAACA,GAAD,CAd7C;AAeOc,gBAAAA,SAfP,GAemB,EAfnB;AAgBOC,gBAAAA,WAhBP,GAgB+B,EAhB/B;AAkBKN,gBAAAA,cAlBL,GAkBsB,CAlBtB;AAmBKC,gBAAAA,YAnBL,GAmBoB,CAnBpB;AAAA,uDAqB2BC,QArB3B;;AAAA;AAqBC,sEAAoC;AAAzBK,oBAAAA,WAAyB;AAC7BC,oBAAAA,WAD6B,GAElC,EAAC5C,OAAD,aAACA,OAAD,eAACA,OAAO,CAAE6C,kBAAV,KAAgC,KAAKD,WAAL,CAAiBD,WAAjB,CAFE;;AAGnC,wBAAIA,WAAW,CAACG,UAAZ,CAAuB,cAAvB,KAA0C,CAACF,WAA/C,EAA4D;AAC3DH,sBAAAA,SAAS,CAACM,IAAV,CAAe,KAAKC,WAAL,CAAiBL,WAAjB,CAAf;AACAP,sBAAAA,cAAc;AACd,qBAHD,MAGO;AACNC,sBAAAA,YAAY;AACZ;AACD;AA9BF;AAAA;AAAA;AAAA;AAAA;;AAAA,sBAgCKD,cAAc,GAAG,CAhCtB;AAAA;AAAA;AAAA;;AAAA,wCAiC+BxC,UAAU,CAACqD,mBAAX,CAC5BR,SAD4B,EAE5BzC,OAF4B,CAjC/B,EAiCUkD,UAjCV,yBAiCUA,UAjCV,EAiCsBf,IAjCtB,yBAiCsBA,IAjCtB;AAAA;AAAA,uBAsCQ,KAAKD,OAAL,CAAagB,UAAb,EAAyB;AAC9Bf,kBAAAA,IAAI,EAAJA;AAD8B,iBAAzB,CAtCR;;AAAA;AAAA;AAAA;;AAAA;AAAA,oBA0CGxB,2BAASwC,YAAT,CAAsB3B,iBAASC,IAAT,CAAc,KAAKC,GAAnB,EAAwB,cAAxB,CAAtB,CA1CH;AAAA;AAAA;AAAA;;AAAA;AAAA,uBA4CQ,KAAKQ,OAAL,CAAa,MAAb,EAAqB;AAAEC,kBAAAA,IAAI,EAAE,CAAC,SAAD;AAAR,iBAArB,CA5CR;;AAAA;AA+CCH,gBAAAA,cAAc;AAEd,qBAAKvB,UAAL,GAAkBC,SAAlB;AAjDD,iDAmDQ;AAAE0B,kBAAAA,cAAc,EAAEA,cAAc,GAAGM,WAAW,CAACU,MAA/C;AAAuDf,kBAAAA,YAAY,EAAZA;AAAvD,iBAnDR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAyEA,0BAAwB;AACvB,UAAMgB,KAAK,GAAG,CAAC,mBAAD,EAAsB,WAAtB,CAAd;;AACA,gCAAmBA,KAAnB,4BAA0B;AAArB,YAAM/B,IAAI,aAAV;;AACJ,YAAMgC,IAAI,GAAG9B,iBAASC,IAAT,CAAc,KAAKC,GAAnB,EAAwBJ,IAAxB,CAAb;;AACA,YAAIX,2BAASC,aAAT,CAAuB0C,IAAvB,CAAJ,EAAkC;AACjC3C,qCAAS4C,UAAT,CAAoBD,IAApB;AACA;AACD;AACD;;;;qGAED,kBAAuB3B,GAAvB;AAAA;AAAA;AAAA;AAAA;AAAA;AACOW,gBAAAA,QADP,GACkBC,KAAK,CAACC,OAAN,CAAcb,GAAd,IAAqBA,GAArB,GAA2B,CAACA,GAAD,CAD7C;AAEOQ,gBAAAA,IAFP,IAEyB,WAFzB,6CAEyCG,QAFzC;AAAA;AAAA,uBAGO,KAAKJ,OAAL,CAAa,KAAb,EAAoB;AACzBC,kBAAAA,IAAI,EAAJA;AADyB,iBAApB,CAHP;;AAAA;AAOC,qBAAK1B,UAAL,GAAkBC,SAAlB;AAPD;AAAA,uBASO,KAAK8C,OAAL,EATP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAYA,qBAAmBC,IAAnB,EAAyC;AACxC,aAAOA,IAAI,CAACC,OAAL,CAAa,SAAb,EAAwB,EAAxB,CAAP;AACA;;;WAED,0BAAwBC,GAAxB,EAAiD;AAChD,UAAQF,IAAR,GAA0BE,GAA1B,CAAQF,IAAR;AAAA,UAAcG,OAAd,GAA0BD,GAA1B,CAAcC,OAAd;;AACA,UAAI,CAACA,OAAL,EAAc;AACb,eAAOH,IAAP;AACA;;AAED,uBAAUA,IAAV,cAAkBG,OAAlB;AACA;;;WApDD,6BACCnB,SADD,EAECzC,OAFD,EAGE;AACD,UAAMmC,IAAW,GAAG,CACnB,2BAAU,gBADS,EAEnB,2BAAUxB,2BAASkD,mBAAT,EAFS,EAGnB,KAHmB,6CAIhBpB,SAJgB,GAKlBqB,MALkB,CAKX,UAACC,CAAD;AAAA,eAAO,CAAC,CAACA,CAAT;AAAA,OALW,CAApB;;AAOA,UAAI/D,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAEgE,KAAb,EAAoB;AACnB7B,QAAAA,IAAI,CAACY,IAAL,CAAU,IAAV;AACA;;AAED,UAAMG,UAAU,GAAG,MAAnB;AACA,aAAO;AAAEA,QAAAA,UAAU,EAAVA,UAAF;AAAcf,QAAAA,IAAI,EAAJA;AAAd,OAAP;AACA;;;EAvIsC8B,2B","sourcesContent":["import pathUtil from 'path'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport fs from 'fs-extra'\nimport { set, get } from 'lodash'\nimport SpruceError from '../errors/SpruceError'\nimport { NpmPackage } from '../types/cli.types'\nimport isCi from '../utilities/isCi'\nimport CommandService from './CommandService'\n\nexport interface AddOptions {\n\tisDev?: boolean\n\tshouldForceInstall?: boolean\n\tshouldCleanupLockFiles?: boolean\n}\n\nexport default class PkgService extends CommandService {\n\tprivate _parsedPkg?: Record<string, any>\n\n\tpublic get(path: string | string[]) {\n\t\tconst contents = this.readPackage()\n\t\treturn get(contents, path)\n\t}\n\n\tpublic set(options: {\n\t\tpath: string | string[]\n\t\tvalue: string | Record<string, any> | undefined\n\t}) {\n\t\tconst { path, value } = options\n\t\tconst contents = this.readPackage()\n\t\tconst updated = set(contents, path, value)\n\t\tconst destination = this.buildPath()\n\n\t\tfs.outputFileSync(destination, JSON.stringify(updated, null, 2))\n\t\tthis._parsedPkg = undefined\n\t}\n\n\tpublic doesExist() {\n\t\treturn diskUtil.doesFileExist(this.buildPath())\n\t}\n\n\tpublic unset(path: string | string[]) {\n\t\tthis.set({ path, value: undefined })\n\t}\n\n\tpublic readPackage(): Record<string, any | undefined> {\n\t\tif (this._parsedPkg) {\n\t\t\treturn this._parsedPkg\n\t\t}\n\t\tconst packagePath = this.buildPath()\n\n\t\ttry {\n\t\t\tconst contents = fs.readFileSync(packagePath).toString()\n\t\t\tconst parsed = JSON.parse(contents)\n\t\t\tthis._parsedPkg = parsed\n\n\t\t\treturn parsed\n\t\t} catch (err: any) {\n\t\t\tthrow new SpruceError({\n\t\t\t\tcode: 'FAILED_TO_IMPORT',\n\t\t\t\tfile: packagePath,\n\t\t\t\toriginalError: err,\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate buildPath() {\n\t\treturn pathUtil.join(this.cwd, 'package.json')\n\t}\n\n\tpublic isInstalled(pkg: string) {\n\t\ttry {\n\t\t\tconst contents = this.readPackage()\n\n\t\t\treturn !!contents.dependencies?.[pkg] || !!contents.devDependencies?.[pkg]\n\t\t} catch (e) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tpublic async install(pkg?: string[] | string, options?: AddOptions) {\n\t\tconst shouldCleanupLockFiles = options?.shouldCleanupLockFiles !== false\n\t\tconst deleteLockFile = shouldCleanupLockFiles\n\t\t\t? this.deleteLockFile.bind(this)\n\t\t\t: () => {}\n\n\t\tif (!pkg) {\n\t\t\tawait this.execute('yarn', { args: ['install'] })\n\t\t\tdeleteLockFile()\n\t\t\treturn { totalInstalled: -1, totalSkipped: -1 }\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst toInstall = []\n\t\tconst labsModules: string[] = []\n\n\t\tlet totalInstalled = 0\n\t\tlet totalSkipped = 0\n\n\t\tfor (const thisPackage of packages) {\n\t\t\tconst isInstalled =\n\t\t\t\t!options?.shouldForceInstall && this.isInstalled(thisPackage)\n\t\t\tif (thisPackage.startsWith('@sprucelabs/') || !isInstalled) {\n\t\t\t\ttoInstall.push(this.stripLatest(thisPackage))\n\t\t\t\ttotalInstalled++\n\t\t\t} else {\n\t\t\t\ttotalSkipped++\n\t\t\t}\n\t\t}\n\n\t\tif (totalInstalled > 0) {\n\t\t\tconst { executable, args } = PkgService.buildCommandAndArgs(\n\t\t\t\ttoInstall,\n\t\t\t\toptions\n\t\t\t)\n\n\t\t\tawait this.execute(executable, {\n\t\t\t\targs,\n\t\t\t})\n\t\t} else if (\n\t\t\t!diskUtil.doesDirExist(pathUtil.join(this.cwd, 'node_modules'))\n\t\t) {\n\t\t\tawait this.execute('yarn', { args: ['install'] })\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tthis._parsedPkg = undefined\n\n\t\treturn { totalInstalled: totalInstalled + labsModules.length, totalSkipped }\n\t}\n\n\tpublic static buildCommandAndArgs(\n\t\ttoInstall: string[],\n\t\toptions: AddOptions | undefined\n\t) {\n\t\tconst args: any[] = [\n\t\t\tisCi() && '--cache-folder',\n\t\t\tisCi() && diskUtil.createRandomTempDir(),\n\t\t\t'add',\n\t\t\t...toInstall,\n\t\t].filter((a) => !!a)\n\n\t\tif (options?.isDev) {\n\t\t\targs.push('-D')\n\t\t}\n\n\t\tconst executable = 'yarn'\n\t\treturn { executable, args }\n\t}\n\n\tpublic deleteLockFile() {\n\t\tconst files = ['package-lock.json', 'yarn.lock']\n\t\tfor (const file of files) {\n\t\t\tconst lock = pathUtil.join(this.cwd, file)\n\t\t\tif (diskUtil.doesFileExist(lock)) {\n\t\t\t\tdiskUtil.deleteFile(lock)\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async uninstall(pkg: string[] | string) {\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst args: string[] = ['uninstall', ...packages]\n\t\tawait this.execute('npm', {\n\t\t\targs,\n\t\t})\n\n\t\tthis._parsedPkg = undefined\n\n\t\tawait this.install()\n\t}\n\n\tpublic stripLatest(name: string): string {\n\t\treturn name.replace('@latest', '')\n\t}\n\n\tpublic buildPackageName(dep: NpmPackage): string {\n\t\tconst { name, version } = dep\n\t\tif (!version) {\n\t\t\treturn name\n\t\t}\n\n\t\treturn `${name}@${version}`\n\t}\n}\n"],"file":"PkgService.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/services/PkgService.ts"],"names":["PkgService","cwd","commandService","pkg","options","shouldCleanupLockFiles","deleteLockFile","bind","execute","args","totalInstalled","totalSkipped","packages","Array","isArray","toInstall","labsModules","thisPackage","isInstalled","shouldForceInstall","startsWith","push","stripLatest","buildCommandAndArgs","executable","diskUtil","doesDirExist","pathUtil","join","_parsedPkg","undefined","length","install","createRandomTempDir","filter","a","isDev","BasePkgService"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport {\n\tdiskUtil,\n\tPkgService as BasePkgService,\n} from '@sprucelabs/spruce-skill-utils'\nimport isCi from '../utilities/isCi'\nimport CommandService from './CommandService'\n\nexport interface AddOptions {\n\tisDev?: boolean\n\tshouldForceInstall?: boolean\n\tshouldCleanupLockFiles?: boolean\n}\n\nexport default class PkgService extends BasePkgService {\n\tprivate commandService: CommandService\n\n\tpublic constructor(cwd: string, commandService: CommandService) {\n\t\tsuper(cwd)\n\t\tthis.commandService = commandService\n\t}\n\n\tpublic async install(pkg?: string[] | string, options?: AddOptions) {\n\t\tconst shouldCleanupLockFiles = options?.shouldCleanupLockFiles !== false\n\t\tconst deleteLockFile = shouldCleanupLockFiles\n\t\t\t? this.deleteLockFile.bind(this)\n\t\t\t: () => {}\n\n\t\tif (!pkg) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t\tdeleteLockFile()\n\t\t\treturn { totalInstalled: -1, totalSkipped: -1 }\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst toInstall = []\n\t\tconst labsModules: string[] = []\n\n\t\tlet totalInstalled = 0\n\t\tlet totalSkipped = 0\n\n\t\tfor (const thisPackage of packages) {\n\t\t\tconst isInstalled =\n\t\t\t\t!options?.shouldForceInstall && this.isInstalled(thisPackage)\n\t\t\tif (thisPackage.startsWith('@sprucelabs/') || !isInstalled) {\n\t\t\t\ttoInstall.push(this.stripLatest(thisPackage))\n\t\t\t\ttotalInstalled++\n\t\t\t} else {\n\t\t\t\ttotalSkipped++\n\t\t\t}\n\t\t}\n\n\t\tif (totalInstalled > 0) {\n\t\t\tconst { executable, args } = PkgService.buildCommandAndArgs(\n\t\t\t\ttoInstall,\n\t\t\t\toptions\n\t\t\t)\n\n\t\t\tawait this.commandService.execute(executable, {\n\t\t\t\targs,\n\t\t\t})\n\t\t} else if (\n\t\t\t!diskUtil.doesDirExist(pathUtil.join(this.cwd, 'node_modules'))\n\t\t) {\n\t\t\tawait this.commandService.execute('yarn', { args: ['install'] })\n\t\t}\n\n\t\tdeleteLockFile()\n\n\t\tthis._parsedPkg = undefined\n\n\t\treturn { totalInstalled: totalInstalled + labsModules.length, totalSkipped }\n\t}\n\n\tpublic static buildCommandAndArgs(\n\t\ttoInstall: string[],\n\t\toptions: AddOptions | undefined\n\t) {\n\t\tconst args: any[] = [\n\t\t\tisCi() && '--cache-folder',\n\t\t\tisCi() && diskUtil.createRandomTempDir(),\n\t\t\t'add',\n\t\t\t...toInstall,\n\t\t].filter((a) => !!a)\n\n\t\tif (options?.isDev) {\n\t\t\targs.push('-D')\n\t\t}\n\n\t\tconst executable = 'yarn'\n\t\treturn { executable, args }\n\t}\n\n\tpublic async uninstall(pkg: string[] | string) {\n\t\tconst packages = Array.isArray(pkg) ? pkg : [pkg]\n\t\tconst args: string[] = ['uninstall', ...packages]\n\t\tawait this.commandService.execute('npm', {\n\t\t\targs,\n\t\t})\n\n\t\tthis._parsedPkg = undefined\n\n\t\tawait this.install()\n\t}\n}\n"],"file":"PkgService.js"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { SettingsService, EnvService } from '@sprucelabs/spruce-skill-utils';
|
|
1
|
+
import { SettingsService, EnvService, AuthService } from '@sprucelabs/spruce-skill-utils';
|
|
2
2
|
import EventSettingsService from '../features/event/services/EventSettingsService';
|
|
3
3
|
import RemoteService from '../features/event/services/RemoteService';
|
|
4
4
|
import SchemaService from '../features/schema/services/SchemaService';
|
|
5
5
|
import VsCodeService from '../features/vscode/services/VsCodeService';
|
|
6
|
-
import AuthService from './AuthService';
|
|
7
6
|
import BuildService from './BuildService';
|
|
8
7
|
import CommandService from './CommandService';
|
|
9
8
|
import DependencyService from './DependencyService';
|
|
@@ -21,8 +21,6 @@ var _SchemaService = _interopRequireDefault(require("../features/schema/services
|
|
|
21
21
|
|
|
22
22
|
var _VsCodeService = _interopRequireDefault(require("../features/vscode/services/VsCodeService"));
|
|
23
23
|
|
|
24
|
-
var _AuthService = _interopRequireDefault(require("./AuthService"));
|
|
25
|
-
|
|
26
24
|
var _BuildService = _interopRequireDefault(require("./BuildService"));
|
|
27
25
|
|
|
28
26
|
var _CommandService = _interopRequireDefault(require("./CommandService"));
|
|
@@ -59,10 +57,10 @@ var ServiceFactory = /*#__PURE__*/function () {
|
|
|
59
57
|
|
|
60
58
|
switch (type) {
|
|
61
59
|
case 'auth':
|
|
62
|
-
return
|
|
60
|
+
return _spruceSkillUtils.AuthService.Auth(cwd);
|
|
63
61
|
|
|
64
62
|
case 'pkg':
|
|
65
|
-
return new _PkgService["default"](cwd);
|
|
63
|
+
return new _PkgService["default"](cwd, this.Service(cwd, 'command'));
|
|
66
64
|
|
|
67
65
|
case 'env':
|
|
68
66
|
return new _spruceSkillUtils.EnvService(cwd);
|