@git.zone/cli 2.13.12 → 2.13.15
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/assets/templates/vscode/.vscode/settings.json +1 -1
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/mod_format/formatters/smartconfig.formatter.d.ts +0 -5
- package/dist_ts/mod_format/formatters/smartconfig.formatter.js +16 -59
- package/dist_ts/mod_format/index.js +23 -1
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/mod_format/formatters/smartconfig.formatter.ts +16 -59
- package/ts/mod_format/index.ts +24 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/cli',
|
|
6
|
-
version: '2.13.
|
|
6
|
+
version: '2.13.15',
|
|
7
7
|
description: 'A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxlQUFlO0lBQ3JCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFdBQVcsRUFBRSwrTEFBK0w7Q0FDN00sQ0FBQSJ9
|
|
@@ -2,11 +2,6 @@ import { BaseFormatter } from '../classes.baseformatter.js';
|
|
|
2
2
|
import type { IPlannedChange } from '../interfaces.format.js';
|
|
3
3
|
export declare class SmartconfigFormatter extends BaseFormatter {
|
|
4
4
|
get name(): string;
|
|
5
|
-
/**
|
|
6
|
-
* Find the config file, checking in priority order.
|
|
7
|
-
* Returns the path and whether it needs renaming.
|
|
8
|
-
*/
|
|
9
|
-
private findConfigFile;
|
|
10
5
|
analyze(): Promise<IPlannedChange[]>;
|
|
11
6
|
applyChange(change: IPlannedChange): Promise<void>;
|
|
12
7
|
}
|
|
@@ -53,43 +53,27 @@ const migrateAccessLevel = (smartconfigJson) => {
|
|
|
53
53
|
delete szciConfig.npmAccessLevel;
|
|
54
54
|
return true;
|
|
55
55
|
};
|
|
56
|
-
|
|
57
|
-
const CONFIG_FILE_NAMES = ['.smartconfig.json', 'smartconfig.json', 'npmextra.json'];
|
|
58
|
-
const TARGET_CONFIG_FILE = '.smartconfig.json';
|
|
56
|
+
const CONFIG_FILE = '.smartconfig.json';
|
|
59
57
|
export class SmartconfigFormatter extends BaseFormatter {
|
|
60
58
|
get name() {
|
|
61
59
|
return 'smartconfig';
|
|
62
60
|
}
|
|
63
|
-
/**
|
|
64
|
-
* Find the config file, checking in priority order.
|
|
65
|
-
* Returns the path and whether it needs renaming.
|
|
66
|
-
*/
|
|
67
|
-
async findConfigFile() {
|
|
68
|
-
for (const filename of CONFIG_FILE_NAMES) {
|
|
69
|
-
const exists = await plugins.smartfs.file(filename).exists();
|
|
70
|
-
if (exists) {
|
|
71
|
-
return {
|
|
72
|
-
path: filename,
|
|
73
|
-
needsRename: filename !== TARGET_CONFIG_FILE,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return null;
|
|
78
|
-
}
|
|
79
61
|
async analyze() {
|
|
80
62
|
const changes = [];
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
63
|
+
// File rename (npmextra.json/smartconfig.json → .smartconfig.json)
|
|
64
|
+
// is handled by the orchestrator before analysis.
|
|
65
|
+
// This formatter only operates on .smartconfig.json.
|
|
66
|
+
const exists = await plugins.smartfs.file(CONFIG_FILE).exists();
|
|
67
|
+
if (!exists) {
|
|
68
|
+
logVerbose('.smartconfig.json does not exist, skipping');
|
|
84
69
|
return changes;
|
|
85
70
|
}
|
|
86
|
-
// Read current content
|
|
87
71
|
const currentContent = (await plugins.smartfs
|
|
88
|
-
.file(
|
|
72
|
+
.file(CONFIG_FILE)
|
|
89
73
|
.encoding('utf8')
|
|
90
74
|
.read());
|
|
91
|
-
// Parse and apply migrations
|
|
92
75
|
const smartconfigJson = JSON.parse(currentContent);
|
|
76
|
+
// Apply key migrations
|
|
93
77
|
migrateNamespaceKeys(smartconfigJson);
|
|
94
78
|
migrateAccessLevel(smartconfigJson);
|
|
95
79
|
// Ensure namespaces exist
|
|
@@ -100,27 +84,10 @@ export class SmartconfigFormatter extends BaseFormatter {
|
|
|
100
84
|
smartconfigJson['@ship.zone/szci'] = {};
|
|
101
85
|
}
|
|
102
86
|
const newContent = JSON.stringify(smartconfigJson, null, 2);
|
|
103
|
-
|
|
104
|
-
if (configFile.needsRename) {
|
|
105
|
-
changes.push({
|
|
106
|
-
type: 'create',
|
|
107
|
-
path: TARGET_CONFIG_FILE,
|
|
108
|
-
module: this.name,
|
|
109
|
-
description: `Migrate ${configFile.path} to ${TARGET_CONFIG_FILE}`,
|
|
110
|
-
content: newContent,
|
|
111
|
-
});
|
|
112
|
-
changes.push({
|
|
113
|
-
type: 'delete',
|
|
114
|
-
path: configFile.path,
|
|
115
|
-
module: this.name,
|
|
116
|
-
description: `Remove old ${configFile.path}`,
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
else if (newContent !== currentContent) {
|
|
120
|
-
// File is already .smartconfig.json, just needs content update
|
|
87
|
+
if (newContent !== currentContent) {
|
|
121
88
|
changes.push({
|
|
122
89
|
type: 'modify',
|
|
123
|
-
path:
|
|
90
|
+
path: CONFIG_FILE,
|
|
124
91
|
module: this.name,
|
|
125
92
|
description: 'Migrate and format .smartconfig.json',
|
|
126
93
|
content: newContent,
|
|
@@ -129,15 +96,10 @@ export class SmartconfigFormatter extends BaseFormatter {
|
|
|
129
96
|
return changes;
|
|
130
97
|
}
|
|
131
98
|
async applyChange(change) {
|
|
132
|
-
if (change.type
|
|
133
|
-
await this.deleteFile(change.path);
|
|
134
|
-
logger.log('info', `Removed old config file ${change.path}`);
|
|
99
|
+
if (change.type !== 'modify' || !change.content)
|
|
135
100
|
return;
|
|
136
|
-
}
|
|
137
|
-
if (!change.content)
|
|
138
|
-
return;
|
|
139
|
-
// Parse the content to check for missing required fields
|
|
140
101
|
const smartconfigJson = JSON.parse(change.content);
|
|
102
|
+
// Check for missing required module information
|
|
141
103
|
const expectedRepoInformation = [
|
|
142
104
|
'projectType',
|
|
143
105
|
'module.githost',
|
|
@@ -168,13 +130,8 @@ export class SmartconfigFormatter extends BaseFormatter {
|
|
|
168
130
|
}
|
|
169
131
|
}
|
|
170
132
|
const finalContent = JSON.stringify(smartconfigJson, null, 2);
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
await this.modifyFile(change.path, finalContent);
|
|
176
|
-
}
|
|
177
|
-
logger.log('info', `Updated ${change.path}`);
|
|
133
|
+
await this.modifyFile(change.path, finalContent);
|
|
134
|
+
logger.log('info', 'Updated .smartconfig.json');
|
|
178
135
|
}
|
|
179
136
|
}
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjb25maWcuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3NtYXJ0Y29uZmlnLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxLQUFLLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlEOztHQUVHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLGVBQW9CLEVBQVcsRUFBRTtJQUM3RCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsTUFBTSxVQUFVLEdBQUc7UUFDakIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUU7UUFDOUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtRQUM5QyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFO1FBQ3JELEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUU7UUFDOUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtLQUM5QyxDQUFDO0lBQ0YsS0FBSyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzVDLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUM3QixlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BELENBQUM7aUJBQU0sQ0FBQztn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
|
|
@@ -14,6 +14,26 @@ import { TsconfigFormatter } from './formatters/tsconfig.formatter.js';
|
|
|
14
14
|
import { PrettierFormatter } from './formatters/prettier.formatter.js';
|
|
15
15
|
import { ReadmeFormatter } from './formatters/readme.formatter.js';
|
|
16
16
|
import { CopyFormatter } from './formatters/copy.formatter.js';
|
|
17
|
+
/**
|
|
18
|
+
* Rename npmextra.json or smartconfig.json to .smartconfig.json
|
|
19
|
+
* before any formatter tries to read config.
|
|
20
|
+
*/
|
|
21
|
+
async function migrateConfigFile() {
|
|
22
|
+
const target = '.smartconfig.json';
|
|
23
|
+
const targetExists = await plugins.smartfs.file(target).exists();
|
|
24
|
+
if (targetExists)
|
|
25
|
+
return;
|
|
26
|
+
for (const oldName of ['smartconfig.json', 'npmextra.json']) {
|
|
27
|
+
const exists = await plugins.smartfs.file(oldName).exists();
|
|
28
|
+
if (exists) {
|
|
29
|
+
const content = await plugins.smartfs.file(oldName).encoding('utf8').read();
|
|
30
|
+
await plugins.smartfs.file(`./${target}`).encoding('utf8').write(content);
|
|
31
|
+
await plugins.smartfs.file(oldName).delete();
|
|
32
|
+
logger.log('info', `Migrated ${oldName} to ${target}`);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
17
37
|
// Shared formatter class map used by both run() and runFormatter()
|
|
18
38
|
const formatterMap = {
|
|
19
39
|
cleanup: CleanupFormatter,
|
|
@@ -34,6 +54,8 @@ export let run = async (options = {}) => {
|
|
|
34
54
|
setVerboseMode(true);
|
|
35
55
|
}
|
|
36
56
|
const shouldWrite = options.write ?? (options.dryRun === false);
|
|
57
|
+
// Migrate config file before anything reads it
|
|
58
|
+
await migrateConfigFile();
|
|
37
59
|
const project = await Project.fromCwd({ requireProjectType: false });
|
|
38
60
|
const context = new FormatContext();
|
|
39
61
|
const planner = new FormatPlanner();
|
|
@@ -162,4 +184,4 @@ export const runFormatter = async (formatterName, options = {}) => {
|
|
|
162
184
|
logger.log('success', `Formatter '${formatterName}' completed`);
|
|
163
185
|
}
|
|
164
186
|
};
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfZm9ybWF0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUvRDs7O0dBR0c7QUFDSCxLQUFLLFVBQVUsaUJBQWlCO0lBQzlCLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDO0lBQ25DLE1BQU0s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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@git.zone/cli",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.13.
|
|
4
|
+
"version": "2.13.15",
|
|
5
5
|
"description": "A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.",
|
|
6
6
|
"main": "dist_ts/index.ts",
|
|
7
7
|
"typings": "dist_ts/index.d.ts",
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/cli',
|
|
6
|
-
version: '2.13.
|
|
6
|
+
version: '2.13.15',
|
|
7
7
|
description: 'A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.'
|
|
8
8
|
}
|
|
@@ -61,49 +61,33 @@ const migrateAccessLevel = (smartconfigJson: any): boolean => {
|
|
|
61
61
|
return true;
|
|
62
62
|
};
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
const CONFIG_FILE_NAMES = ['.smartconfig.json', 'smartconfig.json', 'npmextra.json'];
|
|
66
|
-
const TARGET_CONFIG_FILE = '.smartconfig.json';
|
|
64
|
+
const CONFIG_FILE = '.smartconfig.json';
|
|
67
65
|
|
|
68
66
|
export class SmartconfigFormatter extends BaseFormatter {
|
|
69
67
|
get name(): string {
|
|
70
68
|
return 'smartconfig';
|
|
71
69
|
}
|
|
72
70
|
|
|
73
|
-
/**
|
|
74
|
-
* Find the config file, checking in priority order.
|
|
75
|
-
* Returns the path and whether it needs renaming.
|
|
76
|
-
*/
|
|
77
|
-
private async findConfigFile(): Promise<{ path: string; needsRename: boolean } | null> {
|
|
78
|
-
for (const filename of CONFIG_FILE_NAMES) {
|
|
79
|
-
const exists = await plugins.smartfs.file(filename).exists();
|
|
80
|
-
if (exists) {
|
|
81
|
-
return {
|
|
82
|
-
path: filename,
|
|
83
|
-
needsRename: filename !== TARGET_CONFIG_FILE,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
71
|
async analyze(): Promise<IPlannedChange[]> {
|
|
91
72
|
const changes: IPlannedChange[] = [];
|
|
92
73
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
74
|
+
// File rename (npmextra.json/smartconfig.json → .smartconfig.json)
|
|
75
|
+
// is handled by the orchestrator before analysis.
|
|
76
|
+
// This formatter only operates on .smartconfig.json.
|
|
77
|
+
const exists = await plugins.smartfs.file(CONFIG_FILE).exists();
|
|
78
|
+
if (!exists) {
|
|
79
|
+
logVerbose('.smartconfig.json does not exist, skipping');
|
|
96
80
|
return changes;
|
|
97
81
|
}
|
|
98
82
|
|
|
99
|
-
// Read current content
|
|
100
83
|
const currentContent = (await plugins.smartfs
|
|
101
|
-
.file(
|
|
84
|
+
.file(CONFIG_FILE)
|
|
102
85
|
.encoding('utf8')
|
|
103
86
|
.read()) as string;
|
|
104
87
|
|
|
105
|
-
// Parse and apply migrations
|
|
106
88
|
const smartconfigJson = JSON.parse(currentContent);
|
|
89
|
+
|
|
90
|
+
// Apply key migrations
|
|
107
91
|
migrateNamespaceKeys(smartconfigJson);
|
|
108
92
|
migrateAccessLevel(smartconfigJson);
|
|
109
93
|
|
|
@@ -117,26 +101,10 @@ export class SmartconfigFormatter extends BaseFormatter {
|
|
|
117
101
|
|
|
118
102
|
const newContent = JSON.stringify(smartconfigJson, null, 2);
|
|
119
103
|
|
|
120
|
-
|
|
121
|
-
if (configFile.needsRename) {
|
|
122
|
-
changes.push({
|
|
123
|
-
type: 'create',
|
|
124
|
-
path: TARGET_CONFIG_FILE,
|
|
125
|
-
module: this.name,
|
|
126
|
-
description: `Migrate ${configFile.path} to ${TARGET_CONFIG_FILE}`,
|
|
127
|
-
content: newContent,
|
|
128
|
-
});
|
|
129
|
-
changes.push({
|
|
130
|
-
type: 'delete',
|
|
131
|
-
path: configFile.path,
|
|
132
|
-
module: this.name,
|
|
133
|
-
description: `Remove old ${configFile.path}`,
|
|
134
|
-
});
|
|
135
|
-
} else if (newContent !== currentContent) {
|
|
136
|
-
// File is already .smartconfig.json, just needs content update
|
|
104
|
+
if (newContent !== currentContent) {
|
|
137
105
|
changes.push({
|
|
138
106
|
type: 'modify',
|
|
139
|
-
path:
|
|
107
|
+
path: CONFIG_FILE,
|
|
140
108
|
module: this.name,
|
|
141
109
|
description: 'Migrate and format .smartconfig.json',
|
|
142
110
|
content: newContent,
|
|
@@ -147,17 +115,11 @@ export class SmartconfigFormatter extends BaseFormatter {
|
|
|
147
115
|
}
|
|
148
116
|
|
|
149
117
|
async applyChange(change: IPlannedChange): Promise<void> {
|
|
150
|
-
if (change.type
|
|
151
|
-
await this.deleteFile(change.path);
|
|
152
|
-
logger.log('info', `Removed old config file ${change.path}`);
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (!change.content) return;
|
|
118
|
+
if (change.type !== 'modify' || !change.content) return;
|
|
157
119
|
|
|
158
|
-
// Parse the content to check for missing required fields
|
|
159
120
|
const smartconfigJson = JSON.parse(change.content);
|
|
160
121
|
|
|
122
|
+
// Check for missing required module information
|
|
161
123
|
const expectedRepoInformation: string[] = [
|
|
162
124
|
'projectType',
|
|
163
125
|
'module.githost',
|
|
@@ -202,12 +164,7 @@ export class SmartconfigFormatter extends BaseFormatter {
|
|
|
202
164
|
}
|
|
203
165
|
|
|
204
166
|
const finalContent = JSON.stringify(smartconfigJson, null, 2);
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
await this.createFile(change.path, finalContent);
|
|
208
|
-
} else {
|
|
209
|
-
await this.modifyFile(change.path, finalContent);
|
|
210
|
-
}
|
|
211
|
-
logger.log('info', `Updated ${change.path}`);
|
|
167
|
+
await this.modifyFile(change.path, finalContent);
|
|
168
|
+
logger.log('info', 'Updated .smartconfig.json');
|
|
212
169
|
}
|
|
213
170
|
}
|
package/ts/mod_format/index.ts
CHANGED
|
@@ -16,6 +16,27 @@ import { PrettierFormatter } from './formatters/prettier.formatter.js';
|
|
|
16
16
|
import { ReadmeFormatter } from './formatters/readme.formatter.js';
|
|
17
17
|
import { CopyFormatter } from './formatters/copy.formatter.js';
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Rename npmextra.json or smartconfig.json to .smartconfig.json
|
|
21
|
+
* before any formatter tries to read config.
|
|
22
|
+
*/
|
|
23
|
+
async function migrateConfigFile(): Promise<void> {
|
|
24
|
+
const target = '.smartconfig.json';
|
|
25
|
+
const targetExists = await plugins.smartfs.file(target).exists();
|
|
26
|
+
if (targetExists) return;
|
|
27
|
+
|
|
28
|
+
for (const oldName of ['smartconfig.json', 'npmextra.json']) {
|
|
29
|
+
const exists = await plugins.smartfs.file(oldName).exists();
|
|
30
|
+
if (exists) {
|
|
31
|
+
const content = await plugins.smartfs.file(oldName).encoding('utf8').read() as string;
|
|
32
|
+
await plugins.smartfs.file(`./${target}`).encoding('utf8').write(content);
|
|
33
|
+
await plugins.smartfs.file(oldName).delete();
|
|
34
|
+
logger.log('info', `Migrated ${oldName} to ${target}`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
19
40
|
// Shared formatter class map used by both run() and runFormatter()
|
|
20
41
|
const formatterMap: Record<string, new (ctx: FormatContext, proj: Project) => BaseFormatter> = {
|
|
21
42
|
cleanup: CleanupFormatter,
|
|
@@ -53,6 +74,9 @@ export let run = async (
|
|
|
53
74
|
|
|
54
75
|
const shouldWrite = options.write ?? (options.dryRun === false);
|
|
55
76
|
|
|
77
|
+
// Migrate config file before anything reads it
|
|
78
|
+
await migrateConfigFile();
|
|
79
|
+
|
|
56
80
|
const project = await Project.fromCwd({ requireProjectType: false });
|
|
57
81
|
const context = new FormatContext();
|
|
58
82
|
const planner = new FormatPlanner();
|