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