pcu 0.2.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/LICENSE +21 -0
- package/README.md +478 -0
- package/bin/pcu.js +15 -0
- package/dist/application/services/CatalogUpdateService.d.ts +190 -0
- package/dist/application/services/CatalogUpdateService.d.ts.map +1 -0
- package/dist/application/services/CatalogUpdateService.js +521 -0
- package/dist/application/services/CatalogUpdateService.js.map +1 -0
- package/dist/application/services/WorkspaceService.d.ts +139 -0
- package/dist/application/services/WorkspaceService.d.ts.map +1 -0
- package/dist/application/services/WorkspaceService.js +340 -0
- package/dist/application/services/WorkspaceService.js.map +1 -0
- package/dist/cli/commands/CheckCommand.d.ts +41 -0
- package/dist/cli/commands/CheckCommand.d.ts.map +1 -0
- package/dist/cli/commands/CheckCommand.js +168 -0
- package/dist/cli/commands/CheckCommand.js.map +1 -0
- package/dist/cli/commands/UpdateCommand.d.ts +69 -0
- package/dist/cli/commands/UpdateCommand.d.ts.map +1 -0
- package/dist/cli/commands/UpdateCommand.js +361 -0
- package/dist/cli/commands/UpdateCommand.js.map +1 -0
- package/dist/cli/formatters/OutputFormatter.d.ts +99 -0
- package/dist/cli/formatters/OutputFormatter.d.ts.map +1 -0
- package/dist/cli/formatters/OutputFormatter.js +551 -0
- package/dist/cli/formatters/OutputFormatter.js.map +1 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +271 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/options/GlobalOptions.d.ts +117 -0
- package/dist/cli/options/GlobalOptions.d.ts.map +1 -0
- package/dist/cli/options/GlobalOptions.js +278 -0
- package/dist/cli/options/GlobalOptions.js.map +1 -0
- package/dist/cli/options/index.d.ts +5 -0
- package/dist/cli/options/index.d.ts.map +1 -0
- package/dist/cli/options/index.js +5 -0
- package/dist/cli/options/index.js.map +1 -0
- package/dist/cli/validators/CommandValidator.d.ts +60 -0
- package/dist/cli/validators/CommandValidator.d.ts.map +1 -0
- package/dist/cli/validators/CommandValidator.js +319 -0
- package/dist/cli/validators/CommandValidator.js.map +1 -0
- package/dist/cli/validators/index.d.ts +5 -0
- package/dist/cli/validators/index.d.ts.map +1 -0
- package/dist/cli/validators/index.js +5 -0
- package/dist/cli/validators/index.js.map +1 -0
- package/dist/common/config/Config.d.ts +142 -0
- package/dist/common/config/Config.d.ts.map +1 -0
- package/dist/common/config/Config.js +355 -0
- package/dist/common/config/Config.js.map +1 -0
- package/dist/common/config/index.d.ts +6 -0
- package/dist/common/config/index.d.ts.map +1 -0
- package/dist/common/config/index.js +6 -0
- package/dist/common/config/index.js.map +1 -0
- package/dist/common/logger/Logger.d.ts +110 -0
- package/dist/common/logger/Logger.d.ts.map +1 -0
- package/dist/common/logger/Logger.js +289 -0
- package/dist/common/logger/Logger.js.map +1 -0
- package/dist/common/logger/index.d.ts +6 -0
- package/dist/common/logger/index.d.ts.map +1 -0
- package/dist/common/logger/index.js +6 -0
- package/dist/common/logger/index.js.map +1 -0
- package/dist/common/types/cli.d.ts +265 -0
- package/dist/common/types/cli.d.ts.map +1 -0
- package/dist/common/types/cli.js +5 -0
- package/dist/common/types/cli.js.map +1 -0
- package/dist/common/types/core.d.ts +270 -0
- package/dist/common/types/core.d.ts.map +1 -0
- package/dist/common/types/core.js +32 -0
- package/dist/common/types/core.js.map +1 -0
- package/dist/common/types/index.d.ts +8 -0
- package/dist/common/types/index.d.ts.map +1 -0
- package/dist/common/types/index.js +8 -0
- package/dist/common/types/index.js.map +1 -0
- package/dist/common/utils/async.d.ts +74 -0
- package/dist/common/utils/async.d.ts.map +1 -0
- package/dist/common/utils/async.js +228 -0
- package/dist/common/utils/async.js.map +1 -0
- package/dist/common/utils/format.d.ts +32 -0
- package/dist/common/utils/format.d.ts.map +1 -0
- package/dist/common/utils/format.js +121 -0
- package/dist/common/utils/format.js.map +1 -0
- package/dist/common/utils/git.d.ts +44 -0
- package/dist/common/utils/git.d.ts.map +1 -0
- package/dist/common/utils/git.js +147 -0
- package/dist/common/utils/git.js.map +1 -0
- package/dist/common/utils/index.d.ts +11 -0
- package/dist/common/utils/index.d.ts.map +1 -0
- package/dist/common/utils/index.js +11 -0
- package/dist/common/utils/index.js.map +1 -0
- package/dist/common/utils/string.d.ts +56 -0
- package/dist/common/utils/string.d.ts.map +1 -0
- package/dist/common/utils/string.js +134 -0
- package/dist/common/utils/string.js.map +1 -0
- package/dist/common/utils/validation.d.ts +88 -0
- package/dist/common/utils/validation.d.ts.map +1 -0
- package/dist/common/utils/validation.js +281 -0
- package/dist/common/utils/validation.js.map +1 -0
- package/dist/domain/entities/Catalog.d.ts +117 -0
- package/dist/domain/entities/Catalog.d.ts.map +1 -0
- package/dist/domain/entities/Catalog.js +240 -0
- package/dist/domain/entities/Catalog.js.map +1 -0
- package/dist/domain/entities/Package.d.ts +143 -0
- package/dist/domain/entities/Package.d.ts.map +1 -0
- package/dist/domain/entities/Package.js +272 -0
- package/dist/domain/entities/Package.js.map +1 -0
- package/dist/domain/entities/Workspace.d.ts +95 -0
- package/dist/domain/entities/Workspace.d.ts.map +1 -0
- package/dist/domain/entities/Workspace.js +173 -0
- package/dist/domain/entities/Workspace.js.map +1 -0
- package/dist/domain/repositories/WorkspaceRepository.d.ts +41 -0
- package/dist/domain/repositories/WorkspaceRepository.d.ts.map +1 -0
- package/dist/domain/repositories/WorkspaceRepository.js +8 -0
- package/dist/domain/repositories/WorkspaceRepository.js.map +1 -0
- package/dist/domain/value-objects/CatalogCollection.d.ts +106 -0
- package/dist/domain/value-objects/CatalogCollection.d.ts.map +1 -0
- package/dist/domain/value-objects/CatalogCollection.js +230 -0
- package/dist/domain/value-objects/CatalogCollection.js.map +1 -0
- package/dist/domain/value-objects/PackageCollection.d.ts +122 -0
- package/dist/domain/value-objects/PackageCollection.d.ts.map +1 -0
- package/dist/domain/value-objects/PackageCollection.js +263 -0
- package/dist/domain/value-objects/PackageCollection.js.map +1 -0
- package/dist/domain/value-objects/Version.d.ts +141 -0
- package/dist/domain/value-objects/Version.d.ts.map +1 -0
- package/dist/domain/value-objects/Version.js +268 -0
- package/dist/domain/value-objects/Version.js.map +1 -0
- package/dist/domain/value-objects/WorkspaceConfig.d.ts +144 -0
- package/dist/domain/value-objects/WorkspaceConfig.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspaceConfig.js +357 -0
- package/dist/domain/value-objects/WorkspaceConfig.js.map +1 -0
- package/dist/domain/value-objects/WorkspaceId.d.ts +51 -0
- package/dist/domain/value-objects/WorkspaceId.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspaceId.js +104 -0
- package/dist/domain/value-objects/WorkspaceId.js.map +1 -0
- package/dist/domain/value-objects/WorkspacePath.d.ts +75 -0
- package/dist/domain/value-objects/WorkspacePath.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspacePath.js +128 -0
- package/dist/domain/value-objects/WorkspacePath.js.map +1 -0
- package/dist/infrastructure/cache/Cache.d.ts +161 -0
- package/dist/infrastructure/cache/Cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/Cache.js +398 -0
- package/dist/infrastructure/cache/Cache.js.map +1 -0
- package/dist/infrastructure/cache/index.d.ts +6 -0
- package/dist/infrastructure/cache/index.d.ts.map +1 -0
- package/dist/infrastructure/cache/index.js +6 -0
- package/dist/infrastructure/cache/index.js.map +1 -0
- package/dist/infrastructure/external-services/NpmRegistryService.d.ts +106 -0
- package/dist/infrastructure/external-services/NpmRegistryService.d.ts.map +1 -0
- package/dist/infrastructure/external-services/NpmRegistryService.js +305 -0
- package/dist/infrastructure/external-services/NpmRegistryService.js.map +1 -0
- package/dist/infrastructure/file-system/FileSystemService.d.ts +120 -0
- package/dist/infrastructure/file-system/FileSystemService.d.ts.map +1 -0
- package/dist/infrastructure/file-system/FileSystemService.js +663 -0
- package/dist/infrastructure/file-system/FileSystemService.js.map +1 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts +57 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.js +179 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.js.map +1 -0
- package/package.json +127 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check Command
|
|
3
|
+
*
|
|
4
|
+
* CLI command to check for outdated catalog dependencies.
|
|
5
|
+
* Provides detailed information about available updates.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
export class CheckCommand {
|
|
9
|
+
catalogUpdateService;
|
|
10
|
+
outputFormatter;
|
|
11
|
+
constructor(catalogUpdateService, outputFormatter) {
|
|
12
|
+
this.catalogUpdateService = catalogUpdateService;
|
|
13
|
+
this.outputFormatter = outputFormatter;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Execute the check command
|
|
17
|
+
*/
|
|
18
|
+
async execute(options = {}) {
|
|
19
|
+
try {
|
|
20
|
+
// Show loading message
|
|
21
|
+
if (options.verbose) {
|
|
22
|
+
console.log(chalk.blue('š Checking for outdated catalog dependencies...'));
|
|
23
|
+
console.log(chalk.gray(`Workspace: ${options.workspace || process.cwd()}`));
|
|
24
|
+
if (options.catalog) {
|
|
25
|
+
console.log(chalk.gray(`Catalog: ${options.catalog}`));
|
|
26
|
+
}
|
|
27
|
+
if (options.target && options.target !== 'latest') {
|
|
28
|
+
console.log(chalk.gray(`Target: ${options.target}`));
|
|
29
|
+
}
|
|
30
|
+
console.log('');
|
|
31
|
+
}
|
|
32
|
+
// Prepare check options
|
|
33
|
+
const checkOptions = {
|
|
34
|
+
workspacePath: options.workspace,
|
|
35
|
+
catalogName: options.catalog,
|
|
36
|
+
target: options.target || 'latest',
|
|
37
|
+
includePrerelease: options.prerelease || false,
|
|
38
|
+
include: options.include,
|
|
39
|
+
exclude: options.exclude,
|
|
40
|
+
};
|
|
41
|
+
// Execute check
|
|
42
|
+
const report = await this.catalogUpdateService.checkOutdatedDependencies(checkOptions);
|
|
43
|
+
// Format and display results
|
|
44
|
+
const formattedOutput = this.outputFormatter.formatOutdatedReport(report);
|
|
45
|
+
console.log(formattedOutput);
|
|
46
|
+
// Show summary
|
|
47
|
+
if (options.verbose || options.format === 'table') {
|
|
48
|
+
this.showSummary(report, options);
|
|
49
|
+
}
|
|
50
|
+
// Always exit with 0 since this is just a check command
|
|
51
|
+
// and finding updates is not an error condition
|
|
52
|
+
process.exit(0);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error(chalk.red('ā Error checking dependencies:'));
|
|
56
|
+
console.error(chalk.red(String(error)));
|
|
57
|
+
if (options.verbose && error instanceof Error) {
|
|
58
|
+
console.error(chalk.gray('Stack trace:'));
|
|
59
|
+
console.error(chalk.gray(error.stack || 'No stack trace available'));
|
|
60
|
+
}
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Show command summary
|
|
66
|
+
*/
|
|
67
|
+
showSummary(report, _options) {
|
|
68
|
+
const lines = [];
|
|
69
|
+
if (!report.hasUpdates) {
|
|
70
|
+
lines.push(chalk.green('š All catalog dependencies are up to date!'));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
lines.push(chalk.yellow(`\nš Summary:`));
|
|
74
|
+
lines.push(` ⢠${report.totalOutdated} outdated dependencies found`);
|
|
75
|
+
lines.push(` ⢠${report.catalogs.length} catalogs checked`);
|
|
76
|
+
const totalPackages = report.catalogs.reduce((sum, cat) => sum + cat.totalPackages, 0);
|
|
77
|
+
lines.push(` ⢠${totalPackages} total catalog entries`);
|
|
78
|
+
// Show breakdown by update type
|
|
79
|
+
const updateTypes = { major: 0, minor: 0, patch: 0 };
|
|
80
|
+
for (const catalog of report.catalogs) {
|
|
81
|
+
for (const dep of catalog.outdatedDependencies) {
|
|
82
|
+
updateTypes[dep.updateType]++;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (updateTypes.major > 0) {
|
|
86
|
+
lines.push(chalk.red(` ⢠${updateTypes.major} major updates`));
|
|
87
|
+
}
|
|
88
|
+
if (updateTypes.minor > 0) {
|
|
89
|
+
lines.push(chalk.yellow(` ⢠${updateTypes.minor} minor updates`));
|
|
90
|
+
}
|
|
91
|
+
if (updateTypes.patch > 0) {
|
|
92
|
+
lines.push(chalk.green(` ⢠${updateTypes.patch} patch updates`));
|
|
93
|
+
}
|
|
94
|
+
// Security updates
|
|
95
|
+
const securityUpdates = report.catalogs.reduce((sum, cat) => {
|
|
96
|
+
return sum + cat.outdatedDependencies.filter((dep) => dep.isSecurityUpdate).length;
|
|
97
|
+
}, 0);
|
|
98
|
+
if (securityUpdates > 0) {
|
|
99
|
+
lines.push(chalk.red(` ⢠${securityUpdates} security updates`));
|
|
100
|
+
}
|
|
101
|
+
lines.push('');
|
|
102
|
+
lines.push(chalk.blue('š” Run with --update to apply updates'));
|
|
103
|
+
if (updateTypes.major > 0) {
|
|
104
|
+
lines.push(chalk.yellow('ā ļø Major updates may contain breaking changes'));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
console.log(lines.join('\n'));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Validate command options
|
|
111
|
+
*/
|
|
112
|
+
static validateOptions(options) {
|
|
113
|
+
const errors = [];
|
|
114
|
+
// Validate format
|
|
115
|
+
if (options.format && !['table', 'json', 'yaml', 'minimal'].includes(options.format)) {
|
|
116
|
+
errors.push('Invalid format. Must be one of: table, json, yaml, minimal');
|
|
117
|
+
}
|
|
118
|
+
// Validate target
|
|
119
|
+
if (options.target &&
|
|
120
|
+
!['latest', 'greatest', 'minor', 'patch', 'newest'].includes(options.target)) {
|
|
121
|
+
errors.push('Invalid target. Must be one of: latest, greatest, minor, patch, newest');
|
|
122
|
+
}
|
|
123
|
+
// Validate include/exclude patterns
|
|
124
|
+
if (options.include && options.include.some((pattern) => !pattern.trim())) {
|
|
125
|
+
errors.push('Include patterns cannot be empty');
|
|
126
|
+
}
|
|
127
|
+
if (options.exclude && options.exclude.some((pattern) => !pattern.trim())) {
|
|
128
|
+
errors.push('Exclude patterns cannot be empty');
|
|
129
|
+
}
|
|
130
|
+
return errors;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get command help text
|
|
134
|
+
*/
|
|
135
|
+
static getHelpText() {
|
|
136
|
+
return `
|
|
137
|
+
Check for outdated catalog dependencies
|
|
138
|
+
|
|
139
|
+
Usage:
|
|
140
|
+
pcu check [options]
|
|
141
|
+
|
|
142
|
+
Options:
|
|
143
|
+
--workspace <path> Workspace directory (default: current directory)
|
|
144
|
+
--catalog <name> Check specific catalog only
|
|
145
|
+
--format <type> Output format: table, json, yaml, minimal (default: table)
|
|
146
|
+
--target <type> Update target: latest, greatest, minor, patch, newest (default: latest)
|
|
147
|
+
--prerelease Include prerelease versions
|
|
148
|
+
--include <pattern> Include packages matching pattern (can be used multiple times)
|
|
149
|
+
--exclude <pattern> Exclude packages matching pattern (can be used multiple times)
|
|
150
|
+
--verbose Show detailed information
|
|
151
|
+
--no-color Disable colored output
|
|
152
|
+
|
|
153
|
+
Examples:
|
|
154
|
+
pcu check # Check all catalogs
|
|
155
|
+
pcu check --catalog react17 # Check specific catalog
|
|
156
|
+
pcu check --target minor # Check for minor updates only
|
|
157
|
+
pcu check --format json # Output as JSON
|
|
158
|
+
pcu check --include "react*" # Include only React packages
|
|
159
|
+
pcu check --exclude "@types/*" # Exclude TypeScript types
|
|
160
|
+
|
|
161
|
+
Exit Codes:
|
|
162
|
+
0 All dependencies are up to date
|
|
163
|
+
1 Updates are available
|
|
164
|
+
2 Error occurred
|
|
165
|
+
`;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=CheckCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/CheckCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Update Command
|
|
3
|
+
*
|
|
4
|
+
* CLI command to update catalog dependencies.
|
|
5
|
+
* Supports interactive mode, dry-run, and various update strategies.
|
|
6
|
+
*/
|
|
7
|
+
import { CatalogUpdateService } from '../../application/services/CatalogUpdateService.js';
|
|
8
|
+
import { OutputFormatter, OutputFormat } from '../formatters/OutputFormatter.js';
|
|
9
|
+
export interface UpdateCommandOptions {
|
|
10
|
+
workspace?: string;
|
|
11
|
+
catalog?: string;
|
|
12
|
+
format?: OutputFormat;
|
|
13
|
+
target?: 'latest' | 'greatest' | 'minor' | 'patch' | 'newest';
|
|
14
|
+
interactive?: boolean;
|
|
15
|
+
dryRun?: boolean;
|
|
16
|
+
force?: boolean;
|
|
17
|
+
prerelease?: boolean;
|
|
18
|
+
include?: string[];
|
|
19
|
+
exclude?: string[];
|
|
20
|
+
createBackup?: boolean;
|
|
21
|
+
verbose?: boolean;
|
|
22
|
+
color?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare class UpdateCommand {
|
|
25
|
+
private readonly catalogUpdateService;
|
|
26
|
+
private readonly outputFormatter;
|
|
27
|
+
constructor(catalogUpdateService: CatalogUpdateService, outputFormatter: OutputFormatter);
|
|
28
|
+
/**
|
|
29
|
+
* Execute the update command
|
|
30
|
+
*/
|
|
31
|
+
execute(options?: UpdateCommandOptions): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Show the update plan
|
|
34
|
+
*/
|
|
35
|
+
private showUpdatePlan;
|
|
36
|
+
/**
|
|
37
|
+
* Show version conflicts
|
|
38
|
+
*/
|
|
39
|
+
private showConflicts;
|
|
40
|
+
/**
|
|
41
|
+
* Interactive update selection
|
|
42
|
+
*/
|
|
43
|
+
private interactiveSelection;
|
|
44
|
+
/**
|
|
45
|
+
* Select individual updates
|
|
46
|
+
*/
|
|
47
|
+
private selectIndividualUpdates;
|
|
48
|
+
/**
|
|
49
|
+
* Confirm updates before execution
|
|
50
|
+
*/
|
|
51
|
+
private confirmUpdates;
|
|
52
|
+
/**
|
|
53
|
+
* Show update summary
|
|
54
|
+
*/
|
|
55
|
+
private showUpdateSummary;
|
|
56
|
+
/**
|
|
57
|
+
* Get color for update type
|
|
58
|
+
*/
|
|
59
|
+
private getUpdateTypeColor;
|
|
60
|
+
/**
|
|
61
|
+
* Validate command options
|
|
62
|
+
*/
|
|
63
|
+
static validateOptions(options: UpdateCommandOptions): string[];
|
|
64
|
+
/**
|
|
65
|
+
* Get command help text
|
|
66
|
+
*/
|
|
67
|
+
static getHelpText(): string;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=UpdateCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/UpdateCommand.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EACL,oBAAoB,EAGrB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEjF,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBADf,oBAAoB,EAAE,oBAAoB,EAC1C,eAAe,EAAE,eAAe;IAGnD;;OAEG;IACG,OAAO,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+GhE;;OAEG;IACH,OAAO,CAAC,cAAc;IA4BtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;YACW,oBAAoB;IAgFlC;;OAEG;YACW,uBAAuB;IAyBrC;;OAEG;YACW,cAAc;IAuB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0BzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,EAAE;IAwB/D;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,MAAM;CAqC7B"}
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Update Command
|
|
3
|
+
*
|
|
4
|
+
* CLI command to update catalog dependencies.
|
|
5
|
+
* Supports interactive mode, dry-run, and various update strategies.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import inquirer from 'inquirer';
|
|
9
|
+
export class UpdateCommand {
|
|
10
|
+
catalogUpdateService;
|
|
11
|
+
outputFormatter;
|
|
12
|
+
constructor(catalogUpdateService, outputFormatter) {
|
|
13
|
+
this.catalogUpdateService = catalogUpdateService;
|
|
14
|
+
this.outputFormatter = outputFormatter;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Execute the update command
|
|
18
|
+
*/
|
|
19
|
+
async execute(options = {}) {
|
|
20
|
+
try {
|
|
21
|
+
// Show loading message
|
|
22
|
+
if (options.verbose) {
|
|
23
|
+
console.log(chalk.blue('š Planning catalog dependency updates...'));
|
|
24
|
+
console.log(chalk.gray(`Workspace: ${options.workspace || process.cwd()}`));
|
|
25
|
+
if (options.catalog) {
|
|
26
|
+
console.log(chalk.gray(`Catalog: ${options.catalog}`));
|
|
27
|
+
}
|
|
28
|
+
if (options.dryRun) {
|
|
29
|
+
console.log(chalk.yellow('š Dry run mode - no files will be modified'));
|
|
30
|
+
}
|
|
31
|
+
console.log('');
|
|
32
|
+
}
|
|
33
|
+
// Prepare update options
|
|
34
|
+
const updateOptions = {
|
|
35
|
+
workspacePath: options.workspace,
|
|
36
|
+
catalogName: options.catalog,
|
|
37
|
+
target: options.target || 'latest',
|
|
38
|
+
interactive: options.interactive || false,
|
|
39
|
+
dryRun: options.dryRun || false,
|
|
40
|
+
force: options.force || false,
|
|
41
|
+
includePrerelease: options.prerelease || false,
|
|
42
|
+
include: options.include,
|
|
43
|
+
exclude: options.exclude,
|
|
44
|
+
createBackup: options.createBackup || false,
|
|
45
|
+
};
|
|
46
|
+
// Plan updates
|
|
47
|
+
const plan = await this.catalogUpdateService.planUpdates(updateOptions);
|
|
48
|
+
// Show plan
|
|
49
|
+
if (options.verbose || options.dryRun) {
|
|
50
|
+
this.showUpdatePlan(plan, options);
|
|
51
|
+
}
|
|
52
|
+
// Check if there are any updates
|
|
53
|
+
if (plan.totalUpdates === 0) {
|
|
54
|
+
console.log(chalk.green('ā
All catalog dependencies are already up to date!'));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// Show conflicts if any
|
|
58
|
+
if (plan.hasConflicts && !options.force) {
|
|
59
|
+
this.showConflicts(plan, options);
|
|
60
|
+
if (!options.interactive) {
|
|
61
|
+
console.log(chalk.red('ā Cannot proceed due to conflicts. Use --force to override or --interactive to resolve.'));
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Interactive selection
|
|
66
|
+
let finalPlan = plan;
|
|
67
|
+
if (options.interactive) {
|
|
68
|
+
finalPlan = await this.interactiveSelection(plan, options);
|
|
69
|
+
}
|
|
70
|
+
// Confirm before proceeding (unless in non-interactive mode)
|
|
71
|
+
if (!options.dryRun && options.interactive) {
|
|
72
|
+
const confirmed = await this.confirmUpdates(finalPlan, options);
|
|
73
|
+
if (!confirmed) {
|
|
74
|
+
console.log(chalk.yellow('ā Update cancelled by user'));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Execute updates
|
|
79
|
+
if (!options.dryRun) {
|
|
80
|
+
if (options.verbose) {
|
|
81
|
+
console.log(chalk.blue('š Executing updates...'));
|
|
82
|
+
}
|
|
83
|
+
const result = await this.catalogUpdateService.executeUpdates(finalPlan, updateOptions);
|
|
84
|
+
// Show results
|
|
85
|
+
const formattedOutput = this.outputFormatter.formatUpdateResult(result);
|
|
86
|
+
console.log(formattedOutput);
|
|
87
|
+
// Show summary
|
|
88
|
+
if (options.verbose || options.format === 'table') {
|
|
89
|
+
this.showUpdateSummary(result, options);
|
|
90
|
+
}
|
|
91
|
+
// Exit with appropriate code
|
|
92
|
+
process.exit(result.success ? 0 : 1);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.log(chalk.blue('š Dry run completed - no changes made'));
|
|
96
|
+
console.log(chalk.gray(`Would update ${finalPlan.totalUpdates} dependencies`));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
console.error(chalk.red('ā Error updating dependencies:'));
|
|
101
|
+
console.error(chalk.red(String(error)));
|
|
102
|
+
if (options.verbose && error instanceof Error) {
|
|
103
|
+
console.error(chalk.gray('Stack trace:'));
|
|
104
|
+
console.error(chalk.gray(error.stack || 'No stack trace available'));
|
|
105
|
+
}
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Show the update plan
|
|
111
|
+
*/
|
|
112
|
+
showUpdatePlan(plan, options) {
|
|
113
|
+
console.log(chalk.bold(`š Update Plan (${plan.totalUpdates} updates):`));
|
|
114
|
+
console.log('');
|
|
115
|
+
const updatesByType = { major: 0, minor: 0, patch: 0 };
|
|
116
|
+
for (const update of plan.updates) {
|
|
117
|
+
const typeColor = this.getUpdateTypeColor(update.updateType);
|
|
118
|
+
console.log(` ${chalk.cyan(update.catalogName)}:${chalk.white(update.packageName)} ${chalk.gray(update.currentVersion)} ā ${typeColor(update.newVersion)} ${chalk.gray(`(${update.updateType})`)}`);
|
|
119
|
+
updatesByType[update.updateType]++;
|
|
120
|
+
if (options.verbose && update.affectedPackages.length > 0) {
|
|
121
|
+
console.log(chalk.gray(` Affects: ${update.affectedPackages.join(', ')}`));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
console.log('');
|
|
125
|
+
console.log(chalk.gray(`Summary: ${updatesByType.major} major, ${updatesByType.minor} minor, ${updatesByType.patch} patch`));
|
|
126
|
+
console.log('');
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Show version conflicts
|
|
130
|
+
*/
|
|
131
|
+
showConflicts(plan, _options) {
|
|
132
|
+
console.log(chalk.red('ā ļø Version Conflicts Detected:'));
|
|
133
|
+
console.log('');
|
|
134
|
+
for (const conflict of plan.conflicts) {
|
|
135
|
+
console.log(chalk.yellow(`${conflict.packageName}:`));
|
|
136
|
+
for (const catalog of conflict.catalogs) {
|
|
137
|
+
console.log(` ${catalog.catalogName}: ${catalog.currentVersion} ā ${catalog.proposedVersion}`);
|
|
138
|
+
}
|
|
139
|
+
console.log(chalk.gray(` Recommendation: ${conflict.recommendation}`));
|
|
140
|
+
console.log('');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Interactive update selection
|
|
145
|
+
*/
|
|
146
|
+
async interactiveSelection(plan, _options) {
|
|
147
|
+
console.log(chalk.blue('šÆ Interactive Update Selection'));
|
|
148
|
+
console.log('');
|
|
149
|
+
const selectedUpdates = [];
|
|
150
|
+
// Group updates by type for better UX
|
|
151
|
+
const updatesByType = {
|
|
152
|
+
major: plan.updates.filter((u) => u.updateType === 'major'),
|
|
153
|
+
minor: plan.updates.filter((u) => u.updateType === 'minor'),
|
|
154
|
+
patch: plan.updates.filter((u) => u.updateType === 'patch'),
|
|
155
|
+
};
|
|
156
|
+
// Ask about patch updates first (safest)
|
|
157
|
+
if (updatesByType.patch.length > 0) {
|
|
158
|
+
const patchChoice = await inquirer.prompt([
|
|
159
|
+
{
|
|
160
|
+
type: 'confirm',
|
|
161
|
+
name: 'applyPatch',
|
|
162
|
+
message: `Apply all ${updatesByType.patch.length} patch updates? (recommended)`,
|
|
163
|
+
default: true,
|
|
164
|
+
},
|
|
165
|
+
]);
|
|
166
|
+
if (patchChoice.applyPatch) {
|
|
167
|
+
selectedUpdates.push(...updatesByType.patch);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
// Let user select individual patch updates
|
|
171
|
+
const patchSelections = await this.selectIndividualUpdates(updatesByType.patch, 'patch');
|
|
172
|
+
selectedUpdates.push(...patchSelections);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Ask about minor updates
|
|
176
|
+
if (updatesByType.minor.length > 0) {
|
|
177
|
+
const minorChoice = await inquirer.prompt([
|
|
178
|
+
{
|
|
179
|
+
type: 'confirm',
|
|
180
|
+
name: 'applyMinor',
|
|
181
|
+
message: `Apply all ${updatesByType.minor.length} minor updates?`,
|
|
182
|
+
default: true,
|
|
183
|
+
},
|
|
184
|
+
]);
|
|
185
|
+
if (minorChoice.applyMinor) {
|
|
186
|
+
selectedUpdates.push(...updatesByType.minor);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
const minorSelections = await this.selectIndividualUpdates(updatesByType.minor, 'minor');
|
|
190
|
+
selectedUpdates.push(...minorSelections);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Ask about major updates (most risky)
|
|
194
|
+
if (updatesByType.major.length > 0) {
|
|
195
|
+
const majorChoice = await inquirer.prompt([
|
|
196
|
+
{
|
|
197
|
+
type: 'confirm',
|
|
198
|
+
name: 'applyMajor',
|
|
199
|
+
message: chalk.yellow(`Apply ${updatesByType.major.length} major updates? (may contain breaking changes)`),
|
|
200
|
+
default: false,
|
|
201
|
+
},
|
|
202
|
+
]);
|
|
203
|
+
if (majorChoice.applyMajor) {
|
|
204
|
+
selectedUpdates.push(...updatesByType.major);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
const majorSelections = await this.selectIndividualUpdates(updatesByType.major, 'major');
|
|
208
|
+
selectedUpdates.push(...majorSelections);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
...plan,
|
|
213
|
+
updates: selectedUpdates,
|
|
214
|
+
totalUpdates: selectedUpdates.length,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Select individual updates
|
|
219
|
+
*/
|
|
220
|
+
async selectIndividualUpdates(updates, type) {
|
|
221
|
+
if (updates.length === 0)
|
|
222
|
+
return [];
|
|
223
|
+
const choices = updates.map((update) => ({
|
|
224
|
+
name: `${update.catalogName}:${update.packageName} ${update.currentVersion} ā ${update.newVersion}`,
|
|
225
|
+
value: update,
|
|
226
|
+
checked: type === 'patch', // Default to checked for patch updates
|
|
227
|
+
}));
|
|
228
|
+
const selection = await inquirer.prompt([
|
|
229
|
+
{
|
|
230
|
+
type: 'checkbox',
|
|
231
|
+
name: 'selectedUpdates',
|
|
232
|
+
message: `Select ${type} updates to apply:`,
|
|
233
|
+
choices,
|
|
234
|
+
pageSize: 10,
|
|
235
|
+
},
|
|
236
|
+
]);
|
|
237
|
+
return selection.selectedUpdates;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Confirm updates before execution
|
|
241
|
+
*/
|
|
242
|
+
async confirmUpdates(plan, options) {
|
|
243
|
+
if (plan.totalUpdates === 0) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
console.log(chalk.blue(`\nš Ready to update ${plan.totalUpdates} dependencies`));
|
|
247
|
+
if (plan.hasConflicts && !options.force) {
|
|
248
|
+
console.log(chalk.yellow('ā ļø Some conflicts will be resolved with --force behavior'));
|
|
249
|
+
}
|
|
250
|
+
const confirmation = await inquirer.prompt([
|
|
251
|
+
{
|
|
252
|
+
type: 'confirm',
|
|
253
|
+
name: 'proceed',
|
|
254
|
+
message: 'Proceed with updates?',
|
|
255
|
+
default: true,
|
|
256
|
+
},
|
|
257
|
+
]);
|
|
258
|
+
return confirmation.proceed;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Show update summary
|
|
262
|
+
*/
|
|
263
|
+
showUpdateSummary(result, _options) {
|
|
264
|
+
const lines = [];
|
|
265
|
+
if (result.success) {
|
|
266
|
+
lines.push(chalk.green('\nš Update completed successfully!'));
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
lines.push(chalk.red('\nā Update completed with errors'));
|
|
270
|
+
}
|
|
271
|
+
lines.push('');
|
|
272
|
+
lines.push(`š Summary:`);
|
|
273
|
+
lines.push(` ⢠${result.totalUpdated} dependencies updated`);
|
|
274
|
+
lines.push(` ⢠${result.totalSkipped} dependencies skipped`);
|
|
275
|
+
lines.push(` ⢠${result.totalErrors} errors occurred`);
|
|
276
|
+
if (result.totalUpdated > 0) {
|
|
277
|
+
lines.push('');
|
|
278
|
+
lines.push(chalk.blue('š” Next steps:'));
|
|
279
|
+
lines.push(' ⢠Test your application thoroughly');
|
|
280
|
+
lines.push(' ⢠Update package-lock.json/pnpm-lock.yaml if needed');
|
|
281
|
+
lines.push(' ⢠Check for any breaking changes in updated packages');
|
|
282
|
+
}
|
|
283
|
+
console.log(lines.join('\n'));
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Get color for update type
|
|
287
|
+
*/
|
|
288
|
+
getUpdateTypeColor(updateType) {
|
|
289
|
+
switch (updateType) {
|
|
290
|
+
case 'major':
|
|
291
|
+
return chalk.red;
|
|
292
|
+
case 'minor':
|
|
293
|
+
return chalk.yellow;
|
|
294
|
+
case 'patch':
|
|
295
|
+
return chalk.green;
|
|
296
|
+
default:
|
|
297
|
+
return chalk.gray;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Validate command options
|
|
302
|
+
*/
|
|
303
|
+
static validateOptions(options) {
|
|
304
|
+
const errors = [];
|
|
305
|
+
// Validate format
|
|
306
|
+
if (options.format && !['table', 'json', 'yaml', 'minimal'].includes(options.format)) {
|
|
307
|
+
errors.push('Invalid format. Must be one of: table, json, yaml, minimal');
|
|
308
|
+
}
|
|
309
|
+
// Validate target
|
|
310
|
+
if (options.target &&
|
|
311
|
+
!['latest', 'greatest', 'minor', 'patch', 'newest'].includes(options.target)) {
|
|
312
|
+
errors.push('Invalid target. Must be one of: latest, greatest, minor, patch, newest');
|
|
313
|
+
}
|
|
314
|
+
// Interactive and dry-run conflict
|
|
315
|
+
if (options.interactive && options.dryRun) {
|
|
316
|
+
errors.push('Cannot use --interactive with --dry-run');
|
|
317
|
+
}
|
|
318
|
+
return errors;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Get command help text
|
|
322
|
+
*/
|
|
323
|
+
static getHelpText() {
|
|
324
|
+
return `
|
|
325
|
+
Update catalog dependencies
|
|
326
|
+
|
|
327
|
+
Usage:
|
|
328
|
+
pcu update [options]
|
|
329
|
+
|
|
330
|
+
Options:
|
|
331
|
+
--workspace <path> Workspace directory (default: current directory)
|
|
332
|
+
--catalog <name> Update specific catalog only
|
|
333
|
+
--format <type> Output format: table, json, yaml, minimal (default: table)
|
|
334
|
+
--target <type> Update target: latest, greatest, minor, patch, newest (default: latest)
|
|
335
|
+
-i, --interactive Interactive mode to choose updates
|
|
336
|
+
-d, --dry-run Preview changes without writing files
|
|
337
|
+
--force Force updates even if conflicts exist
|
|
338
|
+
--prerelease Include prerelease versions
|
|
339
|
+
--include <pattern> Include packages matching pattern (can be used multiple times)
|
|
340
|
+
--exclude <pattern> Exclude packages matching pattern (can be used multiple times)
|
|
341
|
+
--create-backup Create backup files before updating
|
|
342
|
+
--verbose Show detailed information
|
|
343
|
+
--no-color Disable colored output
|
|
344
|
+
|
|
345
|
+
Examples:
|
|
346
|
+
pcu update # Update all catalogs
|
|
347
|
+
pcu update --interactive # Interactive update selection
|
|
348
|
+
pcu update --dry-run # Preview updates without applying
|
|
349
|
+
pcu update --catalog react17 # Update specific catalog
|
|
350
|
+
pcu update --target minor # Update to latest minor versions only
|
|
351
|
+
pcu update --force # Force updates despite conflicts
|
|
352
|
+
pcu update --include "react*" # Update only React packages
|
|
353
|
+
|
|
354
|
+
Exit Codes:
|
|
355
|
+
0 Updates completed successfully
|
|
356
|
+
1 Updates failed or were cancelled
|
|
357
|
+
2 Error occurred
|
|
358
|
+
`;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=UpdateCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/UpdateCommand.ts"],"names":[],"mappings":"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"}
|