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.
Files changed (272) hide show
  1. package/README.md +49 -8
  2. package/dist/commands/add.js +11 -276
  3. package/dist/commands/add.js.map +1 -1
  4. package/dist/commands/init.js +73 -145
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/commands/install.js +26 -668
  7. package/dist/commands/install.js.map +1 -1
  8. package/dist/commands/pack.js +10 -137
  9. package/dist/commands/pack.js.map +1 -1
  10. package/dist/commands/push.js +14 -8
  11. package/dist/commands/push.js.map +1 -1
  12. package/dist/commands/save.js +12 -167
  13. package/dist/commands/save.js.map +1 -1
  14. package/dist/commands/status.js +2 -2
  15. package/dist/commands/status.js.map +1 -1
  16. package/dist/commands/uninstall.js +5 -5
  17. package/dist/commands/uninstall.js.map +1 -1
  18. package/dist/constants/index.js +18 -45
  19. package/dist/constants/index.js.map +1 -1
  20. package/dist/constants/workspace.js +9 -0
  21. package/dist/constants/workspace.js.map +1 -0
  22. package/dist/core/add/add-conflict-handler.js +68 -0
  23. package/dist/core/add/add-conflict-handler.js.map +1 -0
  24. package/dist/core/add/add-pipeline.js +137 -0
  25. package/dist/core/add/add-pipeline.js.map +1 -0
  26. package/dist/core/add/package-index-updater.js +62 -33
  27. package/dist/core/add/package-index-updater.js.map +1 -1
  28. package/dist/core/add/platform-path-transformer.js +47 -0
  29. package/dist/core/add/platform-path-transformer.js.map +1 -0
  30. package/dist/core/add/source-collector.js +57 -0
  31. package/dist/core/add/source-collector.js.map +1 -0
  32. package/dist/core/dependency-resolver.js +3 -1
  33. package/dist/core/dependency-resolver.js.map +1 -1
  34. package/dist/core/directory.js +2 -2
  35. package/dist/core/directory.js.map +1 -1
  36. package/dist/core/discovery/file-discovery.js +55 -54
  37. package/dist/core/discovery/file-discovery.js.map +1 -1
  38. package/dist/core/discovery/platform-files-discovery.js +32 -17
  39. package/dist/core/discovery/platform-files-discovery.js.map +1 -1
  40. package/dist/core/install/bulk-install-pipeline.js +199 -0
  41. package/dist/core/install/bulk-install-pipeline.js.map +1 -0
  42. package/dist/core/install/canonical-plan.js +123 -0
  43. package/dist/core/install/canonical-plan.js.map +1 -0
  44. package/dist/core/install/dry-run.js +2 -2
  45. package/dist/core/install/dry-run.js.map +1 -1
  46. package/dist/core/install/index.js +3 -0
  47. package/dist/core/install/index.js.map +1 -0
  48. package/dist/core/install/install-errors.js +41 -0
  49. package/dist/core/install/install-errors.js.map +1 -0
  50. package/dist/core/install/install-flow.js +2 -5
  51. package/dist/core/install/install-flow.js.map +1 -1
  52. package/dist/core/install/install-pipeline.js +228 -0
  53. package/dist/core/install/install-pipeline.js.map +1 -0
  54. package/dist/core/install/install-reporting.js +99 -0
  55. package/dist/core/install/install-reporting.js.map +1 -0
  56. package/dist/core/install/platform-resolution.js +6 -6
  57. package/dist/core/install/platform-resolution.js.map +1 -1
  58. package/dist/core/install/remote-flow.js +67 -1
  59. package/dist/core/install/remote-flow.js.map +1 -1
  60. package/dist/core/openpackage.js +16 -8
  61. package/dist/core/openpackage.js.map +1 -1
  62. package/dist/core/package-context.js +246 -0
  63. package/dist/core/package-context.js.map +1 -0
  64. package/dist/core/package.js +3 -2
  65. package/dist/core/package.js.map +1 -1
  66. package/dist/core/platforms.js +126 -217
  67. package/dist/core/platforms.js.map +1 -1
  68. package/dist/core/registry/registry-rename.js +2 -1
  69. package/dist/core/registry/registry-rename.js.map +1 -1
  70. package/dist/core/registry.js +10 -3
  71. package/dist/core/registry.js.map +1 -1
  72. package/dist/core/remote-pull.js +2 -1
  73. package/dist/core/remote-pull.js.map +1 -1
  74. package/dist/core/save/constants.js +4 -0
  75. package/dist/core/save/constants.js.map +1 -1
  76. package/dist/core/save/name-resolution.js +31 -0
  77. package/dist/core/save/name-resolution.js.map +1 -0
  78. package/dist/core/save/package-detection.js +147 -0
  79. package/dist/core/save/package-detection.js.map +1 -0
  80. package/dist/core/save/package-saver.js +46 -43
  81. package/dist/core/save/package-saver.js.map +1 -1
  82. package/dist/core/save/package-yml-generator.js +50 -71
  83. package/dist/core/save/package-yml-generator.js.map +1 -1
  84. package/dist/core/save/root-save-candidates.js.map +1 -1
  85. package/dist/core/save/save-candidate-loader.js +89 -0
  86. package/dist/core/save/save-candidate-loader.js.map +1 -0
  87. package/dist/core/save/save-conflict-resolution.js +72 -410
  88. package/dist/core/save/save-conflict-resolution.js.map +1 -1
  89. package/dist/core/save/save-conflict-resolver.js +277 -0
  90. package/dist/core/save/save-conflict-resolver.js.map +1 -0
  91. package/dist/core/save/save-pipeline.js +151 -0
  92. package/dist/core/save/save-pipeline.js.map +1 -0
  93. package/dist/core/save/save-types.js +2 -0
  94. package/dist/core/save/save-types.js.map +1 -0
  95. package/dist/core/save/save-yml-resolution.js +77 -39
  96. package/dist/core/save/save-yml-resolution.js.map +1 -1
  97. package/dist/core/save/workspace-rename.js +6 -6
  98. package/dist/core/save/workspace-rename.js.map +1 -1
  99. package/dist/core/scoping/package-scoping.js +13 -1
  100. package/dist/core/scoping/package-scoping.js.map +1 -1
  101. package/dist/core/status/status-file-discovery.js +12 -30
  102. package/dist/core/status/status-file-discovery.js.map +1 -1
  103. package/dist/core/sync/platform-sync.js +7 -4
  104. package/dist/core/sync/platform-sync.js.map +1 -1
  105. package/dist/core/sync/root-files-sync.js +59 -1
  106. package/dist/core/sync/root-files-sync.js.map +1 -1
  107. package/dist/core/uninstall/uninstall-file-discovery.js +1 -2
  108. package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
  109. package/dist/types/index.js.map +1 -1
  110. package/dist/utils/file-processing.js +5 -58
  111. package/dist/utils/file-processing.js.map +1 -1
  112. package/dist/utils/index-based-installer.js +15 -33
  113. package/dist/utils/index-based-installer.js.map +1 -1
  114. package/dist/utils/install-file-discovery.js +3 -3
  115. package/dist/utils/install-file-discovery.js.map +1 -1
  116. package/dist/utils/install-orchestrator.js +21 -21
  117. package/dist/utils/install-orchestrator.js.map +1 -1
  118. package/dist/utils/jsonc.js +44 -0
  119. package/dist/utils/jsonc.js.map +1 -0
  120. package/dist/utils/package-copy.js +199 -0
  121. package/dist/utils/package-copy.js.map +1 -0
  122. package/dist/utils/package-filters.js +125 -0
  123. package/dist/utils/package-filters.js.map +1 -0
  124. package/dist/utils/package-index-yml.js +15 -10
  125. package/dist/utils/package-index-yml.js.map +1 -1
  126. package/dist/utils/package-installation.js +4 -113
  127. package/dist/utils/package-installation.js.map +1 -1
  128. package/dist/utils/package-local-files.js +2 -35
  129. package/dist/utils/package-local-files.js.map +1 -1
  130. package/dist/utils/package-management.js +59 -37
  131. package/dist/utils/package-management.js.map +1 -1
  132. package/dist/utils/package-yml.js +24 -0
  133. package/dist/utils/package-yml.js.map +1 -1
  134. package/dist/utils/path-normalization.js +8 -53
  135. package/dist/utils/path-normalization.js.map +1 -1
  136. package/dist/utils/paths.js +17 -9
  137. package/dist/utils/paths.js.map +1 -1
  138. package/dist/utils/platform-file.js +16 -59
  139. package/dist/utils/platform-file.js.map +1 -1
  140. package/dist/utils/platform-mapper.js +29 -41
  141. package/dist/utils/platform-mapper.js.map +1 -1
  142. package/dist/utils/platform-specific-paths.js.map +1 -1
  143. package/dist/utils/platform-utils.js +28 -139
  144. package/dist/utils/platform-utils.js.map +1 -1
  145. package/dist/utils/platform-yaml-merge.js +13 -6
  146. package/dist/utils/platform-yaml-merge.js.map +1 -1
  147. package/dist/utils/registry-entry-filter.js +38 -24
  148. package/dist/utils/registry-entry-filter.js.map +1 -1
  149. package/dist/utils/registry-paths.js +10 -0
  150. package/dist/utils/registry-paths.js.map +1 -0
  151. package/dist/utils/root-file-installer.js +19 -0
  152. package/dist/utils/root-file-installer.js.map +1 -1
  153. package/dist/utils/root-file-registry.js.map +1 -1
  154. package/package.json +3 -2
  155. package/platforms.jsonc +178 -0
  156. package/specs/package/README.md +60 -0
  157. package/specs/package/nested-packages-and-parent-packages.md +79 -0
  158. package/specs/package/package-index-yml.md +171 -0
  159. package/specs/package/package-root-layout.md +78 -0
  160. package/specs/package/registry-payload-and-copy.md +77 -0
  161. package/specs/package/universal-content.md +144 -0
  162. package/specs/platforms.md +193 -0
  163. package/specs/save/README.md +40 -0
  164. package/specs/save/save-conflict-resolution.md +146 -0
  165. package/specs/save/save-file-discovery.md +101 -0
  166. package/specs/save/save-frontmatter-overrides.md +81 -0
  167. package/specs/save/save-modes-inputs.md +53 -0
  168. package/specs/save/save-naming-scoping.md +93 -0
  169. package/specs/save/save-package-detection.md +60 -0
  170. package/specs/save/save-registry-sync.md +126 -0
  171. package/dist/commands/release.js +0 -33
  172. package/dist/commands/release.js.map +0 -1
  173. package/dist/commands/tag.js +0 -311
  174. package/dist/commands/tag.js.map +0 -1
  175. package/dist/commands/update.js +0 -30
  176. package/dist/commands/update.js.map +0 -1
  177. package/dist/core/add/formula-index-updater.js +0 -290
  178. package/dist/core/add/formula-index-updater.js.map +0 -1
  179. package/dist/core/discovery/ai-files-discovery.js +0 -2
  180. package/dist/core/discovery/ai-files-discovery.js.map +0 -1
  181. package/dist/core/discovery/formula-files-discovery.js +0 -14
  182. package/dist/core/discovery/formula-files-discovery.js.map +0 -1
  183. package/dist/core/discovery/index-files-discovery.js +0 -91
  184. package/dist/core/discovery/index-files-discovery.js.map +0 -1
  185. package/dist/core/discovery/md-files-discovery.js +0 -82
  186. package/dist/core/discovery/md-files-discovery.js.map +0 -1
  187. package/dist/core/discovery/package-files-discovery.js +0 -14
  188. package/dist/core/discovery/package-files-discovery.js.map +0 -1
  189. package/dist/core/discovery/platform-discovery.js +0 -84
  190. package/dist/core/discovery/platform-discovery.js.map +0 -1
  191. package/dist/core/discovery/root-files-discovery.js +0 -2
  192. package/dist/core/discovery/root-files-discovery.js.map +0 -1
  193. package/dist/core/formula.js +0 -170
  194. package/dist/core/formula.js.map +0 -1
  195. package/dist/core/git-registry.js +0 -46
  196. package/dist/core/git-registry.js.map +0 -1
  197. package/dist/core/groundzero.js +0 -277
  198. package/dist/core/groundzero.js.map +0 -1
  199. package/dist/core/install/scenario.js +0 -11
  200. package/dist/core/install/scenario.js.map +0 -1
  201. package/dist/core/package-sync.js +0 -219
  202. package/dist/core/package-sync.js.map +0 -1
  203. package/dist/core/save/formula-file-generator.js +0 -167
  204. package/dist/core/save/formula-file-generator.js.map +0 -1
  205. package/dist/core/save/formula-saver.js +0 -52
  206. package/dist/core/save/formula-saver.js.map +0 -1
  207. package/dist/core/save/formula-yml-generator.js +0 -89
  208. package/dist/core/save/formula-yml-generator.js.map +0 -1
  209. package/dist/core/save/formula-yml-versioning.js +0 -108
  210. package/dist/core/save/formula-yml-versioning.js.map +0 -1
  211. package/dist/core/save/generic-file-sync.js +0 -38
  212. package/dist/core/save/generic-file-sync.js.map +0 -1
  213. package/dist/core/save/md-files-sync.js +0 -33
  214. package/dist/core/save/md-files-sync.js.map +0 -1
  215. package/dist/core/save/package-yml-versioning.js +0 -108
  216. package/dist/core/save/package-yml-versioning.js.map +0 -1
  217. package/dist/core/save/platform-sync.js +0 -95
  218. package/dist/core/save/platform-sync.js.map +0 -1
  219. package/dist/core/save/root-files-sync.js +0 -140
  220. package/dist/core/save/root-files-sync.js.map +0 -1
  221. package/dist/core/save/save-candidate-types.js +0 -2
  222. package/dist/core/save/save-candidate-types.js.map +0 -1
  223. package/dist/core/save/save-conflict-types.js +0 -2
  224. package/dist/core/save/save-conflict-types.js.map +0 -1
  225. package/dist/core/save/save-file-discovery.js +0 -5
  226. package/dist/core/save/save-file-discovery.js.map +0 -1
  227. package/dist/core/status-file-discovery.js +0 -175
  228. package/dist/core/status-file-discovery.js.map +0 -1
  229. package/dist/utils/discovery/file-processing.js +0 -156
  230. package/dist/utils/discovery/file-processing.js.map +0 -1
  231. package/dist/utils/discovery/formula-discovery.js +0 -211
  232. package/dist/utils/discovery/formula-discovery.js.map +0 -1
  233. package/dist/utils/discovery/platform-discovery.js +0 -2
  234. package/dist/utils/discovery/platform-discovery.js.map +0 -1
  235. package/dist/utils/formula-discovery.js +0 -102
  236. package/dist/utils/formula-discovery.js.map +0 -1
  237. package/dist/utils/formula-index-yml.js +0 -122
  238. package/dist/utils/formula-index-yml.js.map +0 -1
  239. package/dist/utils/formula-installation.js +0 -110
  240. package/dist/utils/formula-installation.js.map +0 -1
  241. package/dist/utils/formula-local-files.js +0 -38
  242. package/dist/utils/formula-local-files.js.map +0 -1
  243. package/dist/utils/formula-management.js +0 -191
  244. package/dist/utils/formula-management.js.map +0 -1
  245. package/dist/utils/formula-name.js +0 -97
  246. package/dist/utils/formula-name.js.map +0 -1
  247. package/dist/utils/formula-versioning.js +0 -109
  248. package/dist/utils/formula-versioning.js.map +0 -1
  249. package/dist/utils/formula-yml.js +0 -82
  250. package/dist/utils/formula-yml.js.map +0 -1
  251. package/dist/utils/git.js +0 -54
  252. package/dist/utils/git.js.map +0 -1
  253. package/dist/utils/id-based-discovery.js +0 -126
  254. package/dist/utils/id-based-discovery.js.map +0 -1
  255. package/dist/utils/id-based-installer.js +0 -249
  256. package/dist/utils/id-based-installer.js.map +0 -1
  257. package/dist/utils/index-yml-based-installer.js +0 -375
  258. package/dist/utils/index-yml-based-installer.js.map +0 -1
  259. package/dist/utils/index-yml.js +0 -124
  260. package/dist/utils/index-yml.js.map +0 -1
  261. package/dist/utils/md-frontmatter.js +0 -3
  262. package/dist/utils/md-frontmatter.js.map +0 -1
  263. package/dist/utils/package-link-yml.js +0 -92
  264. package/dist/utils/package-link-yml.js.map +0 -1
  265. package/dist/utils/platform-discovery.js +0 -2
  266. package/dist/utils/platform-discovery.js.map +0 -1
  267. package/dist/utils/platform-frontmatter-split.js +0 -15
  268. package/dist/utils/platform-frontmatter-split.js.map +0 -1
  269. package/dist/utils/timestamp-encoder.js +0 -13
  270. package/dist/utils/timestamp-encoder.js.map +0 -1
  271. package/dist/utils/wip-versioning.js +0 -24
  272. package/dist/utils/wip-versioning.js.map +0 -1
@@ -1,159 +1,93 @@
1
- import { basename, join, relative } from 'path';
2
- import { parsePackageYml, writePackageYml } from '../utils/package-yml.js';
1
+ import { basename, relative } from 'path';
2
+ import { writePackageYml } from '../utils/package-yml.js';
3
3
  import { promptPackageDetails, promptPackageDetailsForNamed } from '../utils/prompts.js';
4
4
  import { logger } from '../utils/logger.js';
5
5
  import { displayPackageConfig } from '../utils/formatters.js';
6
6
  import { withErrorHandling, UserCancellationError } from '../utils/errors.js';
7
- import { exists, ensureDir } from '../utils/fs.js';
8
- import { FILE_PATTERNS } from '../constants/index.js';
9
- import { getLocalOpenPackageDir, getLocalPackageYmlPath, getLocalPackageDir } from '../utils/paths.js';
7
+ import { ensureDir } from '../utils/fs.js';
8
+ import { detectPackageContext, getPackageYmlPath, getPackageFilesDir, createPackageContext } from '../core/package-context.js';
10
9
  import { normalizePackageName, validatePackageName } from '../utils/package-name.js';
11
- import { createBasicPackageYml, addPackageToYml } from '../utils/package-management.js';
10
+ import { createWorkspacePackageYml, addPackageToYml } from '../utils/package-management.js';
12
11
  /**
13
- * Initialize package.yml command implementation
12
+ * Initialize root package (cwd as package)
14
13
  */
15
- async function initPackageCommand(force) {
16
- const packageDir = process.cwd();
17
- const openpackageDir = getLocalOpenPackageDir(packageDir);
18
- const packageYmlPath = getLocalPackageYmlPath(packageDir);
19
- logger.info(`Initializing package.yml in directory: ${openpackageDir}`);
20
- let packageConfig;
21
- // Check if package.yml already exists
22
- if (await exists(packageYmlPath)) {
23
- if (force) {
24
- logger.info('Found existing package.yml, forcing overwrite...');
25
- try {
26
- // Ensure .openpackage directory exists
27
- await ensureDir(openpackageDir);
28
- // Prompt for package details (npm init style)
29
- const defaultName = basename(packageDir);
30
- packageConfig = await promptPackageDetails(defaultName);
31
- // Create the package.yml file
32
- await writePackageYml(packageYmlPath, packageConfig);
33
- displayPackageConfig(packageConfig, relative(process.cwd(), packageYmlPath), false);
34
- return {
35
- success: true,
36
- data: packageConfig
37
- };
38
- }
39
- catch (error) {
40
- if (error instanceof UserCancellationError) {
41
- throw error; // Re-throw to be handled by withErrorHandling
42
- }
43
- return {
44
- success: false,
45
- error: `Failed to overwrite package.yml: ${error}`
46
- };
47
- }
48
- }
49
- else {
50
- logger.info('Found existing package.yml, parsing...');
51
- try {
52
- packageConfig = await parsePackageYml(packageYmlPath);
53
- displayPackageConfig(packageConfig, relative(process.cwd(), packageYmlPath), true);
54
- return {
55
- success: true,
56
- data: packageConfig
57
- };
58
- }
59
- catch (error) {
60
- return {
61
- success: false,
62
- error: `Failed to parse existing package.yml: ${error}`
63
- };
64
- }
14
+ async function initRootPackage(force) {
15
+ const cwd = process.cwd();
16
+ const packageYmlPath = getPackageYmlPath(cwd, 'root');
17
+ const packageFilesDir = getPackageFilesDir(cwd, 'root');
18
+ logger.info(`Initializing root package in: ${packageFilesDir}`);
19
+ // Check if already exists
20
+ const existingContext = await detectPackageContext(cwd);
21
+ if (existingContext && existingContext.location === 'root') {
22
+ if (!force) {
23
+ logger.info('Found existing root package.yml');
24
+ displayPackageConfig(existingContext.config, relative(cwd, packageYmlPath), true);
25
+ return { success: true, data: existingContext };
65
26
  }
27
+ logger.info('Found existing package.yml, forcing overwrite...');
66
28
  }
67
- else {
68
- logger.info('No package.yml found, creating new package...');
69
- try {
70
- // Ensure the target directory exists
71
- await ensureDir(packageDir);
72
- // Prompt for package details (npm init style)
73
- const defaultName = basename(packageDir);
74
- packageConfig = await promptPackageDetails(defaultName);
75
- // Ensure .openpackage directory exists
76
- await ensureDir(openpackageDir);
77
- // Create the package.yml file
78
- await writePackageYml(packageYmlPath, packageConfig);
79
- displayPackageConfig(packageConfig, relative(process.cwd(), packageYmlPath), false);
80
- return {
81
- success: true,
82
- data: packageConfig
83
- };
84
- }
85
- catch (error) {
86
- if (error instanceof UserCancellationError) {
87
- throw error; // Re-throw to be handled by withErrorHandling
88
- }
89
- return {
90
- success: false,
91
- error: `Failed to create package.yml: ${error}`
92
- };
29
+ try {
30
+ await ensureDir(packageFilesDir);
31
+ const defaultName = basename(cwd);
32
+ const packageConfig = await promptPackageDetails(defaultName);
33
+ await writePackageYml(packageYmlPath, packageConfig);
34
+ const context = createPackageContext(cwd, packageConfig, 'root');
35
+ displayPackageConfig(packageConfig, relative(cwd, packageYmlPath), false);
36
+ return { success: true, data: context };
37
+ }
38
+ catch (error) {
39
+ if (error instanceof UserCancellationError) {
40
+ throw error;
93
41
  }
42
+ return { success: false, error: `Failed to initialize root package: ${error}` };
94
43
  }
95
44
  }
96
45
  /**
97
- * Initialize package.yml in the packages directory for a specific package name
46
+ * Initialize nested package
98
47
  */
99
- async function initPackageInPackagesDir(packageName, force) {
48
+ async function initNestedPackage(packageName, force) {
100
49
  const cwd = process.cwd();
101
- // Validate and normalize package name for consistent behavior
102
50
  validatePackageName(packageName);
103
- const normalizedPackageName = normalizePackageName(packageName);
104
- // Ensure root .openpackage/package.yml exists; do not overwrite if present
105
- await createBasicPackageYml(cwd, false);
106
- // Get the package directory path (.openpackage/packages/{packageName})
107
- const packageDir = getLocalPackageDir(cwd, normalizedPackageName);
108
- const packageYmlPath = join(packageDir, FILE_PATTERNS.PACKAGE_YML);
109
- logger.info(`Initializing package.yml for '${packageName}' in directory: ${packageDir}`);
110
- let packageConfig;
111
- // Check if package.yml already exists
112
- if (await exists(packageYmlPath)) {
113
- logger.info('Found existing package.yml, parsing...');
114
- try {
115
- packageConfig = await parsePackageYml(packageYmlPath);
116
- displayPackageConfig(packageConfig, relative(process.cwd(), packageYmlPath), true);
117
- // Link package dependency into root package.yml
118
- await addPackageToYml(cwd, normalizedPackageName, packageConfig.version);
119
- return {
120
- success: true,
121
- data: packageConfig
122
- };
123
- }
124
- catch (error) {
51
+ const normalizedName = normalizePackageName(packageName);
52
+ // Ensure root package.yml exists
53
+ await createWorkspacePackageYml(cwd, false);
54
+ // Check if package already exists
55
+ const existingContext = await detectPackageContext(cwd, normalizedName);
56
+ if (existingContext) {
57
+ if (existingContext.location === 'root') {
125
58
  return {
126
59
  success: false,
127
- error: `Failed to parse existing package.yml: ${error}`
60
+ error: `Package '${packageName}' matches the root package name. Use 'opkg init' without arguments to reinitialize the root package.`
128
61
  };
129
62
  }
63
+ if (!force) {
64
+ logger.info('Found existing nested package');
65
+ displayPackageConfig(existingContext.config, relative(cwd, existingContext.packageYmlPath), true);
66
+ return { success: true, data: existingContext };
67
+ }
130
68
  }
131
- else {
132
- logger.info('No package.yml found, creating new package...');
133
- try {
134
- // Ensure the package directory exists
135
- await ensureDir(packageDir);
136
- // Prompt for package details (skip name prompt since it's provided)
137
- packageConfig = await promptPackageDetailsForNamed(normalizedPackageName);
138
- // Create the package.yml file
139
- await writePackageYml(packageYmlPath, packageConfig);
140
- displayPackageConfig(packageConfig, relative(process.cwd(), packageYmlPath), false);
141
- // Link package dependency into root package.yml
142
- await addPackageToYml(cwd, normalizedPackageName, packageConfig.version);
143
- return {
144
- success: true,
145
- data: packageConfig
146
- };
69
+ const packageFilesDir = getPackageFilesDir(cwd, 'nested', normalizedName);
70
+ const packageYmlPath = getPackageYmlPath(cwd, 'nested', normalizedName);
71
+ logger.info(`Initializing nested package '${normalizedName}' in: ${packageFilesDir}`);
72
+ try {
73
+ await ensureDir(packageFilesDir);
74
+ const packageConfig = await promptPackageDetailsForNamed(normalizedName);
75
+ // Ensure include pattern is set
76
+ if (!packageConfig.include || packageConfig.include.length === 0) {
77
+ packageConfig.include = ['**'];
147
78
  }
148
- catch (error) {
149
- if (error instanceof UserCancellationError) {
150
- throw error; // Re-throw to be handled by withErrorHandling
151
- }
152
- return {
153
- success: false,
154
- error: `Failed to create package.yml: ${error}`
155
- };
79
+ await writePackageYml(packageYmlPath, packageConfig);
80
+ const context = createPackageContext(cwd, packageConfig, 'nested');
81
+ displayPackageConfig(packageConfig, relative(cwd, packageYmlPath), false);
82
+ // Add to root package dependencies
83
+ await addPackageToYml(cwd, normalizedName, packageConfig.version);
84
+ return { success: true, data: context };
85
+ }
86
+ catch (error) {
87
+ if (error instanceof UserCancellationError) {
88
+ throw error;
156
89
  }
90
+ return { success: false, error: `Failed to initialize nested package: ${error}` };
157
91
  }
158
92
  }
159
93
  /**
@@ -167,19 +101,13 @@ export function setupInitCommand(program) {
167
101
  'Usage patterns:\n' +
168
102
  ' opkg init # Initialize .openpackage/package.yml in current directory\n' +
169
103
  ' opkg init <package-name> # Initialize .openpackage/packages/<package-name>/package.yml')
170
- .option('-f, --force', 'overwrite existing root .openpackage/package.yml (no effect for named init root patch)')
104
+ .option('-f, --force', 'overwrite existing package.yml')
171
105
  .action(withErrorHandling(async (packageName, options) => {
172
- if (packageName) {
173
- const result = await initPackageInPackagesDir(packageName, options?.force);
174
- if (!result.success) {
175
- throw new Error(result.error || 'Init operation failed');
176
- }
177
- }
178
- else {
179
- const result = await initPackageCommand(options?.force);
180
- if (!result.success) {
181
- throw new Error(result.error || 'Init operation failed');
182
- }
106
+ const result = packageName
107
+ ? await initNestedPackage(packageName, options?.force)
108
+ : await initRootPackage(options?.force);
109
+ if (!result.success) {
110
+ throw new Error(result.error || 'Init operation failed');
183
111
  }
184
112
  }));
185
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}