screw-up 1.13.0 → 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 +3 -3
- 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 +3 -3
- package/dist/internal.d.ts.map +1 -1
- package/dist/main.cjs +183 -9
- package/dist/main.cjs.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.js +184 -10
- package/dist/main.js.map +1 -1
- package/dist/{packageMetadata-B-SWvYlj.cjs → packageMetadata-BP1lkMwy.cjs} +28 -8
- package/dist/packageMetadata-BP1lkMwy.cjs.map +1 -0
- package/dist/{packageMetadata-CbtDrpYF.js → packageMetadata-DFL693kZ.js} +28 -8
- package/dist/packageMetadata-DFL693kZ.js.map +1 -0
- package/dist/types.d.ts +2 -2
- package/dist/vite-plugin.d.ts +2 -2
- package/package.json +6 -6
- package/dist/packageMetadata-B-SWvYlj.cjs.map +0 -1
- package/dist/packageMetadata-CbtDrpYF.js.map +0 -1
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
|
|
@@ -783,7 +783,7 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
783
783
|
await rm(baseTempDir, { recursive: true, force: true });
|
|
784
784
|
}
|
|
785
785
|
};
|
|
786
|
-
const getComputedPackageJsonObject = async (targetDir, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger2) => {
|
|
786
|
+
const getComputedPackageJsonObject = async (targetDir, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger2, ignoreNotExist = false) => {
|
|
787
787
|
if (!existsSync(targetDir)) {
|
|
788
788
|
return void 0;
|
|
789
789
|
}
|
|
@@ -792,7 +792,8 @@ const getComputedPackageJsonObject = async (targetDir, fetchGitMetadata, alwaysO
|
|
|
792
792
|
fetchGitMetadata,
|
|
793
793
|
alwaysOverrideVersionFromGit,
|
|
794
794
|
inheritableFields,
|
|
795
|
-
logger2
|
|
795
|
+
logger2,
|
|
796
|
+
ignoreNotExist
|
|
796
797
|
);
|
|
797
798
|
return result.metadata;
|
|
798
799
|
};
|
|
@@ -810,7 +811,7 @@ const parseArgs = (args, argOptionMap2) => {
|
|
|
810
811
|
result.options[optionName] = true;
|
|
811
812
|
} else {
|
|
812
813
|
const argOptions = argOptionMap2.get(result.command);
|
|
813
|
-
if (argOptions.has(optionName)) {
|
|
814
|
+
if (argOptions == null ? void 0 : argOptions.has(optionName)) {
|
|
814
815
|
i++;
|
|
815
816
|
result.options[optionName] = args[i];
|
|
816
817
|
} else {
|
|
@@ -820,7 +821,13 @@ const parseArgs = (args, argOptionMap2) => {
|
|
|
820
821
|
} else if (arg.startsWith("-")) {
|
|
821
822
|
const optionName = arg.slice(1);
|
|
822
823
|
if (optionName.length == 1) {
|
|
823
|
-
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
|
+
}
|
|
824
831
|
}
|
|
825
832
|
} else if (!result.command) {
|
|
826
833
|
result.command = arg;
|
|
@@ -852,6 +859,165 @@ const parseInheritableFields = (inheritableFieldsOption) => {
|
|
|
852
859
|
inheritableFieldsOption.split(",").map((field) => field.trim()).filter((field) => field.length > 0)
|
|
853
860
|
);
|
|
854
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
|
+
};
|
|
855
1021
|
const showDumpHelp = () => {
|
|
856
1022
|
console.info(`Usage: screw-up dump [options] [directory]
|
|
857
1023
|
|
|
@@ -864,6 +1030,7 @@ Options:
|
|
|
864
1030
|
--inheritable-fields <list> Comma-separated list of fields to inherit from parent
|
|
865
1031
|
--no-wds Do not check working directory status to increase version
|
|
866
1032
|
--no-git-version-override Do not override version from Git (use package.json version)
|
|
1033
|
+
-f, --force Allow dumping even if package.json does not exist
|
|
867
1034
|
-h, --help Show help for dump command
|
|
868
1035
|
`);
|
|
869
1036
|
};
|
|
@@ -876,6 +1043,7 @@ const dumpCommand = async (args, logger2) => {
|
|
|
876
1043
|
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
877
1044
|
const alwaysOverrideVersionFromGit = !args.options["no-git-version-override"];
|
|
878
1045
|
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
1046
|
+
const ignorePackageJsonNotExist = args.options["force"] || args.options["f"] ? true : false;
|
|
879
1047
|
const inheritableFields = parseInheritableFields(inheritableFieldsOption);
|
|
880
1048
|
const targetDir = resolve(directory != null ? directory : process.cwd());
|
|
881
1049
|
const _logger = {
|
|
@@ -898,7 +1066,8 @@ const dumpCommand = async (args, logger2) => {
|
|
|
898
1066
|
fetchGitMetadata,
|
|
899
1067
|
alwaysOverrideVersionFromGit,
|
|
900
1068
|
inheritableFields,
|
|
901
|
-
_logger
|
|
1069
|
+
_logger,
|
|
1070
|
+
ignorePackageJsonNotExist
|
|
902
1071
|
);
|
|
903
1072
|
if (computedPackageJson) {
|
|
904
1073
|
console.info(JSON.stringify(computedPackageJson, null, 2));
|
|
@@ -1158,7 +1327,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1158
1327
|
}
|
|
1159
1328
|
};
|
|
1160
1329
|
const showHelp = async () => {
|
|
1161
|
-
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);
|
|
1162
1331
|
console.info(`screw-up [${version}-${git_commit_hash}]
|
|
1163
1332
|
Easy package metadata inserter CLI
|
|
1164
1333
|
Copyright (c) ${author}
|
|
@@ -1168,6 +1337,7 @@ License: ${license}
|
|
|
1168
1337
|
Usage: screw-up <command> [options]
|
|
1169
1338
|
|
|
1170
1339
|
Commands:
|
|
1340
|
+
format [output] Format text by replacing metadata placeholders
|
|
1171
1341
|
dump [directory] Dump computed package.json as JSON
|
|
1172
1342
|
pack [directory] Pack the project into a tar archive
|
|
1173
1343
|
publish [directory|package.tgz] Publish the project
|
|
@@ -1176,6 +1346,7 @@ Options:
|
|
|
1176
1346
|
-h, --help Show help
|
|
1177
1347
|
|
|
1178
1348
|
Examples:
|
|
1349
|
+
screw-up format output.txt # Format stdin template and write to file
|
|
1179
1350
|
screw-up dump # Dump computed package.json as JSON
|
|
1180
1351
|
screw-up pack # Pack current directory
|
|
1181
1352
|
screw-up pack --pack-destination ./dist # Pack to specific output directory
|
|
@@ -1194,6 +1365,7 @@ const argOptionMap = /* @__PURE__ */ new Map([
|
|
|
1194
1365
|
"peer-deps-prefix"
|
|
1195
1366
|
])
|
|
1196
1367
|
],
|
|
1368
|
+
["format", /* @__PURE__ */ new Set(["input", "i", "bracket", "b", "inheritable-fields"])],
|
|
1197
1369
|
["publish", /* @__PURE__ */ new Set(["inheritable-fields", "peer-deps-prefix"])]
|
|
1198
1370
|
]);
|
|
1199
1371
|
const cliMain = async (args, logger2) => {
|
|
@@ -1203,6 +1375,8 @@ const cliMain = async (args, logger2) => {
|
|
|
1203
1375
|
return 1;
|
|
1204
1376
|
}
|
|
1205
1377
|
switch (parsedArgs.command) {
|
|
1378
|
+
case "format":
|
|
1379
|
+
return await formatCommand(parsedArgs, logger2);
|
|
1206
1380
|
case "dump":
|
|
1207
1381
|
return await dumpCommand(parsedArgs, logger2);
|
|
1208
1382
|
case "pack":
|