screw-up 1.17.0 → 1.19.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 +4 -0
- package/dist/analyzer.d.ts +2 -2
- package/dist/cli-internal.d.ts +10 -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 +33 -133
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +33 -133
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +2 -2
- package/dist/main.cjs +277 -14
- package/dist/main.cjs.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.js +279 -16
- package/dist/main.js.map +1 -1
- package/dist/metadata-file.d.ts +22 -0
- package/dist/metadata-file.d.ts.map +1 -0
- package/dist/{packageMetadata-DdvLnmBC.cjs → packageMetadata-DXwK6bb8.cjs} +73 -5
- package/dist/packageMetadata-DXwK6bb8.cjs.map +1 -0
- package/dist/{packageMetadata-DgMEVI8P.js → packageMetadata-DlkAQe0j.js} +79 -11
- package/dist/packageMetadata-DlkAQe0j.js.map +1 -0
- package/dist/types.d.ts +2 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/vite-plugin.d.ts +2 -2
- package/dist/vite-plugin.d.ts.map +1 -1
- package/images/git-versioning.png +0 -0
- package/package.json +10 -9
- package/dist/packageMetadata-DdvLnmBC.cjs.map +0 -1
- package/dist/packageMetadata-DgMEVI8P.js.map +0 -1
package/dist/main.cjs
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
/*!
|
|
4
4
|
* name: screw-up
|
|
5
|
-
* version: 1.
|
|
5
|
+
* version: 1.19.0
|
|
6
6
|
* description: Simply package metadata inserter on Vite plugin
|
|
7
7
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
8
8
|
* license: MIT
|
|
9
9
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
10
|
-
* git.commit.hash:
|
|
10
|
+
* git.commit.hash: b86321865390ff8dc11c118f46a8e0ba8b67aa9c
|
|
11
11
|
*/
|
|
12
12
|
const path = require("path");
|
|
13
13
|
const fs$1 = require("fs");
|
|
@@ -17,7 +17,8 @@ const os = require("os");
|
|
|
17
17
|
const stream = require("stream");
|
|
18
18
|
const zlib = require("zlib");
|
|
19
19
|
const promises = require("stream/promises");
|
|
20
|
-
const
|
|
20
|
+
const glob = require("glob");
|
|
21
|
+
const packageMetadata = require("./packageMetadata-DXwK6bb8.cjs");
|
|
21
22
|
/*!
|
|
22
23
|
* name: tar-vern
|
|
23
24
|
* version: 1.3.0
|
|
@@ -643,6 +644,118 @@ const createTarExtractor = async function* (readable, compressionType, signal) {
|
|
|
643
644
|
}
|
|
644
645
|
}
|
|
645
646
|
};
|
|
647
|
+
const readPackageJsonFile = async (packageJsonPath) => {
|
|
648
|
+
const content = await fs.readFile(packageJsonPath, "utf-8");
|
|
649
|
+
return packageMetadata.lib.parse(content);
|
|
650
|
+
};
|
|
651
|
+
const getFilesArray = (packageJson) => {
|
|
652
|
+
if (!packageJson || !Array.isArray(packageJson.files)) {
|
|
653
|
+
return void 0;
|
|
654
|
+
}
|
|
655
|
+
const entries = packageJson.files.filter(
|
|
656
|
+
(entry) => typeof entry === "string"
|
|
657
|
+
);
|
|
658
|
+
return entries.length > 0 ? entries : void 0;
|
|
659
|
+
};
|
|
660
|
+
const isGlobPattern = (pattern) => /[*?[\]{}()]/.test(pattern);
|
|
661
|
+
const normalizeFilesPattern = (pattern, cwd) => {
|
|
662
|
+
const trimmed = pattern.trim();
|
|
663
|
+
if (!trimmed) {
|
|
664
|
+
return void 0;
|
|
665
|
+
}
|
|
666
|
+
const isNegated = trimmed.startsWith("!");
|
|
667
|
+
const raw = isNegated ? trimmed.slice(1) : trimmed;
|
|
668
|
+
if (!raw) {
|
|
669
|
+
return void 0;
|
|
670
|
+
}
|
|
671
|
+
if (isGlobPattern(raw)) {
|
|
672
|
+
return trimmed;
|
|
673
|
+
}
|
|
674
|
+
const fullPath = path.join(cwd, raw);
|
|
675
|
+
if (fs$1.existsSync(fullPath) && fs$1.statSync(fullPath).isDirectory()) {
|
|
676
|
+
const dirPattern = `${raw.replace(/\/+$/, "")}/**`;
|
|
677
|
+
return isNegated ? `!${dirPattern}` : dirPattern;
|
|
678
|
+
}
|
|
679
|
+
return trimmed;
|
|
680
|
+
};
|
|
681
|
+
const isSafeRelativePath = (value) => {
|
|
682
|
+
if (path.isAbsolute(value)) {
|
|
683
|
+
return false;
|
|
684
|
+
}
|
|
685
|
+
const segments = value.split(/[\\/]+/);
|
|
686
|
+
if (segments.some((segment) => segment === "..")) {
|
|
687
|
+
return false;
|
|
688
|
+
}
|
|
689
|
+
return true;
|
|
690
|
+
};
|
|
691
|
+
const expandFilesPatterns = async (patterns, cwd) => {
|
|
692
|
+
const includePatterns = [];
|
|
693
|
+
const excludePatterns = [];
|
|
694
|
+
for (const pattern of patterns) {
|
|
695
|
+
const normalized = normalizeFilesPattern(pattern, cwd);
|
|
696
|
+
if (!normalized) {
|
|
697
|
+
continue;
|
|
698
|
+
}
|
|
699
|
+
if (normalized.startsWith("!")) {
|
|
700
|
+
excludePatterns.push(normalized.slice(1));
|
|
701
|
+
} else {
|
|
702
|
+
includePatterns.push(normalized);
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
const result = /* @__PURE__ */ new Set();
|
|
706
|
+
for (const pattern of includePatterns) {
|
|
707
|
+
const matches = await glob.glob(pattern, { cwd, nodir: true });
|
|
708
|
+
for (const match of matches) {
|
|
709
|
+
if (isSafeRelativePath(match)) {
|
|
710
|
+
result.add(match);
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
for (const pattern of excludePatterns) {
|
|
715
|
+
const matches = await glob.glob(pattern, { cwd, nodir: true });
|
|
716
|
+
for (const match of matches) {
|
|
717
|
+
result.delete(match);
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
return result;
|
|
721
|
+
};
|
|
722
|
+
const mergeFilesPatterns = (parentFiles, childFiles) => {
|
|
723
|
+
const merged = [];
|
|
724
|
+
if (parentFiles == null ? void 0 : parentFiles.length) {
|
|
725
|
+
merged.push(...parentFiles);
|
|
726
|
+
}
|
|
727
|
+
if (childFiles == null ? void 0 : childFiles.length) {
|
|
728
|
+
merged.push(...childFiles);
|
|
729
|
+
}
|
|
730
|
+
return merged.length > 0 ? merged : void 0;
|
|
731
|
+
};
|
|
732
|
+
const resolveWorkspaceFilesMerge = async (targetDir, logger2) => {
|
|
733
|
+
const workspaceRoot = await packageMetadata.findWorkspaceRoot(targetDir, logger2);
|
|
734
|
+
if (!workspaceRoot) {
|
|
735
|
+
return void 0;
|
|
736
|
+
}
|
|
737
|
+
const rootPackagePath = path.join(workspaceRoot, "package.json");
|
|
738
|
+
const targetPackagePath = path.join(targetDir, "package.json");
|
|
739
|
+
if (path.resolve(rootPackagePath) === path.resolve(targetPackagePath)) {
|
|
740
|
+
return void 0;
|
|
741
|
+
}
|
|
742
|
+
const [rootPackageJson, childPackageJson] = await Promise.all([
|
|
743
|
+
readPackageJsonFile(rootPackagePath),
|
|
744
|
+
readPackageJsonFile(targetPackagePath)
|
|
745
|
+
]);
|
|
746
|
+
const parentFiles = getFilesArray(rootPackageJson);
|
|
747
|
+
const childFiles = getFilesArray(childPackageJson);
|
|
748
|
+
const mergedFiles = mergeFilesPatterns(parentFiles, childFiles);
|
|
749
|
+
if (!parentFiles && !childFiles) {
|
|
750
|
+
return void 0;
|
|
751
|
+
}
|
|
752
|
+
return {
|
|
753
|
+
workspaceRoot,
|
|
754
|
+
parentFiles,
|
|
755
|
+
childFiles,
|
|
756
|
+
mergedFiles
|
|
757
|
+
};
|
|
758
|
+
};
|
|
646
759
|
const runNpmPack = async (targetDir, packDestDir) => {
|
|
647
760
|
return new Promise((res, rej) => {
|
|
648
761
|
const npmProcess = child_process.spawn(
|
|
@@ -688,8 +801,8 @@ stdout: ${stdout}`));
|
|
|
688
801
|
});
|
|
689
802
|
});
|
|
690
803
|
};
|
|
691
|
-
const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, readmeReplacementPath, replacePeerDepsWildcards, peerDepsVersionPrefix, logger2) => {
|
|
692
|
-
var _a, _b, _c;
|
|
804
|
+
const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, readmeReplacementPath, replacePeerDepsWildcards, peerDepsVersionPrefix, logger2, mergeFiles = true) => {
|
|
805
|
+
var _a, _b, _c, _d;
|
|
693
806
|
if (!fs$1.existsSync(targetDir)) {
|
|
694
807
|
throw new Error(`Target directory is not found: ${targetDir}`);
|
|
695
808
|
}
|
|
@@ -751,6 +864,11 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
751
864
|
}
|
|
752
865
|
}
|
|
753
866
|
}
|
|
867
|
+
const filesMergeEnabled = mergeFiles && inheritableFields.has("files");
|
|
868
|
+
const workspaceFilesMerge = filesMergeEnabled ? await resolveWorkspaceFilesMerge(targetDir, logger2) : void 0;
|
|
869
|
+
if (filesMergeEnabled && (workspaceFilesMerge == null ? void 0 : workspaceFilesMerge.mergedFiles)) {
|
|
870
|
+
resolvedPackageJson.files = workspaceFilesMerge.mergedFiles;
|
|
871
|
+
}
|
|
754
872
|
const baseTempDir = await fs.mkdtemp(path.join(os.tmpdir(), "screw-up-npm-pack-"));
|
|
755
873
|
await fs.mkdir(baseTempDir, { recursive: true });
|
|
756
874
|
try {
|
|
@@ -759,7 +877,25 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
759
877
|
await fs.mkdir(stagingDir, { recursive: true });
|
|
760
878
|
const stream2 = fs$1.createReadStream(npmTarballPath);
|
|
761
879
|
await extractTo(createTarExtractor(stream2, "gzip"), stagingDir);
|
|
762
|
-
const
|
|
880
|
+
const packageRoot = path.join(stagingDir, "package");
|
|
881
|
+
if (filesMergeEnabled && ((_a = workspaceFilesMerge == null ? void 0 : workspaceFilesMerge.parentFiles) == null ? void 0 : _a.length)) {
|
|
882
|
+
const parentFiles = await expandFilesPatterns(
|
|
883
|
+
workspaceFilesMerge.parentFiles,
|
|
884
|
+
workspaceFilesMerge.workspaceRoot
|
|
885
|
+
);
|
|
886
|
+
for (const parentFile of parentFiles) {
|
|
887
|
+
const destPath = path.join(packageRoot, parentFile);
|
|
888
|
+
if (fs$1.existsSync(destPath)) {
|
|
889
|
+
continue;
|
|
890
|
+
}
|
|
891
|
+
await fs.mkdir(path.dirname(destPath), { recursive: true });
|
|
892
|
+
await fs.copyFile(
|
|
893
|
+
path.join(workspaceFilesMerge.workspaceRoot, parentFile),
|
|
894
|
+
destPath
|
|
895
|
+
);
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
const packageJsonPath = path.join(packageRoot, "package.json");
|
|
763
899
|
if (fs$1.existsSync(packageJsonPath)) {
|
|
764
900
|
await fs.writeFile(
|
|
765
901
|
packageJsonPath,
|
|
@@ -767,10 +903,10 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
767
903
|
);
|
|
768
904
|
}
|
|
769
905
|
if (readmeReplacementCandidatePath) {
|
|
770
|
-
const readmeDestPath = path.join(
|
|
906
|
+
const readmeDestPath = path.join(packageRoot, "README.md");
|
|
771
907
|
await fs.copyFile(readmeReplacementCandidatePath, readmeDestPath);
|
|
772
908
|
}
|
|
773
|
-
const outputFileName = `${(
|
|
909
|
+
const outputFileName = `${(_c = (_b = resolvedPackageJson == null ? void 0 : resolvedPackageJson.name) == null ? void 0 : _b.replace("/", "-")) != null ? _c : "package"}-${(_d = resolvedPackageJson == null ? void 0 : resolvedPackageJson.version) != null ? _d : "0.0.0"}.tgz`;
|
|
774
910
|
await fs.mkdir(outputDir, { recursive: true });
|
|
775
911
|
const outputFile = path.join(outputDir, outputFileName);
|
|
776
912
|
const itemGenerator = createEntryItemGenerator(stagingDir);
|
|
@@ -847,8 +983,18 @@ const defaultInheritableFields = /* @__PURE__ */ new Set([
|
|
|
847
983
|
"keywords",
|
|
848
984
|
"homepage",
|
|
849
985
|
"bugs",
|
|
850
|
-
"readme"
|
|
986
|
+
"readme",
|
|
987
|
+
"files"
|
|
851
988
|
]);
|
|
989
|
+
const defaultOutputMetadataKeys = [
|
|
990
|
+
"name",
|
|
991
|
+
"version",
|
|
992
|
+
"description",
|
|
993
|
+
"author",
|
|
994
|
+
"license",
|
|
995
|
+
"repository.url",
|
|
996
|
+
"git.commit.hash"
|
|
997
|
+
];
|
|
852
998
|
const parseInheritableFields = (inheritableFieldsOption) => {
|
|
853
999
|
if (typeof inheritableFieldsOption !== "string") {
|
|
854
1000
|
return defaultInheritableFields;
|
|
@@ -860,6 +1006,15 @@ const parseInheritableFields = (inheritableFieldsOption) => {
|
|
|
860
1006
|
inheritableFieldsOption.split(",").map((field) => field.trim()).filter((field) => field.length > 0)
|
|
861
1007
|
);
|
|
862
1008
|
};
|
|
1009
|
+
const parseOutputMetadataKeys = (outputMetadataKeysOption) => {
|
|
1010
|
+
if (typeof outputMetadataKeysOption !== "string") {
|
|
1011
|
+
return defaultOutputMetadataKeys;
|
|
1012
|
+
}
|
|
1013
|
+
if (!outputMetadataKeysOption.trim()) {
|
|
1014
|
+
return [];
|
|
1015
|
+
}
|
|
1016
|
+
return outputMetadataKeysOption.split(",").map((key) => key.trim()).filter((key) => key.length > 0);
|
|
1017
|
+
};
|
|
863
1018
|
const readInputText = async (inputPath) => {
|
|
864
1019
|
if (inputPath) {
|
|
865
1020
|
const resolvedPath = path.resolve(inputPath);
|
|
@@ -1031,6 +1186,7 @@ Options:
|
|
|
1031
1186
|
--inheritable-fields <list> Comma-separated list of fields to inherit from parent
|
|
1032
1187
|
--no-wds Do not check working directory status to increase version
|
|
1033
1188
|
--no-git-version-override Do not override version from Git (use package.json version)
|
|
1189
|
+
--no-merge-files Do not merge files from parent package.json
|
|
1034
1190
|
-f, --force Allow dumping even if package.json does not exist
|
|
1035
1191
|
-h, --help Show help for dump command
|
|
1036
1192
|
`);
|
|
@@ -1044,6 +1200,7 @@ const dumpCommand = async (args, logger2) => {
|
|
|
1044
1200
|
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
1045
1201
|
const alwaysOverrideVersionFromGit = !args.options["no-git-version-override"];
|
|
1046
1202
|
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
1203
|
+
const mergeFiles = !args.options["no-merge-files"];
|
|
1047
1204
|
const ignorePackageJsonNotExist = args.options["force"] || args.options["f"] ? true : false;
|
|
1048
1205
|
const inheritableFields = parseInheritableFields(inheritableFieldsOption);
|
|
1049
1206
|
const targetDir = path.resolve(directory != null ? directory : process.cwd());
|
|
@@ -1071,6 +1228,15 @@ const dumpCommand = async (args, logger2) => {
|
|
|
1071
1228
|
ignorePackageJsonNotExist
|
|
1072
1229
|
);
|
|
1073
1230
|
if (computedPackageJson) {
|
|
1231
|
+
if (mergeFiles && inheritableFields.has("files") && fs$1.existsSync(path.join(targetDir, "package.json"))) {
|
|
1232
|
+
const workspaceFilesMerge = await resolveWorkspaceFilesMerge(
|
|
1233
|
+
targetDir,
|
|
1234
|
+
_logger
|
|
1235
|
+
);
|
|
1236
|
+
if (workspaceFilesMerge == null ? void 0 : workspaceFilesMerge.mergedFiles) {
|
|
1237
|
+
computedPackageJson.files = workspaceFilesMerge.mergedFiles;
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
1074
1240
|
console.info(JSON.stringify(computedPackageJson, null, 2));
|
|
1075
1241
|
} else {
|
|
1076
1242
|
_logger.error(`dump: Unable to read package.json from: ${targetDir}`);
|
|
@@ -1082,6 +1248,92 @@ const dumpCommand = async (args, logger2) => {
|
|
|
1082
1248
|
}
|
|
1083
1249
|
return 0;
|
|
1084
1250
|
};
|
|
1251
|
+
const showMetadataHelp = () => {
|
|
1252
|
+
console.info(`Usage: screw-up metadata [options] [directory]
|
|
1253
|
+
|
|
1254
|
+
Generate TypeScript metadata file from package metadata
|
|
1255
|
+
|
|
1256
|
+
Arguments:
|
|
1257
|
+
directory Directory to resolve metadata from (default: current directory)
|
|
1258
|
+
|
|
1259
|
+
Options:
|
|
1260
|
+
--output-metadata-file-path <path> Output path for metadata file (default: src/generated/packageMetadata.ts)
|
|
1261
|
+
--output-metadata-keys <list> Comma-separated list of metadata keys to include
|
|
1262
|
+
--no-wds Do not check working directory status to increase version
|
|
1263
|
+
--no-git-version-override Do not override version from Git (use package.json version)
|
|
1264
|
+
-h, --help Show help for metadata command
|
|
1265
|
+
`);
|
|
1266
|
+
};
|
|
1267
|
+
const metadataCommand = async (args, logger2) => {
|
|
1268
|
+
if (args.options.help || args.options.h) {
|
|
1269
|
+
showMetadataHelp();
|
|
1270
|
+
return 1;
|
|
1271
|
+
}
|
|
1272
|
+
const directory = args.positional[0];
|
|
1273
|
+
const outputMetadataFilePathOption = args.options["output-metadata-file-path"];
|
|
1274
|
+
const outputMetadataKeysOption = args.options["output-metadata-keys"];
|
|
1275
|
+
const alwaysOverrideVersionFromGit = !args.options["no-git-version-override"];
|
|
1276
|
+
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
1277
|
+
const outputMetadataFilePath = typeof outputMetadataFilePathOption === "string" && outputMetadataFilePathOption.trim() ? outputMetadataFilePathOption : "src/generated/packageMetadata.ts";
|
|
1278
|
+
const outputMetadataKeys = parseOutputMetadataKeys(outputMetadataKeysOption);
|
|
1279
|
+
const targetDir = path.resolve(directory != null ? directory : process.cwd());
|
|
1280
|
+
try {
|
|
1281
|
+
const fetchGitMetadata = packageMetadata.getFetchGitMetadata(
|
|
1282
|
+
targetDir,
|
|
1283
|
+
checkWorkingDirectoryStatus,
|
|
1284
|
+
logger2
|
|
1285
|
+
);
|
|
1286
|
+
const result = await packageMetadata.resolvePackageMetadata(
|
|
1287
|
+
targetDir,
|
|
1288
|
+
fetchGitMetadata,
|
|
1289
|
+
alwaysOverrideVersionFromGit,
|
|
1290
|
+
logger2
|
|
1291
|
+
);
|
|
1292
|
+
const metadataSourceContent = packageMetadata.generateMetadataFileContent(
|
|
1293
|
+
result.metadata,
|
|
1294
|
+
outputMetadataKeys
|
|
1295
|
+
);
|
|
1296
|
+
const metadataSourcePath = path.join(targetDir, outputMetadataFilePath);
|
|
1297
|
+
const metadataWritten = await packageMetadata.writeFileIfChanged(
|
|
1298
|
+
metadataSourcePath,
|
|
1299
|
+
metadataSourceContent,
|
|
1300
|
+
"metadata source file",
|
|
1301
|
+
logger2
|
|
1302
|
+
);
|
|
1303
|
+
if (fs$1.existsSync(metadataSourcePath)) {
|
|
1304
|
+
const gitignoreWritten = await packageMetadata.ensureMetadataGitignore(
|
|
1305
|
+
metadataSourcePath,
|
|
1306
|
+
logger2
|
|
1307
|
+
);
|
|
1308
|
+
if (gitignoreWritten) {
|
|
1309
|
+
logger2.info(
|
|
1310
|
+
`metadata: .gitignore is generated: ${path.join(
|
|
1311
|
+
path.dirname(outputMetadataFilePath),
|
|
1312
|
+
".gitignore"
|
|
1313
|
+
)}`
|
|
1314
|
+
);
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
if (metadataWritten) {
|
|
1318
|
+
logger2.info(
|
|
1319
|
+
`metadata: Metadata source file is generated: ${outputMetadataFilePath}`
|
|
1320
|
+
);
|
|
1321
|
+
} else if (fs$1.existsSync(metadataSourcePath)) {
|
|
1322
|
+
logger2.info(
|
|
1323
|
+
`metadata: Metadata source file is unchanged: ${outputMetadataFilePath}`
|
|
1324
|
+
);
|
|
1325
|
+
} else {
|
|
1326
|
+
logger2.error(
|
|
1327
|
+
`metadata: Failed to write metadata file: ${outputMetadataFilePath}`
|
|
1328
|
+
);
|
|
1329
|
+
return 1;
|
|
1330
|
+
}
|
|
1331
|
+
} catch (error) {
|
|
1332
|
+
logger2.error(`metadata: Failed to generate metadata file: ${error}`);
|
|
1333
|
+
return 1;
|
|
1334
|
+
}
|
|
1335
|
+
return 0;
|
|
1336
|
+
};
|
|
1085
1337
|
const showPackHelp = () => {
|
|
1086
1338
|
console.info(`Usage: screw-up pack [options] [directory]
|
|
1087
1339
|
|
|
@@ -1096,6 +1348,7 @@ Options:
|
|
|
1096
1348
|
--inheritable-fields <list> Comma-separated list of fields to inherit from parent
|
|
1097
1349
|
--no-wds Do not check working directory status to increase version
|
|
1098
1350
|
--no-git-version-override Do not override version from Git (use package.json version)
|
|
1351
|
+
--no-merge-files Do not merge files from parent package.json
|
|
1099
1352
|
--no-replace-peer-deps Disable replacing "*" in peerDependencies with actual versions
|
|
1100
1353
|
--peer-deps-prefix <prefix> Version prefix for replaced peerDependencies (default: "^")
|
|
1101
1354
|
--verbose Print verbose log
|
|
@@ -1114,6 +1367,7 @@ const packCommand = async (args, logger2) => {
|
|
|
1114
1367
|
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
1115
1368
|
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
1116
1369
|
const alwaysOverrideVersionFromGit = !args.options["no-git-version-override"];
|
|
1370
|
+
const mergeFiles = !args.options["no-merge-files"];
|
|
1117
1371
|
const replacePeerDepsWildcards = !args.options["no-replace-peer-deps"];
|
|
1118
1372
|
const peerDepsVersionPrefix = (_a = args.options["peer-deps-prefix"]) != null ? _a : "^";
|
|
1119
1373
|
const verbose = args.options["verbose"] ? true : false;
|
|
@@ -1134,7 +1388,8 @@ const packCommand = async (args, logger2) => {
|
|
|
1134
1388
|
readmeReplacementPath,
|
|
1135
1389
|
replacePeerDepsWildcards,
|
|
1136
1390
|
peerDepsVersionPrefix,
|
|
1137
|
-
logger2
|
|
1391
|
+
logger2,
|
|
1392
|
+
mergeFiles
|
|
1138
1393
|
);
|
|
1139
1394
|
if (result) {
|
|
1140
1395
|
if (verbose) {
|
|
@@ -1216,6 +1471,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1216
1471
|
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
1217
1472
|
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
1218
1473
|
const alwaysOverrideVersionFromGit = !args.options["no-git-version-override"];
|
|
1474
|
+
const mergeFiles = !args.options["no-merge-files"];
|
|
1219
1475
|
const replacePeerDepsWildcards = !args.options["no-replace-peer-deps"];
|
|
1220
1476
|
const peerDepsVersionPrefix = (_a = args.options["peer-deps-prefix"]) != null ? _a : "^";
|
|
1221
1477
|
const verbose = args.options["verbose"] ? true : false;
|
|
@@ -1225,7 +1481,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1225
1481
|
for (let i = 0; i < args.argv.length; i++) {
|
|
1226
1482
|
const arg = args.argv[i];
|
|
1227
1483
|
if (arg === "publish") ;
|
|
1228
|
-
else if (arg === "--help" || arg === "--verbose" || arg === "-h" || arg === "--no-wds" || arg === "--no-git-version-override" || arg === "--no-replace-peer-deps") ;
|
|
1484
|
+
else if (arg === "--help" || arg === "--verbose" || arg === "-h" || arg === "--no-wds" || arg === "--no-git-version-override" || arg === "--no-merge-files" || arg === "--no-replace-peer-deps") ;
|
|
1229
1485
|
else if (arg === "--readme" || arg === "--inheritable-fields" || arg === "--peer-deps-prefix") {
|
|
1230
1486
|
i++;
|
|
1231
1487
|
} else {
|
|
@@ -1249,7 +1505,8 @@ const publishCommand = async (args, logger2) => {
|
|
|
1249
1505
|
readmeReplacementPath,
|
|
1250
1506
|
replacePeerDepsWildcards,
|
|
1251
1507
|
peerDepsVersionPrefix,
|
|
1252
|
-
logger2
|
|
1508
|
+
logger2,
|
|
1509
|
+
mergeFiles
|
|
1253
1510
|
);
|
|
1254
1511
|
if (result == null ? void 0 : result.metadata) {
|
|
1255
1512
|
if (verbose) {
|
|
@@ -1288,7 +1545,8 @@ const publishCommand = async (args, logger2) => {
|
|
|
1288
1545
|
readmeReplacementPath,
|
|
1289
1546
|
replacePeerDepsWildcards,
|
|
1290
1547
|
peerDepsVersionPrefix,
|
|
1291
|
-
logger2
|
|
1548
|
+
logger2,
|
|
1549
|
+
mergeFiles
|
|
1292
1550
|
);
|
|
1293
1551
|
if (result == null ? void 0 : result.metadata) {
|
|
1294
1552
|
if (verbose) {
|
|
@@ -1328,7 +1586,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1328
1586
|
}
|
|
1329
1587
|
};
|
|
1330
1588
|
const showHelp = async () => {
|
|
1331
|
-
const { author, license, repository_url, version, git_commit_hash } = await Promise.resolve().then(() => require("./packageMetadata-
|
|
1589
|
+
const { author, license, repository_url, version, git_commit_hash } = await Promise.resolve().then(() => require("./packageMetadata-DXwK6bb8.cjs")).then((n) => n.packageMetadata);
|
|
1332
1590
|
console.info(`screw-up [${version}-${git_commit_hash}]
|
|
1333
1591
|
Easy package metadata inserter CLI
|
|
1334
1592
|
Copyright (c) ${author}
|
|
@@ -1340,6 +1598,7 @@ Usage: screw-up <command> [options]
|
|
|
1340
1598
|
Commands:
|
|
1341
1599
|
format [output] Format text by replacing metadata placeholders
|
|
1342
1600
|
dump [directory] Dump computed package.json as JSON
|
|
1601
|
+
metadata [directory] Generate TypeScript metadata file
|
|
1343
1602
|
pack [directory] Pack the project into a tar archive
|
|
1344
1603
|
publish [directory|package.tgz] Publish the project
|
|
1345
1604
|
|
|
@@ -1349,6 +1608,7 @@ Options:
|
|
|
1349
1608
|
Examples:
|
|
1350
1609
|
screw-up format output.txt # Format stdin template and write to file
|
|
1351
1610
|
screw-up dump # Dump computed package.json as JSON
|
|
1611
|
+
screw-up metadata # Generate metadata file
|
|
1352
1612
|
screw-up pack # Pack current directory
|
|
1353
1613
|
screw-up pack --pack-destination ./dist # Pack to specific output directory
|
|
1354
1614
|
screw-up publish # Publish current directory
|
|
@@ -1357,6 +1617,7 @@ Examples:
|
|
|
1357
1617
|
};
|
|
1358
1618
|
const argOptionMap = /* @__PURE__ */ new Map([
|
|
1359
1619
|
["dump", /* @__PURE__ */ new Set(["inheritable-fields"])],
|
|
1620
|
+
["metadata", /* @__PURE__ */ new Set(["output-metadata-file-path", "output-metadata-keys"])],
|
|
1360
1621
|
[
|
|
1361
1622
|
"pack",
|
|
1362
1623
|
/* @__PURE__ */ new Set([
|
|
@@ -1380,6 +1641,8 @@ const cliMain = async (args, logger2) => {
|
|
|
1380
1641
|
return await formatCommand(parsedArgs, logger2);
|
|
1381
1642
|
case "dump":
|
|
1382
1643
|
return await dumpCommand(parsedArgs, logger2);
|
|
1644
|
+
case "metadata":
|
|
1645
|
+
return await metadataCommand(parsedArgs, logger2);
|
|
1383
1646
|
case "pack":
|
|
1384
1647
|
return await packCommand(parsedArgs, logger2);
|
|
1385
1648
|
case "publish":
|