@eldrforge/kodrdriv 0.0.6 → 0.0.7
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 +61 -4
- package/dist/commands/link.js +38 -21
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/publish.js +32 -28
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/release.js +4 -1
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/unlink.js +33 -31
- package/dist/commands/unlink.js.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/main.js +2 -1
- package/dist/main.js.map +1 -1
- package/dist/prompt/instructions/release.md +29 -28
- package/dist/types.js +3 -1
- package/dist/types.js.map +1 -1
- package/dist/util/github.js +2 -2
- package/dist/util/github.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -171,6 +171,9 @@ KodrDriv provides several command line options to customize its behavior:
|
|
|
171
171
|
- `--dry-run`: Perform a dry run without saving files (default: false)
|
|
172
172
|
- `--verbose`: Enable verbose logging (default: false)
|
|
173
173
|
- `--debug`: Enable debug logging (default: false)
|
|
174
|
+
- `--overrides`: Enable instruction overrides (allows custom instruction files to override defaults)
|
|
175
|
+
- `--config-dir <configDir>`: Specify a custom configuration directory (default: '.kodrdriv')
|
|
176
|
+
- `--excluded-paths [excludedPatterns...]`: Paths to exclude from the diff (can specify multiple patterns)
|
|
174
177
|
- `--version`: Display version information
|
|
175
178
|
|
|
176
179
|
### Commit Command Options
|
|
@@ -279,6 +282,40 @@ Please set these environment variables before running publish.
|
|
|
279
282
|
- Never commit environment variables or tokens to your repository
|
|
280
283
|
- Consider using `.env` files (with proper .gitignore configuration) for local development
|
|
281
284
|
|
|
285
|
+
#### Workspace Package Management
|
|
286
|
+
|
|
287
|
+
The publish command provides options to control whether workspace packages should be linked or unlinked during the release process. Both operations are enabled by default for backward compatibility, but can be disabled if needed.
|
|
288
|
+
|
|
289
|
+
**Configuration Options:**
|
|
290
|
+
|
|
291
|
+
- `linkWorkspacePackages` (boolean, default: true): Controls whether to restore linked workspace packages after the publish process completes
|
|
292
|
+
- `unlinkWorkspacePackages` (boolean, default: true): Controls whether to unlink workspace packages before starting the publish process
|
|
293
|
+
|
|
294
|
+
**Configuration Example:**
|
|
295
|
+
```json
|
|
296
|
+
{
|
|
297
|
+
"publish": {
|
|
298
|
+
"linkWorkspacePackages": false,
|
|
299
|
+
"unlinkWorkspacePackages": false,
|
|
300
|
+
"mergeMethod": "squash"
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Use Cases:**
|
|
306
|
+
|
|
307
|
+
- **Skip Unlinking**: Set `unlinkWorkspacePackages: false` if you want to publish using your current workspace configuration without switching to registry dependencies
|
|
308
|
+
- **Skip Linking**: Set `linkWorkspacePackages: false` if you want to leave the project in a "release-ready" state after publishing, with registry dependencies instead of workspace links
|
|
309
|
+
- **Skip Both**: Disable both options if you're managing workspace configuration manually or using a different dependency management strategy
|
|
310
|
+
|
|
311
|
+
**Default Behavior:**
|
|
312
|
+
When both options are enabled (default), the publish command will:
|
|
313
|
+
1. Unlink workspace packages before starting (switching to registry dependencies)
|
|
314
|
+
2. Perform the release process with registry dependencies
|
|
315
|
+
3. Restore workspace links after completion (returning to local development mode)
|
|
316
|
+
|
|
317
|
+
This ensures that releases are published with proper registry dependencies while maintaining local development convenience.
|
|
318
|
+
|
|
282
319
|
#### prepublishOnly Script Requirement
|
|
283
320
|
|
|
284
321
|
The publish command requires a `prepublishOnly` script to be defined in your `package.json`. This script should contain all the checks and builds necessary to verify your project is ready for release.
|
|
@@ -426,6 +463,24 @@ kodrdriv publish --merge-method merge
|
|
|
426
463
|
kodrdriv publish --merge-method rebase
|
|
427
464
|
```
|
|
428
465
|
|
|
466
|
+
Use excluded paths to filter diff content:
|
|
467
|
+
```bash
|
|
468
|
+
# Exclude specific files or directories from diff analysis
|
|
469
|
+
kodrdriv commit --excluded-paths "*.lock" "dist/" "node_modules/"
|
|
470
|
+
|
|
471
|
+
# Exclude patterns from release notes
|
|
472
|
+
kodrdriv release --excluded-paths "package-lock.json" "pnpm-lock.yaml"
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
Use overrides with custom instructions:
|
|
476
|
+
```bash
|
|
477
|
+
# Enable instruction overrides (requires custom instruction files in .kodrdriv/instructions/)
|
|
478
|
+
kodrdriv commit --overrides
|
|
479
|
+
|
|
480
|
+
# Use custom config directory with overrides
|
|
481
|
+
kodrdriv release --config-dir ~/my-kodrdriv-config --overrides
|
|
482
|
+
```
|
|
483
|
+
|
|
429
484
|
Link local packages for development:
|
|
430
485
|
```bash
|
|
431
486
|
# Basic linking with single scope
|
|
@@ -483,7 +538,9 @@ Example configuration file (`.kodrdriv/config.json`):
|
|
|
483
538
|
"publish": {
|
|
484
539
|
"mergeMethod": "merge",
|
|
485
540
|
"dependencyUpdatePatterns": ["@company/*", "@myorg/*"],
|
|
486
|
-
"requiredEnvVars": ["NODE_AUTH_TOKEN", "CUSTOM_TOKEN"]
|
|
541
|
+
"requiredEnvVars": ["NODE_AUTH_TOKEN", "CUSTOM_TOKEN"],
|
|
542
|
+
"linkWorkspacePackages": true,
|
|
543
|
+
"unlinkWorkspacePackages": true
|
|
487
544
|
},
|
|
488
545
|
"commit": {
|
|
489
546
|
"add": true,
|
|
@@ -698,10 +755,10 @@ Whether you're merging branches or writing books, kodrdriv is built for that end
|
|
|
698
755
|
|
|
699
756
|
### Release Command Options
|
|
700
757
|
|
|
701
|
-
- `--from <from>`: Branch or reference to generate release notes from
|
|
702
|
-
- `--to <to>`: Branch or reference to generate release notes to
|
|
758
|
+
- `--from <from>`: Branch or reference to generate release notes from (default: 'main')
|
|
759
|
+
- `--to <to>`: Branch or reference to generate release notes to (default: 'HEAD')
|
|
703
760
|
- `--context <context>`: Provide additional context (as a string or file path) to guide the release notes generation. This context is included in the prompt sent to the AI and can be used to specify the purpose, theme, or any special considerations for the release.
|
|
704
|
-
- `--message-limit <messageLimit>`: Limit the number of recent commit messages (from git log) to include in the release notes prompt (default: 10).
|
|
761
|
+
- `--message-limit <messageLimit>`: Limit the number of recent commit messages (from git log) to include in the release notes prompt (default: 10). Reducing this number can make the summary more focused, while increasing it provides broader historical context.
|
|
705
762
|
|
|
706
763
|
### Explanation
|
|
707
764
|
|
package/dist/commands/link.js
CHANGED
|
@@ -2,6 +2,7 @@ import path from 'path';
|
|
|
2
2
|
import yaml from 'js-yaml';
|
|
3
3
|
import { getLogger } from '../logging.js';
|
|
4
4
|
import { create } from '../util/storage.js';
|
|
5
|
+
import { run } from '../util/child.js';
|
|
5
6
|
|
|
6
7
|
const scanDirectoryForPackages = async (rootDir, storage)=>{
|
|
7
8
|
const logger = getLogger();
|
|
@@ -41,7 +42,7 @@ const scanDirectoryForPackages = async (rootDir, storage)=>{
|
|
|
41
42
|
};
|
|
42
43
|
const findPackagesByScope = async (dependencies, scopeRoots, storage)=>{
|
|
43
44
|
const logger = getLogger();
|
|
44
|
-
const workspacePackages =
|
|
45
|
+
const workspacePackages = new Map();
|
|
45
46
|
logger.debug(`Checking dependencies against scope roots: ${JSON.stringify(scopeRoots)}`);
|
|
46
47
|
// First, scan all scope roots to build a comprehensive map of available packages
|
|
47
48
|
const allPackages = new Map(); // packageName -> relativePath
|
|
@@ -61,7 +62,7 @@ const findPackagesByScope = async (dependencies, scopeRoots, storage)=>{
|
|
|
61
62
|
logger.debug(`Processing dependency: ${depName}@${depVersion}`);
|
|
62
63
|
if (allPackages.has(depName)) {
|
|
63
64
|
const packagePath = allPackages.get(depName);
|
|
64
|
-
workspacePackages.
|
|
65
|
+
workspacePackages.set(depName, packagePath);
|
|
65
66
|
logger.info(`Found sibling package: ${depName} at ${packagePath}`);
|
|
66
67
|
}
|
|
67
68
|
}
|
|
@@ -71,14 +72,12 @@ const readCurrentWorkspaceFile = async (workspaceFilePath, storage)=>{
|
|
|
71
72
|
if (await storage.exists(workspaceFilePath)) {
|
|
72
73
|
try {
|
|
73
74
|
const content = await storage.readFile(workspaceFilePath, 'utf-8');
|
|
74
|
-
return yaml.load(content);
|
|
75
|
+
return yaml.load(content) || {};
|
|
75
76
|
} catch (error) {
|
|
76
77
|
throw new Error(`Failed to parse existing workspace file: ${error}`);
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
|
-
return {
|
|
80
|
-
packages: []
|
|
81
|
-
};
|
|
80
|
+
return {};
|
|
82
81
|
};
|
|
83
82
|
const writeWorkspaceFile = async (workspaceFilePath, config, storage)=>{
|
|
84
83
|
const yamlContent = yaml.dump(config, {
|
|
@@ -95,7 +94,7 @@ const execute = async (runConfig)=>{
|
|
|
95
94
|
const storage = create({
|
|
96
95
|
log: logger.info
|
|
97
96
|
});
|
|
98
|
-
logger.info('Starting pnpm workspace link management...');
|
|
97
|
+
logger.info('Starting pnpm workspace link management using overrides...');
|
|
99
98
|
// Read current package.json
|
|
100
99
|
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
101
100
|
if (!await storage.exists(packageJsonPath)) {
|
|
@@ -128,25 +127,33 @@ const execute = async (runConfig)=>{
|
|
|
128
127
|
};
|
|
129
128
|
logger.info(`Found ${Object.keys(allDependencies).length} total dependencies`);
|
|
130
129
|
// Find matching sibling packages
|
|
131
|
-
const
|
|
132
|
-
if (
|
|
130
|
+
const packagesToLink = await findPackagesByScope(allDependencies, scopeRoots, storage);
|
|
131
|
+
if (packagesToLink.size === 0) {
|
|
133
132
|
logger.info('No matching sibling packages found for linking.');
|
|
134
133
|
return 'No matching sibling packages found for linking.';
|
|
135
134
|
}
|
|
136
|
-
logger.info(`Found ${
|
|
135
|
+
logger.info(`Found ${packagesToLink.size} packages to link: ${[
|
|
136
|
+
...packagesToLink.keys()
|
|
137
|
+
].join(', ')}`);
|
|
137
138
|
// Read existing workspace configuration
|
|
138
139
|
const workspaceFilePath = path.join(process.cwd(), workspaceFileName);
|
|
139
140
|
const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);
|
|
140
|
-
//
|
|
141
|
-
const
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
141
|
+
// Create overrides
|
|
142
|
+
const newOverrides = {};
|
|
143
|
+
for (const [packageName, packagePath] of packagesToLink.entries()){
|
|
144
|
+
newOverrides[packageName] = `link:${packagePath}`;
|
|
145
|
+
}
|
|
146
|
+
const updatedOverrides = {
|
|
147
|
+
...workspaceConfig.overrides || {},
|
|
148
|
+
...newOverrides
|
|
149
|
+
};
|
|
150
|
+
const sortedOverrides = Object.keys(updatedOverrides).sort().reduce((obj, key)=>{
|
|
151
|
+
obj[key] = updatedOverrides[key];
|
|
152
|
+
return obj;
|
|
153
|
+
}, {});
|
|
148
154
|
const updatedConfig = {
|
|
149
|
-
|
|
155
|
+
...workspaceConfig,
|
|
156
|
+
overrides: sortedOverrides
|
|
150
157
|
};
|
|
151
158
|
// Write the updated workspace file
|
|
152
159
|
if (isDryRun) {
|
|
@@ -156,9 +163,19 @@ const execute = async (runConfig)=>{
|
|
|
156
163
|
}));
|
|
157
164
|
} else {
|
|
158
165
|
await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);
|
|
159
|
-
logger.info(`Updated ${workspaceFileName} with ${
|
|
166
|
+
logger.info(`Updated ${workspaceFileName} with ${packagesToLink.size} linked packages in overrides.`);
|
|
167
|
+
// Rebuild pnpm lock file and node_modules
|
|
168
|
+
logger.info('Running pnpm install to apply links...');
|
|
169
|
+
try {
|
|
170
|
+
await run('pnpm install');
|
|
171
|
+
logger.info('Successfully applied links.');
|
|
172
|
+
} catch (error) {
|
|
173
|
+
logger.warn(`Failed to run pnpm install: ${error}. You may need to run 'pnpm install' manually.`);
|
|
174
|
+
}
|
|
160
175
|
}
|
|
161
|
-
const summary = `Successfully linked ${
|
|
176
|
+
const summary = `Successfully linked ${packagesToLink.size} sibling packages:\n${[
|
|
177
|
+
...packagesToLink.entries()
|
|
178
|
+
].map(([name, path])=>` - ${name}: link:${path}`).join('\n')}`;
|
|
162
179
|
return summary;
|
|
163
180
|
};
|
|
164
181
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sources":["../../src/commands/link.ts"],"sourcesContent":["import path from 'path';\nimport yaml from 'js-yaml';\nimport { getLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\n\ninterface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\ninterface WorkspaceConfig {\n packages?: string[];\n}\n\nconst scanDirectoryForPackages = async (rootDir: string, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const packageMap = new Map<string, string>(); // packageName -> relativePath\n\n const absoluteRootDir = path.resolve(process.cwd(), rootDir);\n logger.debug(`Scanning directory for packages: ${absoluteRootDir}`);\n\n if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {\n logger.debug(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);\n return packageMap;\n }\n\n try {\n // Get all subdirectories in the root directory\n const items = await storage.listFiles(absoluteRootDir);\n\n for (const item of items) {\n const itemPath = path.join(absoluteRootDir, item);\n\n if (await storage.isDirectory(itemPath)) {\n const packageJsonPath = path.join(itemPath, 'package.json');\n\n if (await storage.exists(packageJsonPath)) {\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as PackageJson;\n\n if (packageJson.name) {\n const relativePath = path.relative(process.cwd(), itemPath);\n packageMap.set(packageJson.name, relativePath);\n logger.debug(`Found package: ${packageJson.name} at ${relativePath}`);\n }\n } catch (error) {\n logger.debug(`Failed to parse package.json at ${packageJsonPath}: ${error}`);\n }\n }\n }\n }\n } catch (error) {\n logger.warn(`Failed to read directory ${absoluteRootDir}: ${error}`);\n }\n\n return packageMap;\n};\n\nconst findPackagesByScope = async (dependencies: Record<string, string>, scopeRoots: Record<string, string>, storage: any): Promise<string[]> => {\n const logger = getLogger();\n const workspacePackages: string[] = [];\n\n logger.debug(`Checking dependencies against scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // First, scan all scope roots to build a comprehensive map of available packages\n const allPackages = new Map<string, string>(); // packageName -> relativePath\n\n for (const [scope, rootDir] of Object.entries(scopeRoots)) {\n logger.debug(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n allPackages.set(packageName, packagePath);\n logger.debug(`Registered package: ${packageName} -> ${packagePath}`);\n }\n }\n }\n\n // Now check each dependency against our discovered packages\n for (const [depName, depVersion] of Object.entries(dependencies)) {\n logger.debug(`Processing dependency: ${depName}@${depVersion}`);\n\n if (allPackages.has(depName)) {\n const packagePath = allPackages.get(depName)!;\n workspacePackages.push(packagePath);\n logger.info(`Found sibling package: ${depName} at ${packagePath}`);\n }\n }\n\n return workspacePackages;\n};\n\nconst readCurrentWorkspaceFile = async (workspaceFilePath: string, storage: any): Promise<WorkspaceConfig> => {\n if (await storage.exists(workspaceFilePath)) {\n try {\n const content = await storage.readFile(workspaceFilePath, 'utf-8');\n return yaml.load(content) as WorkspaceConfig;\n } catch (error) {\n throw new Error(`Failed to parse existing workspace file: ${error}`);\n }\n }\n return { packages: [] };\n};\n\nconst writeWorkspaceFile = async (workspaceFilePath: string, config: WorkspaceConfig, storage: any): Promise<void> => {\n const yamlContent = yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n sortKeys: false\n });\n await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Starting pnpm workspace link management...');\n\n // Read current package.json\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson: PackageJson;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContent);\n } catch (error) {\n throw new Error(`Failed to parse package.json: ${error}`);\n }\n\n logger.info(`Processing package: ${packageJson.name || 'unnamed'}`);\n\n // Get configuration\n const scopeRoots = runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.link?.workspaceFile || 'pnpm-workspace.yaml';\n const isDryRun = runConfig.dryRun || runConfig.link?.dryRun || false;\n\n logger.debug('Extracted scopeRoots:', JSON.stringify(scopeRoots));\n logger.debug('Extracted workspaceFileName:', workspaceFileName);\n logger.debug('Extracted isDryRun:', isDryRun);\n\n if (Object.keys(scopeRoots).length === 0) {\n throw new Error('No scope roots configured. Please configure scope roots in your config file or via --scope-roots CLI option.');\n }\n\n logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Collect all dependencies\n const allDependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n ...packageJson.peerDependencies\n };\n\n logger.info(`Found ${Object.keys(allDependencies).length} total dependencies`);\n\n // Find matching sibling packages\n const workspacePackages = await findPackagesByScope(allDependencies, scopeRoots, storage);\n\n if (workspacePackages.length === 0) {\n logger.info('No matching sibling packages found for linking.');\n return 'No matching sibling packages found for linking.';\n }\n\n logger.info(`Found ${workspacePackages.length} packages to link: ${workspacePackages.join(', ')}`);\n\n // Read existing workspace configuration\n const workspaceFilePath = path.join(process.cwd(), workspaceFileName);\n const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);\n\n // Merge with existing packages (avoid duplicates)\n const existingPackages = workspaceConfig.packages || [];\n const allPackages = [...new Set([...existingPackages, ...workspacePackages])];\n\n const updatedConfig: WorkspaceConfig = {\n packages: allPackages.sort()\n };\n\n // Write the updated workspace file\n if (isDryRun) {\n logger.info('DRY RUN: Would write the following workspace configuration:');\n logger.info(yaml.dump(updatedConfig, { indent: 2 }));\n } else {\n await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);\n logger.info(`Updated ${workspaceFileName} with ${workspacePackages.length} linked packages`);\n }\n\n const summary = `Successfully linked ${workspacePackages.length} sibling packages:\\n${workspacePackages.map(pkg => ` - ${pkg}`).join('\\n')}`;\n\n return summary;\n}; "],"names":["scanDirectoryForPackages","rootDir","storage","logger","getLogger","packageMap","Map","absoluteRootDir","path","resolve","process","cwd","debug","exists","isDirectory","items","listFiles","item","itemPath","join","packageJsonPath","packageJsonContent","readFile","packageJson","JSON","parse","name","relativePath","relative","set","error","warn","findPackagesByScope","dependencies","scopeRoots","workspacePackages","stringify","allPackages","scope","Object","entries","scopePackages","packageName","packagePath","startsWith","depName","depVersion","has","get","push","info","readCurrentWorkspaceFile","workspaceFilePath","content","yaml","load","Error","packages","writeWorkspaceFile","config","yamlContent","dump","indent","lineWidth","noRefs","sortKeys","writeFile","execute","runConfig","createStorage","log","link","workspaceFileName","workspaceFile","isDryRun","dryRun","keys","length","allDependencies","devDependencies","peerDependencies","workspaceConfig","existingPackages","Set","updatedConfig","sort","summary","map","pkg"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"link.js","sources":["../../src/commands/link.ts"],"sourcesContent":["import path from 'path';\nimport yaml from 'js-yaml';\nimport { getLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\nimport { run } from '../util/child';\n\ninterface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\ninterface PnpmWorkspaceFile {\n packages?: string[];\n overrides?: Record<string, string>;\n}\n\nconst scanDirectoryForPackages = async (rootDir: string, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const packageMap = new Map<string, string>(); // packageName -> relativePath\n\n const absoluteRootDir = path.resolve(process.cwd(), rootDir);\n logger.debug(`Scanning directory for packages: ${absoluteRootDir}`);\n\n if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {\n logger.debug(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);\n return packageMap;\n }\n\n try {\n // Get all subdirectories in the root directory\n const items = await storage.listFiles(absoluteRootDir);\n\n for (const item of items) {\n const itemPath = path.join(absoluteRootDir, item);\n\n if (await storage.isDirectory(itemPath)) {\n const packageJsonPath = path.join(itemPath, 'package.json');\n\n if (await storage.exists(packageJsonPath)) {\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as PackageJson;\n\n if (packageJson.name) {\n const relativePath = path.relative(process.cwd(), itemPath);\n packageMap.set(packageJson.name, relativePath);\n logger.debug(`Found package: ${packageJson.name} at ${relativePath}`);\n }\n } catch (error) {\n logger.debug(`Failed to parse package.json at ${packageJsonPath}: ${error}`);\n }\n }\n }\n }\n } catch (error) {\n logger.warn(`Failed to read directory ${absoluteRootDir}: ${error}`);\n }\n\n return packageMap;\n};\n\nconst findPackagesByScope = async (dependencies: Record<string, string>, scopeRoots: Record<string, string>, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const workspacePackages = new Map<string, string>();\n\n logger.debug(`Checking dependencies against scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // First, scan all scope roots to build a comprehensive map of available packages\n const allPackages = new Map<string, string>(); // packageName -> relativePath\n\n for (const [scope, rootDir] of Object.entries(scopeRoots)) {\n logger.debug(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n allPackages.set(packageName, packagePath);\n logger.debug(`Registered package: ${packageName} -> ${packagePath}`);\n }\n }\n }\n\n // Now check each dependency against our discovered packages\n for (const [depName, depVersion] of Object.entries(dependencies)) {\n logger.debug(`Processing dependency: ${depName}@${depVersion}`);\n\n if (allPackages.has(depName)) {\n const packagePath = allPackages.get(depName)!;\n workspacePackages.set(depName, packagePath);\n logger.info(`Found sibling package: ${depName} at ${packagePath}`);\n }\n }\n\n return workspacePackages;\n};\n\nconst readCurrentWorkspaceFile = async (workspaceFilePath: string, storage: any): Promise<PnpmWorkspaceFile> => {\n if (await storage.exists(workspaceFilePath)) {\n try {\n const content = await storage.readFile(workspaceFilePath, 'utf-8');\n return (yaml.load(content) as PnpmWorkspaceFile) || {};\n } catch (error) {\n throw new Error(`Failed to parse existing workspace file: ${error}`);\n }\n }\n return {};\n};\n\nconst writeWorkspaceFile = async (workspaceFilePath: string, config: PnpmWorkspaceFile, storage: any): Promise<void> => {\n const yamlContent = yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n sortKeys: false\n });\n await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Starting pnpm workspace link management using overrides...');\n\n // Read current package.json\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson: PackageJson;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContent);\n } catch (error) {\n throw new Error(`Failed to parse package.json: ${error}`);\n }\n\n logger.info(`Processing package: ${packageJson.name || 'unnamed'}`);\n\n // Get configuration\n const scopeRoots = runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.link?.workspaceFile || 'pnpm-workspace.yaml';\n const isDryRun = runConfig.dryRun || runConfig.link?.dryRun || false;\n\n logger.debug('Extracted scopeRoots:', JSON.stringify(scopeRoots));\n logger.debug('Extracted workspaceFileName:', workspaceFileName);\n logger.debug('Extracted isDryRun:', isDryRun);\n\n if (Object.keys(scopeRoots).length === 0) {\n throw new Error('No scope roots configured. Please configure scope roots in your config file or via --scope-roots CLI option.');\n }\n\n logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Collect all dependencies\n const allDependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n ...packageJson.peerDependencies\n };\n\n logger.info(`Found ${Object.keys(allDependencies).length} total dependencies`);\n\n // Find matching sibling packages\n const packagesToLink = await findPackagesByScope(allDependencies, scopeRoots, storage);\n\n if (packagesToLink.size === 0) {\n logger.info('No matching sibling packages found for linking.');\n return 'No matching sibling packages found for linking.';\n }\n\n logger.info(`Found ${packagesToLink.size} packages to link: ${[...packagesToLink.keys()].join(', ')}`);\n\n // Read existing workspace configuration\n const workspaceFilePath = path.join(process.cwd(), workspaceFileName);\n const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);\n\n // Create overrides\n const newOverrides: Record<string, string> = {};\n for (const [packageName, packagePath] of packagesToLink.entries()) {\n newOverrides[packageName] = `link:${packagePath}`;\n }\n\n const updatedOverrides = { ...(workspaceConfig.overrides || {}), ...newOverrides };\n\n const sortedOverrides = Object.keys(updatedOverrides)\n .sort()\n .reduce((obj, key) => {\n obj[key] = updatedOverrides[key];\n return obj;\n }, {} as Record<string, string>);\n\n const updatedConfig: PnpmWorkspaceFile = {\n ...workspaceConfig,\n overrides: sortedOverrides\n };\n\n\n // Write the updated workspace file\n if (isDryRun) {\n logger.info('DRY RUN: Would write the following workspace configuration:');\n logger.info(yaml.dump(updatedConfig, { indent: 2 }));\n } else {\n await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);\n logger.info(`Updated ${workspaceFileName} with ${packagesToLink.size} linked packages in overrides.`);\n\n // Rebuild pnpm lock file and node_modules\n logger.info('Running pnpm install to apply links...');\n try {\n await run('pnpm install');\n logger.info('Successfully applied links.');\n } catch (error) {\n logger.warn(`Failed to run pnpm install: ${error}. You may need to run 'pnpm install' manually.`);\n }\n }\n\n const summary = `Successfully linked ${packagesToLink.size} sibling packages:\\n${[...packagesToLink.entries()].map(([name, path]) => ` - ${name}: link:${path}`).join('\\n')}`;\n\n return summary;\n};"],"names":["scanDirectoryForPackages","rootDir","storage","logger","getLogger","packageMap","Map","absoluteRootDir","path","resolve","process","cwd","debug","exists","isDirectory","items","listFiles","item","itemPath","join","packageJsonPath","packageJsonContent","readFile","packageJson","JSON","parse","name","relativePath","relative","set","error","warn","findPackagesByScope","dependencies","scopeRoots","workspacePackages","stringify","allPackages","scope","Object","entries","scopePackages","packageName","packagePath","startsWith","depName","depVersion","has","get","info","readCurrentWorkspaceFile","workspaceFilePath","content","yaml","load","Error","writeWorkspaceFile","config","yamlContent","dump","indent","lineWidth","noRefs","sortKeys","writeFile","execute","runConfig","createStorage","log","link","workspaceFileName","workspaceFile","isDryRun","dryRun","keys","length","allDependencies","devDependencies","peerDependencies","packagesToLink","size","workspaceConfig","newOverrides","updatedOverrides","overrides","sortedOverrides","sort","reduce","obj","key","updatedConfig","run","summary","map"],"mappings":"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"}
|
package/dist/commands/publish.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import { execute as execute$
|
|
2
|
+
import { execute as execute$2 } from './commit.js';
|
|
3
3
|
import { hasStagedChanges } from '../content/diff.js';
|
|
4
|
-
import { execute as execute$
|
|
4
|
+
import { execute as execute$3 } from './release.js';
|
|
5
|
+
import { execute as execute$4 } from './link.js';
|
|
6
|
+
import { execute as execute$1 } from './unlink.js';
|
|
5
7
|
import { getLogger } from '../logging.js';
|
|
6
8
|
import { run } from '../util/child.js';
|
|
7
9
|
import { getCurrentBranchName, findOpenPullRequestByHeadRef, createPullRequest, waitForPullRequestChecks, mergePullRequest, createRelease } from '../util/github.js';
|
|
8
10
|
import { create } from '../util/storage.js';
|
|
9
11
|
import { incrementPatchVersion } from '../util/general.js';
|
|
10
12
|
|
|
11
|
-
const PNPM_WORKSPACE_FILE = 'pnpm-workspace.yaml';
|
|
12
|
-
const PNPM_WORKSPACE_BACKUP_FILE = 'pnpm-workspace.yaml.bak';
|
|
13
13
|
const scanNpmrcForEnvVars = async (storage)=>{
|
|
14
14
|
const npmrcPath = path.join(process.cwd(), '.npmrc');
|
|
15
15
|
const envVars = [];
|
|
@@ -121,33 +121,27 @@ const execute = async (runConfig)=>{
|
|
|
121
121
|
// Run prechecks before starting any work
|
|
122
122
|
await runPrechecks(runConfig);
|
|
123
123
|
logger.info('Starting release process...');
|
|
124
|
-
const workspaceFile = path.join(process.cwd(), PNPM_WORKSPACE_FILE);
|
|
125
|
-
const workspaceBackupFile = path.join(process.cwd(), PNPM_WORKSPACE_BACKUP_FILE);
|
|
126
|
-
const restoreWorkspaceFile = async ()=>{
|
|
127
|
-
if (await storage.exists(workspaceBackupFile)) {
|
|
128
|
-
logger.info('Restoring pnpm-workspace.yaml...');
|
|
129
|
-
await storage.rename(workspaceBackupFile, workspaceFile);
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
124
|
try {
|
|
133
|
-
var _runConfig_publish;
|
|
125
|
+
var _runConfig_publish, _runConfig_publish1;
|
|
126
|
+
// Unlink all workspace packages before starting (if enabled)
|
|
127
|
+
const shouldUnlink = ((_runConfig_publish = runConfig.publish) === null || _runConfig_publish === void 0 ? void 0 : _runConfig_publish.unlinkWorkspacePackages) !== false; // default to true
|
|
128
|
+
if (shouldUnlink) {
|
|
129
|
+
logger.info('Unlinking workspace packages...');
|
|
130
|
+
await execute$1(runConfig);
|
|
131
|
+
} else {
|
|
132
|
+
logger.info('Skipping unlink workspace packages (disabled in config).');
|
|
133
|
+
}
|
|
134
134
|
const branchName = await getCurrentBranchName();
|
|
135
135
|
let pr = await findOpenPullRequestByHeadRef(branchName);
|
|
136
136
|
if (pr) {
|
|
137
137
|
logger.info(`Found existing pull request for branch ${branchName}: ${pr.html_url}`);
|
|
138
138
|
} else {
|
|
139
|
-
var
|
|
139
|
+
var _runConfig_publish2;
|
|
140
140
|
logger.info('No open pull request found, starting new release publishing process...');
|
|
141
141
|
// 1. Prepare for release
|
|
142
142
|
logger.info('Preparing for release: switching from workspace to remote dependencies.');
|
|
143
|
-
if (await storage.exists(workspaceFile)) {
|
|
144
|
-
logger.info('Renaming pnpm-workspace.yaml to prevent workspace-protocol resolution');
|
|
145
|
-
await storage.rename(workspaceFile, workspaceBackupFile);
|
|
146
|
-
} else {
|
|
147
|
-
logger.info('pnpm-workspace.yaml not found, skipping rename.');
|
|
148
|
-
}
|
|
149
143
|
logger.info('Updating dependencies to latest versions from registry');
|
|
150
|
-
const updatePatterns = (
|
|
144
|
+
const updatePatterns = (_runConfig_publish2 = runConfig.publish) === null || _runConfig_publish2 === void 0 ? void 0 : _runConfig_publish2.dependencyUpdatePatterns;
|
|
151
145
|
if (updatePatterns && updatePatterns.length > 0) {
|
|
152
146
|
logger.info(`Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);
|
|
153
147
|
const patternsArg = updatePatterns.join(' ');
|
|
@@ -163,16 +157,17 @@ const execute = async (runConfig)=>{
|
|
|
163
157
|
logger.info('Checking for staged changes...');
|
|
164
158
|
if (await hasStagedChanges()) {
|
|
165
159
|
logger.info('Staged changes found, creating commit...');
|
|
166
|
-
await execute$
|
|
160
|
+
await execute$2(runConfig);
|
|
167
161
|
} else {
|
|
168
162
|
logger.info('No changes to commit, skipping commit.');
|
|
169
163
|
}
|
|
170
164
|
logger.info('Bumping version...');
|
|
171
165
|
await run('pnpm version patch');
|
|
172
166
|
logger.info('Generating release notes...');
|
|
173
|
-
const
|
|
174
|
-
await storage.writeFile('RELEASE_NOTES.md',
|
|
175
|
-
|
|
167
|
+
const releaseSummary = await execute$3(runConfig);
|
|
168
|
+
await storage.writeFile('RELEASE_NOTES.md', releaseSummary.body, 'utf-8');
|
|
169
|
+
await storage.writeFile('RELEASE_TITLE.md', releaseSummary.title, 'utf-8');
|
|
170
|
+
logger.info('Release notes and title generated and saved to RELEASE_NOTES.md and RELEASE_TITLE.md.');
|
|
176
171
|
logger.info('Pushing to origin...');
|
|
177
172
|
await run('git push --follow-tags');
|
|
178
173
|
logger.info('Creating pull request...');
|
|
@@ -185,7 +180,7 @@ const execute = async (runConfig)=>{
|
|
|
185
180
|
}
|
|
186
181
|
logger.info(`Waiting for PR #${pr.number} checks to complete...`);
|
|
187
182
|
await waitForPullRequestChecks(pr.number);
|
|
188
|
-
const mergeMethod = ((
|
|
183
|
+
const mergeMethod = ((_runConfig_publish1 = runConfig.publish) === null || _runConfig_publish1 === void 0 ? void 0 : _runConfig_publish1.mergeMethod) || 'squash';
|
|
189
184
|
await mergePullRequest(pr.number, mergeMethod);
|
|
190
185
|
logger.info('Checking out main branch...');
|
|
191
186
|
await run('git checkout main');
|
|
@@ -195,7 +190,8 @@ const execute = async (runConfig)=>{
|
|
|
195
190
|
const { version } = JSON.parse(packageJsonContents);
|
|
196
191
|
const tagName = `v${version}`;
|
|
197
192
|
const releaseNotesContent = await storage.readFile('RELEASE_NOTES.md', 'utf-8');
|
|
198
|
-
await
|
|
193
|
+
const releaseTitle = await storage.readFile('RELEASE_TITLE.md', 'utf-8');
|
|
194
|
+
await createRelease(tagName, releaseTitle, releaseNotesContent);
|
|
199
195
|
logger.info('Creating new release branch...');
|
|
200
196
|
const nextVersion = incrementPatchVersion(version);
|
|
201
197
|
const newBranchName = `release/${nextVersion}`;
|
|
@@ -204,7 +200,15 @@ const execute = async (runConfig)=>{
|
|
|
204
200
|
logger.info(`Branch ${newBranchName} created and pushed to origin.`);
|
|
205
201
|
logger.info('Preparation complete.');
|
|
206
202
|
} finally{
|
|
207
|
-
|
|
203
|
+
var _runConfig_publish3;
|
|
204
|
+
// Restore linked packages (if enabled)
|
|
205
|
+
const shouldLink = ((_runConfig_publish3 = runConfig.publish) === null || _runConfig_publish3 === void 0 ? void 0 : _runConfig_publish3.linkWorkspacePackages) !== false; // default to true
|
|
206
|
+
if (shouldLink) {
|
|
207
|
+
logger.info('Restoring linked packages...');
|
|
208
|
+
await execute$4(runConfig);
|
|
209
|
+
} else {
|
|
210
|
+
logger.info('Skipping restore linked packages (disabled in config).');
|
|
211
|
+
}
|
|
208
212
|
}
|
|
209
213
|
};
|
|
210
214
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["import path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\nimport { getLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion } from '../util/general';\n\nconst PNPM_WORKSPACE_FILE = 'pnpm-workspace.yaml';\nconst PNPM_WORKSPACE_BACKUP_FILE = 'pnpm-workspace.yaml.bak';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // If we can't read .npmrc, that's okay - just continue\n }\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[]): void => {\n const logger = getLogger();\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n logger.error(`Missing required environment variables: ${missingEnvVars.join(', ')}`);\n throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);\n }\n};\n\nconst runPrechecks = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Running prechecks...');\n\n // Check if we're in a git repository\n try {\n await run('git rev-parse --git-dir');\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n\n // Check for uncommitted changes\n logger.info('Checking for uncommitted changes...');\n try {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n\n // Check if we're on a release branch\n logger.info('Checking current branch...');\n const currentBranch = await GitHub.getCurrentBranchName();\n if (!currentBranch.startsWith('release/')) {\n throw new Error(`Current branch '${currentBranch}' is not a release branch. Please switch to a release branch (e.g., release/1.0.0) before running publish.`);\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info('Checking for prepublishOnly script...');\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContents);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n }\n\n if (!packageJson.scripts?.prepublishOnly) {\n throw new Error('prepublishOnly script is required in package.json but was not found. Please add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test).');\n }\n\n // Check required environment variables\n logger.info('Checking required environment variables...');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = await scanNpmrcForEnvVars(storage);\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.info(`Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars);\n } else {\n logger.info('No required environment variables specified.');\n }\n\n logger.info('All prechecks passed.');\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig);\n\n logger.info('Starting release process...');\n\n const workspaceFile = path.join(process.cwd(), PNPM_WORKSPACE_FILE);\n const workspaceBackupFile = path.join(process.cwd(), PNPM_WORKSPACE_BACKUP_FILE);\n\n const restoreWorkspaceFile = async () => {\n if (await storage.exists(workspaceBackupFile)) {\n logger.info('Restoring pnpm-workspace.yaml...');\n await storage.rename(workspaceBackupFile, workspaceFile);\n }\n };\n\n try {\n const branchName = await GitHub.getCurrentBranchName();\n let pr: PullRequest | null = await GitHub.findOpenPullRequestByHeadRef(branchName);\n\n if (pr) {\n logger.info(`Found existing pull request for branch ${branchName}: ${pr.html_url}`);\n } else {\n logger.info('No open pull request found, starting new release publishing process...');\n // 1. Prepare for release\n logger.info('Preparing for release: switching from workspace to remote dependencies.');\n\n if (await storage.exists(workspaceFile)) {\n logger.info('Renaming pnpm-workspace.yaml to prevent workspace-protocol resolution');\n await storage.rename(workspaceFile, workspaceBackupFile);\n } else {\n logger.info('pnpm-workspace.yaml not found, skipping rename.');\n }\n\n logger.info('Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.info(`Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await run(`pnpm update --latest ${patternsArg}`);\n } else {\n logger.info('No dependency update patterns specified, updating all dependencies');\n await run('pnpm update --latest');\n }\n\n logger.info('Staging changes for release commit');\n await run('git add package.json pnpm-lock.yaml');\n\n logger.info('Running prepublishOnly script...');\n await run('pnpm run prepublishOnly');\n\n logger.info('Checking for staged changes...');\n if (await Diff.hasStagedChanges()) {\n logger.info('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.info('No changes to commit, skipping commit.');\n }\n\n logger.info('Bumping version...');\n await run('pnpm version patch');\n\n logger.info('Generating release notes...');\n const releaseNotes = await Release.execute(runConfig);\n await storage.writeFile('RELEASE_NOTES.md', releaseNotes, 'utf-8');\n logger.info('Release notes generated and saved to RELEASE_NOTES.md.');\n\n logger.info('Pushing to origin...');\n await run('git push --follow-tags');\n\n logger.info('Creating pull request...');\n const { stdout: commitTitle } = await run('git log -1 --pretty=%B');\n pr = await GitHub.createPullRequest(commitTitle, 'Automated release PR.', branchName);\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url}`);\n }\n\n logger.info(`Waiting for PR #${pr.number} checks to complete...`);\n await GitHub.waitForPullRequestChecks(pr.number);\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n await GitHub.mergePullRequest(pr.number, mergeMethod);\n\n logger.info('Checking out main branch...');\n await run('git checkout main');\n await run('git pull origin main');\n\n logger.info('Creating GitHub release...');\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const tagName = `v${version}`;\n const releaseNotesContent = await storage.readFile('RELEASE_NOTES.md', 'utf-8');\n await GitHub.createRelease(tagName, releaseNotesContent);\n\n logger.info('Creating new release branch...');\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n await run(`git checkout -b ${newBranchName}`);\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} created and pushed to origin.`);\n\n logger.info('Preparation complete.');\n } finally {\n await restoreWorkspaceFile();\n }\n}; "],"names":["PNPM_WORKSPACE_FILE","PNPM_WORKSPACE_BACKUP_FILE","scanNpmrcForEnvVars","storage","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","validateEnvironmentVariables","requiredEnvVars","logger","getLogger","missingEnvVars","envVar","env","length","Error","runPrechecks","runConfig","packageJson","createStorage","log","info","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJsonContents","JSON","parse","scripts","prepublishOnly","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","workspaceFile","workspaceBackupFile","restoreWorkspaceFile","rename","branchName","pr","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","Diff","Commit","releaseNotes","Release","writeFile","commitTitle","number","mergeMethod","version","tagName","releaseNotesContent","nextVersion","incrementPatchVersion","newBranchName"],"mappings":";;;;;;;;;;AAWA,MAAMA,mBAAAA,GAAsB,qBAAA;AAC5B,MAAMC,0BAAAA,GAA6B,yBAAA;AAEnC,MAAMC,sBAAsB,OAAOC,OAAAA,GAAAA;AAC/B,IAAA,MAAMC,YAAYC,IAAAA,CAAKC,IAAI,CAACC,OAAAA,CAAQC,GAAG,EAAA,EAAI,QAAA,CAAA;AAC3C,IAAA,MAAMC,UAAoB,EAAE;AAE5B,IAAA,IAAI,MAAMN,OAAAA,CAAQO,MAAM,CAACN,SAAAA,CAAAA,EAAY;QACjC,IAAI;AACA,YAAA,MAAMO,YAAAA,GAAe,MAAMR,OAAAA,CAAQS,QAAQ,CAACR,SAAAA,EAAW,OAAA,CAAA;;YAEvD,MAAMS,aAAAA,GAAgBF,YAAAA,CAAaG,KAAK,CAAC,qCAAA,CAAA;AAEzC,YAAA,IAAID,aAAAA,EAAe;gBACf,KAAK,MAAMC,SAASD,aAAAA,CAAe;;AAE/B,oBAAA,MAAME,OAAAA,GAAUD,KAAAA,CAAME,OAAO,CAAC,aAAA,EAAe,EAAA,CAAA;AAC7C,oBAAA,IAAID,OAAAA,IAAW,CAACN,OAAAA,CAAQQ,QAAQ,CAACF,OAAAA,CAAAA,EAAU;AACvCN,wBAAAA,OAAAA,CAAQS,IAAI,CAACH,OAAAA,CAAAA;AACjB;AACJ;AACJ;;AAEJ,SAAA,CAAE,OAAOI,KAAAA,EAAO;;AAEhB;AACJ;IAEA,OAAOV,OAAAA;AACX,CAAA;AAEA,MAAMW,+BAA+B,CAACC,eAAAA,GAAAA;AAClC,IAAA,MAAMC,MAAAA,GAASC,SAAAA,EAAAA;AACf,IAAA,MAAMC,iBAA2B,EAAE;IAEnC,KAAK,MAAMC,UAAUJ,eAAAA,CAAiB;AAClC,QAAA,IAAI,CAACd,OAAAA,CAAQmB,GAAG,CAACD,OAAO,EAAE;AACtBD,YAAAA,cAAAA,CAAeN,IAAI,CAACO,MAAAA,CAAAA;AACxB;AACJ;IAEA,IAAID,cAAAA,CAAeG,MAAM,GAAG,CAAA,EAAG;QAC3BL,MAAAA,CAAOH,KAAK,CAAC,CAAC,wCAAwC,EAAEK,cAAAA,CAAelB,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;QACnF,MAAM,IAAIsB,KAAAA,CAAM,CAAC,wCAAwC,EAAEJ,eAAelB,IAAI,CAAC,IAAA,CAAA,CAAM,gEAAgE,CAAC,CAAA;AAC1J;AACJ,CAAA;AAEA,MAAMuB,eAAe,OAAOC,SAAAA,GAAAA;QAkDnBC,oBAAAA,EAMuBD,kBAAAA;AAvD5B,IAAA,MAAMR,MAAAA,GAASC,SAAAA,EAAAA;AACf,IAAA,MAAMpB,UAAU6B,MAAAA,CAAc;AAAEC,QAAAA,GAAAA,EAAKX,OAAOY;AAAK,KAAA,CAAA;AAEjDZ,IAAAA,MAAAA,CAAOY,IAAI,CAAC,sBAAA,CAAA;;IAGZ,IAAI;AACA,QAAA,MAAMC,GAAAA,CAAI,yBAAA,CAAA;;AAEd,KAAA,CAAE,OAAOhB,KAAAA,EAAO;AACZ,QAAA,MAAM,IAAIS,KAAAA,CAAM,gFAAA,CAAA;AACpB;;AAGAN,IAAAA,MAAAA,CAAOY,IAAI,CAAC,qCAAA,CAAA;IACZ,IAAI;AACA,QAAA,MAAM,EAAEE,MAAM,EAAE,GAAG,MAAMD,GAAAA,CAAI,wBAAA,CAAA;QAC7B,IAAIC,MAAAA,CAAOC,IAAI,EAAA,EAAI;AACf,YAAA,MAAM,IAAIT,KAAAA,CAAM,wGAAA,CAAA;AACpB;;AAEJ,KAAA,CAAE,OAAOT,KAAAA,EAAO;AACZ,QAAA,MAAM,IAAIS,KAAAA,CAAM,8EAAA,CAAA;AACpB;;AAGAN,IAAAA,MAAAA,CAAOY,IAAI,CAAC,4BAAA,CAAA;IACZ,MAAMI,aAAAA,GAAgB,MAAMC,oBAA2B,EAAA;AACvD,IAAA,IAAI,CAACD,aAAAA,CAAcE,UAAU,CAAC,UAAA,CAAA,EAAa;AACvC,QAAA,MAAM,IAAIZ,KAAAA,CAAM,CAAC,gBAAgB,EAAEU,aAAAA,CAAc,0GAA0G,CAAC,CAAA;AAChK;;AAGAhB,IAAAA,MAAAA,CAAOY,IAAI,CAAC,uCAAA,CAAA;AACZ,IAAA,MAAMO,kBAAkBpC,IAAAA,CAAKC,IAAI,CAACC,OAAAA,CAAQC,GAAG,EAAA,EAAI,cAAA,CAAA;AAEjD,IAAA,IAAI,CAAC,MAAML,OAAAA,CAAQO,MAAM,CAAC+B,eAAAA,CAAAA,EAAkB;AACxC,QAAA,MAAM,IAAIb,KAAAA,CAAM,8CAAA,CAAA;AACpB;IAEA,IAAIG,WAAAA;IACJ,IAAI;AACA,QAAA,MAAMW,mBAAAA,GAAsB,MAAMvC,OAAAA,CAAQS,QAAQ,CAAC6B,eAAAA,EAAiB,OAAA,CAAA;QACpEV,WAAAA,GAAcY,IAAAA,CAAKC,KAAK,CAACF,mBAAAA,CAAAA;;AAE7B,KAAA,CAAE,OAAOvB,KAAAA,EAAO;AACZ,QAAA,MAAM,IAAIS,KAAAA,CAAM,qEAAA,CAAA;AACpB;IAEA,IAAI,EAAA,CAACG,uBAAAA,WAAAA,CAAYc,OAAO,cAAnBd,oBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,oBAAAA,CAAqBe,cAAc,CAAA,EAAE;AACtC,QAAA,MAAM,IAAIlB,KAAAA,CAAM,4KAAA,CAAA;AACpB;;AAGAN,IAAAA,MAAAA,CAAOY,IAAI,CAAC,4CAAA,CAAA;IACZ,MAAMa,mBAAAA,GAAsBjB,CAAAA,CAAAA,kBAAAA,GAAAA,SAAAA,CAAUkB,OAAO,cAAjBlB,kBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,kBAAAA,CAAmBT,eAAe,KAAI,EAAE;IACpE,MAAM4B,YAAAA,GAAe,MAAM/C,mBAAAA,CAAoBC,OAAAA,CAAAA;AAC/C,IAAA,MAAM+C,kBAAAA,GAAqB;AAAI,QAAA,GAAA,IAAIC,GAAAA,CAAI;AAAIJ,YAAAA,GAAAA,mBAAAA;AAAwBE,YAAAA,GAAAA;AAAa,SAAA;AAAE,KAAA;IAElF,IAAIC,kBAAAA,CAAmBvB,MAAM,GAAG,CAAA,EAAG;QAC/BL,MAAAA,CAAOY,IAAI,CAAC,CAAC,gCAAgC,EAAEgB,kBAAAA,CAAmB5C,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;QAC9Ec,4BAAAA,CAA6B8B,kBAAAA,CAAAA;KACjC,MAAO;AACH5B,QAAAA,MAAAA,CAAOY,IAAI,CAAC,8CAAA,CAAA;AAChB;AAEAZ,IAAAA,MAAAA,CAAOY,IAAI,CAAC,uBAAA,CAAA;AAChB,CAAA;AAEO,MAAMkB,UAAU,OAAOtB,SAAAA,GAAAA;AAC1B,IAAA,MAAMR,MAAAA,GAASC,SAAAA,EAAAA;AACf,IAAA,MAAMpB,UAAU6B,MAAAA,CAAc;AAAEC,QAAAA,GAAAA,EAAKX,OAAOY;AAAK,KAAA,CAAA;;AAGjD,IAAA,MAAML,YAAAA,CAAaC,SAAAA,CAAAA;AAEnBR,IAAAA,MAAAA,CAAOY,IAAI,CAAC,6BAAA,CAAA;AAEZ,IAAA,MAAMmB,gBAAgBhD,IAAAA,CAAKC,IAAI,CAACC,OAAAA,CAAQC,GAAG,EAAA,EAAIR,mBAAAA,CAAAA;AAC/C,IAAA,MAAMsD,sBAAsBjD,IAAAA,CAAKC,IAAI,CAACC,OAAAA,CAAQC,GAAG,EAAA,EAAIP,0BAAAA,CAAAA;AAErD,IAAA,MAAMsD,oBAAAA,GAAuB,UAAA;AACzB,QAAA,IAAI,MAAMpD,OAAAA,CAAQO,MAAM,CAAC4C,mBAAAA,CAAAA,EAAsB;AAC3ChC,YAAAA,MAAAA,CAAOY,IAAI,CAAC,kCAAA,CAAA;YACZ,MAAM/B,OAAAA,CAAQqD,MAAM,CAACF,mBAAAA,EAAqBD,aAAAA,CAAAA;AAC9C;AACJ,KAAA;IAEA,IAAI;AAkEoBvB,QAAAA,IAAAA,kBAAAA;QAjEpB,MAAM2B,UAAAA,GAAa,MAAMlB,oBAA2B,EAAA;AACpD,QAAA,IAAImB,EAAAA,GAAyB,MAAMnB,4BAAmC,CAACkB,UAAAA,CAAAA;AAEvE,QAAA,IAAIC,EAAAA,EAAI;YACJpC,MAAAA,CAAOY,IAAI,CAAC,CAAC,uCAAuC,EAAEuB,WAAW,EAAE,EAAEC,EAAAA,CAAGC,QAAQ,CAAA,CAAE,CAAA;SACtF,MAAO;AAaoB7B,YAAAA,IAAAA,mBAAAA;AAZvBR,YAAAA,MAAAA,CAAOY,IAAI,CAAC,wEAAA,CAAA;;AAEZZ,YAAAA,MAAAA,CAAOY,IAAI,CAAC,yEAAA,CAAA;AAEZ,YAAA,IAAI,MAAM/B,OAAAA,CAAQO,MAAM,CAAC2C,aAAAA,CAAAA,EAAgB;AACrC/B,gBAAAA,MAAAA,CAAOY,IAAI,CAAC,uEAAA,CAAA;gBACZ,MAAM/B,OAAAA,CAAQqD,MAAM,CAACH,aAAAA,EAAeC,mBAAAA,CAAAA;aACxC,MAAO;AACHhC,gBAAAA,MAAAA,CAAOY,IAAI,CAAC,iDAAA,CAAA;AAChB;AAEAZ,YAAAA,MAAAA,CAAOY,IAAI,CAAC,wDAAA,CAAA;AACZ,YAAA,MAAM0B,kBAAiB9B,mBAAAA,GAAAA,SAAAA,CAAUkB,OAAO,MAAA,IAAA,IAAjBlB,mBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAmB+B,wBAAwB;AAClE,YAAA,IAAID,cAAAA,IAAkBA,cAAAA,CAAejC,MAAM,GAAG,CAAA,EAAG;gBAC7CL,MAAAA,CAAOY,IAAI,CAAC,CAAC,yCAAyC,EAAE0B,cAAAA,CAAetD,IAAI,CAAC,IAAA,CAAA,CAAA,CAAO,CAAA;gBACnF,MAAMwD,WAAAA,GAAcF,cAAAA,CAAetD,IAAI,CAAC,GAAA,CAAA;AACxC,gBAAA,MAAM6B,GAAAA,CAAI,CAAC,qBAAqB,EAAE2B,WAAAA,CAAAA,CAAa,CAAA;aACnD,MAAO;AACHxC,gBAAAA,MAAAA,CAAOY,IAAI,CAAC,oEAAA,CAAA;AACZ,gBAAA,MAAMC,GAAAA,CAAI,sBAAA,CAAA;AACd;AAEAb,YAAAA,MAAAA,CAAOY,IAAI,CAAC,oCAAA,CAAA;AACZ,YAAA,MAAMC,GAAAA,CAAI,qCAAA,CAAA;AAEVb,YAAAA,MAAAA,CAAOY,IAAI,CAAC,kCAAA,CAAA;AACZ,YAAA,MAAMC,GAAAA,CAAI,yBAAA,CAAA;AAEVb,YAAAA,MAAAA,CAAOY,IAAI,CAAC,gCAAA,CAAA;YACZ,IAAI,MAAM6B,gBAAqB,EAAA,EAAI;AAC/BzC,gBAAAA,MAAAA,CAAOY,IAAI,CAAC,0CAAA,CAAA;gBACZ,MAAM8B,SAAc,CAAClC,SAAAA,CAAAA;aACzB,MAAO;AACHR,gBAAAA,MAAAA,CAAOY,IAAI,CAAC,wCAAA,CAAA;AAChB;AAEAZ,YAAAA,MAAAA,CAAOY,IAAI,CAAC,oBAAA,CAAA;AACZ,YAAA,MAAMC,GAAAA,CAAI,oBAAA,CAAA;AAEVb,YAAAA,MAAAA,CAAOY,IAAI,CAAC,6BAAA,CAAA;AACZ,YAAA,MAAM+B,YAAAA,GAAe,MAAMC,SAAe,CAACpC,SAAAA,CAAAA;AAC3C,YAAA,MAAM3B,OAAAA,CAAQgE,SAAS,CAAC,kBAAA,EAAoBF,YAAAA,EAAc,OAAA,CAAA;AAC1D3C,YAAAA,MAAAA,CAAOY,IAAI,CAAC,wDAAA,CAAA;AAEZZ,YAAAA,MAAAA,CAAOY,IAAI,CAAC,sBAAA,CAAA;AACZ,YAAA,MAAMC,GAAAA,CAAI,wBAAA,CAAA;AAEVb,YAAAA,MAAAA,CAAOY,IAAI,CAAC,0BAAA,CAAA;AACZ,YAAA,MAAM,EAAEE,MAAAA,EAAQgC,WAAW,EAAE,GAAG,MAAMjC,GAAAA,CAAI,wBAAA,CAAA;AAC1CuB,YAAAA,EAAAA,GAAK,MAAMnB,iBAAwB,CAAC6B,aAAa,uBAAA,EAAyBX,UAAAA,CAAAA;AAC1E,YAAA,IAAI,CAACC,EAAAA,EAAI;AACL,gBAAA,MAAM,IAAI9B,KAAAA,CAAM,gCAAA,CAAA;AACpB;AACAN,YAAAA,MAAAA,CAAOY,IAAI,CAAC,CAAC,sBAAsB,EAAEwB,EAAAA,CAAGC,QAAQ,CAAA,CAAE,CAAA;AACtD;QAEArC,MAAAA,CAAOY,IAAI,CAAC,CAAC,gBAAgB,EAAEwB,EAAAA,CAAGW,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAChE,QAAA,MAAM9B,wBAA+B,CAACmB,EAAAA,CAAGW,MAAM,CAAA;QAE/C,MAAMC,WAAAA,GAAcxC,EAAAA,kBAAAA,GAAAA,SAAAA,CAAUkB,OAAO,MAAA,IAAA,IAAjBlB,kBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAAA,CAAmBwC,WAAW,KAAI,QAAA;AACtD,QAAA,MAAM/B,gBAAuB,CAACmB,EAAAA,CAAGW,MAAM,EAAEC,WAAAA,CAAAA;AAEzChD,QAAAA,MAAAA,CAAOY,IAAI,CAAC,6BAAA,CAAA;AACZ,QAAA,MAAMC,GAAAA,CAAI,mBAAA,CAAA;AACV,QAAA,MAAMA,GAAAA,CAAI,sBAAA,CAAA;AAEVb,QAAAA,MAAAA,CAAOY,IAAI,CAAC,4BAAA,CAAA;AACZ,QAAA,MAAMQ,mBAAAA,GAAsB,MAAMvC,OAAAA,CAAQS,QAAQ,CAAC,cAAA,EAAgB,OAAA,CAAA;AACnE,QAAA,MAAM,EAAE2D,OAAO,EAAE,GAAG5B,IAAAA,CAAKC,KAAK,CAACF,mBAAAA,CAAAA;AAC/B,QAAA,MAAM8B,OAAAA,GAAU,CAAC,CAAC,EAAED,OAAAA,CAAAA,CAAS;AAC7B,QAAA,MAAME,mBAAAA,GAAsB,MAAMtE,OAAAA,CAAQS,QAAQ,CAAC,kBAAA,EAAoB,OAAA,CAAA;QACvE,MAAM2B,aAAoB,CAACiC,OAAAA,EAASC,mBAAAA,CAAAA;AAEpCnD,QAAAA,MAAAA,CAAOY,IAAI,CAAC,gCAAA,CAAA;AACZ,QAAA,MAAMwC,cAAcC,qBAAAA,CAAsBJ,OAAAA,CAAAA;AAC1C,QAAA,MAAMK,aAAAA,GAAgB,CAAC,QAAQ,EAAEF,WAAAA,CAAAA,CAAa;AAC9C,QAAA,MAAMvC,GAAAA,CAAI,CAAC,gBAAgB,EAAEyC,aAAAA,CAAAA,CAAe,CAAA;AAC5C,QAAA,MAAMzC,GAAAA,CAAI,CAAC,mBAAmB,EAAEyC,aAAAA,CAAAA,CAAe,CAAA;AAC/CtD,QAAAA,MAAAA,CAAOY,IAAI,CAAC,CAAC,OAAO,EAAE0C,aAAAA,CAAc,8BAA8B,CAAC,CAAA;AAEnEtD,QAAAA,MAAAA,CAAOY,IAAI,CAAC,uBAAA,CAAA;KAChB,QAAU;QACN,MAAMqB,oBAAAA,EAAAA;AACV;AACJ;;;;"}
|
|
1
|
+
{"version":3,"file":"publish.js","sources":["../../src/commands/publish.ts"],"sourcesContent":["import path from 'path';\nimport * as Commit from './commit';\nimport * as Diff from '../content/diff';\nimport * as Release from './release';\nimport * as Link from './link';\nimport * as Unlink from './unlink';\nimport { getLogger } from '../logging';\nimport { Config, PullRequest } from '../types';\nimport { run } from '../util/child';\nimport * as GitHub from '../util/github';\nimport { create as createStorage } from '../util/storage';\nimport { incrementPatchVersion } from '../util/general';\n\nconst scanNpmrcForEnvVars = async (storage: any): Promise<string[]> => {\n const npmrcPath = path.join(process.cwd(), '.npmrc');\n const envVars: string[] = [];\n\n if (await storage.exists(npmrcPath)) {\n try {\n const npmrcContent = await storage.readFile(npmrcPath, 'utf-8');\n // Match environment variable patterns like ${VAR_NAME} or $VAR_NAME\n const envVarMatches = npmrcContent.match(/\\$\\{([^}]+)\\}|\\$([A-Z_][A-Z0-9_]*)/g);\n\n if (envVarMatches) {\n for (const match of envVarMatches) {\n // Extract variable name from ${VAR_NAME} or $VAR_NAME format\n const varName = match.replace(/\\$\\{|\\}|\\$/g, '');\n if (varName && !envVars.includes(varName)) {\n envVars.push(varName);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // If we can't read .npmrc, that's okay - just continue\n }\n }\n\n return envVars;\n};\n\nconst validateEnvironmentVariables = (requiredEnvVars: string[]): void => {\n const logger = getLogger();\n const missingEnvVars: string[] = [];\n\n for (const envVar of requiredEnvVars) {\n if (!process.env[envVar]) {\n missingEnvVars.push(envVar);\n }\n }\n\n if (missingEnvVars.length > 0) {\n logger.error(`Missing required environment variables: ${missingEnvVars.join(', ')}`);\n throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}. Please set these environment variables before running publish.`);\n }\n};\n\nconst runPrechecks = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Running prechecks...');\n\n // Check if we're in a git repository\n try {\n await run('git rev-parse --git-dir');\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Not in a git repository. Please run this command from within a git repository.');\n }\n\n // Check for uncommitted changes\n logger.info('Checking for uncommitted changes...');\n try {\n const { stdout } = await run('git status --porcelain');\n if (stdout.trim()) {\n throw new Error('Working directory has uncommitted changes. Please commit or stash your changes before running publish.');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Failed to check git status. Please ensure you are in a valid git repository.');\n }\n\n // Check if we're on a release branch\n logger.info('Checking current branch...');\n const currentBranch = await GitHub.getCurrentBranchName();\n if (!currentBranch.startsWith('release/')) {\n throw new Error(`Current branch '${currentBranch}' is not a release branch. Please switch to a release branch (e.g., release/1.0.0) before running publish.`);\n }\n\n // Check if prepublishOnly script exists in package.json\n logger.info('Checking for prepublishOnly script...');\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson;\n try {\n const packageJsonContents = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContents);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n throw new Error('Failed to parse package.json. Please ensure it contains valid JSON.');\n }\n\n if (!packageJson.scripts?.prepublishOnly) {\n throw new Error('prepublishOnly script is required in package.json but was not found. Please add a prepublishOnly script that runs your pre-flight checks (e.g., clean, lint, build, test).');\n }\n\n // Check required environment variables\n logger.info('Checking required environment variables...');\n const coreRequiredEnvVars = runConfig.publish?.requiredEnvVars || [];\n const npmrcEnvVars = await scanNpmrcForEnvVars(storage);\n const allRequiredEnvVars = [...new Set([...coreRequiredEnvVars, ...npmrcEnvVars])];\n\n if (allRequiredEnvVars.length > 0) {\n logger.info(`Required environment variables: ${allRequiredEnvVars.join(', ')}`);\n validateEnvironmentVariables(allRequiredEnvVars);\n } else {\n logger.info('No required environment variables specified.');\n }\n\n logger.info('All prechecks passed.');\n};\n\nexport const execute = async (runConfig: Config): Promise<void> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n // Run prechecks before starting any work\n await runPrechecks(runConfig);\n\n logger.info('Starting release process...');\n\n try {\n // Unlink all workspace packages before starting (if enabled)\n const shouldUnlink = runConfig.publish?.unlinkWorkspacePackages !== false; // default to true\n if (shouldUnlink) {\n logger.info('Unlinking workspace packages...');\n await Unlink.execute(runConfig);\n } else {\n logger.info('Skipping unlink workspace packages (disabled in config).');\n }\n\n const branchName = await GitHub.getCurrentBranchName();\n let pr: PullRequest | null = await GitHub.findOpenPullRequestByHeadRef(branchName);\n\n if (pr) {\n logger.info(`Found existing pull request for branch ${branchName}: ${pr.html_url}`);\n } else {\n logger.info('No open pull request found, starting new release publishing process...');\n // 1. Prepare for release\n logger.info('Preparing for release: switching from workspace to remote dependencies.');\n\n logger.info('Updating dependencies to latest versions from registry');\n const updatePatterns = runConfig.publish?.dependencyUpdatePatterns;\n if (updatePatterns && updatePatterns.length > 0) {\n logger.info(`Updating dependencies matching patterns: ${updatePatterns.join(', ')}`);\n const patternsArg = updatePatterns.join(' ');\n await run(`pnpm update --latest ${patternsArg}`);\n } else {\n logger.info('No dependency update patterns specified, updating all dependencies');\n await run('pnpm update --latest');\n }\n\n logger.info('Staging changes for release commit');\n await run('git add package.json pnpm-lock.yaml');\n\n logger.info('Running prepublishOnly script...');\n await run('pnpm run prepublishOnly');\n\n logger.info('Checking for staged changes...');\n if (await Diff.hasStagedChanges()) {\n logger.info('Staged changes found, creating commit...');\n await Commit.execute(runConfig);\n } else {\n logger.info('No changes to commit, skipping commit.');\n }\n\n logger.info('Bumping version...');\n await run('pnpm version patch');\n\n logger.info('Generating release notes...');\n const releaseSummary = await Release.execute(runConfig);\n await storage.writeFile('RELEASE_NOTES.md', releaseSummary.body, 'utf-8');\n await storage.writeFile('RELEASE_TITLE.md', releaseSummary.title, 'utf-8');\n logger.info('Release notes and title generated and saved to RELEASE_NOTES.md and RELEASE_TITLE.md.');\n\n logger.info('Pushing to origin...');\n await run('git push --follow-tags');\n\n logger.info('Creating pull request...');\n const { stdout: commitTitle } = await run('git log -1 --pretty=%B');\n pr = await GitHub.createPullRequest(commitTitle, 'Automated release PR.', branchName);\n if (!pr) {\n throw new Error('Failed to create pull request.');\n }\n logger.info(`Pull request created: ${pr.html_url}`);\n }\n\n logger.info(`Waiting for PR #${pr.number} checks to complete...`);\n await GitHub.waitForPullRequestChecks(pr.number);\n\n const mergeMethod = runConfig.publish?.mergeMethod || 'squash';\n await GitHub.mergePullRequest(pr.number, mergeMethod);\n\n logger.info('Checking out main branch...');\n await run('git checkout main');\n await run('git pull origin main');\n\n logger.info('Creating GitHub release...');\n const packageJsonContents = await storage.readFile('package.json', 'utf-8');\n const { version } = JSON.parse(packageJsonContents);\n const tagName = `v${version}`;\n const releaseNotesContent = await storage.readFile('RELEASE_NOTES.md', 'utf-8');\n const releaseTitle = await storage.readFile('RELEASE_TITLE.md', 'utf-8');\n await GitHub.createRelease(tagName, releaseTitle, releaseNotesContent);\n\n logger.info('Creating new release branch...');\n const nextVersion = incrementPatchVersion(version);\n const newBranchName = `release/${nextVersion}`;\n await run(`git checkout -b ${newBranchName}`);\n await run(`git push -u origin ${newBranchName}`);\n logger.info(`Branch ${newBranchName} created and pushed to origin.`);\n\n logger.info('Preparation complete.');\n } finally {\n // Restore linked packages (if enabled)\n const shouldLink = runConfig.publish?.linkWorkspacePackages !== false; // default to true\n if (shouldLink) {\n logger.info('Restoring linked packages...');\n await Link.execute(runConfig);\n } else {\n logger.info('Skipping restore linked packages (disabled in config).');\n }\n }\n}; "],"names":["scanNpmrcForEnvVars","storage","npmrcPath","path","join","process","cwd","envVars","exists","npmrcContent","readFile","envVarMatches","match","varName","replace","includes","push","error","validateEnvironmentVariables","requiredEnvVars","logger","getLogger","missingEnvVars","envVar","env","length","Error","runPrechecks","runConfig","packageJson","createStorage","log","info","run","stdout","trim","currentBranch","GitHub","startsWith","packageJsonPath","packageJsonContents","JSON","parse","scripts","prepublishOnly","coreRequiredEnvVars","publish","npmrcEnvVars","allRequiredEnvVars","Set","execute","shouldUnlink","unlinkWorkspacePackages","Unlink","branchName","pr","html_url","updatePatterns","dependencyUpdatePatterns","patternsArg","Diff","Commit","releaseSummary","Release","writeFile","body","title","commitTitle","number","mergeMethod","version","tagName","releaseNotesContent","releaseTitle","nextVersion","incrementPatchVersion","newBranchName","shouldLink","linkWorkspacePackages","Link"],"mappings":"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"}
|
package/dist/commands/release.js
CHANGED
|
@@ -27,7 +27,10 @@ const execute = async (runConfig)=>{
|
|
|
27
27
|
const prompt = await prompts.createReleasePrompt(logContent, diffContent, (_runConfig_release4 = runConfig.release) === null || _runConfig_release4 === void 0 ? void 0 : _runConfig_release4.context);
|
|
28
28
|
const request = prompts.format(prompt);
|
|
29
29
|
const summary = await createCompletion(request.messages, {
|
|
30
|
-
model: runConfig.model
|
|
30
|
+
model: runConfig.model,
|
|
31
|
+
responseFormat: {
|
|
32
|
+
type: 'json_object'
|
|
33
|
+
}
|
|
31
34
|
});
|
|
32
35
|
return summary;
|
|
33
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release.js","sources":["../../src/commands/release.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Model, Request } from '@riotprompt/riotprompt';\nimport 'dotenv/config';\nimport { ChatCompletionMessageParam } from 'openai/resources';\nimport { DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_TO_COMMIT_ALIAS } from '../constants';\nimport * as Log from '../content/log';\nimport * as Diff from '../content/diff';\nimport * as Prompts from '../prompt/prompts';\nimport { Config } from '../types';\nimport { createCompletion } from '../util/openai';\n\nexport const execute = async (runConfig: Config) => {\n const prompts = await Prompts.create(runConfig.model as Model, runConfig);\n\n const log = await Log.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS });\n let logContent = '';\n\n const diff = await Diff.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS, excludedPatterns: runConfig.excludedPatterns ?? DEFAULT_EXCLUDED_PATTERNS });\n let diffContent = '';\n\n diffContent = await diff.get();\n logContent = await log.get();\n\n const prompt = await prompts.createReleasePrompt(logContent, diffContent, runConfig.release?.context);\n\n const request: Request = prompts.format(prompt);\n\n const summary = await createCompletion(request.messages as ChatCompletionMessageParam[], { model: runConfig.model });\n\n return summary;\n}\n"],"names":["execute","runConfig","prompts","Prompts","model","log","Log","from","release","DEFAULT_FROM_COMMIT_ALIAS","to","DEFAULT_TO_COMMIT_ALIAS","logContent","diff","Diff","excludedPatterns","DEFAULT_EXCLUDED_PATTERNS","diffContent","get","prompt","createReleasePrompt","context","request","format","summary","createCompletion","messages"],"mappings":";;;;;;;;AAWO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAGWA,kBAAAA,CAAAA,CAA0DA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAGxDA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA0DA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAMvBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAX1E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAACF,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUG,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAA,CAAWH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAE1BA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAA0DA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAA/F,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,QAAU,CAAC,CAAA;QAAEC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAjBP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBM,IAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAvBN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA2BQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAA2BC,CAAAA,CAAAA,CAAAA,CAAIT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAjBP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA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"}
|
|
1
|
+
{"version":3,"file":"release.js","sources":["../../src/commands/release.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Model, Request } from '@riotprompt/riotprompt';\nimport 'dotenv/config';\nimport { ChatCompletionMessageParam } from 'openai/resources';\nimport { DEFAULT_EXCLUDED_PATTERNS, DEFAULT_FROM_COMMIT_ALIAS, DEFAULT_TO_COMMIT_ALIAS } from '../constants';\nimport * as Log from '../content/log';\nimport * as Diff from '../content/diff';\nimport * as Prompts from '../prompt/prompts';\nimport { Config, ReleaseSummary } from '../types';\nimport { createCompletion } from '../util/openai';\n\nexport const execute = async (runConfig: Config): Promise<ReleaseSummary> => {\n const prompts = await Prompts.create(runConfig.model as Model, runConfig);\n\n const log = await Log.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS });\n let logContent = '';\n\n const diff = await Diff.create({ from: runConfig.release?.from ?? DEFAULT_FROM_COMMIT_ALIAS, to: runConfig.release?.to ?? DEFAULT_TO_COMMIT_ALIAS, excludedPatterns: runConfig.excludedPatterns ?? DEFAULT_EXCLUDED_PATTERNS });\n let diffContent = '';\n\n diffContent = await diff.get();\n logContent = await log.get();\n\n const prompt = await prompts.createReleasePrompt(logContent, diffContent, runConfig.release?.context);\n\n const request: Request = prompts.format(prompt);\n\n const summary = await createCompletion(\n request.messages as ChatCompletionMessageParam[],\n {\n model: runConfig.model,\n responseFormat: { type: 'json_object' }\n }\n );\n\n return summary as ReleaseSummary;\n}\n"],"names":["execute","runConfig","prompts","Prompts","model","log","Log","from","release","DEFAULT_FROM_COMMIT_ALIAS","to","DEFAULT_TO_COMMIT_ALIAS","logContent","diff","Diff","excludedPatterns","DEFAULT_EXCLUDED_PATTERNS","diffContent","get","prompt","createReleasePrompt","context","request","format","summary","createCompletion","messages","responseFormat","type"],"mappings":"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AAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAA2BQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAA2BC,CAAAA,CAAAA,CAAAA,CAAIT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUO,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAjBP,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA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"}
|
package/dist/commands/unlink.js
CHANGED
|
@@ -64,22 +64,24 @@ const readCurrentWorkspaceFile = async (workspaceFilePath, storage)=>{
|
|
|
64
64
|
if (await storage.exists(workspaceFilePath)) {
|
|
65
65
|
try {
|
|
66
66
|
const content = await storage.readFile(workspaceFilePath, 'utf-8');
|
|
67
|
-
return yaml.load(content);
|
|
67
|
+
return yaml.load(content) || {};
|
|
68
68
|
} catch (error) {
|
|
69
69
|
throw new Error(`Failed to parse existing workspace file: ${error}`);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
return {
|
|
73
|
-
packages: []
|
|
74
|
-
};
|
|
72
|
+
return {};
|
|
75
73
|
};
|
|
76
74
|
const writeWorkspaceFile = async (workspaceFilePath, config, storage)=>{
|
|
77
|
-
|
|
75
|
+
let yamlContent = yaml.dump(config, {
|
|
78
76
|
indent: 2,
|
|
79
77
|
lineWidth: -1,
|
|
80
78
|
noRefs: true,
|
|
81
|
-
sortKeys: false
|
|
79
|
+
sortKeys: false,
|
|
80
|
+
quotingType: "'",
|
|
81
|
+
forceQuotes: true
|
|
82
82
|
});
|
|
83
|
+
// Post-process to fix numeric values that shouldn't be quoted
|
|
84
|
+
yamlContent = yamlContent.replace(/: '(\d+(?:\.\d+)*)'/g, ': $1');
|
|
83
85
|
await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');
|
|
84
86
|
};
|
|
85
87
|
const execute = async (runConfig)=>{
|
|
@@ -114,26 +116,42 @@ const execute = async (runConfig)=>{
|
|
|
114
116
|
}
|
|
115
117
|
logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);
|
|
116
118
|
// Find packages to unlink based on scope roots
|
|
117
|
-
const
|
|
118
|
-
if (
|
|
119
|
+
const packagesToUnlinkPaths = await findPackagesToUnlink(scopeRoots, storage);
|
|
120
|
+
if (packagesToUnlinkPaths.length === 0) {
|
|
119
121
|
logger.info('No packages found matching scope roots for unlinking.');
|
|
120
122
|
return 'No packages found matching scope roots for unlinking.';
|
|
121
123
|
}
|
|
122
|
-
logger.info(`Found ${
|
|
124
|
+
logger.info(`Found ${packagesToUnlinkPaths.length} packages that could be unlinked: ${packagesToUnlinkPaths.join(', ')}`);
|
|
123
125
|
// Read existing workspace configuration
|
|
124
126
|
const workspaceFilePath = path.join(process.cwd(), workspaceFileName);
|
|
125
127
|
const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
if (!workspaceConfig.overrides) {
|
|
129
|
+
logger.info('No overrides found in workspace file. Nothing to do.');
|
|
130
|
+
return 'No overrides found in workspace file. Nothing to do.';
|
|
131
|
+
}
|
|
132
|
+
// Filter out packages that match our scope roots from overrides
|
|
133
|
+
const existingOverrides = workspaceConfig.overrides || {};
|
|
134
|
+
const remainingOverrides = {};
|
|
135
|
+
const actuallyRemovedPackages = [];
|
|
136
|
+
const packagesToUnlinkSet = new Set(packagesToUnlinkPaths.map((p)=>`link:${p}`));
|
|
137
|
+
for (const [pkgName, pkgLink] of Object.entries(existingOverrides)){
|
|
138
|
+
if (packagesToUnlinkSet.has(pkgLink)) {
|
|
139
|
+
actuallyRemovedPackages.push(pkgName);
|
|
140
|
+
} else {
|
|
141
|
+
remainingOverrides[pkgName] = pkgLink;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
130
144
|
if (actuallyRemovedPackages.length === 0) {
|
|
131
145
|
logger.info('No linked packages found in workspace file that match scope roots.');
|
|
132
146
|
return 'No linked packages found in workspace file that match scope roots.';
|
|
133
147
|
}
|
|
134
148
|
const updatedConfig = {
|
|
135
|
-
|
|
149
|
+
...workspaceConfig,
|
|
150
|
+
overrides: remainingOverrides
|
|
136
151
|
};
|
|
152
|
+
if (Object.keys(remainingOverrides).length === 0) {
|
|
153
|
+
delete updatedConfig.overrides;
|
|
154
|
+
}
|
|
137
155
|
// Write the updated workspace file
|
|
138
156
|
if (isDryRun) {
|
|
139
157
|
logger.info('DRY RUN: Would write the following workspace configuration:');
|
|
@@ -143,26 +161,10 @@ const execute = async (runConfig)=>{
|
|
|
143
161
|
logger.info(`DRY RUN: Would remove ${actuallyRemovedPackages.length} packages: ${actuallyRemovedPackages.join(', ')}`);
|
|
144
162
|
} else {
|
|
145
163
|
await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);
|
|
146
|
-
logger.info(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages
|
|
164
|
+
logger.info(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages from overrides.`);
|
|
147
165
|
// Rebuild pnpm lock file and node_modules
|
|
148
166
|
logger.info('Rebuilding pnpm lock file and node_modules...');
|
|
149
167
|
try {
|
|
150
|
-
// Remove existing lock file and node_modules to force clean rebuild
|
|
151
|
-
const fs = await import('fs');
|
|
152
|
-
const pnpmLockPath = path.join(process.cwd(), 'pnpm-lock.yaml');
|
|
153
|
-
const nodeModulesPath = path.join(process.cwd(), 'node_modules');
|
|
154
|
-
if (await storage.exists(pnpmLockPath)) {
|
|
155
|
-
await fs.promises.unlink(pnpmLockPath);
|
|
156
|
-
logger.debug('Removed existing pnpm-lock.yaml');
|
|
157
|
-
}
|
|
158
|
-
if (await storage.exists(nodeModulesPath) && await storage.isDirectory(nodeModulesPath)) {
|
|
159
|
-
await fs.promises.rm(nodeModulesPath, {
|
|
160
|
-
recursive: true,
|
|
161
|
-
force: true
|
|
162
|
-
});
|
|
163
|
-
logger.debug('Removed existing node_modules directory');
|
|
164
|
-
}
|
|
165
|
-
// Install dependencies fresh
|
|
166
168
|
await run('pnpm install');
|
|
167
169
|
logger.info('Successfully rebuilt pnpm lock file and node_modules');
|
|
168
170
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unlink.js","sources":["../../src/commands/unlink.ts"],"sourcesContent":["import path from 'path';\nimport yaml from 'js-yaml';\nimport { getLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\nimport { run } from '../util/child';\n\ninterface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\ninterface WorkspaceConfig {\n packages?: string[];\n}\n\nconst scanDirectoryForPackages = async (rootDir: string, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const packageMap = new Map<string, string>(); // packageName -> relativePath\n\n const absoluteRootDir = path.resolve(process.cwd(), rootDir);\n logger.debug(`Scanning directory for packages: ${absoluteRootDir}`);\n\n if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {\n logger.debug(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);\n return packageMap;\n }\n\n try {\n // Get all subdirectories in the root directory\n const items = await storage.listFiles(absoluteRootDir);\n\n for (const item of items) {\n const itemPath = path.join(absoluteRootDir, item);\n\n if (await storage.isDirectory(itemPath)) {\n const packageJsonPath = path.join(itemPath, 'package.json');\n\n if (await storage.exists(packageJsonPath)) {\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as PackageJson;\n\n if (packageJson.name) {\n const relativePath = path.relative(process.cwd(), itemPath);\n packageMap.set(packageJson.name, relativePath);\n logger.debug(`Found package: ${packageJson.name} at ${relativePath}`);\n }\n } catch (error) {\n logger.debug(`Failed to parse package.json at ${packageJsonPath}: ${error}`);\n }\n }\n }\n }\n } catch (error) {\n logger.warn(`Failed to read directory ${absoluteRootDir}: ${error}`);\n }\n\n return packageMap;\n};\n\nconst findPackagesToUnlink = async (scopeRoots: Record<string, string>, storage: any): Promise<string[]> => {\n const logger = getLogger();\n const packagesToUnlink: string[] = [];\n\n logger.debug(`Finding packages to unlink from scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Scan all scope roots to build a comprehensive map of packages that should be unlinked\n const allScopePackages = new Map<string, string>(); // packageName -> relativePath\n\n for (const [scope, rootDir] of Object.entries(scopeRoots)) {\n logger.debug(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n allScopePackages.set(packageName, packagePath);\n packagesToUnlink.push(packagePath);\n logger.debug(`Package to unlink: ${packageName} -> ${packagePath}`);\n }\n }\n }\n\n return packagesToUnlink;\n};\n\nconst readCurrentWorkspaceFile = async (workspaceFilePath: string, storage: any): Promise<WorkspaceConfig> => {\n if (await storage.exists(workspaceFilePath)) {\n try {\n const content = await storage.readFile(workspaceFilePath, 'utf-8');\n return yaml.load(content) as WorkspaceConfig;\n } catch (error) {\n throw new Error(`Failed to parse existing workspace file: ${error}`);\n }\n }\n return { packages: [] };\n};\n\nconst writeWorkspaceFile = async (workspaceFilePath: string, config: WorkspaceConfig, storage: any): Promise<void> => {\n const yamlContent = yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n sortKeys: false\n });\n await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Starting pnpm workspace unlink management...');\n\n // Read current package.json\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson: PackageJson;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContent);\n } catch (error) {\n throw new Error(`Failed to parse package.json: ${error}`);\n }\n\n logger.info(`Processing package: ${packageJson.name || 'unnamed'}`);\n\n // Get configuration\n const scopeRoots = runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.link?.workspaceFile || 'pnpm-workspace.yaml';\n const isDryRun = runConfig.dryRun || runConfig.link?.dryRun || false;\n\n logger.debug('Extracted scopeRoots:', JSON.stringify(scopeRoots));\n logger.debug('Extracted workspaceFileName:', workspaceFileName);\n logger.debug('Extracted isDryRun:', isDryRun);\n\n if (Object.keys(scopeRoots).length === 0) {\n throw new Error('No scope roots configured. Please configure scope roots in your config file or via --scope-roots CLI option.');\n }\n\n logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Find packages to unlink based on scope roots\n const packagesToUnlink = await findPackagesToUnlink(scopeRoots, storage);\n\n if (packagesToUnlink.length === 0) {\n logger.info('No packages found matching scope roots for unlinking.');\n return 'No packages found matching scope roots for unlinking.';\n }\n\n logger.info(`Found ${packagesToUnlink.length} packages that could be unlinked: ${packagesToUnlink.join(', ')}`);\n\n // Read existing workspace configuration\n const workspaceFilePath = path.join(process.cwd(), workspaceFileName);\n const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);\n\n // Filter out packages that match our scope roots\n const existingPackages = workspaceConfig.packages || [];\n const remainingPackages = existingPackages.filter(pkg => !packagesToUnlink.includes(pkg));\n const actuallyRemovedPackages = existingPackages.filter(pkg => packagesToUnlink.includes(pkg));\n\n if (actuallyRemovedPackages.length === 0) {\n logger.info('No linked packages found in workspace file that match scope roots.');\n return 'No linked packages found in workspace file that match scope roots.';\n }\n\n const updatedConfig: WorkspaceConfig = {\n packages: remainingPackages.sort()\n };\n\n // Write the updated workspace file\n if (isDryRun) {\n logger.info('DRY RUN: Would write the following workspace configuration:');\n logger.info(yaml.dump(updatedConfig, { indent: 2 }));\n logger.info(`DRY RUN: Would remove ${actuallyRemovedPackages.length} packages: ${actuallyRemovedPackages.join(', ')}`);\n } else {\n await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);\n logger.info(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages`);\n\n // Rebuild pnpm lock file and node_modules\n logger.info('Rebuilding pnpm lock file and node_modules...');\n try {\n // Remove existing lock file and node_modules to force clean rebuild\n const fs = await import('fs');\n const pnpmLockPath = path.join(process.cwd(), 'pnpm-lock.yaml');\n const nodeModulesPath = path.join(process.cwd(), 'node_modules');\n\n if (await storage.exists(pnpmLockPath)) {\n await fs.promises.unlink(pnpmLockPath);\n logger.debug('Removed existing pnpm-lock.yaml');\n }\n\n if (await storage.exists(nodeModulesPath) && await storage.isDirectory(nodeModulesPath)) {\n await fs.promises.rm(nodeModulesPath, { recursive: true, force: true });\n logger.debug('Removed existing node_modules directory');\n }\n\n // Install dependencies fresh\n await run('pnpm install');\n logger.info('Successfully rebuilt pnpm lock file and node_modules');\n } catch (error) {\n logger.warn(`Failed to rebuild dependencies: ${error}. You may need to run 'pnpm install' manually.`);\n }\n }\n\n const summary = `Successfully unlinked ${actuallyRemovedPackages.length} sibling packages:\\n${actuallyRemovedPackages.map(pkg => ` - ${pkg}`).join('\\n')}`;\n\n return summary;\n}; "],"names":["scanDirectoryForPackages","rootDir","storage","logger","getLogger","packageMap","Map","absoluteRootDir","path","resolve","process","cwd","debug","exists","isDirectory","items","listFiles","item","itemPath","join","packageJsonPath","packageJsonContent","readFile","packageJson","JSON","parse","name","relativePath","relative","set","error","warn","findPackagesToUnlink","scopeRoots","packagesToUnlink","stringify","allScopePackages","scope","Object","entries","scopePackages","packageName","packagePath","startsWith","push","readCurrentWorkspaceFile","workspaceFilePath","content","yaml","load","Error","packages","writeWorkspaceFile","config","yamlContent","dump","indent","lineWidth","noRefs","sortKeys","writeFile","execute","runConfig","createStorage","log","info","link","workspaceFileName","workspaceFile","isDryRun","dryRun","keys","length","workspaceConfig","existingPackages","remainingPackages","filter","pkg","includes","actuallyRemovedPackages","updatedConfig","sort","fs","pnpmLockPath","nodeModulesPath","promises","unlink","rm","recursive","force","run","summary","map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unlink.js","sources":["../../src/commands/unlink.ts"],"sourcesContent":["import path from 'path';\nimport yaml from 'js-yaml';\nimport { getLogger } from '../logging';\nimport { Config } from '../types';\nimport { create as createStorage } from '../util/storage';\nimport { run } from '../util/child';\n\ninterface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\ninterface PnpmWorkspaceFile {\n packages?: string[];\n overrides?: Record<string, string>;\n}\n\nconst scanDirectoryForPackages = async (rootDir: string, storage: any): Promise<Map<string, string>> => {\n const logger = getLogger();\n const packageMap = new Map<string, string>(); // packageName -> relativePath\n\n const absoluteRootDir = path.resolve(process.cwd(), rootDir);\n logger.debug(`Scanning directory for packages: ${absoluteRootDir}`);\n\n if (!await storage.exists(absoluteRootDir) || !await storage.isDirectory(absoluteRootDir)) {\n logger.debug(`Root directory does not exist or is not a directory: ${absoluteRootDir}`);\n return packageMap;\n }\n\n try {\n // Get all subdirectories in the root directory\n const items = await storage.listFiles(absoluteRootDir);\n\n for (const item of items) {\n const itemPath = path.join(absoluteRootDir, item);\n\n if (await storage.isDirectory(itemPath)) {\n const packageJsonPath = path.join(itemPath, 'package.json');\n\n if (await storage.exists(packageJsonPath)) {\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent) as PackageJson;\n\n if (packageJson.name) {\n const relativePath = path.relative(process.cwd(), itemPath);\n packageMap.set(packageJson.name, relativePath);\n logger.debug(`Found package: ${packageJson.name} at ${relativePath}`);\n }\n } catch (error) {\n logger.debug(`Failed to parse package.json at ${packageJsonPath}: ${error}`);\n }\n }\n }\n }\n } catch (error) {\n logger.warn(`Failed to read directory ${absoluteRootDir}: ${error}`);\n }\n\n return packageMap;\n};\n\nconst findPackagesToUnlink = async (scopeRoots: Record<string, string>, storage: any): Promise<string[]> => {\n const logger = getLogger();\n const packagesToUnlink: string[] = [];\n\n logger.debug(`Finding packages to unlink from scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Scan all scope roots to build a comprehensive map of packages that should be unlinked\n const allScopePackages = new Map<string, string>(); // packageName -> relativePath\n\n for (const [scope, rootDir] of Object.entries(scopeRoots)) {\n logger.debug(`Scanning scope ${scope} at root directory: ${rootDir}`);\n const scopePackages = await scanDirectoryForPackages(rootDir, storage);\n\n // Add packages from this scope to the overall map\n for (const [packageName, packagePath] of scopePackages) {\n if (packageName.startsWith(scope)) {\n allScopePackages.set(packageName, packagePath);\n packagesToUnlink.push(packagePath);\n logger.debug(`Package to unlink: ${packageName} -> ${packagePath}`);\n }\n }\n }\n\n return packagesToUnlink;\n};\n\nconst readCurrentWorkspaceFile = async (workspaceFilePath: string, storage: any): Promise<PnpmWorkspaceFile> => {\n if (await storage.exists(workspaceFilePath)) {\n try {\n const content = await storage.readFile(workspaceFilePath, 'utf-8');\n return (yaml.load(content) as PnpmWorkspaceFile) || {};\n } catch (error) {\n throw new Error(`Failed to parse existing workspace file: ${error}`);\n }\n }\n return {};\n};\n\nconst writeWorkspaceFile = async (workspaceFilePath: string, config: PnpmWorkspaceFile, storage: any): Promise<void> => {\n let yamlContent = yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n sortKeys: false,\n quotingType: \"'\",\n forceQuotes: true\n });\n\n // Post-process to fix numeric values that shouldn't be quoted\n yamlContent = yamlContent.replace(/: '(\\d+(?:\\.\\d+)*)'/g, ': $1');\n\n await storage.writeFile(workspaceFilePath, yamlContent, 'utf-8');\n};\n\nexport const execute = async (runConfig: Config): Promise<string> => {\n const logger = getLogger();\n const storage = createStorage({ log: logger.info });\n\n logger.info('Starting pnpm workspace unlink management...');\n\n // Read current package.json\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n if (!await storage.exists(packageJsonPath)) {\n throw new Error('package.json not found in current directory.');\n }\n\n let packageJson: PackageJson;\n try {\n const packageJsonContent = await storage.readFile(packageJsonPath, 'utf-8');\n packageJson = JSON.parse(packageJsonContent);\n } catch (error) {\n throw new Error(`Failed to parse package.json: ${error}`);\n }\n\n logger.info(`Processing package: ${packageJson.name || 'unnamed'}`);\n\n // Get configuration\n const scopeRoots = runConfig.link?.scopeRoots || {};\n const workspaceFileName = runConfig.link?.workspaceFile || 'pnpm-workspace.yaml';\n const isDryRun = runConfig.dryRun || runConfig.link?.dryRun || false;\n\n logger.debug('Extracted scopeRoots:', JSON.stringify(scopeRoots));\n logger.debug('Extracted workspaceFileName:', workspaceFileName);\n logger.debug('Extracted isDryRun:', isDryRun);\n\n if (Object.keys(scopeRoots).length === 0) {\n throw new Error('No scope roots configured. Please configure scope roots in your config file or via --scope-roots CLI option.');\n }\n\n logger.info(`Configured scope roots: ${JSON.stringify(scopeRoots)}`);\n\n // Find packages to unlink based on scope roots\n const packagesToUnlinkPaths = await findPackagesToUnlink(scopeRoots, storage);\n\n if (packagesToUnlinkPaths.length === 0) {\n logger.info('No packages found matching scope roots for unlinking.');\n return 'No packages found matching scope roots for unlinking.';\n }\n\n logger.info(`Found ${packagesToUnlinkPaths.length} packages that could be unlinked: ${packagesToUnlinkPaths.join(', ')}`);\n\n // Read existing workspace configuration\n const workspaceFilePath = path.join(process.cwd(), workspaceFileName);\n const workspaceConfig = await readCurrentWorkspaceFile(workspaceFilePath, storage);\n\n if (!workspaceConfig.overrides) {\n logger.info('No overrides found in workspace file. Nothing to do.');\n return 'No overrides found in workspace file. Nothing to do.';\n }\n\n // Filter out packages that match our scope roots from overrides\n const existingOverrides = workspaceConfig.overrides || {};\n const remainingOverrides: Record<string, string> = {};\n const actuallyRemovedPackages: string[] = [];\n const packagesToUnlinkSet = new Set(packagesToUnlinkPaths.map(p => `link:${p}`));\n\n for (const [pkgName, pkgLink] of Object.entries(existingOverrides)) {\n if (packagesToUnlinkSet.has(pkgLink)) {\n actuallyRemovedPackages.push(pkgName);\n } else {\n remainingOverrides[pkgName] = pkgLink;\n }\n }\n\n if (actuallyRemovedPackages.length === 0) {\n logger.info('No linked packages found in workspace file that match scope roots.');\n return 'No linked packages found in workspace file that match scope roots.';\n }\n\n const updatedConfig: PnpmWorkspaceFile = {\n ...workspaceConfig,\n overrides: remainingOverrides\n };\n\n if (Object.keys(remainingOverrides).length === 0) {\n delete updatedConfig.overrides;\n }\n\n // Write the updated workspace file\n if (isDryRun) {\n logger.info('DRY RUN: Would write the following workspace configuration:');\n logger.info(yaml.dump(updatedConfig, { indent: 2 }));\n logger.info(`DRY RUN: Would remove ${actuallyRemovedPackages.length} packages: ${actuallyRemovedPackages.join(', ')}`);\n } else {\n await writeWorkspaceFile(workspaceFilePath, updatedConfig, storage);\n logger.info(`Updated ${workspaceFileName} - removed ${actuallyRemovedPackages.length} linked packages from overrides.`);\n\n // Rebuild pnpm lock file and node_modules\n logger.info('Rebuilding pnpm lock file and node_modules...');\n try {\n await run('pnpm install');\n logger.info('Successfully rebuilt pnpm lock file and node_modules');\n } catch (error) {\n logger.warn(`Failed to rebuild dependencies: ${error}. You may need to run 'pnpm install' manually.`);\n }\n }\n\n const summary = `Successfully unlinked ${actuallyRemovedPackages.length} sibling packages:\\n${actuallyRemovedPackages.map(pkg => ` - ${pkg}`).join('\\n')}`;\n\n return summary;\n};\n"],"names":["scanDirectoryForPackages","rootDir","storage","logger","getLogger","packageMap","Map","absoluteRootDir","path","resolve","process","cwd","debug","exists","isDirectory","items","listFiles","item","itemPath","join","packageJsonPath","packageJsonContent","readFile","packageJson","JSON","parse","name","relativePath","relative","set","error","warn","findPackagesToUnlink","scopeRoots","packagesToUnlink","stringify","allScopePackages","scope","Object","entries","scopePackages","packageName","packagePath","startsWith","push","readCurrentWorkspaceFile","workspaceFilePath","content","yaml","load","Error","writeWorkspaceFile","config","yamlContent","dump","indent","lineWidth","noRefs","sortKeys","quotingType","forceQuotes","replace","writeFile","execute","runConfig","createStorage","log","info","link","workspaceFileName","workspaceFile","isDryRun","dryRun","keys","length","packagesToUnlinkPaths","workspaceConfig","overrides","existingOverrides","remainingOverrides","actuallyRemovedPackages","packagesToUnlinkSet","Set","map","p","pkgName","pkgLink","has","updatedConfig","run","summary","pkg"],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const VERSION = '0.0.
|
|
1
|
+
const VERSION = '0.0.7 (HEAD/d01b589 T:v0.0.7 2025-06-30 14:57:14 -0700) linux x64 v22.16.0';
|
|
2
2
|
const PROGRAM_NAME = 'kodrdriv';
|
|
3
3
|
const DEFAULT_CHARACTER_ENCODING = 'utf-8';
|
|
4
4
|
const DEFAULT_OVERRIDES = false;
|
package/dist/main.js
CHANGED
|
@@ -41,7 +41,8 @@ async function main() {
|
|
|
41
41
|
if (commandName === COMMAND_COMMIT) {
|
|
42
42
|
summary = await execute(runConfig);
|
|
43
43
|
} else if (commandName === COMMAND_RELEASE) {
|
|
44
|
-
|
|
44
|
+
const releaseSummary = await execute$1(runConfig);
|
|
45
|
+
summary = `${releaseSummary.title}\n\n${releaseSummary.body}`;
|
|
45
46
|
} else if (commandName === COMMAND_PUBLISH) {
|
|
46
47
|
await execute$2(runConfig);
|
|
47
48
|
} else if (commandName === COMMAND_LINK) {
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["#!/usr/bin/env node\nimport * as Cardigantime from '@theunwalked/cardigantime';\nimport 'dotenv/config';\nimport * as Arguments from './arguments';\nimport * as Commit from './commands/commit';\nimport * as Link from './commands/link';\nimport * as Publish from './commands/publish';\nimport * as Release from './commands/release';\nimport * as Unlink from './commands/unlink';\nimport { COMMAND_COMMIT, COMMAND_LINK, COMMAND_PUBLISH, COMMAND_RELEASE, COMMAND_UNLINK, DEFAULT_CONFIG_DIR } from './constants';\nimport { getLogger, setLogLevel } from './logging';\nimport { CommandConfig } from 'types';\nimport { Config, ConfigSchema, SecureConfig } from './types';\n\nexport async function main() {\n\n const cardigantime = Cardigantime.create({\n defaults: {\n configDirectory: DEFAULT_CONFIG_DIR, // Default directory for config file\n },\n configShape: ConfigSchema.shape as any, // Cast to any to avoid TypeScript recursion issues\n logger: getLogger(), // Optional: Pass logger instance\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [runConfig, secureConfig, commandConfig]: [Config, SecureConfig, CommandConfig] = await Arguments.configure(cardigantime); // Pass cardigantime instance\n\n // Set log level based on verbose flag\n if (runConfig.verbose) {\n setLogLevel('verbose');\n }\n if (runConfig.debug) {\n setLogLevel('debug');\n }\n\n const logger = getLogger();\n\n try {\n // Get the command from Commander\n const command = process.argv[2];\n let commandName = commandConfig.commandName;\n\n // If we have a specific command argument, use that\n if (command === 'commit' || command === 'release' || command === 'publish' || command === 'link' || command === 'unlink') {\n commandName = command;\n }\n\n let summary: string = '';\n\n if (commandName === COMMAND_COMMIT) {\n summary = await Commit.execute(runConfig);\n } else if (commandName === COMMAND_RELEASE) {\n
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["#!/usr/bin/env node\nimport * as Cardigantime from '@theunwalked/cardigantime';\nimport 'dotenv/config';\nimport * as Arguments from './arguments';\nimport * as Commit from './commands/commit';\nimport * as Link from './commands/link';\nimport * as Publish from './commands/publish';\nimport * as Release from './commands/release';\nimport * as Unlink from './commands/unlink';\nimport { COMMAND_COMMIT, COMMAND_LINK, COMMAND_PUBLISH, COMMAND_RELEASE, COMMAND_UNLINK, DEFAULT_CONFIG_DIR } from './constants';\nimport { getLogger, setLogLevel } from './logging';\nimport { CommandConfig } from 'types';\nimport { Config, ConfigSchema, SecureConfig } from './types';\n\nexport async function main() {\n\n const cardigantime = Cardigantime.create({\n defaults: {\n configDirectory: DEFAULT_CONFIG_DIR, // Default directory for config file\n },\n configShape: ConfigSchema.shape as any, // Cast to any to avoid TypeScript recursion issues\n logger: getLogger(), // Optional: Pass logger instance\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [runConfig, secureConfig, commandConfig]: [Config, SecureConfig, CommandConfig] = await Arguments.configure(cardigantime); // Pass cardigantime instance\n\n // Set log level based on verbose flag\n if (runConfig.verbose) {\n setLogLevel('verbose');\n }\n if (runConfig.debug) {\n setLogLevel('debug');\n }\n\n const logger = getLogger();\n\n try {\n // Get the command from Commander\n const command = process.argv[2];\n let commandName = commandConfig.commandName;\n\n // If we have a specific command argument, use that\n if (command === 'commit' || command === 'release' || command === 'publish' || command === 'link' || command === 'unlink') {\n commandName = command;\n }\n\n let summary: string = '';\n\n if (commandName === COMMAND_COMMIT) {\n summary = await Commit.execute(runConfig);\n } else if (commandName === COMMAND_RELEASE) {\n const releaseSummary = await Release.execute(runConfig);\n summary = `${releaseSummary.title}\\n\\n${releaseSummary.body}`;\n } else if (commandName === COMMAND_PUBLISH) {\n await Publish.execute(runConfig);\n } else if (commandName === COMMAND_LINK) {\n summary = await Link.execute(runConfig);\n } else if (commandName === COMMAND_UNLINK) {\n summary = await Unlink.execute(runConfig);\n }\n\n // eslint-disable-next-line no-console\n console.log(`\\n\\n${summary}\\n\\n`);\n\n } catch (error: any) {\n logger.error('Exiting due to Error: %s, %s', error.message, error.stack);\n process.exit(1);\n }\n}\n\nmain();"],"names":["main","cardigantime","Cardigantime","create","defaults","configDirectory","DEFAULT_CONFIG_DIR","configShape","ConfigSchema","shape","logger","getLogger","runConfig","secureConfig","commandConfig","Arguments","verbose","setLogLevel","debug","command","process","argv","commandName","summary","COMMAND_COMMIT","Commit","COMMAND_RELEASE","releaseSummary","Release","title","body","COMMAND_PUBLISH","Publish","COMMAND_LINK","Link","COMMAND_UNLINK","Unlink","console","log","error","message","stack","exit"],"mappings":"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"}
|
|
@@ -4,6 +4,24 @@ Task #2: Provide a detailed list of changes involved in this release, and make s
|
|
|
4
4
|
|
|
5
5
|
Task #3: Use the content in the <context> section to help you write the release notes and to help make connections with people, projects, issues, features, and other information.
|
|
6
6
|
|
|
7
|
+
### Output Format
|
|
8
|
+
|
|
9
|
+
Your response MUST be a valid JSON object with the following structure:
|
|
10
|
+
{
|
|
11
|
+
"title": "A single-line, concise title for the release.",
|
|
12
|
+
"body": "The detailed release notes in Markdown format."
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
**Instructions for the `title` field:**
|
|
16
|
+
- It must be a single line.
|
|
17
|
+
- It should capture the most significant, substantive changes in the release.
|
|
18
|
+
- Focus on what is noticeable to developers using the software.
|
|
19
|
+
- AVOID mentioning trivial changes like "improving formatting," "updating dependencies," or "refactoring code."
|
|
20
|
+
|
|
21
|
+
**Instructions for the `body` field:**
|
|
22
|
+
- This should be the full release notes in Markdown format.
|
|
23
|
+
- Follow the detailed instructions below for structuring and writing the release notes.
|
|
24
|
+
|
|
7
25
|
### Output Restrictions
|
|
8
26
|
|
|
9
27
|
- Do not mention and people or contributors in the release notes. For example, do not say, "Thanks to John Doe for this feature." Release notes are to be impersonal and not focused on indiviudals.
|
|
@@ -48,12 +66,12 @@ Create release notes that:
|
|
|
48
66
|
|
|
49
67
|
3. **Use clear, factual bullet points** under each section. Briefly describe what changed and why it's relevant — **but do not use marketing language**. Avoid vague or exaggerated terms like:
|
|
50
68
|
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
69
|
+
* "awesome new feature"
|
|
70
|
+
* "significant boost"
|
|
71
|
+
* "exciting changes"
|
|
72
|
+
* "revolutionary update"
|
|
55
73
|
|
|
56
|
-
4. **Keep your tone technical, neutral, and useful.** It
|
|
74
|
+
4. **Keep your tone technical, neutral, and useful.** It's okay to include references to:
|
|
57
75
|
|
|
58
76
|
* Affected files or systems
|
|
59
77
|
* Internal components (if relevant to the audience)
|
|
@@ -64,26 +82,9 @@ Create release notes that:
|
|
|
64
82
|
|
|
65
83
|
## 📝 Output Format Example
|
|
66
84
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
* Unified `vite.config.ts` and `webpack.config.js` into a single environment-aware module
|
|
74
|
-
* Reduced config nesting depth in `tsconfig.json` to improve readability
|
|
75
|
-
* Updated CI scripts to use `.env.defaults` instead of `.env.local`
|
|
76
|
-
|
|
77
|
-
**Bug Fixes**
|
|
78
|
-
|
|
79
|
-
* Fixed crash in config loader when optional fields were undefined
|
|
80
|
-
* Resolved issue with `yarn build` failing on Windows due to missing path escape
|
|
81
|
-
|
|
82
|
-
**Documentation Updates**
|
|
83
|
-
|
|
84
|
-
* Rewrote setup instructions in `README.md` to reflect unified config process
|
|
85
|
-
* Removed legacy instructions for `env.local.js`
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
Let me know if you'd like a version optimized for a changelog generator plugin or a GitHub Actions pipeline.
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"title": "New Generation Types, and Updates to API",
|
|
88
|
+
"body": "This release focuses on simplifying the configuration system and removing deprecated environment-specific files. Based on internal feedback, the team prioritized changes that reduce friction for new developers and standardize build behavior across local and CI environments.\\n\\n**Improvements**\\n\\n* Unified `vite.config.ts` and `webpack.config.js` into a single environment-aware module\\n* Reduced config nesting depth in `tsconfig.json` to improve readability\\n* Updated CI scripts to use `.env.defaults` instead of `.env.local`\\n\\n**Bug Fixes**\\n\\n* Fixed crash in config loader when optional fields were undefined\\n* Resolved issue with `yarn build` failing on Windows due to missing path escape\\n\\n**Documentation Updates**\\n\\n* Rewrote setup instructions in `README.md` to reflect unified config process\\n* Removed legacy instructions for `env.local.js`"
|
|
89
|
+
}
|
|
90
|
+
```
|
package/dist/types.js
CHANGED
|
@@ -28,7 +28,9 @@ const ConfigSchema = z.object({
|
|
|
28
28
|
'rebase'
|
|
29
29
|
]).optional(),
|
|
30
30
|
dependencyUpdatePatterns: z.array(z.string()).optional(),
|
|
31
|
-
requiredEnvVars: z.array(z.string()).optional()
|
|
31
|
+
requiredEnvVars: z.array(z.string()).optional(),
|
|
32
|
+
linkWorkspacePackages: z.boolean().optional(),
|
|
33
|
+
unlinkWorkspacePackages: z.boolean().optional()
|
|
32
34
|
}).optional(),
|
|
33
35
|
link: z.object({
|
|
34
36
|
scopeRoots: z.record(z.string(), z.string()).optional(),
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n instructions: z.string().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","instructions","string","model","contextDirectories","array","commit","add","cached","sendit","messageLimit","number","context","release","from","to","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","link","scopeRoots","record","workspaceFile","excludedPatterns","openaiApiKey","commandName"],"mappings":";;AAGO,MAAMA,YAAAA,GAAeC,CAAAA,CAAEC,MAAM,CAAC;IACjCC,MAAAA,EAAQF,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;IAC5BC,OAAAA,EAASL,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;IAC7BE,KAAAA,EAAON,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;IAC3BG,SAAAA,EAAWP,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;IAC/BI,YAAAA,EAAcR,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;IACjCM,KAAAA,EAAOV,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;AAC1BO,IAAAA,kBAAAA,EAAoBX,EAAEY,KAAK,CAACZ,CAAAA,CAAES,MAAM,IAAIL,QAAQ,EAAA;IAChDS,MAAAA,EAAQb,CAAAA,CAAEC,MAAM,CAAC;QACba,GAAAA,EAAKd,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QACzBW,MAAAA,EAAQf,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAC5BY,MAAAA,EAAQhB,CAAAA,CAAEG,OAAO,EAAA,CAAGC,QAAQ,EAAA;QAC5Ba,YAAAA,EAAcjB,CAAAA,CAAEkB,MAAM,EAAA,CAAGd,QAAQ,EAAA;QACjCe,OAAAA,EAASnB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ;AAChC,KAAA,CAAA,CAAGA,QAAQ,EAAA;IACXgB,OAAAA,EAASpB,CAAAA,CAAEC,MAAM,CAAC;QACdoB,IAAAA,EAAMrB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QACzBkB,EAAAA,EAAItB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ,EAAA;QACvBa,YAAAA,EAAcjB,CAAAA,CAAEkB,MAAM,EAAA,CAAGd,QAAQ,EAAA;QACjCe,OAAAA,EAASnB,CAAAA,CAAES,MAAM,EAAA,CAAGL,QAAQ;AAChC,KAAA,CAAA,CAAGA,QAAQ,EAAA;IACXmB,OAAAA,EAASvB,CAAAA,CAAEC,MAAM,CAAC;QACduB,WAAAA,EAAaxB,CAAAA,CAAEyB,IAAI,CAAC;AAAC,YAAA,OAAA;AAAS,YAAA,QAAA;AAAU,YAAA;AAAS,SAAA,CAAA,CAAErB,QAAQ,EAAA;AAC3DsB,QAAAA,wBAAAA,EAA0B1B,EAAEY,KAAK,CAACZ,CAAAA,CAAES,MAAM,IAAIL,QAAQ,EAAA;AACtDuB,QAAAA,eAAAA,EAAiB3B,EAAEY,KAAK,CAACZ,CAAAA,CAAES,MAAM,IAAIL,QAAQ;AACjD,KAAA,CAAA,CAAGA,QAAQ,EAAA;
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from \"zod\";\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean().optional(),\n verbose: z.boolean().optional(),\n debug: z.boolean().optional(),\n overrides: z.boolean().optional(),\n instructions: z.string().optional(),\n model: z.string().optional(),\n contextDirectories: z.array(z.string()).optional(),\n commit: z.object({\n add: z.boolean().optional(),\n cached: z.boolean().optional(),\n sendit: z.boolean().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n }).optional(),\n release: z.object({\n from: z.string().optional(),\n to: z.string().optional(),\n messageLimit: z.number().optional(),\n context: z.string().optional(),\n }).optional(),\n publish: z.object({\n mergeMethod: z.enum(['merge', 'squash', 'rebase']).optional(),\n dependencyUpdatePatterns: z.array(z.string()).optional(),\n requiredEnvVars: z.array(z.string()).optional(),\n linkWorkspacePackages: z.boolean().optional(),\n unlinkWorkspacePackages: z.boolean().optional(),\n }).optional(),\n link: z.object({\n scopeRoots: z.record(z.string(), z.string()).optional(),\n workspaceFile: z.string().optional(),\n dryRun: z.boolean().optional(),\n }).optional(),\n excludedPatterns: z.array(z.string()).optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport const CommandConfigSchema = z.object({\n commandName: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\nexport type CommandConfig = z.infer<typeof CommandConfigSchema>;\n\nexport type MergeMethod = 'merge' | 'squash' | 'rebase';\n\nexport interface PullRequest {\n html_url: string;\n number: number;\n labels: {\n name: string;\n }[];\n}\n\nexport type ReleaseSummary = {\n title: string;\n body: string;\n}\n\nexport type ReleaseConfig = {\n from?: string;\n to?: string;\n context?: string;\n}\n\nexport type PublishConfig = {\n from?: string;\n to?: string;\n}\n"],"names":["ConfigSchema","z","object","dryRun","boolean","optional","verbose","debug","overrides","instructions","string","model","contextDirectories","array","commit","add","cached","sendit","messageLimit","number","context","release","from","to","publish","mergeMethod","enum","dependencyUpdatePatterns","requiredEnvVars","linkWorkspacePackages","unlinkWorkspacePackages","link","scopeRoots","record","workspaceFile","excludedPatterns","openaiApiKey","commandName"],"mappings":"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"}
|
package/dist/util/github.js
CHANGED
|
@@ -125,7 +125,7 @@ const mergePullRequest = async (prNumber, mergeMethod = 'squash')=>{
|
|
|
125
125
|
});
|
|
126
126
|
logger.info(`Branch ${headBranch} deleted.`);
|
|
127
127
|
};
|
|
128
|
-
const createRelease = async (tagName, notes)=>{
|
|
128
|
+
const createRelease = async (tagName, title, notes)=>{
|
|
129
129
|
const octokit = getOctokit();
|
|
130
130
|
const { owner, repo } = await getRepoDetails();
|
|
131
131
|
const logger = getLogger();
|
|
@@ -134,7 +134,7 @@ const createRelease = async (tagName, notes)=>{
|
|
|
134
134
|
owner,
|
|
135
135
|
repo,
|
|
136
136
|
tag_name: tagName,
|
|
137
|
-
name:
|
|
137
|
+
name: title,
|
|
138
138
|
body: notes
|
|
139
139
|
});
|
|
140
140
|
logger.info(`Release ${tagName} created.`);
|
package/dist/util/github.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sources":["../../src/util/github.ts"],"sourcesContent":["import { Octokit } from '@octokit/rest';\nimport { getLogger } from '../logging';\nimport { PullRequest, MergeMethod } from '../types';\nimport { run } from './child';\n\nexport const getOctokit = (): Octokit => {\n const logger = getLogger();\n const token = process.env.GITHUB_TOKEN;\n\n if (!token) {\n logger.error('GITHUB_TOKEN environment variable is not set.');\n throw new Error('GITHUB_TOKEN is not set.');\n }\n\n return new Octokit({\n auth: token,\n });\n};\n\nexport const getCurrentBranchName = async (): Promise<string> => {\n const { stdout } = await run('git rev-parse --abbrev-ref HEAD');\n return stdout.trim();\n};\n\nexport const getRepoDetails = async (): Promise<{ owner: string; repo: string }> => {\n const { stdout } = await run('git remote get-url origin');\n const url = stdout.trim();\n // git@github.com:owner/repo.git or https://github.com/owner/repo.git\n const match = url.match(/github\\.com[/:]([\\w-]+)\\/([\\w-]+)\\.git/);\n if (!match) {\n throw new Error('Could not parse repository owner and name from origin URL.');\n }\n return { owner: match[1], repo: match[2] };\n};\n\nexport const createPullRequest = async (\n title: string,\n body: string,\n head: string,\n base: string = 'main'\n): Promise<PullRequest> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.pulls.create({\n owner,\n repo,\n title,\n body,\n head,\n base,\n });\n\n return response.data;\n};\n\nexport const findOpenPullRequestByHeadRef = async (head: string): Promise<PullRequest | null> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.pulls.list({\n owner,\n repo,\n state: 'open',\n head: `${owner}:${head}`,\n });\n\n return response.data[0] ?? null;\n};\n\nconst delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n\nexport const waitForPullRequestChecks = async (prNumber: number): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n while (true) {\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n\n const checkRunsResponse = await octokit.checks.listForRef({\n owner,\n repo,\n ref: pr.data.head.sha,\n });\n\n const checkRuns = checkRunsResponse.data.check_runs;\n\n if (checkRuns.length === 0) {\n logger.info(`PR #${prNumber}: No checks found. Waiting...`);\n await delay(10000);\n continue;\n }\n\n const failingChecks = checkRuns.filter(\n (cr) => cr.conclusion && ['failure', 'timed_out', 'cancelled'].includes(cr.conclusion)\n );\n\n if (failingChecks.length > 0) {\n logger.error(`PR #${prNumber} has failing checks:`);\n for (const check of failingChecks) {\n logger.error(`- ${check.name}: ${check.conclusion}`);\n }\n throw new Error(`PR #${prNumber} checks failed.`);\n }\n\n const allChecksCompleted = checkRuns.every((cr) => cr.status === 'completed');\n\n if (allChecksCompleted) {\n logger.info(`All checks for PR #${prNumber} have completed successfully.`);\n return;\n }\n\n const completedCount = checkRuns.filter(cr => cr.status === 'completed').length;\n logger.info(`PR #${prNumber} checks: ${completedCount}/${checkRuns.length} completed. Waiting...`);\n\n await delay(10000); // wait 10 seconds\n }\n};\n\nexport const mergePullRequest = async (prNumber: number, mergeMethod: MergeMethod = 'squash'): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Merging PR #${prNumber} using ${mergeMethod} method...`);\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n const headBranch = pr.data.head.ref;\n\n await octokit.pulls.merge({\n owner,\n repo,\n pull_number: prNumber,\n merge_method: mergeMethod,\n });\n logger.info(`PR #${prNumber} merged using ${mergeMethod} method.`);\n\n logger.info(`Deleting branch ${headBranch}...`);\n await octokit.git.deleteRef({\n owner,\n repo,\n ref: `heads/${headBranch}`,\n });\n logger.info(`Branch ${headBranch} deleted.`);\n};\n\nexport const createRelease = async (tagName: string, notes: string): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Creating release for tag ${tagName}...`);\n await octokit.repos.createRelease({\n owner,\n repo,\n tag_name: tagName,\n name: tagName,\n body: notes,\n });\n logger.info(`Release ${tagName} created.`);\n}; "],"names":["getOctokit","logger","getLogger","token","process","env","GITHUB_TOKEN","error","Error","Octokit","auth","getCurrentBranchName","stdout","run","trim","getRepoDetails","url","match","owner","repo","createPullRequest","title","body","head","base","octokit","response","pulls","create","data","findOpenPullRequestByHeadRef","list","state","delay","ms","Promise","resolve","setTimeout","waitForPullRequestChecks","prNumber","pr","get","pull_number","checkRunsResponse","checks","listForRef","ref","sha","checkRuns","check_runs","length","info","failingChecks","filter","cr","conclusion","includes","check","name","allChecksCompleted","every","status","completedCount","mergePullRequest","mergeMethod","headBranch","merge","merge_method","git","deleteRef","createRelease","tagName","notes","repos","tag_name"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"github.js","sources":["../../src/util/github.ts"],"sourcesContent":["import { Octokit } from '@octokit/rest';\nimport { getLogger } from '../logging';\nimport { PullRequest, MergeMethod } from '../types';\nimport { run } from './child';\n\nexport const getOctokit = (): Octokit => {\n const logger = getLogger();\n const token = process.env.GITHUB_TOKEN;\n\n if (!token) {\n logger.error('GITHUB_TOKEN environment variable is not set.');\n throw new Error('GITHUB_TOKEN is not set.');\n }\n\n return new Octokit({\n auth: token,\n });\n};\n\nexport const getCurrentBranchName = async (): Promise<string> => {\n const { stdout } = await run('git rev-parse --abbrev-ref HEAD');\n return stdout.trim();\n};\n\nexport const getRepoDetails = async (): Promise<{ owner: string; repo: string }> => {\n const { stdout } = await run('git remote get-url origin');\n const url = stdout.trim();\n // git@github.com:owner/repo.git or https://github.com/owner/repo.git\n const match = url.match(/github\\.com[/:]([\\w-]+)\\/([\\w-]+)\\.git/);\n if (!match) {\n throw new Error('Could not parse repository owner and name from origin URL.');\n }\n return { owner: match[1], repo: match[2] };\n};\n\nexport const createPullRequest = async (\n title: string,\n body: string,\n head: string,\n base: string = 'main'\n): Promise<PullRequest> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.pulls.create({\n owner,\n repo,\n title,\n body,\n head,\n base,\n });\n\n return response.data;\n};\n\nexport const findOpenPullRequestByHeadRef = async (head: string): Promise<PullRequest | null> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n\n const response = await octokit.pulls.list({\n owner,\n repo,\n state: 'open',\n head: `${owner}:${head}`,\n });\n\n return response.data[0] ?? null;\n};\n\nconst delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n\nexport const waitForPullRequestChecks = async (prNumber: number): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n while (true) {\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n\n const checkRunsResponse = await octokit.checks.listForRef({\n owner,\n repo,\n ref: pr.data.head.sha,\n });\n\n const checkRuns = checkRunsResponse.data.check_runs;\n\n if (checkRuns.length === 0) {\n logger.info(`PR #${prNumber}: No checks found. Waiting...`);\n await delay(10000);\n continue;\n }\n\n const failingChecks = checkRuns.filter(\n (cr) => cr.conclusion && ['failure', 'timed_out', 'cancelled'].includes(cr.conclusion)\n );\n\n if (failingChecks.length > 0) {\n logger.error(`PR #${prNumber} has failing checks:`);\n for (const check of failingChecks) {\n logger.error(`- ${check.name}: ${check.conclusion}`);\n }\n throw new Error(`PR #${prNumber} checks failed.`);\n }\n\n const allChecksCompleted = checkRuns.every((cr) => cr.status === 'completed');\n\n if (allChecksCompleted) {\n logger.info(`All checks for PR #${prNumber} have completed successfully.`);\n return;\n }\n\n const completedCount = checkRuns.filter(cr => cr.status === 'completed').length;\n logger.info(`PR #${prNumber} checks: ${completedCount}/${checkRuns.length} completed. Waiting...`);\n\n await delay(10000); // wait 10 seconds\n }\n};\n\nexport const mergePullRequest = async (prNumber: number, mergeMethod: MergeMethod = 'squash'): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Merging PR #${prNumber} using ${mergeMethod} method...`);\n const pr = await octokit.pulls.get({\n owner,\n repo,\n pull_number: prNumber,\n });\n const headBranch = pr.data.head.ref;\n\n await octokit.pulls.merge({\n owner,\n repo,\n pull_number: prNumber,\n merge_method: mergeMethod,\n });\n logger.info(`PR #${prNumber} merged using ${mergeMethod} method.`);\n\n logger.info(`Deleting branch ${headBranch}...`);\n await octokit.git.deleteRef({\n owner,\n repo,\n ref: `heads/${headBranch}`,\n });\n logger.info(`Branch ${headBranch} deleted.`);\n};\n\nexport const createRelease = async (tagName: string, title: string, notes: string): Promise<void> => {\n const octokit = getOctokit();\n const { owner, repo } = await getRepoDetails();\n const logger = getLogger();\n\n logger.info(`Creating release for tag ${tagName}...`);\n await octokit.repos.createRelease({\n owner,\n repo,\n tag_name: tagName,\n name: title,\n body: notes,\n });\n logger.info(`Release ${tagName} created.`);\n}; "],"names":["getOctokit","logger","getLogger","token","process","env","GITHUB_TOKEN","error","Error","Octokit","auth","getCurrentBranchName","stdout","run","trim","getRepoDetails","url","match","owner","repo","createPullRequest","title","body","head","base","octokit","response","pulls","create","data","findOpenPullRequestByHeadRef","list","state","delay","ms","Promise","resolve","setTimeout","waitForPullRequestChecks","prNumber","pr","get","pull_number","checkRunsResponse","checks","listForRef","ref","sha","checkRuns","check_runs","length","info","failingChecks","filter","cr","conclusion","includes","check","name","allChecksCompleted","every","status","completedCount","mergePullRequest","mergeMethod","headBranch","merge","merge_method","git","deleteRef","createRelease","tagName","notes","repos","tag_name"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eldrforge/kodrdriv",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "Create Intelligent Release Notes or Change Logs from Git",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"type": "module",
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"@swc/core": "^1.12.7",
|
|
44
44
|
"@types/js-yaml": "^4.0.9",
|
|
45
45
|
"@types/luxon": "^3.6.2",
|
|
46
|
-
"@types/node": "^24.0.
|
|
46
|
+
"@types/node": "^24.0.8",
|
|
47
47
|
"@types/shell-escape": "^0.2.3",
|
|
48
48
|
"@types/winston": "^2.4.4",
|
|
49
|
-
"@typescript-eslint/eslint-plugin": "^8.35.
|
|
50
|
-
"@typescript-eslint/parser": "^8.35.
|
|
49
|
+
"@typescript-eslint/eslint-plugin": "^8.35.1",
|
|
50
|
+
"@typescript-eslint/parser": "^8.35.1",
|
|
51
51
|
"@vitest/coverage-v8": "^3.2.4",
|
|
52
52
|
"copyfiles": "^2.4.1",
|
|
53
53
|
"esbuild": "0.25.5",
|