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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/save/constants.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,aAAa,GAAG,MAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,sBAAsB,EAAE,yDAAyD;IACjF,cAAc,EAAE,sDAAsD;IACtE,WAAW,EAAE,wBAAwB;IACrC,mBAAmB,EAAE,6BAA6B;IAClD,sBAAsB,EAAE,4BAA4B;IACpD,iBAAiB,EAAE,oEAAoE;IACvF,oBAAoB,EAAE,qDAAqD;IAC3E,wBAAwB,EAAE,gDAAgD;IAC1E,qBAAqB,EAAE,mCAAmC;CAClD,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,0BAA0B;IACnC,KAAK,EAAE,8BAA8B;IACrC,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,SAAS;IAChB,YAAY,EAAE,gBAAgB;IAC9B,QAAQ,EAAE,iCAAiC;IAC3C,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,0BAA0B;IACnC,gBAAgB,EAAE,2BAA2B;IAC7C,UAAU,EAAE,uCAAuC;IACnD,WAAW,EAAE,8BAA8B;IAC3C,eAAe,EAAE,kCAAkC;IACnD,cAAc,EAAE,iCAAiC;IACjD,gBAAgB,EAAE,+BAA+B;IACjD,cAAc,EAAE,+BAA+B;IAC/C,cAAc,EAAE,0CAA0C;IAC1D,OAAO,EAAE,aAAa;IACtB,cAAc,EAAE,oBAAoB;IACpC,eAAe,EAAE,KAAK;CACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/save/constants.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,aAAa,GAAG,MAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,sBAAsB,EAAE,yDAAyD;IACjF,cAAc,EAAE,sDAAsD;IACtE,WAAW,EAAE,wBAAwB;IACrC,mBAAmB,EAAE,6BAA6B;IAClD,sBAAsB,EAAE,4BAA4B;IACpD,iBAAiB,EAAE,oEAAoE;IACvF,oBAAoB,EAAE,qDAAqD;IAC3E,wBAAwB,EAAE,gDAAgD;IAC1E,qBAAqB,EAAE,mCAAmC;CAClD,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,0BAA0B;IACnC,KAAK,EAAE,8BAA8B;IACrC,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,SAAS;IAChB,YAAY,EAAE,gBAAgB;IAC9B,QAAQ,EAAE,iCAAiC;IAC3C,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,0BAA0B;IACnC,gBAAgB,EAAE,2BAA2B;IAC7C,UAAU,EAAE,uCAAuC;IACnD,WAAW,EAAE,8BAA8B;IAC3C,eAAe,EAAE,kCAAkC;IACnD,cAAc,EAAE,iCAAiC;IACjD,gBAAgB,EAAE,+BAA+B;IACjD,cAAc,EAAE,+BAA+B;IAC/C,cAAc,EAAE,0CAA0C;IAC1D,OAAO,EAAE,aAAa;IACtB,cAAc,EAAE,oBAAoB;IACpC,eAAe,EAAE,KAAK;CACd,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IACjD,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CAC5C,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { parsePackageInput } from '../../utils/package-name.js';
|
|
2
|
+
import { ValidationError } from '../../utils/errors.js';
|
|
3
|
+
import { resolveEffectiveNameForSave } from '../scoping/package-scoping.js';
|
|
4
|
+
import { MODE_LABELS } from './constants.js';
|
|
5
|
+
export async function resolveWorkspaceNames(packageInput, renameOption, mode) {
|
|
6
|
+
const { name: inputName, version } = parsePackageInput(packageInput);
|
|
7
|
+
if (version) {
|
|
8
|
+
throw new ValidationError(`${MODE_LABELS[mode].label} command does not accept explicit versions. Edit package.yml to change the stable line.`);
|
|
9
|
+
}
|
|
10
|
+
if (renameOption?.trim()) {
|
|
11
|
+
const { name: renameName, version: renameVersion } = parsePackageInput(renameOption.trim());
|
|
12
|
+
if (renameVersion) {
|
|
13
|
+
throw new ValidationError('Rename target cannot include a version.');
|
|
14
|
+
}
|
|
15
|
+
const needsRename = renameName !== inputName;
|
|
16
|
+
return {
|
|
17
|
+
inputName,
|
|
18
|
+
finalName: renameName,
|
|
19
|
+
needsRename,
|
|
20
|
+
renameReason: needsRename ? 'explicit' : undefined
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const scopingResult = await resolveEffectiveNameForSave(inputName);
|
|
24
|
+
return {
|
|
25
|
+
inputName,
|
|
26
|
+
finalName: scopingResult.effectiveName,
|
|
27
|
+
needsRename: scopingResult.nameChanged,
|
|
28
|
+
renameReason: scopingResult.nameChanged ? 'scoping' : undefined
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=name-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-resolution.js","sourceRoot":"","sources":["../../../src/core/save/name-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAY7C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,YAAoB,EACpB,YAAgC,EAChC,IAAc;IAEd,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACrE,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,eAAe,CACvB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,yFAAyF,CACpH,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,IAAI,eAAe,CAAC,yCAAyC,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,KAAK,SAAS,CAAC;QAC7C,OAAO;YACL,SAAS;YACT,SAAS,EAAE,UAAU;YACrB,WAAW;YACX,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,2BAA2B,CAAC,SAAS,CAAC,CAAC;IAEnE,OAAO;QACL,SAAS;QACT,SAAS,EAAE,aAAa,CAAC,aAAa;QACtC,WAAW,EAAE,aAAa,CAAC,WAAW;QACtC,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KAChE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { join } from 'path';
|
|
2
|
+
import { DIR_PATTERNS, FILE_PATTERNS, OPENPACKAGE_DIRS } from '../../constants/index.js';
|
|
3
|
+
import { exists, isDirectory } from '../../utils/fs.js';
|
|
4
|
+
import { parsePackageYml } from '../../utils/package-yml.js';
|
|
5
|
+
import { arePackageNamesEquivalent } from '../../utils/package-name.js';
|
|
6
|
+
import { getLocalPackageDir } from '../../utils/paths.js';
|
|
7
|
+
import { findDirectoriesContainingFile } from '../../utils/file-processing.js';
|
|
8
|
+
import { logger } from '../../utils/logger.js';
|
|
9
|
+
/**
|
|
10
|
+
* Core rule: any directory that contains `.openpackage/package.yml` is a valid package.
|
|
11
|
+
*/
|
|
12
|
+
export async function isValidPackageDirectory(dir) {
|
|
13
|
+
const packageYmlPath = join(dir, DIR_PATTERNS.OPENPACKAGE, FILE_PATTERNS.PACKAGE_YML);
|
|
14
|
+
return exists(packageYmlPath);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Load package config from a directory that satisfies the core rule.
|
|
18
|
+
*/
|
|
19
|
+
export async function loadPackageConfig(dir) {
|
|
20
|
+
const packageYmlPath = join(dir, DIR_PATTERNS.OPENPACKAGE, FILE_PATTERNS.PACKAGE_YML);
|
|
21
|
+
if (!(await exists(packageYmlPath))) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
return await parsePackageYml(packageYmlPath);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
logger.debug(`Failed to parse package.yml at ${packageYmlPath}: ${error}`);
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Detect package context for save/pack commands.
|
|
34
|
+
*
|
|
35
|
+
* Scope:
|
|
36
|
+
* - Root package at `cwd/.openpackage/package.yml`
|
|
37
|
+
* - Nested packages at `cwd/.openpackage/packages/<name>/package.yml`
|
|
38
|
+
*/
|
|
39
|
+
export async function detectPackageContext(cwd, packageName) {
|
|
40
|
+
const rootPackageYmlPath = join(cwd, DIR_PATTERNS.OPENPACKAGE, FILE_PATTERNS.PACKAGE_YML);
|
|
41
|
+
const hasRootPackage = await exists(rootPackageYmlPath);
|
|
42
|
+
// No package name provided: target cwd as the package itself.
|
|
43
|
+
if (!packageName) {
|
|
44
|
+
if (!hasRootPackage) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const config = await parsePackageYml(rootPackageYmlPath);
|
|
49
|
+
return {
|
|
50
|
+
packageDir: cwd,
|
|
51
|
+
packageYmlPath: rootPackageYmlPath,
|
|
52
|
+
config,
|
|
53
|
+
location: 'root',
|
|
54
|
+
isCwdPackage: true
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
logger.warn(`Failed to parse root package.yml: ${error}`);
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Package name provided: check root first.
|
|
63
|
+
if (hasRootPackage) {
|
|
64
|
+
try {
|
|
65
|
+
const rootConfig = await parsePackageYml(rootPackageYmlPath);
|
|
66
|
+
if (arePackageNamesEquivalent(rootConfig.name, packageName)) {
|
|
67
|
+
return {
|
|
68
|
+
packageDir: cwd,
|
|
69
|
+
packageYmlPath: rootPackageYmlPath,
|
|
70
|
+
config: rootConfig,
|
|
71
|
+
location: 'root',
|
|
72
|
+
isCwdPackage: true
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
logger.debug(`Failed to parse root package.yml: ${error}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Check nested packages directory for direct match.
|
|
81
|
+
const nestedPackageDir = getLocalPackageDir(cwd, packageName);
|
|
82
|
+
const nestedPackageYmlPath = join(nestedPackageDir, FILE_PATTERNS.PACKAGE_YML);
|
|
83
|
+
if (await exists(nestedPackageYmlPath)) {
|
|
84
|
+
try {
|
|
85
|
+
const nestedConfig = await parsePackageYml(nestedPackageYmlPath);
|
|
86
|
+
if (arePackageNamesEquivalent(nestedConfig.name, packageName)) {
|
|
87
|
+
return {
|
|
88
|
+
packageDir: nestedPackageDir,
|
|
89
|
+
packageYmlPath: nestedPackageYmlPath,
|
|
90
|
+
config: nestedConfig,
|
|
91
|
+
location: 'nested',
|
|
92
|
+
isCwdPackage: false
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
logger.debug(`Failed to parse nested package.yml at ${nestedPackageYmlPath}: ${error}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Scan nested packages for cases where directory name differs from package name.
|
|
101
|
+
const packagesDir = join(cwd, DIR_PATTERNS.OPENPACKAGE, OPENPACKAGE_DIRS.PACKAGES);
|
|
102
|
+
if (await exists(packagesDir) && (await isDirectory(packagesDir))) {
|
|
103
|
+
try {
|
|
104
|
+
const packageDirs = await findDirectoriesContainingFile(packagesDir, FILE_PATTERNS.PACKAGE_YML, async (filePath) => {
|
|
105
|
+
try {
|
|
106
|
+
return await parsePackageYml(filePath);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
for (const { dirPath, parsedContent } of packageDirs) {
|
|
113
|
+
if (!parsedContent)
|
|
114
|
+
continue;
|
|
115
|
+
const packageRoot = dirPath;
|
|
116
|
+
if (arePackageNamesEquivalent(parsedContent.name, packageName)) {
|
|
117
|
+
return {
|
|
118
|
+
packageDir: packageRoot,
|
|
119
|
+
packageYmlPath: join(packageRoot, FILE_PATTERNS.PACKAGE_YML),
|
|
120
|
+
config: parsedContent,
|
|
121
|
+
location: 'nested',
|
|
122
|
+
isCwdPackage: false
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
logger.debug(`Failed to scan packages directory: ${error}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
export function getNoPackageDetectedMessage(packageName) {
|
|
134
|
+
if (packageName) {
|
|
135
|
+
return (`Package '${packageName}' not found.\n\n` +
|
|
136
|
+
`Checked locations:\n` +
|
|
137
|
+
` • Root package: .openpackage/package.yml\n` +
|
|
138
|
+
` • Nested packages: .openpackage/packages/${packageName}/\n\n` +
|
|
139
|
+
`💡 To create a new package, run: opkg save ${packageName}`);
|
|
140
|
+
}
|
|
141
|
+
return (`No package detected at current directory.\n\n` +
|
|
142
|
+
`A valid package requires .openpackage/package.yml to exist.\n\n` +
|
|
143
|
+
`💡 To initialize a package:\n` +
|
|
144
|
+
` • Run 'opkg init' to create a new package\n` +
|
|
145
|
+
` • Or specify a package name: 'opkg save <package-name>'`);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=package-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-detection.js","sourceRoot":"","sources":["../../../src/core/save/package-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,52 +1,55 @@
|
|
|
1
|
-
import { normalizePackageName } from "../../utils/package-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 { getPackageVersionPath } from "../directory.js";
|
|
6
|
-
import { UTF8_ENCODING } from "./constants.js";
|
|
7
|
-
import { packageVersionExists } from "../../utils/package-versioning.js";
|
|
8
1
|
/**
|
|
9
|
-
*
|
|
2
|
+
* Registry write operations for save/pack commands.
|
|
3
|
+
*
|
|
4
|
+
* This module handles persisting a package version to the local registry at
|
|
5
|
+
* ~/.openpackage/registry/<name>/<version>/...
|
|
10
6
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
import { normalizePackageName } from '../../utils/package-name.js';
|
|
8
|
+
import { remove } from '../../utils/fs.js';
|
|
9
|
+
import { logger } from '../../utils/logger.js';
|
|
10
|
+
import { getPackageVersionPath } from '../directory.js';
|
|
11
|
+
import { packageVersionExists } from '../../utils/package-versioning.js';
|
|
12
|
+
import { writePackageFilesToDirectory } from '../../utils/package-copy.js';
|
|
13
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
14
|
+
// Public API
|
|
15
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
16
|
+
/**
|
|
17
|
+
* Save a package version to the local registry.
|
|
18
|
+
*
|
|
19
|
+
* - Normalizes the package name for consistent registry paths.
|
|
20
|
+
* - Clears any existing version directory before writing (idempotent overwrites).
|
|
21
|
+
* - Writes all provided files to the registry version directory.
|
|
22
|
+
*
|
|
23
|
+
* @param packageContext - Metadata about the package (name, version, paths).
|
|
24
|
+
* @param files - The registry payload to persist.
|
|
25
|
+
* @returns Result indicating success/failure and the normalized config.
|
|
26
|
+
*/
|
|
27
|
+
export async function savePackageToRegistry(packageContext, files) {
|
|
28
|
+
const { config } = packageContext;
|
|
29
|
+
const normalizedName = normalizePackageName(config.name);
|
|
30
|
+
const normalizedConfig = { ...config, name: normalizedName };
|
|
31
|
+
const versionDir = getPackageVersionPath(normalizedName, normalizedConfig.version);
|
|
13
32
|
try {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const targetPath = getPackageVersionPath(normalizedConfig.name, normalizedConfig.version);
|
|
17
|
-
// If version already exists, clear the directory first to remove old files
|
|
18
|
-
if (await packageVersionExists(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(`Package '${normalizedConfig.name}@${normalizedConfig.version}' saved to local registry`);
|
|
44
|
-
}
|
|
33
|
+
await clearExistingVersion(normalizedName, normalizedConfig.version, versionDir);
|
|
34
|
+
await writePackageFilesToDirectory(versionDir, files);
|
|
45
35
|
return { success: true, updatedConfig: normalizedConfig };
|
|
46
36
|
}
|
|
47
37
|
catch (error) {
|
|
48
|
-
|
|
49
|
-
|
|
38
|
+
const message = `Failed to save ${normalizedName}@${normalizedConfig.version}: ${error}`;
|
|
39
|
+
logger.error(message);
|
|
40
|
+
return { success: false, error: message };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
44
|
+
// Helpers
|
|
45
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
46
|
+
/**
|
|
47
|
+
* Remove an existing version directory if present (ensures clean overwrites).
|
|
48
|
+
*/
|
|
49
|
+
async function clearExistingVersion(packageName, version, versionDir) {
|
|
50
|
+
if (await packageVersionExists(packageName, version)) {
|
|
51
|
+
await remove(versionDir);
|
|
52
|
+
logger.debug(`Cleared existing registry version: ${versionDir}`);
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
55
|
//# sourceMappingURL=package-saver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-saver.js","sourceRoot":"","sources":["../../../src/core/save/package-saver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-saver.js","sourceRoot":"","sources":["../../../src/core/save/package-saver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAa3E,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,cAA8B,EAC9B,KAAoB;IAEpB,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IAClC,MAAM,cAAc,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAe,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAEzE,MAAM,UAAU,GAAG,qBAAqB,CAAC,cAAc,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEnF,IAAI,CAAC;QACH,MAAM,oBAAoB,CAAC,cAAc,EAAE,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACjF,MAAM,4BAA4B,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAEtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,kBAAkB,cAAc,IAAI,gBAAgB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACzF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;GAEG;AACH,KAAK,UAAU,oBAAoB,CACjC,WAAmB,EACnB,OAAe,EACf,UAAkB;IAElB,IAAI,MAAM,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;QACrD,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
|
|
@@ -1,81 +1,60 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { ValidationError } from "../../utils/errors.js";
|
|
9
|
-
import { ensureLocalOpenPackageStructure } from "../../utils/package-management.js";
|
|
10
|
-
import { DEFAULT_VERSION, ERROR_MESSAGES, LOG_PREFIXES } from "./constants.js";
|
|
11
|
-
/**
|
|
12
|
-
* Create package.yml automatically in a directory without user prompts
|
|
13
|
-
* Reuses init command logic but makes it non-interactive
|
|
14
|
-
*/
|
|
15
|
-
async function createPackageYmlInDirectory(packageDir, packageName) {
|
|
16
|
-
const cwd = process.cwd();
|
|
17
|
-
// Ensure the target directory exists (including packages subdirectory)
|
|
18
|
-
await ensureLocalOpenPackageStructure(cwd);
|
|
19
|
-
await ensureDir(packageDir);
|
|
20
|
-
// Create package.yml in the package directory (rTnot the main .openpackage directory)
|
|
21
|
-
const packageYmlPath = join(packageDir, FILE_PATTERNS.PACKAGE_YML);
|
|
22
|
-
// Create default package config
|
|
23
|
-
const packageConfig = {
|
|
24
|
-
name: normalizePackageName(packageName),
|
|
25
|
-
version: DEFAULT_VERSION
|
|
26
|
-
};
|
|
27
|
-
// Create the package.yml file
|
|
28
|
-
await writePackageYml(packageYmlPath, packageConfig);
|
|
29
|
-
console.log(`${LOG_PREFIXES.CREATED} ${packageDir}`);
|
|
30
|
-
console.log(`${LOG_PREFIXES.NAME} ${packageConfig.name}`);
|
|
31
|
-
console.log(`${LOG_PREFIXES.VERSION} ${packageConfig.version}`);
|
|
32
|
-
return {
|
|
33
|
-
fullPath: packageYmlPath,
|
|
34
|
-
config: packageConfig,
|
|
35
|
-
isNewPackage: true
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Read existing package.yml (creating a default one if missing) without mutating the version.
|
|
40
|
-
* Used by the new save/pack flows where package.yml stays on the user-managed stable line.
|
|
41
|
-
*/
|
|
1
|
+
import { dirname } from 'path';
|
|
2
|
+
import { normalizePackageName } from '../../utils/package-name.js';
|
|
3
|
+
import { logger } from '../../utils/logger.js';
|
|
4
|
+
import { getPackageFilesDir, getPackageYmlPath, getPackageRootDir } from '../package-context.js';
|
|
5
|
+
import { ensurePackageWithYml } from '../../utils/package-management.js';
|
|
6
|
+
import { DEFAULT_VERSION, LOG_PREFIXES } from './constants.js';
|
|
7
|
+
import { applyWorkspacePackageRename } from './workspace-rename.js';
|
|
42
8
|
export async function readOrCreateBasePackageYml(cwd, name) {
|
|
43
|
-
await ensureLocalOpenPackageStructure(cwd);
|
|
44
|
-
const packageDir = getLocalPackageDir(cwd, name);
|
|
45
|
-
if (!(await exists(packageDir)) || !(await isDirectory(packageDir))) {
|
|
46
|
-
await ensureDir(packageDir);
|
|
47
|
-
logger.debug('Created package directory for save', { path: packageDir });
|
|
48
|
-
}
|
|
49
9
|
const normalizedName = normalizePackageName(name);
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (
|
|
54
|
-
logger.debug('
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
throw new ValidationError(ERROR_MESSAGES.PARSE_PACKAGE_YML_FAILED.replace('%s', packageYmlPath).replace('%s', String(error)));
|
|
61
|
-
}
|
|
10
|
+
const ensured = await ensurePackageWithYml(cwd, normalizedName, {
|
|
11
|
+
defaultVersion: DEFAULT_VERSION
|
|
12
|
+
});
|
|
13
|
+
if (ensured.isNew) {
|
|
14
|
+
logger.debug('No package.yml found for save, creating', { dir: ensured.packageDir });
|
|
15
|
+
console.log(`${LOG_PREFIXES.CREATED} ${ensured.packageDir}`);
|
|
16
|
+
console.log(`${LOG_PREFIXES.NAME} ${ensured.packageConfig.name}`);
|
|
17
|
+
console.log(`${LOG_PREFIXES.VERSION} ${ensured.packageConfig.version}`);
|
|
62
18
|
}
|
|
63
19
|
else {
|
|
64
|
-
logger.debug('
|
|
65
|
-
|
|
66
|
-
packageConfig = created.config;
|
|
67
|
-
isNewPackage = true;
|
|
20
|
+
logger.debug('Found existing package.yml for save', { path: ensured.packageYmlPath });
|
|
21
|
+
console.log(`✓ Found existing package ${ensured.packageConfig.name}@${ensured.packageConfig.version}`);
|
|
68
22
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
23
|
+
// ensured.packageDir is the content directory (.openpackage/), so package root is parent
|
|
24
|
+
const packageRootDir = dirname(ensured.packageDir);
|
|
25
|
+
return {
|
|
26
|
+
name: ensured.normalizedName,
|
|
27
|
+
version: ensured.packageConfig.version,
|
|
28
|
+
config: ensured.packageConfig,
|
|
29
|
+
packageYmlPath: ensured.packageYmlPath,
|
|
30
|
+
packageRootDir,
|
|
31
|
+
packageFilesDir: ensured.packageDir,
|
|
32
|
+
location: 'nested',
|
|
33
|
+
isCwdPackage: false,
|
|
34
|
+
isNew: ensured.isNew
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export async function loadAndPreparePackage(cwd, packageName, options = {}) {
|
|
38
|
+
const renameTarget = options.renameTo ? normalizePackageName(options.renameTo) : undefined;
|
|
39
|
+
const ctx = await readOrCreateBasePackageYml(cwd, packageName);
|
|
40
|
+
if (!renameTarget || renameTarget === ctx.config.name) {
|
|
41
|
+
return ctx;
|
|
73
42
|
}
|
|
43
|
+
logger.debug(`Renaming package during workspace load`, {
|
|
44
|
+
from: ctx.config.name,
|
|
45
|
+
to: renameTarget
|
|
46
|
+
});
|
|
47
|
+
await applyWorkspacePackageRename(cwd, ctx, renameTarget);
|
|
48
|
+
const packageRootDir = getPackageRootDir(cwd, 'nested', renameTarget);
|
|
49
|
+
const packageYmlPath = getPackageYmlPath(cwd, 'nested', renameTarget);
|
|
50
|
+
const packageFilesDir = getPackageFilesDir(cwd, 'nested', renameTarget);
|
|
74
51
|
return {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
52
|
+
...ctx,
|
|
53
|
+
name: renameTarget,
|
|
54
|
+
packageYmlPath,
|
|
55
|
+
packageRootDir,
|
|
56
|
+
packageFilesDir,
|
|
57
|
+
config: { ...ctx.config, name: renameTarget }
|
|
79
58
|
};
|
|
80
59
|
}
|
|
81
60
|
//# sourceMappingURL=package-yml-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-yml-generator.js","sourceRoot":"","sources":["../../../src/core/save/package-yml-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"package-yml-generator.js","sourceRoot":"","sources":["../../../src/core/save/package-yml-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root-save-candidates.js","sourceRoot":"","sources":["../../../src/core/save/root-save-candidates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"root-save-candidates.js","sourceRoot":"","sources":["../../../src/core/save/root-save-candidates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { FILE_PATTERNS, PACKAGE_PATHS } from '../../constants/index.js';
|
|
2
|
+
import { findFilesByExtension, getFileMtime } from '../../utils/file-processing.js';
|
|
3
|
+
import { readTextFile } from '../../utils/fs.js';
|
|
4
|
+
import { calculateFileHash } from '../../utils/hash-utils.js';
|
|
5
|
+
import { isAllowedRegistryPath, normalizeRegistryPath } from '../../utils/registry-entry-filter.js';
|
|
6
|
+
import { getRelativePathFromBase } from '../../utils/path-normalization.js';
|
|
7
|
+
import { splitFrontmatter, stripFrontmatter } from '../../utils/markdown-frontmatter.js';
|
|
8
|
+
import { discoverPlatformFilesUnified } from '../discovery/platform-files-discovery.js';
|
|
9
|
+
import { inferPlatformFromWorkspaceFile } from '../platforms.js';
|
|
10
|
+
export async function loadLocalCandidates(packageDir) {
|
|
11
|
+
const entries = await findFilesByExtension(packageDir, [], packageDir);
|
|
12
|
+
const candidates = [];
|
|
13
|
+
for (const entry of entries) {
|
|
14
|
+
const normalizedPath = normalizeRegistryPath(entry.relativePath);
|
|
15
|
+
if (normalizedPath === FILE_PATTERNS.PACKAGE_INDEX_YML ||
|
|
16
|
+
normalizedPath === PACKAGE_PATHS.INDEX_RELATIVE) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
if (normalizedPath === FILE_PATTERNS.AGENTS_MD) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (!isAllowedRegistryPath(normalizedPath)) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const fullPath = entry.fullPath;
|
|
26
|
+
const content = await readTextFile(fullPath);
|
|
27
|
+
const isMarkdown = normalizedPath.endsWith(FILE_PATTERNS.MD_FILES);
|
|
28
|
+
const split = isMarkdown ? splitFrontmatter(content) : undefined;
|
|
29
|
+
const markdownBody = split ? split.body : content;
|
|
30
|
+
const frontmatter = split?.frontmatter ?? undefined;
|
|
31
|
+
const rawFrontmatter = split?.rawFrontmatter;
|
|
32
|
+
const contentHash = await calculateContentHash(normalizedPath, content);
|
|
33
|
+
const mtime = await getFileMtime(fullPath);
|
|
34
|
+
candidates.push({
|
|
35
|
+
source: 'local',
|
|
36
|
+
registryPath: normalizedPath,
|
|
37
|
+
fullPath,
|
|
38
|
+
content,
|
|
39
|
+
contentHash,
|
|
40
|
+
mtime,
|
|
41
|
+
displayPath: normalizedPath,
|
|
42
|
+
isMarkdown,
|
|
43
|
+
frontmatter,
|
|
44
|
+
rawFrontmatter,
|
|
45
|
+
markdownBody
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return candidates;
|
|
49
|
+
}
|
|
50
|
+
export async function discoverWorkspaceCandidates(cwd, packageName) {
|
|
51
|
+
const discovered = await discoverPlatformFilesUnified(cwd, packageName);
|
|
52
|
+
const candidates = [];
|
|
53
|
+
for (const file of discovered) {
|
|
54
|
+
const normalizedPath = normalizeRegistryPath(file.registryPath);
|
|
55
|
+
if (!isAllowedRegistryPath(normalizedPath)) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const content = await readTextFile(file.fullPath);
|
|
59
|
+
const isMarkdown = normalizedPath.endsWith(FILE_PATTERNS.MD_FILES);
|
|
60
|
+
const split = isMarkdown ? splitFrontmatter(content) : undefined;
|
|
61
|
+
const markdownBody = split ? split.body : content;
|
|
62
|
+
const frontmatter = split?.frontmatter ?? undefined;
|
|
63
|
+
const rawFrontmatter = split?.rawFrontmatter;
|
|
64
|
+
const contentHash = await calculateContentHash(normalizedPath, content);
|
|
65
|
+
const displayPath = getRelativePathFromBase(file.fullPath, cwd) || normalizedPath;
|
|
66
|
+
const platform = inferPlatformFromWorkspaceFile(file.fullPath, file.sourceDir, normalizedPath);
|
|
67
|
+
candidates.push({
|
|
68
|
+
source: 'workspace',
|
|
69
|
+
registryPath: normalizedPath,
|
|
70
|
+
fullPath: file.fullPath,
|
|
71
|
+
content,
|
|
72
|
+
contentHash,
|
|
73
|
+
mtime: file.mtime,
|
|
74
|
+
displayPath,
|
|
75
|
+
platform,
|
|
76
|
+
isMarkdown,
|
|
77
|
+
frontmatter,
|
|
78
|
+
rawFrontmatter,
|
|
79
|
+
markdownBody
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return candidates;
|
|
83
|
+
}
|
|
84
|
+
async function calculateContentHash(registryPath, content) {
|
|
85
|
+
const isMarkdown = registryPath.endsWith(FILE_PATTERNS.MD_FILES);
|
|
86
|
+
const normalizedContent = isMarkdown ? stripFrontmatter(content) : content;
|
|
87
|
+
return await calculateFileHash(normalizedContent);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=save-candidate-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-candidate-loader.js","sourceRoot":"","sources":["../../../src/core/save/save-candidate-loader.ts"],"names":[],"mappings":"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"}
|