@cloud-copilot/iam-collect 0.1.115 → 0.1.117

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/dist/cjs/cli.js CHANGED
@@ -19,109 +19,93 @@ if (process.env.AWS_DEFAULT_REGION && !process.env.AWS_REGION) {
19
19
  process.env.AWS_REGION = process.env.AWS_DEFAULT_REGION;
20
20
  }
21
21
  const main = async () => {
22
- const version = await (0, packageVersion_js_1.iamCollectVersion)();
23
- const cli = (0, cli_1.parseCliArguments)('iam-collect', {
22
+ const cli = await (0, cli_1.parseCliArguments)('iam-collect', {
24
23
  init: {
25
24
  description: 'Initialize the iam-collect configuration file',
26
- options: {}
25
+ arguments: {}
27
26
  },
28
27
  download: {
29
28
  description: 'Download IAM data and update indexes',
30
- options: {
31
- configFiles: {
32
- type: 'string',
29
+ arguments: {
30
+ configFiles: (0, cli_1.stringArrayArgument)({
33
31
  description: 'The configuration files to use',
34
- values: 'multiple'
35
- },
36
- accounts: {
37
- type: 'string',
32
+ defaultValue: []
33
+ }),
34
+ accounts: (0, cli_1.stringArrayArgument)({
38
35
  description: 'The account IDs to download from',
39
- values: 'multiple'
40
- },
41
- regions: {
42
- type: 'string',
36
+ defaultValue: []
37
+ }),
38
+ regions: (0, cli_1.stringArrayArgument)({
43
39
  description: 'The regions to download from',
44
- values: 'multiple'
45
- },
46
- services: {
47
- type: 'string',
40
+ defaultValue: []
41
+ }),
42
+ services: (0, cli_1.stringArrayArgument)({
48
43
  description: 'The services to download',
49
- values: 'multiple'
50
- },
51
- concurrency: {
52
- type: 'number',
53
- description: 'The maximum number of concurrent downloads to allow. Defaults based on your system CPUs',
54
- values: 'single'
55
- },
56
- noIndex: {
57
- type: 'boolean',
44
+ defaultValue: []
45
+ }),
46
+ concurrency: (0, cli_1.numberArgument)({
47
+ description: 'The maximum number of concurrent downloads to allow. Defaults based on your system CPUs'
48
+ }),
49
+ noIndex: (0, cli_1.booleanArgument)({
58
50
  description: 'Skip refreshing the indexes after downloading',
59
51
  character: 'n'
60
- },
61
- writeOnly: {
62
- type: 'boolean',
52
+ }),
53
+ writeOnly: (0, cli_1.booleanArgument)({
63
54
  description: 'Only write data for discovered resources and ignore any existing data. May improve performance if you know you have no existing data',
64
55
  character: 'w'
65
- }
56
+ })
66
57
  }
67
58
  },
68
59
  index: {
69
60
  description: 'Refresh the IAM data indexes',
70
- options: {
71
- configFiles: {
72
- type: 'string',
61
+ arguments: {
62
+ configFiles: (0, cli_1.stringArrayArgument)({
73
63
  description: 'The configuration files to use',
74
- values: 'multiple'
75
- },
76
- partition: {
77
- type: 'string',
64
+ defaultValue: []
65
+ }),
66
+ partition: (0, cli_1.stringArgument)({
78
67
  description: 'The partition to refresh index data for. Defaults to aws',
79
- values: 'single'
80
- },
81
- accounts: {
82
- type: 'string',
68
+ defaultValue: 'aws'
69
+ }),
70
+ accounts: (0, cli_1.stringArrayArgument)({
83
71
  description: 'The account IDs to refresh index data for',
84
- values: 'multiple'
85
- },
86
- regions: {
87
- type: 'string',
72
+ defaultValue: []
73
+ }),
74
+ regions: (0, cli_1.stringArrayArgument)({
88
75
  description: 'The regions to refresh index data for',
89
- values: 'multiple'
90
- },
91
- services: {
92
- type: 'string',
76
+ defaultValue: []
77
+ }),
78
+ services: (0, cli_1.stringArrayArgument)({
93
79
  description: 'The services to refresh index data for',
94
- values: 'multiple'
95
- },
96
- concurrency: {
97
- type: 'number',
98
- description: 'The maximum number of concurrent indexers to run. Defaults based on your system CPUs',
99
- values: 'single'
100
- }
80
+ defaultValue: []
81
+ }),
82
+ concurrency: (0, cli_1.numberArgument)({
83
+ description: 'The maximum number of concurrent indexers to run. Defaults based on your system CPUs'
84
+ })
101
85
  }
102
86
  },
103
87
  'analyze-logs': {
104
88
  description: 'Analyze iam-collect trace logs and summarize job execution times',
105
- options: {
106
- logFile: {
107
- type: 'string',
108
- description: 'The path to the log file to analyze',
109
- values: 'single'
110
- }
89
+ arguments: {
90
+ logFile: (0, cli_1.stringArgument)({
91
+ description: 'The path to the log file to analyze'
92
+ })
111
93
  }
112
94
  }
113
95
  }, {
114
- log: {
115
- type: 'enum',
96
+ log: (0, cli_1.enumArgument)({
116
97
  description: 'The log level to use',
117
- values: 'single',
118
- validValues: log_js_1.LogLevels
119
- }
98
+ validValues: [...log_js_1.LogLevels] // Convert readonly to mutable array
99
+ })
120
100
  }, {
121
101
  envPrefix: 'IAM_COLLECT',
122
102
  showHelpIfNoArgs: true,
123
103
  requireSubcommand: true,
124
- version: version
104
+ expectOperands: false,
105
+ version: {
106
+ currentVersion: packageVersion_js_1.iamCollectVersion,
107
+ checkForUpdates: '@cloud-copilot/iam-collect'
108
+ }
125
109
  });
126
110
  if (cli.args.log) {
127
111
  (0, log_js_1.setLogLevel)(cli.args.log);
@@ -136,13 +120,13 @@ const main = async () => {
136
120
  }
137
121
  else if (cli.subcommand === 'download') {
138
122
  const defaultConfig = './iam-collect.jsonc';
139
- const configFiles = cli.args.configFiles?.length > 0 ? cli.args.configFiles : [defaultConfig];
123
+ const configFiles = cli.args.configFiles.length > 0 ? cli.args.configFiles : [defaultConfig];
140
124
  const configs = (0, configFile_js_1.loadConfigFiles)(configFiles);
141
125
  await (0, download_js_1.downloadData)(configs, cli.args.accounts, cli.args.regions, cli.args.services, cli.args.concurrency, cli.args.noIndex, cli.args.writeOnly);
142
126
  }
143
127
  else if (cli.subcommand === 'index') {
144
128
  const defaultConfig = './iam-collect.jsonc';
145
- const configFiles = cli.args.configFiles?.length > 0 ? cli.args.configFiles : [defaultConfig];
129
+ const configFiles = cli.args.configFiles.length > 0 ? cli.args.configFiles : [defaultConfig];
146
130
  const configs = (0, configFile_js_1.loadConfigFiles)(configFiles);
147
131
  await (0, index_js_1.index)(configs, cli.args.partition || 'aws', cli.args.accounts, cli.args.regions, cli.args.services, cli.args.concurrency);
148
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;AAEA,4CAO2B;AAC3B,sDAA0D;AAC1D,0DAAwD;AACxD,sEAAyE;AACzE,gEAA+D;AAC/D,kEAA8D;AAC9D,wDAAqD;AACrD,+CAAwC;AAExC,2CAAuD;AAEvD;;;;GAIG;AACH,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;AACzD,CAAC;AAED,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAiB,EACjC,aAAa,EACb;QACE,IAAI,EAAE;YACJ,WAAW,EAAE,+CAA+C;YAC5D,SAAS,EAAE,EAAE;SACd;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,sCAAsC;YACnD,SAAS,EAAE;gBACT,WAAW,EAAE,IAAA,yBAAmB,EAAC;oBAC/B,WAAW,EAAE,gCAAgC;oBAC7C,YAAY,EAAE,EAAE;iBACjB,CAAC;gBACF,QAAQ,EAAE,IAAA,yBAAmB,EAAC;oBAC5B,WAAW,EAAE,kCAAkC;oBAC/C,YAAY,EAAE,EAAE;iBACjB,CAAC;gBACF,OAAO,EAAE,IAAA,yBAAmB,EAAC;oBAC3B,WAAW,EAAE,8BAA8B;oBAC3C,YAAY,EAAE,EAAE;iBACjB,CAAC;gBACF,QAAQ,EAAE,IAAA,yBAAmB,EAAC;oBAC5B,WAAW,EAAE,0BAA0B;oBACvC,YAAY,EAAE,EAAE;iBACjB,CAAC;gBACF,WAAW,EAAE,IAAA,oBAAc,EAAC;oBAC1B,WAAW,EACT,yFAAyF;iBAC5F,CAAC;gBACF,OAAO,EAAE,IAAA,qBAAe,EAAC;oBACvB,WAAW,EAAE,+CAA+C;oBAC5D,SAAS,EAAE,GAAG;iBACf,CAAC;gBACF,SAAS,EAAE,IAAA,qBAAe,EAAC;oBACzB,WAAW,EACT,sIAAsI;oBACxI,SAAS,EAAE,GAAG;iBACf,CAAC;aACH;SACF;QACD,KAAK,EAAE;YACL,WAAW,EAAE,8BAA8B;YAC3C,SAAS,EAAE;gBACT,WAAW,EAAE,IAAA,yBAAmB,EAAC;oBAC/B,WAAW,EAAE,gCAAgC;oBAC7C,YAAY,EAAE,EAAE;iBACjB,CAAC;gBACF,SAAS,EAAE,IAAA,oBAAc,EAAC;oBACxB,WAAW,EAAE,0DAA0D;oBACvE,YAAY,EAAE,KAAK;iBACpB,CAAC;gBACF,QAAQ,EAAE,IAAA,yBAAmB,EAAC;oBAC5B,WAAW,EAAE,2CAA2C;oBACxD,YAAY,EAAE,EAAE;iBACjB,CAAC;gBACF,OAAO,EAAE,IAAA,yBAAmB,EAAC;oBAC3B,WAAW,EAAE,uCAAuC;oBACpD,YAAY,EAAE,EAAE;iBACjB,CAAC;gBACF,QAAQ,EAAE,IAAA,yBAAmB,EAAC;oBAC5B,WAAW,EAAE,wCAAwC;oBACrD,YAAY,EAAE,EAAE;iBACjB,CAAC;gBACF,WAAW,EAAE,IAAA,oBAAc,EAAC;oBAC1B,WAAW,EACT,sFAAsF;iBACzF,CAAC;aACH;SACF;QACD,cAAc,EAAE;YACd,WAAW,EAAE,kEAAkE;YAC/E,SAAS,EAAE;gBACT,OAAO,EAAE,IAAA,oBAAc,EAAC;oBACtB,WAAW,EAAE,qCAAqC;iBACnD,CAAC;aACH;SACF;KACF,EACD;QACE,GAAG,EAAE,IAAA,kBAAY,EAAC;YAChB,WAAW,EAAE,sBAAsB;YACnC,WAAW,EAAE,CAAC,GAAG,kBAAS,CAAC,CAAC,oCAAoC;SACjE,CAAC;KACH,EACD;QACE,SAAS,EAAE,aAAa;QACxB,gBAAgB,EAAE,IAAI;QACtB,iBAAiB,EAAE,IAAI;QACvB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE;YACP,cAAc,EAAE,qCAAiB;YACjC,eAAe,EAAE,4BAA4B;SAC9C;KACF,CACF,CAAA;IAED,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,IAAA,oBAAW,EAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAC9B,IAAI,IAAA,sCAAmB,GAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC9B,MAAM,IAAA,gDAA0B,GAAE,CAAA;IACpC,CAAC;SAAM,IAAI,GAAG,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,aAAa,GAAG,qBAAqB,CAAA;QAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;QAC5F,MAAM,OAAO,GAAG,IAAA,+BAAe,EAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,IAAA,0BAAY,EAChB,OAAO,EACP,GAAG,CAAC,IAAI,CAAC,QAAQ,EACjB,GAAG,CAAC,IAAI,CAAC,OAAO,EAChB,GAAG,CAAC,IAAI,CAAC,QAAQ,EACjB,GAAG,CAAC,IAAI,CAAC,WAAW,EACpB,GAAG,CAAC,IAAI,CAAC,OAAO,EAChB,GAAG,CAAC,IAAI,CAAC,SAAS,CACnB,CAAA;IACH,CAAC;SAAM,IAAI,GAAG,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,qBAAqB,CAAA;QAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;QAC5F,MAAM,OAAO,GAAG,IAAA,+BAAe,EAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,IAAA,gBAAK,EACT,OAAO,EACP,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,EAC3B,GAAG,CAAC,IAAI,CAAC,QAAQ,EACjB,GAAG,CAAC,IAAI,CAAC,OAAO,EAChB,GAAG,CAAC,IAAI,CAAC,QAAwB,EACjC,GAAG,CAAC,IAAI,CAAC,WAAW,CACrB,CAAA;IACH,CAAC;SAAM,IAAI,GAAG,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAA;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAkB,EAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,IAAI,EAAE;KACH,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC;KACD,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;KACd,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA"}
@@ -10,8 +10,8 @@ let packageCache = undefined;
10
10
  */
11
11
  async function getPackageData() {
12
12
  if (!packageCache) {
13
- const packageJson = await (0, readPackageFile_js_1.readPackageFile)(['package.json']);
14
- packageCache = JSON.parse(packageJson);
13
+ const pkgData = await (0, readPackageFile_js_1.getPackageFileReader)().readFile(['package.json']);
14
+ packageCache = JSON.parse(pkgData);
15
15
  }
16
16
  return packageCache;
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../../../src/config/packageVersion.ts"],"names":[],"mappings":";;AAwBA,8CAGC;AA3BD,oEAA6D;AAM7D,IAAI,YAAY,GAA4B,SAAS,CAAA;AAErD;;;;GAIG;AACH,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,MAAM,IAAA,oCAAe,EAAC,CAAC,cAAc,CAAC,CAAC,CAAA;QAC3D,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,YAAa,CAAA;AACtB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB;IACrC,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;IACnC,OAAO,IAAI,CAAC,OAAO,CAAA;AACrB,CAAC"}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../../../src/config/packageVersion.ts"],"names":[],"mappings":";;AAwBA,8CAGC;AA3BD,oEAAkE;AAMlE,IAAI,YAAY,GAA4B,SAAS,CAAA;AAErD;;;;GAIG;AACH,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,MAAM,IAAA,yCAAoB,GAAE,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,CAAA;QACvE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,YAAa,CAAA;AACtB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB;IACrC,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;IACnC,OAAO,IAAI,CAAC,OAAO,CAAA;AACrB,CAAC"}
@@ -1,2 +1,3 @@
1
- export declare function readPackageFile(pathParts: string[]): Promise<string>;
1
+ import { PackageFileReader } from '@cloud-copilot/cli';
2
+ export declare function getPackageFileReader(): PackageFileReader;
2
3
  //# sourceMappingURL=readPackageFile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"readPackageFile.d.ts","sourceRoot":"","sources":["../../../src/utils/readPackageFile.ts"],"names":[],"mappings":"AAOA,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAG1E"}
1
+ {"version":3,"file":"readPackageFile.d.ts","sourceRoot":"","sources":["../../../src/utils/readPackageFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAS/E,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD"}
@@ -1,13 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readPackageFile = readPackageFile;
3
+ exports.getPackageFileReader = getPackageFileReader;
4
4
  const cli_1 = require("@cloud-copilot/cli");
5
5
  let levels = 3;
6
6
  if (__filename.includes('src')) {
7
7
  levels = 2;
8
8
  }
9
- async function readPackageFile(pathParts) {
10
- const packageFile = await (0, cli_1.readRelativeFile)(__filename, levels, pathParts);
11
- return packageFile;
9
+ let fileReader = undefined;
10
+ function getPackageFileReader() {
11
+ if (!fileReader) {
12
+ fileReader = (0, cli_1.createPackageFileReader)(__filename, levels);
13
+ }
14
+ return fileReader;
12
15
  }
13
16
  //# sourceMappingURL=readPackageFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"readPackageFile.js","sourceRoot":"","sources":["../../../src/utils/readPackageFile.ts"],"names":[],"mappings":";;AAOA,0CAGC;AAVD,4CAAqD;AAErD,IAAI,MAAM,GAAG,CAAC,CAAA;AACd,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,MAAM,GAAG,CAAC,CAAA;AACZ,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,SAAmB;IACvD,MAAM,WAAW,GAAG,MAAM,IAAA,sBAAgB,EAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IACzE,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"readPackageFile.js","sourceRoot":"","sources":["../../../src/utils/readPackageFile.ts"],"names":[],"mappings":";;AASA,oDAKC;AAdD,4CAA+E;AAE/E,IAAI,MAAM,GAAG,CAAC,CAAA;AACd,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,MAAM,GAAG,CAAC,CAAA;AACZ,CAAC;AAED,IAAI,UAAU,GAAkC,SAAS,CAAA;AAEzD,SAAgB,oBAAoB;IAClC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,IAAA,6BAAuB,EAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAC1D,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC"}
package/dist/esm/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { parseCliArguments } from '@cloud-copilot/cli';
2
+ import { booleanArgument, enumArgument, numberArgument, parseCliArguments, stringArgument, stringArrayArgument } from '@cloud-copilot/cli';
3
3
  import { conductLogAnalysis } from './analysis/analyze.js';
4
4
  import { loadConfigFiles } from './config/configFile.js';
5
5
  import { createDefaultConfiguration } from './config/createConfigFile.js';
@@ -17,109 +17,93 @@ if (process.env.AWS_DEFAULT_REGION && !process.env.AWS_REGION) {
17
17
  process.env.AWS_REGION = process.env.AWS_DEFAULT_REGION;
18
18
  }
19
19
  const main = async () => {
20
- const version = await iamCollectVersion();
21
- const cli = parseCliArguments('iam-collect', {
20
+ const cli = await parseCliArguments('iam-collect', {
22
21
  init: {
23
22
  description: 'Initialize the iam-collect configuration file',
24
- options: {}
23
+ arguments: {}
25
24
  },
26
25
  download: {
27
26
  description: 'Download IAM data and update indexes',
28
- options: {
29
- configFiles: {
30
- type: 'string',
27
+ arguments: {
28
+ configFiles: stringArrayArgument({
31
29
  description: 'The configuration files to use',
32
- values: 'multiple'
33
- },
34
- accounts: {
35
- type: 'string',
30
+ defaultValue: []
31
+ }),
32
+ accounts: stringArrayArgument({
36
33
  description: 'The account IDs to download from',
37
- values: 'multiple'
38
- },
39
- regions: {
40
- type: 'string',
34
+ defaultValue: []
35
+ }),
36
+ regions: stringArrayArgument({
41
37
  description: 'The regions to download from',
42
- values: 'multiple'
43
- },
44
- services: {
45
- type: 'string',
38
+ defaultValue: []
39
+ }),
40
+ services: stringArrayArgument({
46
41
  description: 'The services to download',
47
- values: 'multiple'
48
- },
49
- concurrency: {
50
- type: 'number',
51
- description: 'The maximum number of concurrent downloads to allow. Defaults based on your system CPUs',
52
- values: 'single'
53
- },
54
- noIndex: {
55
- type: 'boolean',
42
+ defaultValue: []
43
+ }),
44
+ concurrency: numberArgument({
45
+ description: 'The maximum number of concurrent downloads to allow. Defaults based on your system CPUs'
46
+ }),
47
+ noIndex: booleanArgument({
56
48
  description: 'Skip refreshing the indexes after downloading',
57
49
  character: 'n'
58
- },
59
- writeOnly: {
60
- type: 'boolean',
50
+ }),
51
+ writeOnly: booleanArgument({
61
52
  description: 'Only write data for discovered resources and ignore any existing data. May improve performance if you know you have no existing data',
62
53
  character: 'w'
63
- }
54
+ })
64
55
  }
65
56
  },
66
57
  index: {
67
58
  description: 'Refresh the IAM data indexes',
68
- options: {
69
- configFiles: {
70
- type: 'string',
59
+ arguments: {
60
+ configFiles: stringArrayArgument({
71
61
  description: 'The configuration files to use',
72
- values: 'multiple'
73
- },
74
- partition: {
75
- type: 'string',
62
+ defaultValue: []
63
+ }),
64
+ partition: stringArgument({
76
65
  description: 'The partition to refresh index data for. Defaults to aws',
77
- values: 'single'
78
- },
79
- accounts: {
80
- type: 'string',
66
+ defaultValue: 'aws'
67
+ }),
68
+ accounts: stringArrayArgument({
81
69
  description: 'The account IDs to refresh index data for',
82
- values: 'multiple'
83
- },
84
- regions: {
85
- type: 'string',
70
+ defaultValue: []
71
+ }),
72
+ regions: stringArrayArgument({
86
73
  description: 'The regions to refresh index data for',
87
- values: 'multiple'
88
- },
89
- services: {
90
- type: 'string',
74
+ defaultValue: []
75
+ }),
76
+ services: stringArrayArgument({
91
77
  description: 'The services to refresh index data for',
92
- values: 'multiple'
93
- },
94
- concurrency: {
95
- type: 'number',
96
- description: 'The maximum number of concurrent indexers to run. Defaults based on your system CPUs',
97
- values: 'single'
98
- }
78
+ defaultValue: []
79
+ }),
80
+ concurrency: numberArgument({
81
+ description: 'The maximum number of concurrent indexers to run. Defaults based on your system CPUs'
82
+ })
99
83
  }
100
84
  },
101
85
  'analyze-logs': {
102
86
  description: 'Analyze iam-collect trace logs and summarize job execution times',
103
- options: {
104
- logFile: {
105
- type: 'string',
106
- description: 'The path to the log file to analyze',
107
- values: 'single'
108
- }
87
+ arguments: {
88
+ logFile: stringArgument({
89
+ description: 'The path to the log file to analyze'
90
+ })
109
91
  }
110
92
  }
111
93
  }, {
112
- log: {
113
- type: 'enum',
94
+ log: enumArgument({
114
95
  description: 'The log level to use',
115
- values: 'single',
116
- validValues: LogLevels
117
- }
96
+ validValues: [...LogLevels] // Convert readonly to mutable array
97
+ })
118
98
  }, {
119
99
  envPrefix: 'IAM_COLLECT',
120
100
  showHelpIfNoArgs: true,
121
101
  requireSubcommand: true,
122
- version: version
102
+ expectOperands: false,
103
+ version: {
104
+ currentVersion: iamCollectVersion,
105
+ checkForUpdates: '@cloud-copilot/iam-collect'
106
+ }
123
107
  });
124
108
  if (cli.args.log) {
125
109
  setLogLevel(cli.args.log);
@@ -134,13 +118,13 @@ const main = async () => {
134
118
  }
135
119
  else if (cli.subcommand === 'download') {
136
120
  const defaultConfig = './iam-collect.jsonc';
137
- const configFiles = cli.args.configFiles?.length > 0 ? cli.args.configFiles : [defaultConfig];
121
+ const configFiles = cli.args.configFiles.length > 0 ? cli.args.configFiles : [defaultConfig];
138
122
  const configs = loadConfigFiles(configFiles);
139
123
  await downloadData(configs, cli.args.accounts, cli.args.regions, cli.args.services, cli.args.concurrency, cli.args.noIndex, cli.args.writeOnly);
140
124
  }
141
125
  else if (cli.subcommand === 'index') {
142
126
  const defaultConfig = './iam-collect.jsonc';
143
- const configFiles = cli.args.configFiles?.length > 0 ? cli.args.configFiles : [defaultConfig];
127
+ const configFiles = cli.args.configFiles.length > 0 ? cli.args.configFiles : [defaultConfig];
144
128
  const configs = loadConfigFiles(configFiles);
145
129
  await index(configs, cli.args.partition || 'aws', cli.args.accounts, cli.args.regions, cli.args.services, cli.args.concurrency);
146
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { readPackageFile } from '../utils/readPackageFile.js';
1
+ import { getPackageFileReader } from '../utils/readPackageFile.js';
2
2
  let packageCache = undefined;
3
3
  /**
4
4
  * Get the package data version
@@ -7,8 +7,8 @@ let packageCache = undefined;
7
7
  */
8
8
  async function getPackageData() {
9
9
  if (!packageCache) {
10
- const packageJson = await readPackageFile(['package.json']);
11
- packageCache = JSON.parse(packageJson);
10
+ const pkgData = await getPackageFileReader().readFile(['package.json']);
11
+ packageCache = JSON.parse(pkgData);
12
12
  }
13
13
  return packageCache;
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../../../src/config/packageVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAM7D,IAAI,YAAY,GAA4B,SAAS,CAAA;AAErD;;;;GAIG;AACH,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,CAAC,cAAc,CAAC,CAAC,CAAA;QAC3D,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,YAAa,CAAA;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;IACnC,OAAO,IAAI,CAAC,OAAO,CAAA;AACrB,CAAC"}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../../../src/config/packageVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAMlE,IAAI,YAAY,GAA4B,SAAS,CAAA;AAErD;;;;GAIG;AACH,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,CAAA;QACvE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,YAAa,CAAA;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAA;IACnC,OAAO,IAAI,CAAC,OAAO,CAAA;AACrB,CAAC"}
@@ -1,2 +1,3 @@
1
- export declare function readPackageFile(pathParts: string[]): Promise<string>;
1
+ import { type PackageFileReader } from '@cloud-copilot/cli';
2
+ export declare function getPackageFileReader(): PackageFileReader;
2
3
  //# sourceMappingURL=readPackageFileEsm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"readPackageFile.d.ts","sourceRoot":"","sources":["../../../src/utils/readPackageFile.ts"],"names":[],"mappings":"AAOA,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAG1E"}
1
+ {"version":3,"file":"readPackageFile.d.ts","sourceRoot":"","sources":["../../../src/utils/readPackageFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAS/E,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD"}
@@ -1,12 +1,15 @@
1
- import { readRelativeFile } from '@cloud-copilot/cli';
1
+ import { createPackageFileReader } from '@cloud-copilot/cli';
2
2
  let levels = 3;
3
3
  //@ts-ignore
4
4
  if (import.meta.url.includes('src')) {
5
5
  levels = 2;
6
6
  }
7
- export async function readPackageFile(pathParts) {
8
- //@ts-ignore
9
- const packageFile = await readRelativeFile(import.meta.url, levels, pathParts);
10
- return packageFile;
7
+ let fileReader = undefined;
8
+ export function getPackageFileReader() {
9
+ if (!fileReader) {
10
+ //@ts-ignore
11
+ fileReader = createPackageFileReader(import.meta.url, levels);
12
+ }
13
+ return fileReader;
11
14
  }
12
15
  //# sourceMappingURL=readPackageFileEsm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"readPackageFileEsm.js","sourceRoot":"","sources":["../../../src/utils/readPackageFileEsm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,IAAI,MAAM,GAAG,CAAC,CAAA;AACd,YAAY;AACZ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACpC,MAAM,GAAG,CAAC,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAmB;IACvD,YAAY;IACZ,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IAC9E,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"readPackageFileEsm.js","sourceRoot":"","sources":["../../../src/utils/readPackageFileEsm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAA0B,MAAM,oBAAoB,CAAA;AAEpF,IAAI,MAAM,GAAG,CAAC,CAAA;AACd,YAAY;AACZ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACpC,MAAM,GAAG,CAAC,CAAA;AACZ,CAAC;AAED,IAAI,UAAU,GAAkC,SAAS,CAAA;AAEzD,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,YAAY;QACZ,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"readPackageFileEsm.d.ts","sourceRoot":"","sources":["../../../src/utils/readPackageFileEsm.ts"],"names":[],"mappings":"AAQA,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAI1E"}
1
+ {"version":3,"file":"readPackageFileEsm.d.ts","sourceRoot":"","sources":["../../../src/utils/readPackageFileEsm.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAUpF,wBAAgB,oBAAoB,IAAI,iBAAiB,CAMxD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloud-copilot/iam-collect",
3
- "version": "0.1.115",
3
+ "version": "0.1.117",
4
4
  "description": "Collect IAM information from AWS Accounts",
5
5
  "repository": {
6
6
  "type": "git",
@@ -136,7 +136,7 @@
136
136
  "@aws-sdk/client-sts": "^3.772.0",
137
137
  "@aws-sdk/credential-providers": "^3.772.0",
138
138
  "@aws-sdk/types": "^3.734.0",
139
- "@cloud-copilot/cli": "^0.1.20",
139
+ "@cloud-copilot/cli": "^0.2.5",
140
140
  "@cloud-copilot/iam-policy": "^0.1.24",
141
141
  "@cloud-copilot/iam-utils": "^0.1.2",
142
142
  "@cloud-copilot/job": "^0.1.5",