@kosuke-ai/cli 0.0.7 ā 0.0.8
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 +43 -18
- package/dist/index.js +42 -26
- package/dist/index.js.map +1 -1
- package/dist/kosuke/commands/analyse.d.ts +1 -1
- package/dist/kosuke/commands/analyse.d.ts.map +1 -1
- package/dist/kosuke/commands/analyse.js +124 -180
- package/dist/kosuke/commands/analyse.js.map +1 -1
- package/dist/kosuke/commands/lint.d.ts +1 -5
- package/dist/kosuke/commands/lint.d.ts.map +1 -1
- package/dist/kosuke/commands/lint.js +78 -97
- package/dist/kosuke/commands/lint.js.map +1 -1
- package/dist/kosuke/commands/sync-rules.d.ts +2 -1
- package/dist/kosuke/commands/sync-rules.d.ts.map +1 -1
- package/dist/kosuke/commands/sync-rules.js +106 -102
- package/dist/kosuke/commands/sync-rules.js.map +1 -1
- package/dist/kosuke/types.d.ts +11 -1
- package/dist/kosuke/types.d.ts.map +1 -1
- package/dist/kosuke/utils/git.d.ts +0 -4
- package/dist/kosuke/utils/git.d.ts.map +1 -1
- package/dist/kosuke/utils/git.js +0 -6
- package/dist/kosuke/utils/git.js.map +1 -1
- package/dist/kosuke/utils/pr-orchestrator.d.ts +47 -0
- package/dist/kosuke/utils/pr-orchestrator.d.ts.map +1 -0
- package/dist/kosuke/utils/pr-orchestrator.js +152 -0
- package/dist/kosuke/utils/pr-orchestrator.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR Orchestrator - Generic PR workflow utility
|
|
3
|
+
*
|
|
4
|
+
* Handles branch creation, commits, push, and PR creation
|
|
5
|
+
* Used across all commands that support --pr flag
|
|
6
|
+
*/
|
|
7
|
+
import simpleGit from 'simple-git';
|
|
8
|
+
import { createBranch, commit, push, getCurrentRepo, getCurrentBranch } from './git.js';
|
|
9
|
+
import { createPullRequest } from './github.js';
|
|
10
|
+
/**
|
|
11
|
+
* Execute core logic wrapped with PR workflow
|
|
12
|
+
*/
|
|
13
|
+
export async function runWithPR(options, coreLogic) {
|
|
14
|
+
// Validate environment
|
|
15
|
+
if (!process.env.GITHUB_TOKEN) {
|
|
16
|
+
throw new Error('GITHUB_TOKEN environment variable is required for --pr flag');
|
|
17
|
+
}
|
|
18
|
+
const git = simpleGit();
|
|
19
|
+
// Get base branch (current branch before creating feature branch)
|
|
20
|
+
const baseBranch = options.baseBranch || (await getCurrentBranch());
|
|
21
|
+
console.log(`š Base branch: ${baseBranch}\n`);
|
|
22
|
+
// Create working branch with unique name
|
|
23
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').split('.')[0];
|
|
24
|
+
const branchName = `${options.branchPrefix}/${timestamp}`;
|
|
25
|
+
console.log(`šæ Creating branch: ${branchName}\n`);
|
|
26
|
+
await createBranch(branchName, baseBranch);
|
|
27
|
+
// Execute core logic
|
|
28
|
+
const result = await coreLogic();
|
|
29
|
+
// Check if there are any changes to commit
|
|
30
|
+
const status = await git.status();
|
|
31
|
+
if (status.files.length === 0) {
|
|
32
|
+
console.log('\nā¹ļø No changes detected. Skipping PR creation.');
|
|
33
|
+
throw new Error('No changes to commit');
|
|
34
|
+
}
|
|
35
|
+
// Commit changes
|
|
36
|
+
console.log('\nš Committing changes...');
|
|
37
|
+
const commitMsg = typeof options.commitMessage === 'function' ? options.commitMessage(0) : options.commitMessage;
|
|
38
|
+
await commit(commitMsg);
|
|
39
|
+
console.log(' ā
Changes committed\n');
|
|
40
|
+
// Push branch
|
|
41
|
+
console.log('š¤ Pushing branch...');
|
|
42
|
+
await push(branchName);
|
|
43
|
+
console.log(' ā
Branch pushed\n');
|
|
44
|
+
// Create PR
|
|
45
|
+
console.log('š Creating pull request...');
|
|
46
|
+
const { owner, repo } = await getCurrentRepo();
|
|
47
|
+
const prUrl = await createPullRequest({
|
|
48
|
+
owner,
|
|
49
|
+
repo,
|
|
50
|
+
title: options.prTitle,
|
|
51
|
+
head: branchName,
|
|
52
|
+
base: baseBranch,
|
|
53
|
+
body: options.prBody,
|
|
54
|
+
});
|
|
55
|
+
console.log(` ā
Pull request created: ${prUrl}\n`);
|
|
56
|
+
return {
|
|
57
|
+
result,
|
|
58
|
+
prInfo: {
|
|
59
|
+
branchName,
|
|
60
|
+
prUrl,
|
|
61
|
+
baseBranch,
|
|
62
|
+
commitsCreated: 1,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Execute core logic wrapped with PR workflow (batch mode)
|
|
68
|
+
* Supports multiple commits for batch processing
|
|
69
|
+
*/
|
|
70
|
+
export async function runWithPRBatched(options, batches) {
|
|
71
|
+
// Validate environment
|
|
72
|
+
if (!process.env.GITHUB_TOKEN) {
|
|
73
|
+
throw new Error('GITHUB_TOKEN environment variable is required for --pr flag');
|
|
74
|
+
}
|
|
75
|
+
const git = simpleGit();
|
|
76
|
+
// Get base branch
|
|
77
|
+
const baseBranch = options.baseBranch || (await getCurrentBranch());
|
|
78
|
+
console.log(`š Base branch: ${baseBranch}\n`);
|
|
79
|
+
// Create working branch
|
|
80
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').split('.')[0];
|
|
81
|
+
const branchName = `${options.branchPrefix}/${timestamp}`;
|
|
82
|
+
console.log(`šæ Creating branch: ${branchName}\n`);
|
|
83
|
+
await createBranch(branchName, baseBranch);
|
|
84
|
+
// Process each batch
|
|
85
|
+
const results = [];
|
|
86
|
+
let commitsCreated = 0;
|
|
87
|
+
for (let i = 0; i < batches.length; i++) {
|
|
88
|
+
console.log(`\nš Processing batch ${i + 1}/${batches.length}...`);
|
|
89
|
+
// Execute batch logic
|
|
90
|
+
const result = await batches[i]();
|
|
91
|
+
results.push(result);
|
|
92
|
+
// Check if there are changes
|
|
93
|
+
const status = await git.status();
|
|
94
|
+
if (status.files.length === 0) {
|
|
95
|
+
console.log(' ā¹ļø No changes in this batch, skipping commit');
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
// Validate if needed
|
|
99
|
+
if (options.validateBeforeCommit) {
|
|
100
|
+
console.log(' š§ Running validation...');
|
|
101
|
+
const isValid = await options.validateBeforeCommit();
|
|
102
|
+
if (!isValid) {
|
|
103
|
+
console.warn(' ā ļø Validation failed, skipping this batch');
|
|
104
|
+
await git.reset(['--hard', 'HEAD']);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
console.log(' ā
Validation passed');
|
|
108
|
+
}
|
|
109
|
+
// Commit batch
|
|
110
|
+
const commitMsg = typeof options.commitMessage === 'function'
|
|
111
|
+
? options.commitMessage(i)
|
|
112
|
+
: options.commitMessage;
|
|
113
|
+
await commit(commitMsg);
|
|
114
|
+
commitsCreated++;
|
|
115
|
+
console.log(' ā
Batch committed');
|
|
116
|
+
// Callback if needed
|
|
117
|
+
if (options.onBatchComplete) {
|
|
118
|
+
await options.onBatchComplete(i);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Check if any commits were made
|
|
122
|
+
if (commitsCreated === 0) {
|
|
123
|
+
console.log('\nā¹ļø No changes were committed. Skipping PR creation.');
|
|
124
|
+
throw new Error('No changes to commit');
|
|
125
|
+
}
|
|
126
|
+
// Push all commits
|
|
127
|
+
console.log(`\nš¤ Pushing ${commitsCreated} commit(s)...`);
|
|
128
|
+
await push(branchName);
|
|
129
|
+
console.log(' ā
All commits pushed\n');
|
|
130
|
+
// Create PR
|
|
131
|
+
console.log('š Creating pull request...');
|
|
132
|
+
const { owner, repo } = await getCurrentRepo();
|
|
133
|
+
const prUrl = await createPullRequest({
|
|
134
|
+
owner,
|
|
135
|
+
repo,
|
|
136
|
+
title: options.prTitle,
|
|
137
|
+
head: branchName,
|
|
138
|
+
base: baseBranch,
|
|
139
|
+
body: options.prBody,
|
|
140
|
+
});
|
|
141
|
+
console.log(` ā
Pull request created: ${prUrl}\n`);
|
|
142
|
+
return {
|
|
143
|
+
results,
|
|
144
|
+
prInfo: {
|
|
145
|
+
branchName,
|
|
146
|
+
prUrl,
|
|
147
|
+
baseBranch,
|
|
148
|
+
commitsCreated,
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=pr-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-orchestrator.js","sourceRoot":"","sources":["../../../kosuke/utils/pr-orchestrator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kosuke-ai/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"description": "Kosuke CLI - Development automation tool for syncing rules and analyzing code quality",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"CLI",
|
|
@@ -30,10 +30,12 @@
|
|
|
30
30
|
"LICENSE"
|
|
31
31
|
],
|
|
32
32
|
"scripts": {
|
|
33
|
-
"build": "tsc",
|
|
33
|
+
"build": "tsc && chmod +x dist/index.js",
|
|
34
|
+
"build:watch": "tsc --watch",
|
|
34
35
|
"clean": "rm -rf dist",
|
|
35
36
|
"prepublishOnly": "npm run clean && npm run build",
|
|
36
37
|
"dev": "tsx index.ts",
|
|
38
|
+
"dev:link": "npm run build && npm link && npm run build:watch",
|
|
37
39
|
"test": "vitest run",
|
|
38
40
|
"test:watch": "vitest",
|
|
39
41
|
"test:coverage": "vitest run --coverage",
|