@git.zone/cli 2.13.15 → 2.14.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/dist_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/gitzone.cli.js +46 -35
- package/dist_ts/helpers.climode.d.ts +22 -0
- package/dist_ts/helpers.climode.js +158 -0
- package/dist_ts/helpers.smartconfig.d.ts +11 -0
- package/dist_ts/helpers.smartconfig.js +139 -0
- package/dist_ts/mod_commit/index.d.ts +2 -0
- package/dist_ts/mod_commit/index.js +204 -92
- package/dist_ts/mod_config/index.d.ts +7 -2
- package/dist_ts/mod_config/index.js +390 -176
- package/dist_ts/mod_format/classes.formatcontext.d.ts +11 -2
- package/dist_ts/mod_format/classes.formatcontext.js +14 -4
- package/dist_ts/mod_format/formatters/packagejson.formatter.js +1 -67
- package/dist_ts/mod_format/formatters/smartconfig.formatter.d.ts +2 -2
- package/dist_ts/mod_format/formatters/smartconfig.formatter.js +46 -39
- package/dist_ts/mod_format/index.d.ts +4 -1
- package/dist_ts/mod_format/index.js +221 -75
- package/dist_ts/mod_format/mod.plugins.d.ts +1 -2
- package/dist_ts/mod_format/mod.plugins.js +2 -3
- package/dist_ts/mod_services/index.d.ts +2 -0
- package/dist_ts/mod_services/index.js +366 -168
- package/dist_ts/mod_standard/index.d.ts +3 -1
- package/dist_ts/mod_standard/index.js +159 -59
- package/package.json +1 -1
- package/readme.hints.md +25 -32
- package/readme.md +87 -65
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/gitzone.cli.ts +50 -38
- package/ts/helpers.climode.ts +212 -0
- package/ts/helpers.smartconfig.ts +192 -0
- package/ts/mod_commit/index.ts +325 -98
- package/ts/mod_config/index.ts +490 -182
- package/ts/mod_format/classes.formatcontext.ts +20 -3
- package/ts/mod_format/formatters/packagejson.formatter.ts +0 -91
- package/ts/mod_format/formatters/smartconfig.formatter.ts +55 -39
- package/ts/mod_format/index.ts +279 -90
- package/ts/mod_format/mod.plugins.ts +0 -2
- package/ts/mod_services/index.ts +550 -183
- package/ts/mod_standard/index.ts +191 -58
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
import { FormatStats } from
|
|
1
|
+
import { FormatStats } from "./classes.formatstats.js";
|
|
2
|
+
interface IFormatContextOptions {
|
|
3
|
+
interactive?: boolean;
|
|
4
|
+
jsonOutput?: boolean;
|
|
5
|
+
}
|
|
2
6
|
export declare class FormatContext {
|
|
3
7
|
private formatStats;
|
|
4
|
-
|
|
8
|
+
private interactive;
|
|
9
|
+
private jsonOutput;
|
|
10
|
+
constructor(options?: IFormatContextOptions);
|
|
5
11
|
getFormatStats(): FormatStats;
|
|
12
|
+
isInteractive(): boolean;
|
|
13
|
+
isJsonOutput(): boolean;
|
|
6
14
|
}
|
|
15
|
+
export {};
|
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import * as plugins from
|
|
2
|
-
import { FormatStats } from
|
|
1
|
+
import * as plugins from "./mod.plugins.js";
|
|
2
|
+
import { FormatStats } from "./classes.formatstats.js";
|
|
3
3
|
export class FormatContext {
|
|
4
4
|
formatStats;
|
|
5
|
-
|
|
5
|
+
interactive;
|
|
6
|
+
jsonOutput;
|
|
7
|
+
constructor(options = {}) {
|
|
6
8
|
this.formatStats = new FormatStats();
|
|
9
|
+
this.interactive = options.interactive ?? true;
|
|
10
|
+
this.jsonOutput = options.jsonOutput ?? false;
|
|
7
11
|
}
|
|
8
12
|
getFormatStats() {
|
|
9
13
|
return this.formatStats;
|
|
10
14
|
}
|
|
15
|
+
isInteractive() {
|
|
16
|
+
return this.interactive;
|
|
17
|
+
}
|
|
18
|
+
isJsonOutput() {
|
|
19
|
+
return this.jsonOutput;
|
|
20
|
+
}
|
|
11
21
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5mb3JtYXRjb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbW9kX2Zvcm1hdC9jbGFzc2VzLmZvcm1hdGNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFPdkQsTUFBTSxPQUFPLGFBQWE7SUFDaEIsV0FBVyxDQUFjO0lBQ3pCLFdBQVcsQ0FBVTtJQUNyQixVQUFVLENBQVU7SUFFNUIsWUFBWSxVQUFpQyxFQUFFO1FBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7SUFDaEQsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztDQUNGIn0=
|
|
@@ -2,64 +2,6 @@ import { BaseFormatter } from '../classes.baseformatter.js';
|
|
|
2
2
|
import * as plugins from '../mod.plugins.js';
|
|
3
3
|
import * as paths from '../../paths.js';
|
|
4
4
|
import { logger, logVerbose } from '../../gitzone.logging.js';
|
|
5
|
-
/**
|
|
6
|
-
* Ensures a certain dependency exists or is excluded
|
|
7
|
-
*/
|
|
8
|
-
const ensureDependency = async (packageJsonObject, position, constraint, dependencyArg) => {
|
|
9
|
-
// Parse package name and version, handling scoped packages like @scope/name@version
|
|
10
|
-
const isScoped = dependencyArg.startsWith('@');
|
|
11
|
-
const lastAtIndex = dependencyArg.lastIndexOf('@');
|
|
12
|
-
// For scoped packages, the version @ must come after the /
|
|
13
|
-
// For unscoped packages, any @ indicates a version
|
|
14
|
-
const hasVersion = isScoped
|
|
15
|
-
? lastAtIndex > dependencyArg.indexOf('/')
|
|
16
|
-
: lastAtIndex >= 0;
|
|
17
|
-
const packageName = hasVersion ? dependencyArg.slice(0, lastAtIndex) : dependencyArg;
|
|
18
|
-
const version = hasVersion ? dependencyArg.slice(lastAtIndex + 1) : 'latest';
|
|
19
|
-
const targetSections = [];
|
|
20
|
-
switch (position) {
|
|
21
|
-
case 'dep':
|
|
22
|
-
targetSections.push('dependencies');
|
|
23
|
-
break;
|
|
24
|
-
case 'devDep':
|
|
25
|
-
targetSections.push('devDependencies');
|
|
26
|
-
break;
|
|
27
|
-
case 'everywhere':
|
|
28
|
-
targetSections.push('dependencies', 'devDependencies');
|
|
29
|
-
break;
|
|
30
|
-
}
|
|
31
|
-
for (const section of targetSections) {
|
|
32
|
-
if (!packageJsonObject[section]) {
|
|
33
|
-
packageJsonObject[section] = {};
|
|
34
|
-
}
|
|
35
|
-
switch (constraint) {
|
|
36
|
-
case 'exclude':
|
|
37
|
-
delete packageJsonObject[section][packageName];
|
|
38
|
-
break;
|
|
39
|
-
case 'include':
|
|
40
|
-
if (!packageJsonObject[section][packageName]) {
|
|
41
|
-
packageJsonObject[section][packageName] =
|
|
42
|
-
version === 'latest' ? '^1.0.0' : version;
|
|
43
|
-
}
|
|
44
|
-
break;
|
|
45
|
-
case 'latest':
|
|
46
|
-
try {
|
|
47
|
-
const registry = new plugins.smartnpm.NpmRegistry();
|
|
48
|
-
const packageInfo = await registry.getPackageInfo(packageName);
|
|
49
|
-
const latestVersion = packageInfo['dist-tags'].latest;
|
|
50
|
-
packageJsonObject[section][packageName] = `^${latestVersion}`;
|
|
51
|
-
}
|
|
52
|
-
catch (error) {
|
|
53
|
-
logVerbose(`Could not fetch latest version for ${packageName}, using existing or default`);
|
|
54
|
-
if (!packageJsonObject[section][packageName]) {
|
|
55
|
-
packageJsonObject[section][packageName] =
|
|
56
|
-
version === 'latest' ? '^1.0.0' : version;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
5
|
export class PackageJsonFormatter extends BaseFormatter {
|
|
64
6
|
get name() {
|
|
65
7
|
return 'packagejson';
|
|
@@ -114,10 +56,6 @@ export class PackageJsonFormatter extends BaseFormatter {
|
|
|
114
56
|
if (!packageJson.scripts.build) {
|
|
115
57
|
packageJson.scripts.build = `echo "Not needed for now"`;
|
|
116
58
|
}
|
|
117
|
-
// Ensure buildDocs script exists
|
|
118
|
-
if (!packageJson.scripts.buildDocs) {
|
|
119
|
-
packageJson.scripts.buildDocs = `tsdoc`;
|
|
120
|
-
}
|
|
121
59
|
// Set files array
|
|
122
60
|
packageJson.files = [
|
|
123
61
|
'ts/**/*',
|
|
@@ -131,10 +69,6 @@ export class PackageJsonFormatter extends BaseFormatter {
|
|
|
131
69
|
'.smartconfig.json',
|
|
132
70
|
'readme.md',
|
|
133
71
|
];
|
|
134
|
-
// Handle dependencies
|
|
135
|
-
await ensureDependency(packageJson, 'devDep', 'exclude', '@push.rocks/tapbundle');
|
|
136
|
-
await ensureDependency(packageJson, 'devDep', 'latest', '@git.zone/tstest');
|
|
137
|
-
await ensureDependency(packageJson, 'devDep', 'latest', '@git.zone/tsbuild');
|
|
138
72
|
// Set pnpm overrides from assets
|
|
139
73
|
try {
|
|
140
74
|
const overridesContent = (await plugins.smartfs
|
|
@@ -168,4 +102,4 @@ export class PackageJsonFormatter extends BaseFormatter {
|
|
|
168
102
|
logger.log('info', 'Updated package.json');
|
|
169
103
|
}
|
|
170
104
|
}
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZWpzb24uZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3BhY2thZ2Vqc29uLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxLQUFLLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUFDckQsSUFBSSxJQUFJO1FBQ04sT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFFdkMsdUJBQXVCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osVUFBVSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDcEQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQU0sT0FBTyxDQUFDLE9BQU87YUFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUNyQixRQUFRLENBQUMsTUFBTSxDQUFDO2FBQ2hCLElBQUksRUFBRSxDQUFXLENBQUM7UUFFckIsZ0NBQWdDO1FBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFL0Msc0NB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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BaseFormatter } from
|
|
2
|
-
import type { IPlannedChange } from
|
|
1
|
+
import { BaseFormatter } from "../classes.baseformatter.js";
|
|
2
|
+
import type { IPlannedChange } from "../interfaces.format.js";
|
|
3
3
|
export declare class SmartconfigFormatter extends BaseFormatter {
|
|
4
4
|
get name(): string;
|
|
5
5
|
analyze(): Promise<IPlannedChange[]>;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { BaseFormatter } from
|
|
2
|
-
import * as plugins from
|
|
3
|
-
import { logger, logVerbose } from
|
|
1
|
+
import { BaseFormatter } from "../classes.baseformatter.js";
|
|
2
|
+
import * as plugins from "../mod.plugins.js";
|
|
3
|
+
import { logger, logVerbose } from "../../gitzone.logging.js";
|
|
4
4
|
/**
|
|
5
5
|
* Migrates .smartconfig.json from old namespace keys to new package-scoped keys
|
|
6
6
|
*/
|
|
7
7
|
const migrateNamespaceKeys = (smartconfigJson) => {
|
|
8
8
|
let migrated = false;
|
|
9
9
|
const migrations = [
|
|
10
|
-
{ oldKey:
|
|
11
|
-
{ oldKey:
|
|
12
|
-
{ oldKey:
|
|
13
|
-
{ oldKey:
|
|
14
|
-
{ oldKey:
|
|
10
|
+
{ oldKey: "gitzone", newKey: "@git.zone/cli" },
|
|
11
|
+
{ oldKey: "tsdoc", newKey: "@git.zone/tsdoc" },
|
|
12
|
+
{ oldKey: "npmdocker", newKey: "@git.zone/tsdocker" },
|
|
13
|
+
{ oldKey: "npmci", newKey: "@ship.zone/szci" },
|
|
14
|
+
{ oldKey: "szci", newKey: "@ship.zone/szci" },
|
|
15
15
|
];
|
|
16
16
|
for (const { oldKey, newKey } of migrations) {
|
|
17
17
|
if (smartconfigJson[oldKey]) {
|
|
@@ -34,29 +34,30 @@ const migrateNamespaceKeys = (smartconfigJson) => {
|
|
|
34
34
|
* Migrates npmAccessLevel from @ship.zone/szci to @git.zone/cli.release.accessLevel
|
|
35
35
|
*/
|
|
36
36
|
const migrateAccessLevel = (smartconfigJson) => {
|
|
37
|
-
const szciConfig = smartconfigJson[
|
|
37
|
+
const szciConfig = smartconfigJson["@ship.zone/szci"];
|
|
38
38
|
if (!szciConfig?.npmAccessLevel) {
|
|
39
39
|
return false;
|
|
40
40
|
}
|
|
41
|
-
const gitzoneConfig = smartconfigJson[
|
|
41
|
+
const gitzoneConfig = smartconfigJson["@git.zone/cli"] || {};
|
|
42
42
|
if (gitzoneConfig?.release?.accessLevel) {
|
|
43
43
|
delete szciConfig.npmAccessLevel;
|
|
44
44
|
return true;
|
|
45
45
|
}
|
|
46
|
-
if (!smartconfigJson[
|
|
47
|
-
smartconfigJson[
|
|
46
|
+
if (!smartconfigJson["@git.zone/cli"]) {
|
|
47
|
+
smartconfigJson["@git.zone/cli"] = {};
|
|
48
48
|
}
|
|
49
|
-
if (!smartconfigJson[
|
|
50
|
-
smartconfigJson[
|
|
49
|
+
if (!smartconfigJson["@git.zone/cli"].release) {
|
|
50
|
+
smartconfigJson["@git.zone/cli"].release = {};
|
|
51
51
|
}
|
|
52
|
-
smartconfigJson[
|
|
52
|
+
smartconfigJson["@git.zone/cli"].release.accessLevel =
|
|
53
|
+
szciConfig.npmAccessLevel;
|
|
53
54
|
delete szciConfig.npmAccessLevel;
|
|
54
55
|
return true;
|
|
55
56
|
};
|
|
56
|
-
const CONFIG_FILE =
|
|
57
|
+
const CONFIG_FILE = ".smartconfig.json";
|
|
57
58
|
export class SmartconfigFormatter extends BaseFormatter {
|
|
58
59
|
get name() {
|
|
59
|
-
return
|
|
60
|
+
return "smartconfig";
|
|
60
61
|
}
|
|
61
62
|
async analyze() {
|
|
62
63
|
const changes = [];
|
|
@@ -65,59 +66,65 @@ export class SmartconfigFormatter extends BaseFormatter {
|
|
|
65
66
|
// This formatter only operates on .smartconfig.json.
|
|
66
67
|
const exists = await plugins.smartfs.file(CONFIG_FILE).exists();
|
|
67
68
|
if (!exists) {
|
|
68
|
-
logVerbose(
|
|
69
|
+
logVerbose(".smartconfig.json does not exist, skipping");
|
|
69
70
|
return changes;
|
|
70
71
|
}
|
|
71
72
|
const currentContent = (await plugins.smartfs
|
|
72
73
|
.file(CONFIG_FILE)
|
|
73
|
-
.encoding(
|
|
74
|
+
.encoding("utf8")
|
|
74
75
|
.read());
|
|
75
76
|
const smartconfigJson = JSON.parse(currentContent);
|
|
76
77
|
// Apply key migrations
|
|
77
78
|
migrateNamespaceKeys(smartconfigJson);
|
|
78
79
|
migrateAccessLevel(smartconfigJson);
|
|
79
80
|
// Ensure namespaces exist
|
|
80
|
-
if (!smartconfigJson[
|
|
81
|
-
smartconfigJson[
|
|
81
|
+
if (!smartconfigJson["@git.zone/cli"]) {
|
|
82
|
+
smartconfigJson["@git.zone/cli"] = {};
|
|
82
83
|
}
|
|
83
|
-
if (!smartconfigJson[
|
|
84
|
-
smartconfigJson[
|
|
84
|
+
if (!smartconfigJson["@ship.zone/szci"]) {
|
|
85
|
+
smartconfigJson["@ship.zone/szci"] = {};
|
|
85
86
|
}
|
|
86
87
|
const newContent = JSON.stringify(smartconfigJson, null, 2);
|
|
87
88
|
if (newContent !== currentContent) {
|
|
88
89
|
changes.push({
|
|
89
|
-
type:
|
|
90
|
+
type: "modify",
|
|
90
91
|
path: CONFIG_FILE,
|
|
91
92
|
module: this.name,
|
|
92
|
-
description:
|
|
93
|
+
description: "Migrate and format .smartconfig.json",
|
|
93
94
|
content: newContent,
|
|
94
95
|
});
|
|
95
96
|
}
|
|
96
97
|
return changes;
|
|
97
98
|
}
|
|
98
99
|
async applyChange(change) {
|
|
99
|
-
if (change.type !==
|
|
100
|
+
if (change.type !== "modify" || !change.content)
|
|
100
101
|
return;
|
|
101
102
|
const smartconfigJson = JSON.parse(change.content);
|
|
102
103
|
// Check for missing required module information
|
|
103
104
|
const expectedRepoInformation = [
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
105
|
+
"projectType",
|
|
106
|
+
"module.githost",
|
|
107
|
+
"module.gitscope",
|
|
108
|
+
"module.gitrepo",
|
|
109
|
+
"module.description",
|
|
110
|
+
"module.npmPackagename",
|
|
111
|
+
"module.license",
|
|
111
112
|
];
|
|
112
113
|
const interactInstance = new plugins.smartinteract.SmartInteract();
|
|
114
|
+
const missingRepoInformation = expectedRepoInformation.filter((expectedRepoInformationItem) => {
|
|
115
|
+
return !plugins.smartobject.smartGet(smartconfigJson["@git.zone/cli"], expectedRepoInformationItem);
|
|
116
|
+
});
|
|
117
|
+
if (missingRepoInformation.length > 0 && !this.context.isInteractive()) {
|
|
118
|
+
throw new Error(`Missing required .smartconfig.json fields: ${missingRepoInformation.join(", ")}`);
|
|
119
|
+
}
|
|
113
120
|
for (const expectedRepoInformationItem of expectedRepoInformation) {
|
|
114
|
-
if (!plugins.smartobject.smartGet(smartconfigJson[
|
|
121
|
+
if (!plugins.smartobject.smartGet(smartconfigJson["@git.zone/cli"], expectedRepoInformationItem)) {
|
|
115
122
|
interactInstance.addQuestions([
|
|
116
123
|
{
|
|
117
124
|
message: `What is the value of ${expectedRepoInformationItem}`,
|
|
118
125
|
name: expectedRepoInformationItem,
|
|
119
|
-
type:
|
|
120
|
-
default:
|
|
126
|
+
type: "input",
|
|
127
|
+
default: "undefined variable",
|
|
121
128
|
},
|
|
122
129
|
]);
|
|
123
130
|
}
|
|
@@ -126,12 +133,12 @@ export class SmartconfigFormatter extends BaseFormatter {
|
|
|
126
133
|
for (const expectedRepoInformationItem of expectedRepoInformation) {
|
|
127
134
|
const cliProvidedValue = answerbucket.getAnswerFor(expectedRepoInformationItem);
|
|
128
135
|
if (cliProvidedValue) {
|
|
129
|
-
plugins.smartobject.smartAdd(smartconfigJson[
|
|
136
|
+
plugins.smartobject.smartAdd(smartconfigJson["@git.zone/cli"], expectedRepoInformationItem, cliProvidedValue);
|
|
130
137
|
}
|
|
131
138
|
}
|
|
132
139
|
const finalContent = JSON.stringify(smartconfigJson, null, 2);
|
|
133
140
|
await this.modifyFile(change.path, finalContent);
|
|
134
|
-
logger.log(
|
|
141
|
+
logger.log("info", "Updated .smartconfig.json");
|
|
135
142
|
}
|
|
136
143
|
}
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjb25maWcuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX2Zvcm1hdC9mb3JtYXR0ZXJzL3NtYXJ0Y29uZmlnLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxLQUFLLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlEOztHQUVHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLGVBQW9CLEVBQVcsRUFBRTtJQUM3RCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsTUFBTSxVQUFVLEdBQUc7UUFDakIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUU7UUFDOUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtRQUM5QyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFO1FBQ3JELEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUU7UUFDOUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtLQUM5QyxDQUFDO0lBQ0YsS0FBSyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzVDLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUM3QixlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BELENBQUM7aUJBQU0sQ0FBQztn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
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ICliMode } from "../helpers.climode.js";
|
|
1
2
|
export declare let run: (options?: {
|
|
2
3
|
write?: boolean;
|
|
3
4
|
dryRun?: boolean;
|
|
@@ -9,8 +10,9 @@ export declare let run: (options?: {
|
|
|
9
10
|
interactive?: boolean;
|
|
10
11
|
verbose?: boolean;
|
|
11
12
|
diff?: boolean;
|
|
13
|
+
[key: string]: any;
|
|
12
14
|
}) => Promise<any>;
|
|
13
|
-
import type { ICheckResult } from
|
|
15
|
+
import type { ICheckResult } from "./interfaces.format.js";
|
|
14
16
|
export type { ICheckResult };
|
|
15
17
|
/**
|
|
16
18
|
* Run a single formatter by name (for use by other modules)
|
|
@@ -20,3 +22,4 @@ export declare const runFormatter: (formatterName: string, options?: {
|
|
|
20
22
|
checkOnly?: boolean;
|
|
21
23
|
showDiff?: boolean;
|
|
22
24
|
}) => Promise<ICheckResult | void>;
|
|
25
|
+
export declare function showHelp(mode?: ICliMode): void;
|