opkg 0.5.0 → 0.6.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 +49 -8
- package/dist/commands/add.js +11 -276
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/init.js +73 -145
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.js +26 -668
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/pack.js +10 -137
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/push.js +14 -8
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/save.js +12 -167
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/status.js +2 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/uninstall.js +5 -5
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/constants/index.js +18 -45
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/workspace.js +9 -0
- package/dist/constants/workspace.js.map +1 -0
- package/dist/core/add/add-conflict-handler.js +68 -0
- package/dist/core/add/add-conflict-handler.js.map +1 -0
- package/dist/core/add/add-pipeline.js +137 -0
- package/dist/core/add/add-pipeline.js.map +1 -0
- package/dist/core/add/package-index-updater.js +62 -33
- package/dist/core/add/package-index-updater.js.map +1 -1
- package/dist/core/add/platform-path-transformer.js +47 -0
- package/dist/core/add/platform-path-transformer.js.map +1 -0
- package/dist/core/add/source-collector.js +57 -0
- package/dist/core/add/source-collector.js.map +1 -0
- package/dist/core/dependency-resolver.js +3 -1
- package/dist/core/dependency-resolver.js.map +1 -1
- package/dist/core/directory.js +2 -2
- package/dist/core/directory.js.map +1 -1
- package/dist/core/discovery/file-discovery.js +55 -54
- package/dist/core/discovery/file-discovery.js.map +1 -1
- package/dist/core/discovery/platform-files-discovery.js +32 -17
- package/dist/core/discovery/platform-files-discovery.js.map +1 -1
- package/dist/core/install/bulk-install-pipeline.js +199 -0
- package/dist/core/install/bulk-install-pipeline.js.map +1 -0
- package/dist/core/install/canonical-plan.js +123 -0
- package/dist/core/install/canonical-plan.js.map +1 -0
- package/dist/core/install/dry-run.js +2 -2
- package/dist/core/install/dry-run.js.map +1 -1
- package/dist/core/install/index.js +3 -0
- package/dist/core/install/index.js.map +1 -0
- package/dist/core/install/install-errors.js +41 -0
- package/dist/core/install/install-errors.js.map +1 -0
- package/dist/core/install/install-flow.js +2 -5
- package/dist/core/install/install-flow.js.map +1 -1
- package/dist/core/install/install-pipeline.js +228 -0
- package/dist/core/install/install-pipeline.js.map +1 -0
- package/dist/core/install/install-reporting.js +99 -0
- package/dist/core/install/install-reporting.js.map +1 -0
- package/dist/core/install/platform-resolution.js +6 -6
- package/dist/core/install/platform-resolution.js.map +1 -1
- package/dist/core/install/remote-flow.js +67 -1
- package/dist/core/install/remote-flow.js.map +1 -1
- package/dist/core/openpackage.js +16 -8
- package/dist/core/openpackage.js.map +1 -1
- package/dist/core/package-context.js +246 -0
- package/dist/core/package-context.js.map +1 -0
- package/dist/core/package.js +3 -2
- package/dist/core/package.js.map +1 -1
- package/dist/core/platforms.js +126 -217
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/registry/registry-rename.js +2 -1
- package/dist/core/registry/registry-rename.js.map +1 -1
- package/dist/core/registry.js +10 -3
- package/dist/core/registry.js.map +1 -1
- package/dist/core/remote-pull.js +2 -1
- package/dist/core/remote-pull.js.map +1 -1
- package/dist/core/save/constants.js +4 -0
- package/dist/core/save/constants.js.map +1 -1
- package/dist/core/save/name-resolution.js +31 -0
- package/dist/core/save/name-resolution.js.map +1 -0
- package/dist/core/save/package-detection.js +147 -0
- package/dist/core/save/package-detection.js.map +1 -0
- package/dist/core/save/package-saver.js +46 -43
- package/dist/core/save/package-saver.js.map +1 -1
- package/dist/core/save/package-yml-generator.js +50 -71
- package/dist/core/save/package-yml-generator.js.map +1 -1
- package/dist/core/save/root-save-candidates.js.map +1 -1
- package/dist/core/save/save-candidate-loader.js +89 -0
- package/dist/core/save/save-candidate-loader.js.map +1 -0
- package/dist/core/save/save-conflict-resolution.js +72 -410
- package/dist/core/save/save-conflict-resolution.js.map +1 -1
- package/dist/core/save/save-conflict-resolver.js +277 -0
- package/dist/core/save/save-conflict-resolver.js.map +1 -0
- package/dist/core/save/save-pipeline.js +151 -0
- package/dist/core/save/save-pipeline.js.map +1 -0
- package/dist/core/save/save-types.js +2 -0
- package/dist/core/save/save-types.js.map +1 -0
- package/dist/core/save/save-yml-resolution.js +77 -39
- package/dist/core/save/save-yml-resolution.js.map +1 -1
- package/dist/core/save/workspace-rename.js +6 -6
- package/dist/core/save/workspace-rename.js.map +1 -1
- package/dist/core/scoping/package-scoping.js +13 -1
- package/dist/core/scoping/package-scoping.js.map +1 -1
- package/dist/core/status/status-file-discovery.js +12 -30
- package/dist/core/status/status-file-discovery.js.map +1 -1
- package/dist/core/sync/platform-sync.js +7 -4
- package/dist/core/sync/platform-sync.js.map +1 -1
- package/dist/core/sync/root-files-sync.js +59 -1
- package/dist/core/sync/root-files-sync.js.map +1 -1
- package/dist/core/uninstall/uninstall-file-discovery.js +1 -2
- package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/file-processing.js +5 -58
- package/dist/utils/file-processing.js.map +1 -1
- package/dist/utils/index-based-installer.js +15 -33
- package/dist/utils/index-based-installer.js.map +1 -1
- package/dist/utils/install-file-discovery.js +3 -3
- package/dist/utils/install-file-discovery.js.map +1 -1
- package/dist/utils/install-orchestrator.js +21 -21
- package/dist/utils/install-orchestrator.js.map +1 -1
- package/dist/utils/jsonc.js +44 -0
- package/dist/utils/jsonc.js.map +1 -0
- package/dist/utils/package-copy.js +199 -0
- package/dist/utils/package-copy.js.map +1 -0
- package/dist/utils/package-filters.js +125 -0
- package/dist/utils/package-filters.js.map +1 -0
- package/dist/utils/package-index-yml.js +15 -10
- package/dist/utils/package-index-yml.js.map +1 -1
- package/dist/utils/package-installation.js +4 -113
- package/dist/utils/package-installation.js.map +1 -1
- package/dist/utils/package-local-files.js +2 -35
- package/dist/utils/package-local-files.js.map +1 -1
- package/dist/utils/package-management.js +59 -37
- package/dist/utils/package-management.js.map +1 -1
- package/dist/utils/package-yml.js +24 -0
- package/dist/utils/package-yml.js.map +1 -1
- package/dist/utils/path-normalization.js +8 -53
- package/dist/utils/path-normalization.js.map +1 -1
- package/dist/utils/paths.js +17 -9
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/platform-file.js +16 -59
- package/dist/utils/platform-file.js.map +1 -1
- package/dist/utils/platform-mapper.js +29 -41
- package/dist/utils/platform-mapper.js.map +1 -1
- package/dist/utils/platform-specific-paths.js.map +1 -1
- package/dist/utils/platform-utils.js +28 -139
- package/dist/utils/platform-utils.js.map +1 -1
- package/dist/utils/platform-yaml-merge.js +13 -6
- package/dist/utils/platform-yaml-merge.js.map +1 -1
- package/dist/utils/registry-entry-filter.js +38 -24
- package/dist/utils/registry-entry-filter.js.map +1 -1
- package/dist/utils/registry-paths.js +10 -0
- package/dist/utils/registry-paths.js.map +1 -0
- package/dist/utils/root-file-installer.js +19 -0
- package/dist/utils/root-file-installer.js.map +1 -1
- package/dist/utils/root-file-registry.js.map +1 -1
- package/package.json +3 -2
- package/platforms.jsonc +178 -0
- package/specs/package/README.md +60 -0
- package/specs/package/nested-packages-and-parent-packages.md +79 -0
- package/specs/package/package-index-yml.md +171 -0
- package/specs/package/package-root-layout.md +78 -0
- package/specs/package/registry-payload-and-copy.md +77 -0
- package/specs/package/universal-content.md +144 -0
- package/specs/platforms.md +193 -0
- package/specs/save/README.md +40 -0
- package/specs/save/save-conflict-resolution.md +146 -0
- package/specs/save/save-file-discovery.md +101 -0
- package/specs/save/save-frontmatter-overrides.md +81 -0
- package/specs/save/save-modes-inputs.md +53 -0
- package/specs/save/save-naming-scoping.md +93 -0
- package/specs/save/save-package-detection.md +60 -0
- package/specs/save/save-registry-sync.md +126 -0
- package/dist/commands/release.js +0 -33
- package/dist/commands/release.js.map +0 -1
- package/dist/commands/tag.js +0 -311
- package/dist/commands/tag.js.map +0 -1
- package/dist/commands/update.js +0 -30
- package/dist/commands/update.js.map +0 -1
- package/dist/core/add/formula-index-updater.js +0 -290
- package/dist/core/add/formula-index-updater.js.map +0 -1
- package/dist/core/discovery/ai-files-discovery.js +0 -2
- package/dist/core/discovery/ai-files-discovery.js.map +0 -1
- package/dist/core/discovery/formula-files-discovery.js +0 -14
- package/dist/core/discovery/formula-files-discovery.js.map +0 -1
- package/dist/core/discovery/index-files-discovery.js +0 -91
- package/dist/core/discovery/index-files-discovery.js.map +0 -1
- package/dist/core/discovery/md-files-discovery.js +0 -82
- package/dist/core/discovery/md-files-discovery.js.map +0 -1
- package/dist/core/discovery/package-files-discovery.js +0 -14
- package/dist/core/discovery/package-files-discovery.js.map +0 -1
- package/dist/core/discovery/platform-discovery.js +0 -84
- package/dist/core/discovery/platform-discovery.js.map +0 -1
- package/dist/core/discovery/root-files-discovery.js +0 -2
- package/dist/core/discovery/root-files-discovery.js.map +0 -1
- package/dist/core/formula.js +0 -170
- package/dist/core/formula.js.map +0 -1
- package/dist/core/git-registry.js +0 -46
- package/dist/core/git-registry.js.map +0 -1
- package/dist/core/groundzero.js +0 -277
- package/dist/core/groundzero.js.map +0 -1
- package/dist/core/install/scenario.js +0 -11
- package/dist/core/install/scenario.js.map +0 -1
- package/dist/core/package-sync.js +0 -219
- package/dist/core/package-sync.js.map +0 -1
- package/dist/core/save/formula-file-generator.js +0 -167
- package/dist/core/save/formula-file-generator.js.map +0 -1
- package/dist/core/save/formula-saver.js +0 -52
- package/dist/core/save/formula-saver.js.map +0 -1
- package/dist/core/save/formula-yml-generator.js +0 -89
- package/dist/core/save/formula-yml-generator.js.map +0 -1
- package/dist/core/save/formula-yml-versioning.js +0 -108
- package/dist/core/save/formula-yml-versioning.js.map +0 -1
- package/dist/core/save/generic-file-sync.js +0 -38
- package/dist/core/save/generic-file-sync.js.map +0 -1
- package/dist/core/save/md-files-sync.js +0 -33
- package/dist/core/save/md-files-sync.js.map +0 -1
- package/dist/core/save/package-yml-versioning.js +0 -108
- package/dist/core/save/package-yml-versioning.js.map +0 -1
- package/dist/core/save/platform-sync.js +0 -95
- package/dist/core/save/platform-sync.js.map +0 -1
- package/dist/core/save/root-files-sync.js +0 -140
- package/dist/core/save/root-files-sync.js.map +0 -1
- package/dist/core/save/save-candidate-types.js +0 -2
- package/dist/core/save/save-candidate-types.js.map +0 -1
- package/dist/core/save/save-conflict-types.js +0 -2
- package/dist/core/save/save-conflict-types.js.map +0 -1
- package/dist/core/save/save-file-discovery.js +0 -5
- package/dist/core/save/save-file-discovery.js.map +0 -1
- package/dist/core/status-file-discovery.js +0 -175
- package/dist/core/status-file-discovery.js.map +0 -1
- package/dist/utils/discovery/file-processing.js +0 -156
- package/dist/utils/discovery/file-processing.js.map +0 -1
- package/dist/utils/discovery/formula-discovery.js +0 -211
- package/dist/utils/discovery/formula-discovery.js.map +0 -1
- package/dist/utils/discovery/platform-discovery.js +0 -2
- package/dist/utils/discovery/platform-discovery.js.map +0 -1
- package/dist/utils/formula-discovery.js +0 -102
- package/dist/utils/formula-discovery.js.map +0 -1
- package/dist/utils/formula-index-yml.js +0 -122
- package/dist/utils/formula-index-yml.js.map +0 -1
- package/dist/utils/formula-installation.js +0 -110
- package/dist/utils/formula-installation.js.map +0 -1
- package/dist/utils/formula-local-files.js +0 -38
- package/dist/utils/formula-local-files.js.map +0 -1
- package/dist/utils/formula-management.js +0 -191
- package/dist/utils/formula-management.js.map +0 -1
- package/dist/utils/formula-name.js +0 -97
- package/dist/utils/formula-name.js.map +0 -1
- package/dist/utils/formula-versioning.js +0 -109
- package/dist/utils/formula-versioning.js.map +0 -1
- package/dist/utils/formula-yml.js +0 -82
- package/dist/utils/formula-yml.js.map +0 -1
- package/dist/utils/git.js +0 -54
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/id-based-discovery.js +0 -126
- package/dist/utils/id-based-discovery.js.map +0 -1
- package/dist/utils/id-based-installer.js +0 -249
- package/dist/utils/id-based-installer.js.map +0 -1
- package/dist/utils/index-yml-based-installer.js +0 -375
- package/dist/utils/index-yml-based-installer.js.map +0 -1
- package/dist/utils/index-yml.js +0 -124
- package/dist/utils/index-yml.js.map +0 -1
- package/dist/utils/md-frontmatter.js +0 -3
- package/dist/utils/md-frontmatter.js.map +0 -1
- package/dist/utils/package-link-yml.js +0 -92
- package/dist/utils/package-link-yml.js.map +0 -1
- package/dist/utils/platform-discovery.js +0 -2
- package/dist/utils/platform-discovery.js.map +0 -1
- package/dist/utils/platform-frontmatter-split.js +0 -15
- package/dist/utils/platform-frontmatter-split.js.map +0 -1
- package/dist/utils/timestamp-encoder.js +0 -13
- package/dist/utils/timestamp-encoder.js.map +0 -1
- package/dist/utils/wip-versioning.js +0 -24
- package/dist/utils/wip-versioning.js.map +0 -1
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { basename, dirname, join } from "path";
|
|
2
|
-
import { FILE_PATTERNS, PLATFORM_DIRS } from "../../constants/index.js";
|
|
3
|
-
import { getAllPlatforms, getPlatformDefinition } from "../platforms.js";
|
|
4
|
-
import { resolveRootFileConflicts } from "../../utils/root-conflict-resolution.js";
|
|
5
|
-
import { resolvePlatformFileConflicts } from "../../utils/platform-conflict-resolution.js";
|
|
6
|
-
import { writeFormulaYml } from "../../utils/formula-yml.js";
|
|
7
|
-
import { exists, readTextFile } from "../../utils/fs.js";
|
|
8
|
-
import { LOG_PREFIXES, UTF8_ENCODING } from "./constants.js";
|
|
9
|
-
import { extractFormulaSection } from "../../utils/root-file-extractor.js";
|
|
10
|
-
import { splitPlatformFileFrontmatter } from "../../utils/platform-frontmatter-split.js";
|
|
11
|
-
/**
|
|
12
|
-
* Process discovered files and return formula file entries
|
|
13
|
-
*/
|
|
14
|
-
async function processFiles(formulaConfig, discoveredFiles) {
|
|
15
|
-
// Process discovered files in parallel
|
|
16
|
-
// Build dynamic set of platform root filenames from platform definitions
|
|
17
|
-
const rootFilenamesSet = (() => {
|
|
18
|
-
const set = new Set();
|
|
19
|
-
for (const platform of getAllPlatforms()) {
|
|
20
|
-
const def = getPlatformDefinition(platform);
|
|
21
|
-
if (def.rootFile)
|
|
22
|
-
set.add(def.rootFile);
|
|
23
|
-
}
|
|
24
|
-
return set;
|
|
25
|
-
})();
|
|
26
|
-
const filePromises = discoveredFiles.map(async (file) => {
|
|
27
|
-
const originalContent = await readTextFile(file.fullPath);
|
|
28
|
-
// Special handling for root files: store only the section body (no markers)
|
|
29
|
-
// Supports AGENTS.md and platform-native root files
|
|
30
|
-
if (file.fullPath.endsWith(FILE_PATTERNS.MD_FILES) && rootFilenamesSet.has(basename(file.fullPath))) {
|
|
31
|
-
const extracted = extractFormulaSection(originalContent, formulaConfig.name);
|
|
32
|
-
if (!extracted) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
const sectionBody = extracted.sectionBody.trim();
|
|
36
|
-
return {
|
|
37
|
-
path: file.registryPath,
|
|
38
|
-
content: sectionBody,
|
|
39
|
-
encoding: UTF8_ENCODING
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
// Only markdown files proceed with frontmatter logic
|
|
43
|
-
if (!file.fullPath.endsWith(FILE_PATTERNS.MD_FILES)) {
|
|
44
|
-
return {
|
|
45
|
-
path: file.registryPath,
|
|
46
|
-
content: originalContent,
|
|
47
|
-
encoding: UTF8_ENCODING
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
// Try platform frontmatter splitting first
|
|
51
|
-
const splitResult = await splitPlatformFileFrontmatter(file, formulaConfig, rootFilenamesSet, LOG_PREFIXES.UPDATED);
|
|
52
|
-
if (splitResult) {
|
|
53
|
-
return splitResult;
|
|
54
|
-
}
|
|
55
|
-
return {
|
|
56
|
-
path: file.registryPath,
|
|
57
|
-
content: originalContent,
|
|
58
|
-
encoding: UTF8_ENCODING
|
|
59
|
-
};
|
|
60
|
-
});
|
|
61
|
-
const results = await Promise.all(filePromises);
|
|
62
|
-
// Flatten any arrays returned (when YAML + MD are both returned)
|
|
63
|
-
const flattened = [];
|
|
64
|
-
for (const r of results) {
|
|
65
|
-
if (!r)
|
|
66
|
-
continue;
|
|
67
|
-
if (Array.isArray(r)) {
|
|
68
|
-
for (const f of r)
|
|
69
|
-
if (f)
|
|
70
|
-
flattened.push(f);
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
flattened.push(r);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// Deduplicate universal .md files by path, but keep all .yml files
|
|
77
|
-
const deduped = new Map();
|
|
78
|
-
for (const file of flattened) {
|
|
79
|
-
if (!deduped.has(file.path)) {
|
|
80
|
-
deduped.set(file.path, file);
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
// Keep the first .md instance and allow distinct .yml files to accumulate
|
|
84
|
-
if (file.path.endsWith(FILE_PATTERNS.YML_FILE)) {
|
|
85
|
-
deduped.set(file.path, file);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return Array.from(deduped.values());
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Create the formula.yml file entry for the formula files array
|
|
92
|
-
*/
|
|
93
|
-
async function createFormulaYmlFile(formulaInfo) {
|
|
94
|
-
// Write and read the formula.yml content
|
|
95
|
-
await writeFormulaYml(formulaInfo.fullPath, formulaInfo.config);
|
|
96
|
-
const content = await readTextFile(formulaInfo.fullPath);
|
|
97
|
-
return {
|
|
98
|
-
path: FILE_PATTERNS.FORMULA_YML,
|
|
99
|
-
content,
|
|
100
|
-
encoding: UTF8_ENCODING
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Create formula files array with unified discovery results
|
|
105
|
-
*/
|
|
106
|
-
async function createFormulaFilesUnified(formulaInfo, discoveredFiles) {
|
|
107
|
-
const formulaFiles = [];
|
|
108
|
-
// Add formula.yml as the first file
|
|
109
|
-
const formulaYmlFile = await createFormulaYmlFile(formulaInfo);
|
|
110
|
-
formulaFiles.push(formulaYmlFile);
|
|
111
|
-
// Add README.md if it exists in the formula directory
|
|
112
|
-
const readmePath = join(dirname(formulaInfo.fullPath), FILE_PATTERNS.README_MD);
|
|
113
|
-
if (await exists(readmePath)) {
|
|
114
|
-
const readmeContent = await readTextFile(readmePath);
|
|
115
|
-
formulaFiles.push({
|
|
116
|
-
path: FILE_PATTERNS.README_MD,
|
|
117
|
-
content: readmeContent,
|
|
118
|
-
encoding: UTF8_ENCODING
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
// Process discovered files of all types
|
|
122
|
-
const processedFiles = await processFiles(formulaInfo.config, discoveredFiles);
|
|
123
|
-
formulaFiles.push(...processedFiles);
|
|
124
|
-
return formulaFiles;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Process discovered files: resolve conflicts and create formula files array
|
|
128
|
-
*/
|
|
129
|
-
export async function createFormulaFiles(formulaInfo, discoveredFiles) {
|
|
130
|
-
// Separate root files from normal files
|
|
131
|
-
const rootFiles = discoveredFiles.filter(f => f.isRootFile);
|
|
132
|
-
const normalFiles = discoveredFiles.filter(f => !f.isRootFile);
|
|
133
|
-
// Build root filenames set (for platform split eligibility checks)
|
|
134
|
-
const rootFilenamesSet = (() => {
|
|
135
|
-
const set = new Set();
|
|
136
|
-
for (const platform of getAllPlatforms()) {
|
|
137
|
-
const def = getPlatformDefinition(platform);
|
|
138
|
-
if (def.rootFile)
|
|
139
|
-
set.add(def.rootFile);
|
|
140
|
-
}
|
|
141
|
-
return set;
|
|
142
|
-
})();
|
|
143
|
-
// Separate files that should bypass conflict resolution to allow per-platform YAML splitting
|
|
144
|
-
const platformSplitFiles = [];
|
|
145
|
-
const regularFiles = [];
|
|
146
|
-
for (const file of normalFiles) {
|
|
147
|
-
const isPlatformDir = file.sourceDir !== PLATFORM_DIRS.AI;
|
|
148
|
-
const isRootLike = rootFilenamesSet.has(basename(file.fullPath));
|
|
149
|
-
const isForcedPlatformSpecific = file.forcePlatformSpecific === true;
|
|
150
|
-
if (isPlatformDir && !isRootLike && !isForcedPlatformSpecific) {
|
|
151
|
-
// This file will undergo platform frontmatter splitting; include as-is (no conflict resolution)
|
|
152
|
-
platformSplitFiles.push(file);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
regularFiles.push(file);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
// Resolve root file conflicts separately
|
|
159
|
-
const resolvedRootFiles = await resolveRootFileConflicts(rootFiles, formulaInfo.config.version, /* silent */ true);
|
|
160
|
-
// Resolve conflicts for regular files only
|
|
161
|
-
const resolvedRegularFiles = await resolvePlatformFileConflicts(regularFiles, formulaInfo.config.version, /* silent */ true);
|
|
162
|
-
// Combine: resolved root + resolved regular + platform-split (unresolved) files
|
|
163
|
-
const combinedFiles = [...resolvedRootFiles, ...resolvedRegularFiles, ...platformSplitFiles];
|
|
164
|
-
// Create formula files array
|
|
165
|
-
return await createFormulaFilesUnified(formulaInfo, combinedFiles);
|
|
166
|
-
}
|
|
167
|
-
//# sourceMappingURL=formula-file-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formula-file-generator.js","sourceRoot":"","sources":["../../../src/core/save/formula-file-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { normalizeFormulaName } from "../../utils/formula-name.js";
|
|
2
|
-
import { ensureDir, writeTextFile, remove } from "../../utils/fs.js";
|
|
3
|
-
import { logger } from "../../utils/logger.js";
|
|
4
|
-
import { resolveTargetDirectory, resolveTargetFilePath } from "../../utils/platform-mapper.js";
|
|
5
|
-
import { getFormulaVersionPath } from "../directory.js";
|
|
6
|
-
import { UTF8_ENCODING } from "./constants.js";
|
|
7
|
-
import { formulaVersionExists } from "../../utils/formula-versioning.js";
|
|
8
|
-
/**
|
|
9
|
-
* Save formula to local registry
|
|
10
|
-
*/
|
|
11
|
-
export async function saveFormulaToRegistry(formulaInfo, files, silent = true) {
|
|
12
|
-
const config = formulaInfo.config;
|
|
13
|
-
try {
|
|
14
|
-
// Ensure formula name is normalized for consistent registry paths
|
|
15
|
-
const normalizedConfig = { ...config, name: normalizeFormulaName(config.name) };
|
|
16
|
-
const targetPath = getFormulaVersionPath(normalizedConfig.name, normalizedConfig.version);
|
|
17
|
-
// If version already exists, clear the directory first to remove old files
|
|
18
|
-
if (await formulaVersionExists(normalizedConfig.name, normalizedConfig.version)) {
|
|
19
|
-
await remove(targetPath);
|
|
20
|
-
logger.debug(`Cleared existing version directory: ${targetPath}`);
|
|
21
|
-
}
|
|
22
|
-
await ensureDir(targetPath);
|
|
23
|
-
// Group files by target directory
|
|
24
|
-
const directoryGroups = new Map();
|
|
25
|
-
for (const file of files) {
|
|
26
|
-
const targetDir = resolveTargetDirectory(targetPath, file.path);
|
|
27
|
-
if (!directoryGroups.has(targetDir)) {
|
|
28
|
-
directoryGroups.set(targetDir, []);
|
|
29
|
-
}
|
|
30
|
-
directoryGroups.get(targetDir).push(file);
|
|
31
|
-
}
|
|
32
|
-
// Save files in parallel by directory
|
|
33
|
-
const savePromises = Array.from(directoryGroups.entries()).map(async ([dir, dirFiles]) => {
|
|
34
|
-
await ensureDir(dir);
|
|
35
|
-
const filePromises = dirFiles.map(async (file) => {
|
|
36
|
-
const filePath = resolveTargetFilePath(dir, file.path);
|
|
37
|
-
await writeTextFile(filePath, file.content, file.encoding || UTF8_ENCODING);
|
|
38
|
-
});
|
|
39
|
-
await Promise.all(filePromises);
|
|
40
|
-
});
|
|
41
|
-
await Promise.all(savePromises);
|
|
42
|
-
if (!silent) {
|
|
43
|
-
logger.info(`Formula '${normalizedConfig.name}@${normalizedConfig.version}' saved to local registry`);
|
|
44
|
-
}
|
|
45
|
-
return { success: true, updatedConfig: normalizedConfig };
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
logger.error(`Failed to save formula: ${error}`);
|
|
49
|
-
return { success: false, error: `Failed to save formula: ${error}` };
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=formula-saver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formula-saver.js","sourceRoot":"","sources":["../../../src/core/save/formula-saver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { join } from "path";
|
|
2
|
-
import { FILE_PATTERNS } from "../../constants/index.js";
|
|
3
|
-
import { normalizeFormulaName } from "../../utils/formula-name.js";
|
|
4
|
-
import { parseFormulaYml, writeFormulaYml } from "../../utils/formula-yml.js";
|
|
5
|
-
import { ensureDir, exists, isDirectory } from "../../utils/fs.js";
|
|
6
|
-
import { logger } from "../../utils/logger.js";
|
|
7
|
-
import { getLocalFormulaDir } from "../../utils/paths.js";
|
|
8
|
-
import { ValidationError } from "../../utils/errors.js";
|
|
9
|
-
import { ensureLocalOpenPackageStructure } from "../../utils/formula-management.js";
|
|
10
|
-
import { hasFormulaVersion } from "../directory.js";
|
|
11
|
-
import { DEFAULT_VERSION, ERROR_MESSAGES, LOG_PREFIXES, WIP_SUFFIX } from "./constants.js";
|
|
12
|
-
import { determineTargetVersion } from "./formula-yml-versioning.js";
|
|
13
|
-
/**
|
|
14
|
-
* Create formula.yml automatically in a directory without user prompts
|
|
15
|
-
* Reuses init command logic but makes it non-interactive
|
|
16
|
-
*/
|
|
17
|
-
async function createFormulaYmlInDirectory(formulaDir, formulaName) {
|
|
18
|
-
const cwd = process.cwd();
|
|
19
|
-
// Ensure the target directory exists (including formulas subdirectory)
|
|
20
|
-
await ensureLocalOpenPackageStructure(cwd);
|
|
21
|
-
await ensureDir(formulaDir);
|
|
22
|
-
// Create formula.yml in the formula directory (rTnot the main .openpackage directory)
|
|
23
|
-
const formulaYmlPath = join(formulaDir, FILE_PATTERNS.FORMULA_YML);
|
|
24
|
-
// Create default formula config
|
|
25
|
-
const formulaConfig = {
|
|
26
|
-
name: normalizeFormulaName(formulaName),
|
|
27
|
-
version: DEFAULT_VERSION
|
|
28
|
-
};
|
|
29
|
-
// Create the formula.yml file
|
|
30
|
-
await writeFormulaYml(formulaYmlPath, formulaConfig);
|
|
31
|
-
console.log(`${LOG_PREFIXES.CREATED} ${formulaDir}`);
|
|
32
|
-
console.log(`${LOG_PREFIXES.NAME} ${formulaConfig.name}`);
|
|
33
|
-
console.log(`${LOG_PREFIXES.VERSION} ${formulaConfig.version}`);
|
|
34
|
-
return {
|
|
35
|
-
fullPath: formulaYmlPath,
|
|
36
|
-
config: formulaConfig,
|
|
37
|
-
isNewFormula: true
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
export async function getOrCreateFormulaYml(cwd, name, explicitVersion, versionType, bump, force) {
|
|
41
|
-
await ensureLocalOpenPackageStructure(cwd);
|
|
42
|
-
const formulaDir = getLocalFormulaDir(cwd, name);
|
|
43
|
-
if (!(await exists(formulaDir)) || !(await isDirectory(formulaDir))) {
|
|
44
|
-
// Create the formula directory if it doesn't exist
|
|
45
|
-
await ensureDir(formulaDir);
|
|
46
|
-
logger.debug("Created formula directory for save", { path: formulaDir });
|
|
47
|
-
}
|
|
48
|
-
const normalizedName = normalizeFormulaName(name);
|
|
49
|
-
const formulaYmlPath = join(formulaDir, FILE_PATTERNS.FORMULA_YML);
|
|
50
|
-
let formulaConfig;
|
|
51
|
-
let isNewFormula = false;
|
|
52
|
-
if (await exists(formulaYmlPath)) {
|
|
53
|
-
logger.debug("Found existing formula.yml for save", { path: formulaYmlPath });
|
|
54
|
-
try {
|
|
55
|
-
formulaConfig = await parseFormulaYml(formulaYmlPath);
|
|
56
|
-
console.log(`✓ Found existing formula ${formulaConfig.name}@${formulaConfig.version}`);
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
throw new ValidationError(ERROR_MESSAGES.PARSE_FORMULA_FAILED.replace("%s", formulaYmlPath).replace("%s", String(error)));
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
logger.debug("No formula.yml found for save, creating", { dir: formulaDir });
|
|
64
|
-
const created = await createFormulaYmlInDirectory(formulaDir, normalizedName);
|
|
65
|
-
formulaConfig = created.config;
|
|
66
|
-
isNewFormula = true;
|
|
67
|
-
}
|
|
68
|
-
const targetVersion = await determineTargetVersion(explicitVersion, versionType, bump, isNewFormula ? undefined : formulaConfig.version);
|
|
69
|
-
const allowOverwrite = force || targetVersion.endsWith(WIP_SUFFIX);
|
|
70
|
-
if (!allowOverwrite) {
|
|
71
|
-
const versionExists = await hasFormulaVersion(normalizedName, targetVersion);
|
|
72
|
-
if (versionExists) {
|
|
73
|
-
throw new Error(ERROR_MESSAGES.VERSION_EXISTS.replace("%s", targetVersion));
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
const updatedConfig = {
|
|
77
|
-
...formulaConfig,
|
|
78
|
-
name: normalizedName,
|
|
79
|
-
version: targetVersion
|
|
80
|
-
};
|
|
81
|
-
await writeFormulaYml(formulaYmlPath, updatedConfig);
|
|
82
|
-
return {
|
|
83
|
-
fullPath: formulaYmlPath,
|
|
84
|
-
config: updatedConfig,
|
|
85
|
-
isNewFormula,
|
|
86
|
-
isRootFormula: false
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=formula-yml-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formula-yml-generator.js","sourceRoot":"","sources":["../../../src/core/save/formula-yml-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { ValidationError } from "../../utils/errors.js";
|
|
2
|
-
import { extractBaseVersion, generateLocalVersion, isLocalVersion } from "../../utils/version-generator.js";
|
|
3
|
-
import { ERROR_MESSAGES, LOG_PREFIXES, DEFAULT_VERSION, VERSION_TYPE_STABLE } from "./constants.js";
|
|
4
|
-
const BUMP_TYPES = {
|
|
5
|
-
PATCH: 'patch',
|
|
6
|
-
MINOR: 'minor',
|
|
7
|
-
MAJOR: 'major'
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Bump version to prerelease (default behavior for --bump)
|
|
11
|
-
* @param version - The current version string
|
|
12
|
-
* @param bumpType - The type of bump to apply
|
|
13
|
-
* @returns A new prerelease version string
|
|
14
|
-
*/
|
|
15
|
-
function bumpToPrerelease(version, bumpType) {
|
|
16
|
-
const baseVersion = extractBaseVersion(version);
|
|
17
|
-
const bumpedBase = calculateBumpedVersion(baseVersion, bumpType);
|
|
18
|
-
return generateLocalVersion(bumpedBase);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Bump version to stable (when combined with 'stable' argument)
|
|
22
|
-
* @param version - The current version string
|
|
23
|
-
* @param bumpType - The type of bump to apply
|
|
24
|
-
* @returns A new stable version string
|
|
25
|
-
*/
|
|
26
|
-
function bumpToStable(version, bumpType) {
|
|
27
|
-
const baseVersion = extractBaseVersion(version);
|
|
28
|
-
return calculateBumpedVersion(baseVersion, bumpType);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Calculate bumped version based on type (stable output)
|
|
32
|
-
* @param version - The base version string to bump
|
|
33
|
-
* @param bumpType - The type of bump to apply ('patch', 'minor', or 'major')
|
|
34
|
-
* @returns The bumped version string
|
|
35
|
-
* @throws ValidationError if version format is invalid or bump type is unknown
|
|
36
|
-
*/
|
|
37
|
-
function calculateBumpedVersion(version, bumpType) {
|
|
38
|
-
// Extract base version (remove any prerelease identifiers and build metadata)
|
|
39
|
-
const baseVersion = version.split('-')[0].split('+')[0];
|
|
40
|
-
const parts = baseVersion.split('.').map(Number);
|
|
41
|
-
// Validate that we have valid numbers
|
|
42
|
-
if (parts.some(isNaN)) {
|
|
43
|
-
throw new ValidationError(ERROR_MESSAGES.INVALID_VERSION_FORMAT.replace('%s', version));
|
|
44
|
-
}
|
|
45
|
-
switch (bumpType) {
|
|
46
|
-
case 'patch':
|
|
47
|
-
return parts.length >= 3 ? `${parts[0]}.${parts[1]}.${parts[2] + 1}` : baseVersion;
|
|
48
|
-
case 'minor':
|
|
49
|
-
return parts.length >= 2 ? `${parts[0]}.${parts[1] + 1}.0` : baseVersion;
|
|
50
|
-
case 'major':
|
|
51
|
-
return parts.length >= 1 ? `${parts[0] + 1}.0.0` : baseVersion;
|
|
52
|
-
default:
|
|
53
|
-
throw new ValidationError(ERROR_MESSAGES.INVALID_BUMP_TYPE.replace('%s', bumpType));
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Determine target version based on input, version type, and options
|
|
58
|
-
*/
|
|
59
|
-
export async function determineTargetVersion(explicitVersion, versionType, bump, currentVersion) {
|
|
60
|
-
if (explicitVersion) {
|
|
61
|
-
console.log(`${LOG_PREFIXES.EXPLICIT_VERSION} ${explicitVersion}`);
|
|
62
|
-
return explicitVersion;
|
|
63
|
-
}
|
|
64
|
-
if (!currentVersion) {
|
|
65
|
-
const prereleaseVersion = generateLocalVersion(DEFAULT_VERSION);
|
|
66
|
-
console.log(`${LOG_PREFIXES.PRERELEASE} ${prereleaseVersion}`);
|
|
67
|
-
return prereleaseVersion;
|
|
68
|
-
}
|
|
69
|
-
if (bump) {
|
|
70
|
-
if (versionType === VERSION_TYPE_STABLE) {
|
|
71
|
-
const bumpedVersion = bumpToStable(currentVersion, bump);
|
|
72
|
-
console.log(`${LOG_PREFIXES.BUMP_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${bumpedVersion}`);
|
|
73
|
-
return bumpedVersion;
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
const bumpedVersion = bumpToPrerelease(currentVersion, bump);
|
|
77
|
-
console.log(`${LOG_PREFIXES.BUMP_PRERELEASE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${bumpedVersion}`);
|
|
78
|
-
return bumpedVersion;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (versionType === VERSION_TYPE_STABLE) {
|
|
82
|
-
if (isLocalVersion(currentVersion)) {
|
|
83
|
-
const stableVersion = extractBaseVersion(currentVersion);
|
|
84
|
-
console.log(`${LOG_PREFIXES.CONVERT_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${stableVersion}`);
|
|
85
|
-
return stableVersion;
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
// Already stable - auto bump to next patch version
|
|
89
|
-
const nextStable = calculateBumpedVersion(currentVersion, 'patch');
|
|
90
|
-
console.log(`${LOG_PREFIXES.BUMP_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${nextStable}`);
|
|
91
|
-
return nextStable;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
// Default smart increment behavior
|
|
95
|
-
if (isLocalVersion(currentVersion)) {
|
|
96
|
-
const localVersion = generateLocalVersion(extractBaseVersion(currentVersion));
|
|
97
|
-
console.log(`${LOG_PREFIXES.SET_PRERELEASE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${localVersion}`);
|
|
98
|
-
return localVersion;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
// For other stable versions, bump patch and then generate prerelease
|
|
102
|
-
const nextPatchVersion = calculateBumpedVersion(currentVersion, 'patch');
|
|
103
|
-
const localVersion = generateLocalVersion(nextPatchVersion);
|
|
104
|
-
console.log(`${LOG_PREFIXES.AUTO_INCREMENT} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${localVersion}`);
|
|
105
|
-
return localVersion;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=formula-yml-versioning.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formula-yml-versioning.js","sourceRoot":"","sources":["../../../src/core/save/formula-yml-versioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { getPlatformDefinition, getDetectedPlatforms } from "../platforms.js";
|
|
2
|
-
import { writeIfChanged } from "../install/file-updater.js";
|
|
3
|
-
import { relative, join } from "path";
|
|
4
|
-
import { logger } from "../../utils/logger.js";
|
|
5
|
-
/**
|
|
6
|
-
* Sync a generic (non-markdown) universal file preserving filename and extension
|
|
7
|
-
*/
|
|
8
|
-
export async function syncGenericFile(cwd, universalSubdir, relPath, content, result) {
|
|
9
|
-
// Resolve targets manually to preserve original extension (avoid writeExt conversion)
|
|
10
|
-
const detected = await getDetectedPlatforms(cwd);
|
|
11
|
-
for (const platform of detected) {
|
|
12
|
-
try {
|
|
13
|
-
const def = getPlatformDefinition(platform);
|
|
14
|
-
const subdirDef = def.subdirs[universalSubdir];
|
|
15
|
-
if (!subdirDef)
|
|
16
|
-
continue;
|
|
17
|
-
const absDir = join(cwd, def.rootDir, subdirDef.path);
|
|
18
|
-
const targetFile = join(absDir, relPath);
|
|
19
|
-
const outcome = await writeIfChanged(targetFile, content);
|
|
20
|
-
const rel = relative(cwd, targetFile);
|
|
21
|
-
if (outcome === 'created') {
|
|
22
|
-
result.created.push(rel);
|
|
23
|
-
logger.debug(`Created synced file: ${targetFile}`);
|
|
24
|
-
}
|
|
25
|
-
else if (outcome === 'updated') {
|
|
26
|
-
result.updated.push(rel);
|
|
27
|
-
logger.debug(`Updated synced file: ${targetFile}`);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
logger.debug(`Synced file unchanged: ${targetFile}`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
logger.warn(`Failed to sync generic file for platform ${platform}: ${error}`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=generic-file-sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generic-file-sync.js","sourceRoot":"","sources":["../../../src/core/save/generic-file-sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,eAAuB,EACvB,OAAe,EACf,OAAe,EACf,MAA0B;IAE1B,sFAAsF;IACtF,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAEjD,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAe,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,eAAkC,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAEzC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACtC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;YACrD,CAAC;iBAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,4CAA4C,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { resolveInstallTargets } from "../../utils/platform-mapper.js";
|
|
2
|
-
import { FILE_PATTERNS } from "../../constants/index.js";
|
|
3
|
-
import { mergePlatformYamlOverride } from "../../utils/platform-yaml-merge.js";
|
|
4
|
-
import { writeIfChanged } from "../install/file-updater.js";
|
|
5
|
-
import { relative } from "path";
|
|
6
|
-
import { logger } from "../../utils/logger.js";
|
|
7
|
-
/**
|
|
8
|
-
* Sync a universal markdown file with optional YAML override merging
|
|
9
|
-
*/
|
|
10
|
-
export async function syncUniversalMarkdown(cwd, universalSubdir, relPath, content, formulaFiles, result) {
|
|
11
|
-
const targets = await resolveInstallTargets(cwd, {
|
|
12
|
-
universalSubdir: universalSubdir,
|
|
13
|
-
relPath,
|
|
14
|
-
sourceExt: FILE_PATTERNS.MD_FILES
|
|
15
|
-
});
|
|
16
|
-
for (const target of targets) {
|
|
17
|
-
const finalContent = mergePlatformYamlOverride(content, target.platform, universalSubdir, relPath, formulaFiles);
|
|
18
|
-
const outcome = await writeIfChanged(target.absFile, finalContent);
|
|
19
|
-
const rel = relative(cwd, target.absFile);
|
|
20
|
-
if (outcome === 'created') {
|
|
21
|
-
result.created.push(rel);
|
|
22
|
-
logger.debug(`Created synced file: ${target.absFile}`);
|
|
23
|
-
}
|
|
24
|
-
else if (outcome === 'updated') {
|
|
25
|
-
result.updated.push(rel);
|
|
26
|
-
logger.debug(`Updated synced file: ${target.absFile}`);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
logger.debug(`Synced file unchanged: ${target.absFile}`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=md-files-sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"md-files-sync.js","sourceRoot":"","sources":["../../../src/core/save/md-files-sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,eAAuB,EACvB,OAAe,EACf,OAAe,EACf,YAA2B,EAC3B,MAA0B;IAE1B,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE;QAC/C,eAAe,EAAE,eAAsB;QACvC,OAAO;QACP,SAAS,EAAE,aAAa,CAAC,QAAQ;KAClC,CAAC,CAAC;IAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,yBAAyB,CAC5C,OAAO,EACP,MAAM,CAAC,QAAQ,EACf,eAAe,EACf,OAAO,EACP,YAAY,CACb,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { ValidationError } from "../../utils/errors.js";
|
|
2
|
-
import { extractBaseVersion, generateLocalVersion, isLocalVersion } from "../../utils/version-generator.js";
|
|
3
|
-
import { ERROR_MESSAGES, LOG_PREFIXES, DEFAULT_VERSION, VERSION_TYPE_STABLE } from "./constants.js";
|
|
4
|
-
const BUMP_TYPES = {
|
|
5
|
-
PATCH: 'patch',
|
|
6
|
-
MINOR: 'minor',
|
|
7
|
-
MAJOR: 'major'
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Bump version to prerelease (default behavior for --bump)
|
|
11
|
-
* @param version - The current version string
|
|
12
|
-
* @param bumpType - The type of bump to apply
|
|
13
|
-
* @returns A new prerelease version string
|
|
14
|
-
*/
|
|
15
|
-
function bumpToPrerelease(version, bumpType) {
|
|
16
|
-
const baseVersion = extractBaseVersion(version);
|
|
17
|
-
const bumpedBase = calculateBumpedVersion(baseVersion, bumpType);
|
|
18
|
-
return generateLocalVersion(bumpedBase);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Bump version to stable (when combined with 'stable' argument)
|
|
22
|
-
* @param version - The current version string
|
|
23
|
-
* @param bumpType - The type of bump to apply
|
|
24
|
-
* @returns A new stable version string
|
|
25
|
-
*/
|
|
26
|
-
function bumpToStable(version, bumpType) {
|
|
27
|
-
const baseVersion = extractBaseVersion(version);
|
|
28
|
-
return calculateBumpedVersion(baseVersion, bumpType);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Calculate bumped version based on type (stable output)
|
|
32
|
-
* @param version - The base version string to bump
|
|
33
|
-
* @param bumpType - The type of bump to apply ('patch', 'minor', or 'major')
|
|
34
|
-
* @returns The bumped version string
|
|
35
|
-
* @throws ValidationError if version format is invalid or bump type is unknown
|
|
36
|
-
*/
|
|
37
|
-
function calculateBumpedVersion(version, bumpType) {
|
|
38
|
-
// Extract base version (remove any prerelease identifiers and build metadata)
|
|
39
|
-
const baseVersion = version.split('-')[0].split('+')[0];
|
|
40
|
-
const parts = baseVersion.split('.').map(Number);
|
|
41
|
-
// Validate that we have valid numbers
|
|
42
|
-
if (parts.some(isNaN)) {
|
|
43
|
-
throw new ValidationError(ERROR_MESSAGES.INVALID_VERSION_FORMAT.replace('%s', version));
|
|
44
|
-
}
|
|
45
|
-
switch (bumpType) {
|
|
46
|
-
case 'patch':
|
|
47
|
-
return parts.length >= 3 ? `${parts[0]}.${parts[1]}.${parts[2] + 1}` : baseVersion;
|
|
48
|
-
case 'minor':
|
|
49
|
-
return parts.length >= 2 ? `${parts[0]}.${parts[1] + 1}.0` : baseVersion;
|
|
50
|
-
case 'major':
|
|
51
|
-
return parts.length >= 1 ? `${parts[0] + 1}.0.0` : baseVersion;
|
|
52
|
-
default:
|
|
53
|
-
throw new ValidationError(ERROR_MESSAGES.INVALID_BUMP_TYPE.replace('%s', bumpType));
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Determine target version based on input, version type, and options
|
|
58
|
-
*/
|
|
59
|
-
export async function determineTargetVersion(explicitVersion, versionType, bump, currentVersion) {
|
|
60
|
-
if (explicitVersion) {
|
|
61
|
-
console.log(`${LOG_PREFIXES.EXPLICIT_VERSION} ${explicitVersion}`);
|
|
62
|
-
return explicitVersion;
|
|
63
|
-
}
|
|
64
|
-
if (!currentVersion) {
|
|
65
|
-
const prereleaseVersion = generateLocalVersion(DEFAULT_VERSION);
|
|
66
|
-
console.log(`${LOG_PREFIXES.PRERELEASE} ${prereleaseVersion}`);
|
|
67
|
-
return prereleaseVersion;
|
|
68
|
-
}
|
|
69
|
-
if (bump) {
|
|
70
|
-
if (versionType === VERSION_TYPE_STABLE) {
|
|
71
|
-
const bumpedVersion = bumpToStable(currentVersion, bump);
|
|
72
|
-
console.log(`${LOG_PREFIXES.BUMP_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${bumpedVersion}`);
|
|
73
|
-
return bumpedVersion;
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
const bumpedVersion = bumpToPrerelease(currentVersion, bump);
|
|
77
|
-
console.log(`${LOG_PREFIXES.BUMP_PRERELEASE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${bumpedVersion}`);
|
|
78
|
-
return bumpedVersion;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (versionType === VERSION_TYPE_STABLE) {
|
|
82
|
-
if (isLocalVersion(currentVersion)) {
|
|
83
|
-
const stableVersion = extractBaseVersion(currentVersion);
|
|
84
|
-
console.log(`${LOG_PREFIXES.CONVERT_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${stableVersion}`);
|
|
85
|
-
return stableVersion;
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
// Already stable - auto bump to next patch version
|
|
89
|
-
const nextStable = calculateBumpedVersion(currentVersion, 'patch');
|
|
90
|
-
console.log(`${LOG_PREFIXES.BUMP_STABLE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${nextStable}`);
|
|
91
|
-
return nextStable;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
// Default smart increment behavior
|
|
95
|
-
if (isLocalVersion(currentVersion)) {
|
|
96
|
-
const localVersion = generateLocalVersion(extractBaseVersion(currentVersion));
|
|
97
|
-
console.log(`${LOG_PREFIXES.SET_PRERELEASE} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${localVersion}`);
|
|
98
|
-
return localVersion;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
// For other stable versions, bump patch and then generate prerelease
|
|
102
|
-
const nextPatchVersion = calculateBumpedVersion(currentVersion, 'patch');
|
|
103
|
-
const localVersion = generateLocalVersion(nextPatchVersion);
|
|
104
|
-
console.log(`${LOG_PREFIXES.AUTO_INCREMENT} ${currentVersion} ${LOG_PREFIXES.ARROW_SEPARATOR} ${localVersion}`);
|
|
105
|
-
return localVersion;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=package-yml-versioning.js.map
|