@hubspot/cli 7.4.10-beta.0 → 7.5.0-beta.1
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/commands/app/secret/add.d.ts +7 -0
- package/commands/app/secret/add.js +64 -0
- package/commands/app/secret/delete.d.ts +8 -0
- package/commands/app/secret/delete.js +87 -0
- package/commands/app/secret/list.d.ts +6 -0
- package/commands/app/secret/list.js +64 -0
- package/commands/app/secret/update.d.ts +7 -0
- package/commands/app/secret/update.js +77 -0
- package/commands/app/secret.d.ts +3 -0
- package/commands/app/secret.js +30 -0
- package/commands/app.js +4 -2
- package/commands/project/cloneApp.js +2 -2
- package/commands/project/dev/unifiedFlow.js +43 -20
- package/commands/project/profile/add.js +30 -11
- package/commands/project/profile/delete.d.ts +6 -0
- package/commands/project/profile/{remove.js → delete.js} +24 -20
- package/commands/project/profile.js +2 -2
- package/lang/en.d.ts +104 -17
- package/lang/en.js +104 -17
- package/lang/en.lyaml +7 -5
- package/lib/accountTypes.js +2 -1
- package/lib/app/migrate_legacy.js +2 -2
- package/lib/projects/localDev/helpers.d.ts +2 -1
- package/lib/projects/localDev/helpers.js +30 -1
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +6 -1
- package/lib/prompts/projectDevTargetAccountPrompt.js +4 -11
- package/lib/prompts/selectAppPrompt.d.ts +2 -0
- package/lib/prompts/selectAppPrompt.js +40 -0
- package/lib/prompts/{selectPublicAppPrompt.d.ts → selectPublicAppForMigrationPrompt.d.ts} +1 -1
- package/lib/prompts/{selectPublicAppPrompt.js → selectPublicAppForMigrationPrompt.js} +8 -8
- package/package.json +2 -2
- package/types/Prompts.d.ts +0 -7
- package/commands/project/profile/remove.d.ts +0 -6
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs, YargsCommandModule } from '../../../types/Yargs';
|
|
2
|
+
type AddAppSecretArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & {
|
|
3
|
+
name?: string;
|
|
4
|
+
app?: number;
|
|
5
|
+
};
|
|
6
|
+
declare const addAppSecretCommand: YargsCommandModule<unknown, AddAppSecretArgs>;
|
|
7
|
+
export default addAppSecretCommand;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const devSecrets_1 = require("@hubspot/local-dev-lib/api/devSecrets");
|
|
4
|
+
const index_1 = require("../../../lib/errorHandlers/index");
|
|
5
|
+
const usageTracking_1 = require("../../../lib/usageTracking");
|
|
6
|
+
const secretPrompt_1 = require("../../../lib/prompts/secretPrompt");
|
|
7
|
+
const selectAppPrompt_1 = require("../../../lib/prompts/selectAppPrompt");
|
|
8
|
+
const en_1 = require("../../../lang/en");
|
|
9
|
+
const exitCodes_1 = require("../../../lib/enums/exitCodes");
|
|
10
|
+
const yargsUtils_1 = require("../../../lib/yargsUtils");
|
|
11
|
+
const logger_1 = require("../../../lib/ui/logger");
|
|
12
|
+
const command = 'add [name]';
|
|
13
|
+
const describe = en_1.commands.app.subcommands.secret.subcommands.add.describe;
|
|
14
|
+
async function handler(args) {
|
|
15
|
+
const { derivedAccountId } = args;
|
|
16
|
+
(0, usageTracking_1.trackCommandUsage)('app-secret-add', {}, derivedAccountId);
|
|
17
|
+
const appSecretApp = await (0, selectAppPrompt_1.selectAppPrompt)(derivedAccountId, args.app);
|
|
18
|
+
if (!appSecretApp) {
|
|
19
|
+
logger_1.uiLogger.log('');
|
|
20
|
+
logger_1.uiLogger.log(en_1.commands.app.subcommands.secret.subcommands.add.errors.noApps);
|
|
21
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
22
|
+
}
|
|
23
|
+
let appSecretName = args.name;
|
|
24
|
+
if (!appSecretName) {
|
|
25
|
+
const { secretName: name } = await (0, secretPrompt_1.secretNamePrompt)();
|
|
26
|
+
appSecretName = name;
|
|
27
|
+
}
|
|
28
|
+
const { secretValue } = await (0, secretPrompt_1.secretValuePrompt)();
|
|
29
|
+
try {
|
|
30
|
+
await (0, devSecrets_1.addAppSecret)(derivedAccountId, appSecretApp.id, appSecretName, secretValue);
|
|
31
|
+
logger_1.uiLogger.log('');
|
|
32
|
+
logger_1.uiLogger.success(en_1.commands.app.subcommands.secret.subcommands.add.success(appSecretApp.name, appSecretName));
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
(0, index_1.logError)(err);
|
|
36
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
37
|
+
}
|
|
38
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
39
|
+
}
|
|
40
|
+
function addAppSecretBuilder(yargs) {
|
|
41
|
+
yargs.positional('name', {
|
|
42
|
+
describe: en_1.commands.app.subcommands.secret.subcommands.add.positionals.name,
|
|
43
|
+
type: 'string',
|
|
44
|
+
});
|
|
45
|
+
yargs.option('app', {
|
|
46
|
+
describe: en_1.commands.app.subcommands.secret.subcommands.add.options.app,
|
|
47
|
+
type: 'number',
|
|
48
|
+
});
|
|
49
|
+
yargs.example('add my-secret --app=1234567890', en_1.commands.app.subcommands.secret.subcommands.add.example);
|
|
50
|
+
return yargs;
|
|
51
|
+
}
|
|
52
|
+
const builder = (0, yargsUtils_1.makeYargsBuilder)(addAppSecretBuilder, command, describe, {
|
|
53
|
+
useGlobalOptions: true,
|
|
54
|
+
useAccountOptions: true,
|
|
55
|
+
useConfigOptions: true,
|
|
56
|
+
useEnvironmentOptions: true,
|
|
57
|
+
});
|
|
58
|
+
const addAppSecretCommand = {
|
|
59
|
+
command,
|
|
60
|
+
describe,
|
|
61
|
+
handler,
|
|
62
|
+
builder,
|
|
63
|
+
};
|
|
64
|
+
exports.default = addAppSecretCommand;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs, YargsCommandModule } from '../../../types/Yargs';
|
|
2
|
+
type DeleteAppSecretArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & {
|
|
3
|
+
name?: string;
|
|
4
|
+
app?: number;
|
|
5
|
+
force?: boolean;
|
|
6
|
+
};
|
|
7
|
+
declare const deleteAppSecretCommand: YargsCommandModule<unknown, DeleteAppSecretArgs>;
|
|
8
|
+
export default deleteAppSecretCommand;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const devSecrets_1 = require("@hubspot/local-dev-lib/api/devSecrets");
|
|
4
|
+
const index_1 = require("../../../lib/errorHandlers/index");
|
|
5
|
+
const usageTracking_1 = require("../../../lib/usageTracking");
|
|
6
|
+
const promptUtils_1 = require("../../../lib/prompts/promptUtils");
|
|
7
|
+
const selectAppPrompt_1 = require("../../../lib/prompts/selectAppPrompt");
|
|
8
|
+
const en_1 = require("../../../lang/en");
|
|
9
|
+
const exitCodes_1 = require("../../../lib/enums/exitCodes");
|
|
10
|
+
const yargsUtils_1 = require("../../../lib/yargsUtils");
|
|
11
|
+
const logger_1 = require("../../../lib/ui/logger");
|
|
12
|
+
const command = 'delete [name]';
|
|
13
|
+
const describe = en_1.commands.app.subcommands.secret.subcommands.delete.describe;
|
|
14
|
+
async function handler(args) {
|
|
15
|
+
const { derivedAccountId, force } = args;
|
|
16
|
+
(0, usageTracking_1.trackCommandUsage)('app-secret-delete', {}, derivedAccountId);
|
|
17
|
+
const appSecretApp = await (0, selectAppPrompt_1.selectAppPrompt)(derivedAccountId, args.app);
|
|
18
|
+
if (!appSecretApp) {
|
|
19
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
20
|
+
}
|
|
21
|
+
let appSecretToDelete = args.name;
|
|
22
|
+
if (!appSecretToDelete) {
|
|
23
|
+
let appSecrets = [];
|
|
24
|
+
try {
|
|
25
|
+
const { data: secrets } = await (0, devSecrets_1.fetchAppSecrets)(derivedAccountId, appSecretApp.id);
|
|
26
|
+
if (secrets.secretKeys.length > 0) {
|
|
27
|
+
appSecrets = secrets.secretKeys.map(secret => secret.secretKey);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
(0, index_1.logError)(err);
|
|
32
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
33
|
+
}
|
|
34
|
+
if (appSecrets.length === 0) {
|
|
35
|
+
logger_1.uiLogger.error(en_1.commands.app.subcommands.secret.subcommands.delete.errors.noSecrets);
|
|
36
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
37
|
+
}
|
|
38
|
+
appSecretToDelete = await (0, promptUtils_1.listPrompt)(en_1.commands.app.subcommands.secret.subcommands.delete.selectSecret, { choices: appSecrets });
|
|
39
|
+
}
|
|
40
|
+
const confirmDelete = force ||
|
|
41
|
+
(await (0, promptUtils_1.confirmPrompt)(en_1.commands.app.subcommands.secret.subcommands.delete.confirmDelete(appSecretApp.name, appSecretToDelete), {
|
|
42
|
+
defaultAnswer: false,
|
|
43
|
+
}));
|
|
44
|
+
if (!confirmDelete) {
|
|
45
|
+
logger_1.uiLogger.log(en_1.commands.app.subcommands.secret.subcommands.delete.deleteCanceled);
|
|
46
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
await (0, devSecrets_1.deleteAppSecret)(derivedAccountId, appSecretApp.id, appSecretToDelete);
|
|
50
|
+
logger_1.uiLogger.log('');
|
|
51
|
+
logger_1.uiLogger.success(en_1.commands.app.subcommands.secret.subcommands.delete.success(appSecretApp.name, appSecretToDelete));
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
(0, index_1.logError)(err);
|
|
55
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
56
|
+
}
|
|
57
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
58
|
+
}
|
|
59
|
+
function deleteAppSecretBuilder(yargs) {
|
|
60
|
+
yargs.positional('name', {
|
|
61
|
+
describe: en_1.commands.app.subcommands.secret.subcommands.delete.positionals.name,
|
|
62
|
+
type: 'string',
|
|
63
|
+
});
|
|
64
|
+
yargs.option('app', {
|
|
65
|
+
describe: en_1.commands.app.subcommands.secret.subcommands.delete.options.app,
|
|
66
|
+
type: 'number',
|
|
67
|
+
});
|
|
68
|
+
yargs.option('force', {
|
|
69
|
+
describe: en_1.commands.app.subcommands.secret.subcommands.delete.options.force,
|
|
70
|
+
type: 'boolean',
|
|
71
|
+
});
|
|
72
|
+
yargs.example('delete my-secret --app=1234567890', en_1.commands.app.subcommands.secret.subcommands.delete.example);
|
|
73
|
+
return yargs;
|
|
74
|
+
}
|
|
75
|
+
const builder = (0, yargsUtils_1.makeYargsBuilder)(deleteAppSecretBuilder, command, describe, {
|
|
76
|
+
useGlobalOptions: true,
|
|
77
|
+
useAccountOptions: true,
|
|
78
|
+
useConfigOptions: true,
|
|
79
|
+
useEnvironmentOptions: true,
|
|
80
|
+
});
|
|
81
|
+
const deleteAppSecretCommand = {
|
|
82
|
+
command,
|
|
83
|
+
describe,
|
|
84
|
+
handler,
|
|
85
|
+
builder,
|
|
86
|
+
};
|
|
87
|
+
exports.default = deleteAppSecretCommand;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs, YargsCommandModule } from '../../../types/Yargs';
|
|
2
|
+
type ListAppSecretArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & {
|
|
3
|
+
app?: number;
|
|
4
|
+
};
|
|
5
|
+
declare const listAppSecretCommand: YargsCommandModule<unknown, ListAppSecretArgs>;
|
|
6
|
+
export default listAppSecretCommand;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const devSecrets_1 = require("@hubspot/local-dev-lib/api/devSecrets");
|
|
4
|
+
const index_1 = require("../../../lib/errorHandlers/index");
|
|
5
|
+
const usageTracking_1 = require("../../../lib/usageTracking");
|
|
6
|
+
const en_1 = require("../../../lang/en");
|
|
7
|
+
const exitCodes_1 = require("../../../lib/enums/exitCodes");
|
|
8
|
+
const yargsUtils_1 = require("../../../lib/yargsUtils");
|
|
9
|
+
const selectAppPrompt_1 = require("../../../lib/prompts/selectAppPrompt");
|
|
10
|
+
const logger_1 = require("../../../lib/ui/logger");
|
|
11
|
+
const command = 'list';
|
|
12
|
+
const describe = en_1.commands.app.subcommands.secret.subcommands.list.describe;
|
|
13
|
+
async function handler(args) {
|
|
14
|
+
const { derivedAccountId } = args;
|
|
15
|
+
(0, usageTracking_1.trackCommandUsage)('app-secret-list', {}, derivedAccountId);
|
|
16
|
+
const appSecretApp = await (0, selectAppPrompt_1.selectAppPrompt)(derivedAccountId, args.app);
|
|
17
|
+
if (!appSecretApp) {
|
|
18
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
19
|
+
}
|
|
20
|
+
let appSecrets = [];
|
|
21
|
+
try {
|
|
22
|
+
const { data: secrets } = await (0, devSecrets_1.fetchAppSecrets)(derivedAccountId, appSecretApp.id);
|
|
23
|
+
if (secrets.secretKeys.length > 0) {
|
|
24
|
+
appSecrets = secrets.secretKeys.map(secret => secret.secretKey);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
(0, index_1.logError)(err);
|
|
29
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
30
|
+
}
|
|
31
|
+
if (appSecrets.length === 0) {
|
|
32
|
+
logger_1.uiLogger.log('');
|
|
33
|
+
logger_1.uiLogger.log(en_1.commands.app.subcommands.secret.subcommands.list.errors.noSecrets);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
logger_1.uiLogger.log('');
|
|
37
|
+
logger_1.uiLogger.log(en_1.commands.app.subcommands.secret.subcommands.list.success(appSecretApp.name));
|
|
38
|
+
appSecrets.forEach(secret => {
|
|
39
|
+
logger_1.uiLogger.log(`- ${secret}`);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
43
|
+
}
|
|
44
|
+
function listAppSecretBuilder(yargs) {
|
|
45
|
+
yargs.option('app', {
|
|
46
|
+
describe: en_1.commands.app.subcommands.secret.subcommands.list.options.app,
|
|
47
|
+
type: 'number',
|
|
48
|
+
});
|
|
49
|
+
yargs.example('list --app=1234567890', en_1.commands.app.subcommands.secret.subcommands.list.example);
|
|
50
|
+
return yargs;
|
|
51
|
+
}
|
|
52
|
+
const builder = (0, yargsUtils_1.makeYargsBuilder)(listAppSecretBuilder, command, describe, {
|
|
53
|
+
useGlobalOptions: true,
|
|
54
|
+
useAccountOptions: true,
|
|
55
|
+
useConfigOptions: true,
|
|
56
|
+
useEnvironmentOptions: true,
|
|
57
|
+
});
|
|
58
|
+
const listAppSecretCommand = {
|
|
59
|
+
command,
|
|
60
|
+
describe,
|
|
61
|
+
handler,
|
|
62
|
+
builder,
|
|
63
|
+
};
|
|
64
|
+
exports.default = listAppSecretCommand;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs, YargsCommandModule } from '../../../types/Yargs';
|
|
2
|
+
type UpdateAppSecretArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & {
|
|
3
|
+
name?: string;
|
|
4
|
+
app?: number;
|
|
5
|
+
};
|
|
6
|
+
declare const updateAppSecretCommand: YargsCommandModule<unknown, UpdateAppSecretArgs>;
|
|
7
|
+
export default updateAppSecretCommand;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const devSecrets_1 = require("@hubspot/local-dev-lib/api/devSecrets");
|
|
4
|
+
const index_1 = require("../../../lib/errorHandlers/index");
|
|
5
|
+
const usageTracking_1 = require("../../../lib/usageTracking");
|
|
6
|
+
const secretPrompt_1 = require("../../../lib/prompts/secretPrompt");
|
|
7
|
+
const selectAppPrompt_1 = require("../../../lib/prompts/selectAppPrompt");
|
|
8
|
+
const promptUtils_1 = require("../../../lib/prompts/promptUtils");
|
|
9
|
+
const en_1 = require("../../../lang/en");
|
|
10
|
+
const exitCodes_1 = require("../../../lib/enums/exitCodes");
|
|
11
|
+
const yargsUtils_1 = require("../../../lib/yargsUtils");
|
|
12
|
+
const logger_1 = require("../../../lib/ui/logger");
|
|
13
|
+
const command = 'update [name]';
|
|
14
|
+
const describe = en_1.commands.app.subcommands.secret.subcommands.update.describe;
|
|
15
|
+
async function handler(args) {
|
|
16
|
+
const { derivedAccountId } = args;
|
|
17
|
+
(0, usageTracking_1.trackCommandUsage)('app-secret-update', {}, derivedAccountId);
|
|
18
|
+
const appSecretApp = await (0, selectAppPrompt_1.selectAppPrompt)(derivedAccountId, args.app);
|
|
19
|
+
if (!appSecretApp) {
|
|
20
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
21
|
+
}
|
|
22
|
+
let appSecretToUpdate = args.name;
|
|
23
|
+
if (!appSecretToUpdate) {
|
|
24
|
+
let appSecrets = [];
|
|
25
|
+
try {
|
|
26
|
+
const { data: secrets } = await (0, devSecrets_1.fetchAppSecrets)(derivedAccountId, appSecretApp.id);
|
|
27
|
+
if (secrets.secretKeys.length > 0) {
|
|
28
|
+
appSecrets = secrets.secretKeys.map(secret => secret.secretKey);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
(0, index_1.logError)(err);
|
|
33
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
34
|
+
}
|
|
35
|
+
if (appSecrets.length === 0) {
|
|
36
|
+
logger_1.uiLogger.error(en_1.commands.app.subcommands.secret.subcommands.update.errors.noSecrets);
|
|
37
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
38
|
+
}
|
|
39
|
+
appSecretToUpdate = await (0, promptUtils_1.listPrompt)(en_1.commands.app.subcommands.secret.subcommands.update.selectSecret, { choices: appSecrets });
|
|
40
|
+
}
|
|
41
|
+
const { secretValue } = await (0, secretPrompt_1.secretValuePrompt)();
|
|
42
|
+
try {
|
|
43
|
+
await (0, devSecrets_1.updateAppSecret)(derivedAccountId, appSecretApp.id, appSecretToUpdate, secretValue);
|
|
44
|
+
logger_1.uiLogger.log('');
|
|
45
|
+
logger_1.uiLogger.success(en_1.commands.app.subcommands.secret.subcommands.update.success(appSecretApp.name, appSecretToUpdate));
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
(0, index_1.logError)(err);
|
|
49
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
50
|
+
}
|
|
51
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
52
|
+
}
|
|
53
|
+
function updateAppSecretBuilder(yargs) {
|
|
54
|
+
yargs.positional('name', {
|
|
55
|
+
describe: en_1.commands.app.subcommands.secret.subcommands.update.positionals.name,
|
|
56
|
+
type: 'string',
|
|
57
|
+
});
|
|
58
|
+
yargs.option('app', {
|
|
59
|
+
describe: en_1.commands.app.subcommands.secret.subcommands.update.options.app,
|
|
60
|
+
type: 'number',
|
|
61
|
+
});
|
|
62
|
+
yargs.example('update my-secret --app=1234567890', en_1.commands.app.subcommands.secret.subcommands.update.example);
|
|
63
|
+
return yargs;
|
|
64
|
+
}
|
|
65
|
+
const builder = (0, yargsUtils_1.makeYargsBuilder)(updateAppSecretBuilder, command, describe, {
|
|
66
|
+
useGlobalOptions: true,
|
|
67
|
+
useAccountOptions: true,
|
|
68
|
+
useConfigOptions: true,
|
|
69
|
+
useEnvironmentOptions: true,
|
|
70
|
+
});
|
|
71
|
+
const updateAppSecretCommand = {
|
|
72
|
+
command,
|
|
73
|
+
describe,
|
|
74
|
+
handler,
|
|
75
|
+
builder,
|
|
76
|
+
};
|
|
77
|
+
exports.default = updateAppSecretCommand;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const en_1 = require("../../lang/en");
|
|
7
|
+
const yargsUtils_1 = require("../../lib/yargsUtils");
|
|
8
|
+
const add_1 = __importDefault(require("./secret/add"));
|
|
9
|
+
const delete_1 = __importDefault(require("./secret/delete"));
|
|
10
|
+
const list_1 = __importDefault(require("./secret/list"));
|
|
11
|
+
const update_1 = __importDefault(require("./secret/update"));
|
|
12
|
+
const command = ['secret', 'secrets'];
|
|
13
|
+
const describe = undefined; // commands.app.subcommands.secret.describe;
|
|
14
|
+
function appSecretBuilder(yargs) {
|
|
15
|
+
yargs
|
|
16
|
+
.command(add_1.default)
|
|
17
|
+
.command(delete_1.default)
|
|
18
|
+
.command(list_1.default)
|
|
19
|
+
.command(update_1.default)
|
|
20
|
+
.demandCommand(1, '');
|
|
21
|
+
return yargs;
|
|
22
|
+
}
|
|
23
|
+
const builder = (0, yargsUtils_1.makeYargsBuilder)(appSecretBuilder, command, en_1.commands.app.subcommands.secret.describe);
|
|
24
|
+
const appSecretCommand = {
|
|
25
|
+
command,
|
|
26
|
+
describe,
|
|
27
|
+
builder,
|
|
28
|
+
handler: () => { },
|
|
29
|
+
};
|
|
30
|
+
exports.default = appSecretCommand;
|
package/commands/app.js
CHANGED
|
@@ -3,13 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const yargsUtils_1 = require("../lib/yargsUtils");
|
|
7
6
|
const migrate_1 = __importDefault(require("./app/migrate"));
|
|
7
|
+
const secret_1 = __importDefault(require("./app/secret"));
|
|
8
|
+
const yargsUtils_1 = require("../lib/yargsUtils");
|
|
8
9
|
const command = ['app', 'apps'];
|
|
9
10
|
// Keep the command hidden for now
|
|
10
11
|
const describe = undefined;
|
|
11
12
|
function appBuilder(yargs) {
|
|
12
|
-
|
|
13
|
+
yargs.command(migrate_1.default).command(secret_1.default).demandCommand(1, '');
|
|
14
|
+
return yargs;
|
|
13
15
|
}
|
|
14
16
|
const builder = (0, yargsUtils_1.makeYargsBuilder)(appBuilder, command, describe);
|
|
15
17
|
const appCommand = {
|
|
@@ -7,7 +7,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const usageTracking_1 = require("../../lib/usageTracking");
|
|
9
9
|
const lang_1 = require("../../lib/lang");
|
|
10
|
-
const
|
|
10
|
+
const selectPublicAppForMigrationPrompt_1 = require("../../lib/prompts/selectPublicAppForMigrationPrompt");
|
|
11
11
|
const createProjectPrompt_1 = require("../../lib/prompts/createProjectPrompt");
|
|
12
12
|
const polling_1 = require("../../lib/polling");
|
|
13
13
|
const errorHandlers_1 = require("../../lib/errorHandlers");
|
|
@@ -46,7 +46,7 @@ async function handler(args) {
|
|
|
46
46
|
try {
|
|
47
47
|
appId = args.appId;
|
|
48
48
|
if (!appId) {
|
|
49
|
-
const appIdResponse = await (0,
|
|
49
|
+
const appIdResponse = await (0, selectPublicAppForMigrationPrompt_1.selectPublicAppForMigrationPrompt)({
|
|
50
50
|
accountId: derivedAccountId,
|
|
51
51
|
accountName,
|
|
52
52
|
isMigratingApp: false,
|
|
@@ -8,9 +8,10 @@ const path_1 = __importDefault(require("path"));
|
|
|
8
8
|
const util_1 = __importDefault(require("util"));
|
|
9
9
|
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
10
10
|
const getAccountIdentifier_1 = require("@hubspot/local-dev-lib/config/getAccountIdentifier");
|
|
11
|
+
const config_1 = require("@hubspot/local-dev-lib/constants/config");
|
|
11
12
|
const errors_1 = require("@hubspot/project-parsing-lib/src/lib/errors");
|
|
12
13
|
const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
|
|
13
|
-
const
|
|
14
|
+
const config_2 = require("@hubspot/local-dev-lib/config");
|
|
14
15
|
const environment_1 = require("@hubspot/local-dev-lib/environment");
|
|
15
16
|
const errorHandlers_1 = require("../../../lib/errorHandlers");
|
|
16
17
|
const exitCodes_1 = require("../../../lib/enums/exitCodes");
|
|
@@ -27,7 +28,7 @@ const lang_1 = require("../../../lib/lang");
|
|
|
27
28
|
// import LocalDevWebsocketServer from '../../../lib/projects/localDev/LocalDevWebsocketServer';
|
|
28
29
|
async function unifiedProjectDevFlow(args, accountConfig, projectConfig, projectDir, profileConfig) {
|
|
29
30
|
const targetProjectAccountId = (0, getAccountIdentifier_1.getAccountIdentifier)(accountConfig);
|
|
30
|
-
const env = (0, environment_1.getValidEnv)((0,
|
|
31
|
+
const env = (0, environment_1.getValidEnv)((0, config_2.getEnv)(targetProjectAccountId));
|
|
31
32
|
if (!targetProjectAccountId) {
|
|
32
33
|
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
33
34
|
}
|
|
@@ -60,32 +61,54 @@ async function unifiedProjectDevFlow(args, accountConfig, projectConfig, project
|
|
|
60
61
|
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
61
62
|
}
|
|
62
63
|
// @TODO Validate component types (i.e. previously you could not have both private and public apps)
|
|
63
|
-
const accounts = (0,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
64
|
+
const accounts = (0, config_2.getConfigAccounts)();
|
|
65
|
+
const accountIsCombined = await (0, accountTypes_1.isUnifiedAccount)(accountConfig);
|
|
66
|
+
if (!accountIsCombined && !profileConfig) {
|
|
67
|
+
logger_1.logger.log('');
|
|
68
|
+
logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.dev.errors.accountNotCombined`, {
|
|
69
|
+
accountUseCommand: (0, ui_1.uiCommandReference)('hs account use'),
|
|
70
|
+
}));
|
|
71
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
72
72
|
}
|
|
73
73
|
let targetTestingAccountId = null;
|
|
74
74
|
if (profileConfig) {
|
|
75
75
|
// Bypass the prompt for the testing account if the user has a profile configured
|
|
76
76
|
targetTestingAccountId = profileConfig.accountId;
|
|
77
77
|
}
|
|
78
|
+
else if (args.providedAccountId) {
|
|
79
|
+
// By pass the prompt if the user explicitly provides an --account flag.
|
|
80
|
+
targetTestingAccountId = targetProjectAccountId;
|
|
81
|
+
}
|
|
78
82
|
else {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
logger_1.logger.log('');
|
|
84
|
+
(0, ui_1.uiLine)();
|
|
85
|
+
logger_1.logger.log((0, lang_1.i18n)(`commands.project.subcommands.dev.logs.accountTypeInformation`));
|
|
86
|
+
logger_1.logger.log('');
|
|
87
|
+
logger_1.logger.log((0, lang_1.i18n)(`commands.project.subcommands.dev.logs.learnMoreMessage`, {
|
|
88
|
+
learnMoreLink: (0, ui_1.uiLink)((0, lang_1.i18n)(`commands.project.subcommands.dev.logs.learnMoreLink`), 'https://developers.hubspot.com/docs/getting-started/account-types'),
|
|
89
|
+
}));
|
|
90
|
+
(0, ui_1.uiLine)();
|
|
91
|
+
logger_1.logger.log('');
|
|
92
|
+
const accountType = await (0, helpers_1.selectAccountTypePrompt)(accountConfig);
|
|
93
|
+
if (accountType === config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST) {
|
|
94
|
+
const devAccountPromptResponse = await (0, projectDevTargetAccountPrompt_1.selectDeveloperTestTargetAccountPrompt)(accounts, accountConfig);
|
|
95
|
+
targetTestingAccountId = devAccountPromptResponse.targetAccountId;
|
|
96
|
+
if (!!devAccountPromptResponse.notInConfigAccount) {
|
|
97
|
+
// When the developer test account isn't configured in the CLI config yet
|
|
98
|
+
// Walk the user through adding the account's PAK to the config
|
|
99
|
+
await (0, helpers_1.useExistingDevTestAccount)(env, devAccountPromptResponse.notInConfigAccount);
|
|
100
|
+
}
|
|
101
|
+
else if (devAccountPromptResponse.createNestedAccount) {
|
|
102
|
+
// Create a new developer test account and automatically add it to the CLI config
|
|
103
|
+
targetTestingAccountId = await (0, helpers_1.createDeveloperTestAccountForLocalDev)(targetProjectAccountId, accountConfig, env);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (accountType === config_1.HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX) {
|
|
107
|
+
const sandboxAccountPromptResponse = await (0, projectDevTargetAccountPrompt_1.selectSandboxTargetAccountPrompt)(accounts, accountConfig);
|
|
108
|
+
targetTestingAccountId = sandboxAccountPromptResponse.targetAccountId;
|
|
85
109
|
}
|
|
86
|
-
else
|
|
87
|
-
|
|
88
|
-
targetTestingAccountId = await (0, helpers_1.createDeveloperTestAccountForLocalDev)(targetProjectAccountId, accountConfig, env);
|
|
110
|
+
else {
|
|
111
|
+
targetTestingAccountId = targetProjectAccountId;
|
|
89
112
|
}
|
|
90
113
|
}
|
|
91
114
|
// Check if project exists in HubSpot
|
|
@@ -17,11 +17,11 @@ const yargsUtils_1 = require("../../../lib/yargsUtils");
|
|
|
17
17
|
const en_1 = require("../../../lang/en");
|
|
18
18
|
const promptUtils_1 = require("../../../lib/prompts/promptUtils");
|
|
19
19
|
const validation_1 = require("../../../lib/validation");
|
|
20
|
+
const errorHandlers_1 = require("../../../lib/errorHandlers");
|
|
20
21
|
const command = 'add [name]';
|
|
21
22
|
const describe = (0, ui_1.uiBetaTag)(en_1.commands.project.profile.add.describe, false);
|
|
22
23
|
const verboseDescribe = (0, ui_1.uiBetaTag)(en_1.commands.project.profile.add.verboseDescribe, false);
|
|
23
|
-
async function selectProfileToCopyVariablesFrom(
|
|
24
|
-
const existingProfiles = await (0, project_parsing_lib_1.getAllHsProfiles)(projectSourceDir);
|
|
24
|
+
async function selectProfileToCopyVariablesFrom(existingProfiles) {
|
|
25
25
|
let profileToCopyVariablesFrom;
|
|
26
26
|
if (existingProfiles.length == 1) {
|
|
27
27
|
logger_1.uiLogger.log('');
|
|
@@ -65,7 +65,7 @@ async function handler(args) {
|
|
|
65
65
|
}
|
|
66
66
|
const projectSourceDir = path_1.default.join(projectDir, projectConfig.srcDir);
|
|
67
67
|
let profileName = args.name;
|
|
68
|
-
let
|
|
68
|
+
let targetAccountId = args.targetAccount;
|
|
69
69
|
function checkIfProfileExists(profileName) {
|
|
70
70
|
return (0, validation_1.fileExists)(path_1.default.join(projectSourceDir, (0, project_parsing_lib_1.getHsProfileFilename)(profileName)));
|
|
71
71
|
}
|
|
@@ -106,18 +106,18 @@ async function handler(args) {
|
|
|
106
106
|
});
|
|
107
107
|
profileName = promptResponse.name;
|
|
108
108
|
}
|
|
109
|
-
if (
|
|
110
|
-
const accountId = (0, config_1.getAccountId)(
|
|
109
|
+
if (targetAccountId) {
|
|
110
|
+
const accountId = (0, config_1.getAccountId)(targetAccountId);
|
|
111
111
|
if (accountId) {
|
|
112
|
-
|
|
112
|
+
targetAccountId = accountId;
|
|
113
113
|
}
|
|
114
114
|
else {
|
|
115
115
|
logger_1.uiLogger.error(en_1.commands.project.profile.add.errors.invalidTargetAccount);
|
|
116
116
|
logger_1.uiLogger.log('');
|
|
117
|
-
|
|
117
|
+
targetAccountId = undefined;
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
if (!
|
|
120
|
+
if (!targetAccountId) {
|
|
121
121
|
const configuredAccounts = (0, config_1.getConfigAccounts)();
|
|
122
122
|
if (!configuredAccounts || !configuredAccounts.length) {
|
|
123
123
|
logger_1.uiLogger.error(en_1.commands.project.profile.add.errors.noAccountsConfigured);
|
|
@@ -133,14 +133,33 @@ async function handler(args) {
|
|
|
133
133
|
}),
|
|
134
134
|
});
|
|
135
135
|
if (promptResponse) {
|
|
136
|
-
|
|
136
|
+
targetAccountId = promptResponse;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const existingProfiles = await (0, project_parsing_lib_1.getAllHsProfiles)(projectSourceDir);
|
|
140
|
+
let existingTargetAccountIdSelected = false;
|
|
141
|
+
for (const profile of existingProfiles) {
|
|
142
|
+
try {
|
|
143
|
+
const loadedProfile = (0, project_parsing_lib_1.loadHsProfileFile)(projectSourceDir, profile);
|
|
144
|
+
if (loadedProfile?.accountId === targetAccountId) {
|
|
145
|
+
existingTargetAccountIdSelected = true;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
// Skip profiles that can't be loaded
|
|
151
|
+
(0, errorHandlers_1.debugError)(err);
|
|
137
152
|
}
|
|
138
153
|
}
|
|
154
|
+
if (existingTargetAccountIdSelected) {
|
|
155
|
+
logger_1.uiLogger.log('');
|
|
156
|
+
logger_1.uiLogger.warn(en_1.commands.project.profile.add.warnings.duplicateTargetAccount(targetAccountId));
|
|
157
|
+
}
|
|
139
158
|
const profileFileContent = {
|
|
140
|
-
accountId:
|
|
159
|
+
accountId: targetAccountId,
|
|
141
160
|
variables: {},
|
|
142
161
|
};
|
|
143
|
-
const profileToCopyVariablesFrom = await selectProfileToCopyVariablesFrom(
|
|
162
|
+
const profileToCopyVariablesFrom = await selectProfileToCopyVariablesFrom(existingProfiles);
|
|
144
163
|
if (profileToCopyVariablesFrom) {
|
|
145
164
|
try {
|
|
146
165
|
const profileToCopyFileContent = (0, project_parsing_lib_1.loadHsProfileFile)(projectSourceDir, profileToCopyVariablesFrom);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { YargsCommandModule, CommonArgs } from '../../../types/Yargs';
|
|
2
|
+
type ProjectProfileDeleteArgs = CommonArgs & {
|
|
3
|
+
name?: string;
|
|
4
|
+
};
|
|
5
|
+
declare const projectProfileDeleteCommand: YargsCommandModule<unknown, ProjectProfileDeleteArgs>;
|
|
6
|
+
export default projectProfileDeleteCommand;
|