fscr 6.2.6 → 7.3.0
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/README.md +48 -30
- package/dist/index.js +502 -186
- package/dist/lib/auth/auth-conf.js +49 -45
- package/dist/lib/cache/README.md +341 -0
- package/dist/lib/cache/cli.js +152 -0
- package/dist/lib/cache/file-watcher.js +193 -0
- package/dist/lib/cache/index.js +422 -0
- package/dist/lib/cache/monitor.js +224 -0
- package/dist/lib/commands/doctor.js +225 -0
- package/dist/lib/completions/completion.js +342 -0
- package/dist/lib/completions/generator.js +152 -0
- package/dist/lib/completions/scripts/bash.sh +108 -0
- package/dist/lib/completions/scripts/fish.sh +105 -0
- package/dist/lib/completions/scripts/powershell.ps1 +168 -0
- package/dist/lib/completions/scripts/zsh.sh +124 -0
- package/dist/lib/diagnostics/cache.js +121 -0
- package/dist/lib/diagnostics/fileSystem.js +236 -0
- package/dist/lib/diagnostics/gitCheck.js +41 -0
- package/dist/lib/diagnostics/nodeVersion.js +68 -0
- package/dist/lib/diagnostics/packageManager.js +64 -0
- package/dist/lib/diagnostics/performance.js +141 -0
- package/dist/lib/encryption/decryptConfig.js +3 -2
- package/dist/lib/encryption/encryption.js +153 -113
- package/dist/lib/generators/generateFScripts.js +16 -13
- package/dist/lib/generators/generateToc.js +23 -14
- package/dist/lib/generators/index.js +1 -1
- package/dist/lib/git/pub.js +27 -17
- package/dist/lib/git/taskRunner.js +79 -69
- package/dist/lib/git/validateNotDev.js +65 -54
- package/dist/lib/optionList.js +69 -57
- package/dist/lib/parsers/parseScriptsMd.cached.js +208 -0
- package/dist/lib/parsers/parseScriptsMd.js +88 -79
- package/dist/lib/parsers/parseScriptsPackage.js +4 -3
- package/dist/lib/performance/cache.js +199 -0
- package/dist/lib/performance/lazy-loader.js +189 -0
- package/dist/lib/performance/monitor.js +303 -0
- package/dist/lib/plugins/deployment/index.js +113 -0
- package/dist/lib/plugins/hooks.js +17 -0
- package/dist/lib/plugins/loader.js +91 -0
- package/dist/lib/plugins/task-notifier/index.js +72 -0
- package/dist/lib/release/bump.js +50 -45
- package/dist/lib/release/commitWithMessage.js +80 -52
- package/dist/lib/release/publish.js +19 -14
- package/dist/lib/release/pushToGit.js +40 -31
- package/dist/lib/release/releasenotes.js +116 -97
- package/dist/lib/release/seeChangedFiles.js +68 -60
- package/dist/lib/release/sort.js +200 -116
- package/dist/lib/release/tree.js +161 -147
- package/dist/lib/release/validateNotDev.js +52 -44
- package/dist/lib/running/index.js +1 -1
- package/dist/lib/running/runCLICommand.js +41 -31
- package/dist/lib/running/runParallel.js +61 -59
- package/dist/lib/running/runSequence.js +55 -53
- package/dist/lib/startScripts.js +129 -114
- package/dist/lib/taskList.js +97 -90
- package/dist/lib/test-files/.fscripts.md +113 -0
- package/dist/lib/test-files/.fscripts.test.md +103 -0
- package/dist/lib/test-files/.fscriptsb.md +107 -0
- package/dist/lib/test-files/.mdtest.md +40 -0
- package/dist/lib/test-files/consoleSample.js +13 -9
- package/dist/lib/test-files/inputSample.js +17 -14
- package/dist/lib/test-files/testConsole.js +1 -1
- package/dist/lib/test-files/testInput.js +1 -1
- package/dist/lib/upgradePackages.js +56 -46
- package/dist/lib/utils/clear.js +16 -13
- package/dist/lib/utils/console.js +27 -21
- package/dist/lib/utils/encryption.js +55 -13
- package/dist/lib/utils/hash.js +128 -0
- package/dist/lib/utils/helpers.js +153 -142
- package/dist/lib/utils/index.js +1 -1
- package/dist/lib/utils/prompt.js +24 -29
- package/package.json +11 -29
|
@@ -28,111 +28,130 @@ import childProcess from "child_process";
|
|
|
28
28
|
|
|
29
29
|
const pathToCwd = process.cwd();
|
|
30
30
|
const grouped = (data, filesChanged) => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
let output = {};
|
|
32
|
+
let current;
|
|
33
|
+
|
|
34
|
+
for (const pdata of data) {
|
|
35
|
+
current = output;
|
|
36
|
+
|
|
37
|
+
for (const segment of pdata.split("/")) {
|
|
38
|
+
if (segment !== "") {
|
|
39
|
+
if (!(segment in current)) {
|
|
40
|
+
current[segment] = {};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
current = current[segment];
|
|
44
|
+
}
|
|
39
45
|
}
|
|
40
|
-
current = current[segment];
|
|
41
|
-
}
|
|
42
46
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
47
|
+
let level = "";
|
|
48
|
+
const deepClone = obj => {
|
|
49
|
+
let clone = Object.assign({}, obj);
|
|
50
|
+
Object.keys(clone).forEach(key => {
|
|
51
|
+
let findMac = filesChanged.find(z => z.filename === key || z.filename === level + key);
|
|
52
|
+
if (typeof obj[key] === "object" && Object.keys(obj[key]).length) {
|
|
53
|
+
level += key + "/";
|
|
54
|
+
clone[key] = deepClone(obj[key]);
|
|
55
|
+
} else if (findMac) {
|
|
56
|
+
let stat = findMac.status === undefined ? "Deleted" : findMac.status;
|
|
57
|
+
console.info("-- Console STATUS", findMac.status, stat, key);
|
|
58
|
+
stat = stat.replace(/\x1B[[(?);]{0,2}(;?\d)*./g, "");
|
|
59
|
+
clone[key] = stat;
|
|
60
|
+
} else {
|
|
61
|
+
clone[key] = "";
|
|
62
|
+
}
|
|
63
|
+
return clone[key];
|
|
64
|
+
});
|
|
65
|
+
return Array.isArray(obj) ? (clone.length = obj.length) && Array.from(clone) : clone;
|
|
66
|
+
};
|
|
67
|
+
output = deepClone(output);
|
|
68
|
+
console.info(
|
|
69
|
+
tree(output, {
|
|
70
|
+
symbol: true,
|
|
71
|
+
highlight: true,
|
|
72
|
+
padding: 1,
|
|
73
|
+
colors: {
|
|
74
|
+
string: "black",
|
|
75
|
+
number: "red",
|
|
76
|
+
boolean: "red",
|
|
77
|
+
infinity: "red",
|
|
78
|
+
nan: "red",
|
|
79
|
+
null: "cyan",
|
|
80
|
+
undefined: "gray",
|
|
81
|
+
regexp: "green",
|
|
82
|
+
key: "black",
|
|
83
|
+
object: "grey",
|
|
84
|
+
array: "red"
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
);
|
|
83
88
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
89
|
+
// jclrz(output);
|
|
90
|
+
//
|
|
91
|
+
return output;
|
|
87
92
|
};
|
|
93
|
+
|
|
88
94
|
import sgfPkg from "staged-git-files";
|
|
89
95
|
const sgf = sgfPkg.default || sgfPkg;
|
|
90
96
|
(async () => {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
const howManyCommitsBack = await new Promise(resolve => {
|
|
98
|
+
inquirer
|
|
99
|
+
.prompt([
|
|
100
|
+
{
|
|
101
|
+
type: "input",
|
|
102
|
+
message: "How many commits do you want to compare in the past?",
|
|
103
|
+
default: 5,
|
|
104
|
+
name: "howMany"
|
|
105
|
+
}
|
|
106
|
+
])
|
|
107
|
+
.then(async ({ howMany }) => {
|
|
108
|
+
resolve(howMany);
|
|
109
|
+
});
|
|
101
110
|
});
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
updatedFiles = [...updatedFiles.unCommittedFiles, ...results];
|
|
110
|
-
let z = ""; // grouped(updatedFiles.map(e => e.filename).sort(), updatedFiles);
|
|
111
|
-
try {
|
|
112
|
-
z = childProcess.execSync(`git log -${howManyCommitsBack} --oneline | nl -v0 | sed 's/^ \\+/&HEAD~/'`, {
|
|
113
|
-
env: Object.assign({}, process.env)
|
|
114
|
-
}).toString();
|
|
115
|
-
// console.info("--- INFO z", z);
|
|
116
|
-
} catch (e) {}
|
|
117
|
-
z = z.split("\n").slice(-2)[0].split("\t").slice(-2)[1].split(" ")[0];
|
|
118
|
-
const last = await new Promise(rzz => {
|
|
119
|
-
git.isGit(pathToCwd, function (exists) {
|
|
120
|
-
if (!exists) return;
|
|
121
|
-
git.commit(pathToCwd, function (err, result) {
|
|
122
|
-
if (err) throw err;
|
|
123
|
-
rzz(result);
|
|
124
|
-
});
|
|
111
|
+
|
|
112
|
+
const results = await sgf();
|
|
113
|
+
|
|
114
|
+
let updatedFiles = await ggg({
|
|
115
|
+
diffFilter: "ACDMRTUXB",
|
|
116
|
+
showStatus: true,
|
|
117
|
+
showCommitted: false
|
|
125
118
|
});
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
119
|
+
updatedFiles = [...updatedFiles.unCommittedFiles, ...results];
|
|
120
|
+
let z = ""; // grouped(updatedFiles.map(e => e.filename).sort(), updatedFiles);
|
|
121
|
+
try {
|
|
122
|
+
z = childProcess
|
|
123
|
+
.execSync(`git log -${howManyCommitsBack} --oneline | nl -v0 | sed 's/^ \\+/&HEAD~/'`, {
|
|
124
|
+
env: Object.assign({}, process.env)
|
|
125
|
+
})
|
|
126
|
+
.toString();
|
|
127
|
+
// console.info("--- INFO z", z);
|
|
128
|
+
} catch (e) {}
|
|
129
|
+
z = z
|
|
130
|
+
.split("\n")
|
|
131
|
+
.slice(-2)[0]
|
|
132
|
+
.split("\t")
|
|
133
|
+
.slice(-2)[1]
|
|
134
|
+
.split(" ")[0];
|
|
135
|
+
const last = await new Promise(rzz => {
|
|
136
|
+
git.isGit(pathToCwd, function(exists) {
|
|
137
|
+
if (!exists) return;
|
|
138
|
+
|
|
139
|
+
git.commit(pathToCwd, function(err, result) {
|
|
140
|
+
if (err) throw err;
|
|
141
|
+
rzz(result);
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
console.info("-- Console FROM", z, "TO", last);
|
|
146
|
+
|
|
147
|
+
const OPTIONS = {
|
|
148
|
+
branch: "Development"
|
|
149
|
+
};
|
|
150
|
+
const RANGE = `${z}..${last}`;
|
|
151
|
+
const TEMPLATE = "markdown";
|
|
152
|
+
const changelog = await releaseNotes(OPTIONS, RANGE, TEMPLATE);
|
|
153
|
+
console.log(`Changelog between ${RANGE}\n\n${changelog}`);
|
|
154
|
+
// await fs.writeFileSync(path.resolve(process.cwd(), "release.md"), changelog, "utf-8");
|
|
136
155
|
})();
|
|
137
156
|
//
|
|
138
157
|
|
|
@@ -155,4 +174,4 @@ const sgf = sgfPkg.default || sgfPkg;
|
|
|
155
174
|
// // .catch(ex => {
|
|
156
175
|
// // console.error(ex);
|
|
157
176
|
// // process.exit(1);
|
|
158
|
-
// // resolve();
|
|
177
|
+
// // resolve();
|
|
@@ -19,71 +19,79 @@ import tree from "./tree.js";
|
|
|
19
19
|
// const syms = ["⌯", "➢", "⃕", "⌁", "⌐", "━", "═", "⇝"];
|
|
20
20
|
|
|
21
21
|
const grouped = (data, filesChanged) => {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
let output = {};
|
|
23
|
+
let current;
|
|
24
|
+
|
|
25
|
+
for (const pdata of data) {
|
|
26
|
+
current = output;
|
|
27
|
+
|
|
28
|
+
for (const segment of pdata.split("/")) {
|
|
29
|
+
if (segment !== "") {
|
|
30
|
+
if (!(segment in current)) {
|
|
31
|
+
current[segment] = {};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
current = current[segment];
|
|
35
|
+
}
|
|
30
36
|
}
|
|
31
|
-
current = current[segment];
|
|
32
|
-
}
|
|
33
37
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
output = deepClone(output);
|
|
38
|
+
let level = "";
|
|
39
|
+
const deepClone = obj => {
|
|
40
|
+
let clone = Object.assign({}, obj);
|
|
41
|
+
Object.keys(clone).forEach(key => {
|
|
42
|
+
let findMac = filesChanged.find(z => z.filename === key || z.filename === level + key);
|
|
43
|
+
if (typeof obj[key] === "object" && Object.keys(obj[key]).length) {
|
|
44
|
+
level += key + "/";
|
|
45
|
+
clone[key] = deepClone(obj[key]);
|
|
46
|
+
} else if (findMac) {
|
|
47
|
+
let stat = findMac.status === undefined ? "Deleted" : findMac.status;
|
|
48
|
+
stat = stat.replace(/\x1B[[(?);]{0,2}(;?\d)*./g, "");
|
|
49
|
+
clone[key] = stat;
|
|
50
|
+
} else {
|
|
51
|
+
clone[key] = "";
|
|
52
|
+
}
|
|
53
|
+
return clone[key];
|
|
54
|
+
});
|
|
55
|
+
return Array.isArray(obj) ? (clone.length = obj.length) && Array.from(clone) : clone;
|
|
56
|
+
};
|
|
57
|
+
output = deepClone(output);
|
|
55
58
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
// jclrz(output);
|
|
60
|
+
//
|
|
61
|
+
return output;
|
|
59
62
|
};
|
|
63
|
+
|
|
60
64
|
import sgfPkg from "staged-git-files";
|
|
61
65
|
const sgf = sgfPkg.default || sgfPkg;
|
|
62
66
|
const seeChangedFiles = async () => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
67
|
+
const results = await sgf();
|
|
68
|
+
|
|
69
|
+
let updatedFiles = await ggg({
|
|
70
|
+
diffFilter: "ACDMRTUXB",
|
|
71
|
+
showStatus: true,
|
|
72
|
+
showCommitted: false
|
|
73
|
+
});
|
|
74
|
+
updatedFiles = [...updatedFiles.unCommittedFiles, ...results];
|
|
75
|
+
console.log(
|
|
76
|
+
tree(grouped(updatedFiles.map(e => e.filename).sort(), updatedFiles), {
|
|
77
|
+
symbol: true,
|
|
78
|
+
highlight: true,
|
|
79
|
+
padding: 1,
|
|
80
|
+
colors: {
|
|
81
|
+
string: "black",
|
|
82
|
+
number: "red",
|
|
83
|
+
boolean: "red",
|
|
84
|
+
infinity: "red",
|
|
85
|
+
nan: "red",
|
|
86
|
+
null: "cyan",
|
|
87
|
+
undefined: "gray",
|
|
88
|
+
regexp: "green",
|
|
89
|
+
key: "black",
|
|
90
|
+
object: "grey",
|
|
91
|
+
array: "red"
|
|
92
|
+
}
|
|
93
|
+
})
|
|
94
|
+
);
|
|
88
95
|
};
|
|
89
|
-
|
|
96
|
+
|
|
97
|
+
export default seeChangedFiles;
|