screw-up 1.14.1 → 1.15.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/dist/analyzer.d.ts +2 -2
- package/dist/cli-internal.d.ts +2 -2
- package/dist/cli-internal.d.ts.map +1 -1
- package/dist/cli.d.ts +2 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/fast-tags.d.ts +2 -2
- package/dist/generated/packageMetadata.d.ts +4 -4
- package/dist/git-operations.d.ts +2 -2
- package/dist/index.cjs +3 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/internal.d.ts +2 -2
- package/dist/main.cjs +176 -6
- package/dist/main.cjs.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.js +177 -7
- package/dist/main.js.map +1 -1
- package/dist/{packageMetadata-Barm17zZ.cjs → packageMetadata-BP1lkMwy.cjs} +5 -5
- package/dist/{packageMetadata-Barm17zZ.cjs.map → packageMetadata-BP1lkMwy.cjs.map} +1 -1
- package/dist/{packageMetadata-DOqeCvCs.js → packageMetadata-DFL693kZ.js} +5 -5
- package/dist/{packageMetadata-DOqeCvCs.js.map → packageMetadata-DFL693kZ.js.map} +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/vite-plugin.d.ts +2 -2
- package/package.json +6 -6
package/dist/main.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/*!
|
|
3
3
|
* name: screw-up
|
|
4
|
-
* version: 1.
|
|
4
|
+
* version: 1.15.0
|
|
5
5
|
* description: Simply package metadata inserter on Vite plugin
|
|
6
6
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
7
7
|
* license: MIT
|
|
8
8
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
9
|
-
* git.commit.hash:
|
|
9
|
+
* git.commit.hash: 6342e8bf692322743d3cdc8d8815c1ae45b7162d
|
|
10
10
|
*/
|
|
11
11
|
import { join, dirname, resolve } from "path";
|
|
12
12
|
import { createWriteStream, createReadStream, existsSync } from "fs";
|
|
13
|
-
import { mkdir, writeFile, stat, readdir, mkdtemp, copyFile, rm } from "fs/promises";
|
|
13
|
+
import { mkdir, writeFile, stat, readdir, mkdtemp, copyFile, rm, readFile } from "fs/promises";
|
|
14
14
|
import { spawn } from "child_process";
|
|
15
15
|
import { tmpdir } from "os";
|
|
16
16
|
import { Readable } from "stream";
|
|
17
17
|
import { createGunzip, createGzip } from "zlib";
|
|
18
18
|
import { pipeline } from "stream/promises";
|
|
19
|
-
import { b as resolveRawPackageJsonObject, f as findWorkspaceRoot, d as collectWorkspaceSiblings, e as replacePeerDependenciesWildcards, g as getFetchGitMetadata, c as createConsoleLogger, n as name } from "./packageMetadata-
|
|
19
|
+
import { b as resolveRawPackageJsonObject, f as findWorkspaceRoot, d as collectWorkspaceSiblings, e as replacePeerDependenciesWildcards, g as getFetchGitMetadata, c as createConsoleLogger, n as name } from "./packageMetadata-DFL693kZ.js";
|
|
20
20
|
/*!
|
|
21
21
|
* name: tar-vern
|
|
22
22
|
* version: 1.3.0
|
|
@@ -811,7 +811,7 @@ const parseArgs = (args, argOptionMap2) => {
|
|
|
811
811
|
result.options[optionName] = true;
|
|
812
812
|
} else {
|
|
813
813
|
const argOptions = argOptionMap2.get(result.command);
|
|
814
|
-
if (argOptions.has(optionName)) {
|
|
814
|
+
if (argOptions == null ? void 0 : argOptions.has(optionName)) {
|
|
815
815
|
i++;
|
|
816
816
|
result.options[optionName] = args[i];
|
|
817
817
|
} else {
|
|
@@ -821,7 +821,13 @@ const parseArgs = (args, argOptionMap2) => {
|
|
|
821
821
|
} else if (arg.startsWith("-")) {
|
|
822
822
|
const optionName = arg.slice(1);
|
|
823
823
|
if (optionName.length == 1) {
|
|
824
|
-
result.
|
|
824
|
+
const argOptions = result.command ? argOptionMap2.get(result.command) : void 0;
|
|
825
|
+
if (argOptions == null ? void 0 : argOptions.has(optionName)) {
|
|
826
|
+
i++;
|
|
827
|
+
result.options[optionName] = args[i];
|
|
828
|
+
} else {
|
|
829
|
+
result.options[optionName] = true;
|
|
830
|
+
}
|
|
825
831
|
}
|
|
826
832
|
} else if (!result.command) {
|
|
827
833
|
result.command = arg;
|
|
@@ -853,6 +859,165 @@ const parseInheritableFields = (inheritableFieldsOption) => {
|
|
|
853
859
|
inheritableFieldsOption.split(",").map((field) => field.trim()).filter((field) => field.length > 0)
|
|
854
860
|
);
|
|
855
861
|
};
|
|
862
|
+
const readInputText = async (inputPath) => {
|
|
863
|
+
if (inputPath) {
|
|
864
|
+
const resolvedPath = resolve(inputPath);
|
|
865
|
+
return await readFile(resolvedPath, "utf-8");
|
|
866
|
+
}
|
|
867
|
+
return await new Promise((resolvePromise, rejectPromise) => {
|
|
868
|
+
let data = "";
|
|
869
|
+
process.stdin.setEncoding("utf-8");
|
|
870
|
+
process.stdin.on("data", (chunk) => {
|
|
871
|
+
data += chunk;
|
|
872
|
+
});
|
|
873
|
+
process.stdin.on("end", () => resolvePromise(data));
|
|
874
|
+
process.stdin.on("error", (err) => rejectPromise(err));
|
|
875
|
+
});
|
|
876
|
+
};
|
|
877
|
+
const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
878
|
+
const getValueByPath = (source, path) => {
|
|
879
|
+
return path.split(".").reduce((current, key) => {
|
|
880
|
+
if (current === void 0 || current === null) {
|
|
881
|
+
return void 0;
|
|
882
|
+
}
|
|
883
|
+
if (typeof current !== "object" && !Array.isArray(current)) {
|
|
884
|
+
return void 0;
|
|
885
|
+
}
|
|
886
|
+
return current[key];
|
|
887
|
+
}, source);
|
|
888
|
+
};
|
|
889
|
+
const stringifyValue = (value) => {
|
|
890
|
+
if (value === void 0) {
|
|
891
|
+
return void 0;
|
|
892
|
+
}
|
|
893
|
+
if (value === null) {
|
|
894
|
+
return "null";
|
|
895
|
+
}
|
|
896
|
+
if (typeof value === "object") {
|
|
897
|
+
try {
|
|
898
|
+
return JSON.stringify(value);
|
|
899
|
+
} catch (e) {
|
|
900
|
+
return String(value);
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
return String(value);
|
|
904
|
+
};
|
|
905
|
+
const replacePlaceholders = (text, values, openBracket, closeBracket) => {
|
|
906
|
+
const pattern = new RegExp(
|
|
907
|
+
`${escapeRegExp(openBracket)}(.*?)${escapeRegExp(closeBracket)}`,
|
|
908
|
+
"g"
|
|
909
|
+
);
|
|
910
|
+
return text.replace(pattern, (match, key) => {
|
|
911
|
+
const trimmedKey = String(key).trim();
|
|
912
|
+
const resolvedValue = stringifyValue(getValueByPath(values, trimmedKey));
|
|
913
|
+
return resolvedValue !== void 0 ? resolvedValue : match;
|
|
914
|
+
});
|
|
915
|
+
};
|
|
916
|
+
const showFormatHelp = () => {
|
|
917
|
+
console.info(`Usage: screw-up format [options] [output]
|
|
918
|
+
|
|
919
|
+
Format input text by replacing placeholders with package metadata
|
|
920
|
+
|
|
921
|
+
Arguments:
|
|
922
|
+
output Optional output file path (default: stdout)
|
|
923
|
+
|
|
924
|
+
Options:
|
|
925
|
+
-i, --input <path> Input template file (default: stdin)
|
|
926
|
+
-b, --bracket <open,close> Placeholder brackets (default: {,})
|
|
927
|
+
--inheritable-fields <list> Comma-separated list of fields to inherit from parent
|
|
928
|
+
--no-wds Do not check working directory status to increase version
|
|
929
|
+
--no-git-version-override Do not override version from Git (use package.json version)
|
|
930
|
+
-f, --force Allow formatting even if package.json does not exist
|
|
931
|
+
-h, --help Show help for format command
|
|
932
|
+
`);
|
|
933
|
+
};
|
|
934
|
+
const parseBracketOption = (bracketOption) => {
|
|
935
|
+
if (!bracketOption) {
|
|
936
|
+
return { openBracket: "{", closeBracket: "}" };
|
|
937
|
+
}
|
|
938
|
+
const delimiterIndex = bracketOption.indexOf(",");
|
|
939
|
+
if (delimiterIndex === -1) {
|
|
940
|
+
return void 0;
|
|
941
|
+
}
|
|
942
|
+
const openBracket = bracketOption.slice(0, delimiterIndex);
|
|
943
|
+
const closeBracket = bracketOption.slice(delimiterIndex + 1);
|
|
944
|
+
if (!openBracket || !closeBracket) {
|
|
945
|
+
return void 0;
|
|
946
|
+
}
|
|
947
|
+
return { openBracket, closeBracket };
|
|
948
|
+
};
|
|
949
|
+
const formatCommand = async (args, logger2) => {
|
|
950
|
+
var _a, _b;
|
|
951
|
+
if (args.options.help || args.options.h) {
|
|
952
|
+
showFormatHelp();
|
|
953
|
+
return 1;
|
|
954
|
+
}
|
|
955
|
+
const outputPath = args.positional[0];
|
|
956
|
+
const inputPathOption = (_a = args.options["input"]) != null ? _a : args.options["i"];
|
|
957
|
+
const bracketOption = (_b = args.options["bracket"]) != null ? _b : args.options["b"];
|
|
958
|
+
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
959
|
+
const alwaysOverrideVersionFromGit = !args.options["no-git-version-override"];
|
|
960
|
+
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
961
|
+
const ignorePackageJsonNotExist = args.options["force"] || args.options["f"] ? true : false;
|
|
962
|
+
const bracket = parseBracketOption(
|
|
963
|
+
typeof bracketOption === "string" ? bracketOption : void 0
|
|
964
|
+
);
|
|
965
|
+
if (!bracket) {
|
|
966
|
+
logger2.error(
|
|
967
|
+
'format: Invalid bracket option, expected "open,close" pattern.'
|
|
968
|
+
);
|
|
969
|
+
return 1;
|
|
970
|
+
}
|
|
971
|
+
const { openBracket, closeBracket } = bracket;
|
|
972
|
+
const targetDir = resolve(process.cwd());
|
|
973
|
+
const inheritableFields = parseInheritableFields(inheritableFieldsOption);
|
|
974
|
+
const _logger = {
|
|
975
|
+
debug: (msg) => {
|
|
976
|
+
},
|
|
977
|
+
info: (msg) => {
|
|
978
|
+
},
|
|
979
|
+
warn: (msg) => {
|
|
980
|
+
},
|
|
981
|
+
error: logger2.error
|
|
982
|
+
};
|
|
983
|
+
try {
|
|
984
|
+
const fetchGitMetadata = getFetchGitMetadata(
|
|
985
|
+
targetDir,
|
|
986
|
+
checkWorkingDirectoryStatus,
|
|
987
|
+
_logger
|
|
988
|
+
);
|
|
989
|
+
const computedPackageJson = await getComputedPackageJsonObject(
|
|
990
|
+
targetDir,
|
|
991
|
+
fetchGitMetadata,
|
|
992
|
+
alwaysOverrideVersionFromGit,
|
|
993
|
+
inheritableFields,
|
|
994
|
+
_logger,
|
|
995
|
+
ignorePackageJsonNotExist
|
|
996
|
+
);
|
|
997
|
+
if (!computedPackageJson) {
|
|
998
|
+
_logger.error(`format: Unable to read package.json from: ${targetDir}`);
|
|
999
|
+
return 1;
|
|
1000
|
+
}
|
|
1001
|
+
const inputText = await readInputText(
|
|
1002
|
+
typeof inputPathOption === "string" ? inputPathOption : void 0
|
|
1003
|
+
);
|
|
1004
|
+
const formattedText = replacePlaceholders(
|
|
1005
|
+
inputText,
|
|
1006
|
+
computedPackageJson,
|
|
1007
|
+
openBracket,
|
|
1008
|
+
closeBracket
|
|
1009
|
+
);
|
|
1010
|
+
if (outputPath) {
|
|
1011
|
+
const resolvedOutputPath = resolve(outputPath);
|
|
1012
|
+
await writeFile(resolvedOutputPath, formattedText);
|
|
1013
|
+
}
|
|
1014
|
+
process.stdout.write(formattedText);
|
|
1015
|
+
} catch (error) {
|
|
1016
|
+
_logger.error(`format: Failed to format text: ${error}`);
|
|
1017
|
+
return 1;
|
|
1018
|
+
}
|
|
1019
|
+
return 0;
|
|
1020
|
+
};
|
|
856
1021
|
const showDumpHelp = () => {
|
|
857
1022
|
console.info(`Usage: screw-up dump [options] [directory]
|
|
858
1023
|
|
|
@@ -1162,7 +1327,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1162
1327
|
}
|
|
1163
1328
|
};
|
|
1164
1329
|
const showHelp = async () => {
|
|
1165
|
-
const { author, license, repository_url, version, git_commit_hash } = await import("./packageMetadata-
|
|
1330
|
+
const { author, license, repository_url, version, git_commit_hash } = await import("./packageMetadata-DFL693kZ.js").then((n) => n.p);
|
|
1166
1331
|
console.info(`screw-up [${version}-${git_commit_hash}]
|
|
1167
1332
|
Easy package metadata inserter CLI
|
|
1168
1333
|
Copyright (c) ${author}
|
|
@@ -1172,6 +1337,7 @@ License: ${license}
|
|
|
1172
1337
|
Usage: screw-up <command> [options]
|
|
1173
1338
|
|
|
1174
1339
|
Commands:
|
|
1340
|
+
format [output] Format text by replacing metadata placeholders
|
|
1175
1341
|
dump [directory] Dump computed package.json as JSON
|
|
1176
1342
|
pack [directory] Pack the project into a tar archive
|
|
1177
1343
|
publish [directory|package.tgz] Publish the project
|
|
@@ -1180,6 +1346,7 @@ Options:
|
|
|
1180
1346
|
-h, --help Show help
|
|
1181
1347
|
|
|
1182
1348
|
Examples:
|
|
1349
|
+
screw-up format output.txt # Format stdin template and write to file
|
|
1183
1350
|
screw-up dump # Dump computed package.json as JSON
|
|
1184
1351
|
screw-up pack # Pack current directory
|
|
1185
1352
|
screw-up pack --pack-destination ./dist # Pack to specific output directory
|
|
@@ -1198,6 +1365,7 @@ const argOptionMap = /* @__PURE__ */ new Map([
|
|
|
1198
1365
|
"peer-deps-prefix"
|
|
1199
1366
|
])
|
|
1200
1367
|
],
|
|
1368
|
+
["format", /* @__PURE__ */ new Set(["input", "i", "bracket", "b", "inheritable-fields"])],
|
|
1201
1369
|
["publish", /* @__PURE__ */ new Set(["inheritable-fields", "peer-deps-prefix"])]
|
|
1202
1370
|
]);
|
|
1203
1371
|
const cliMain = async (args, logger2) => {
|
|
@@ -1207,6 +1375,8 @@ const cliMain = async (args, logger2) => {
|
|
|
1207
1375
|
return 1;
|
|
1208
1376
|
}
|
|
1209
1377
|
switch (parsedArgs.command) {
|
|
1378
|
+
case "format":
|
|
1379
|
+
return await formatCommand(parsedArgs, logger2);
|
|
1210
1380
|
case "dump":
|
|
1211
1381
|
return await dumpCommand(parsedArgs, logger2);
|
|
1212
1382
|
case "pack":
|