@oh-gc/cli 0.3.0 → 0.4.1
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 +6 -31
- package/dist/commands/issue/create.d.ts +1 -0
- package/dist/commands/issue/create.js +11 -3
- package/dist/commands/issue/create.js.map +1 -1
- package/dist/commands/pr/create.d.ts +1 -0
- package/dist/commands/pr/create.js +20 -4
- package/dist/commands/pr/create.js.map +1 -1
- package/dist/git/index.d.ts +11 -0
- package/dist/git/index.js +37 -2
- package/dist/git/index.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -13,48 +13,23 @@ oh-gc pr merge 5 --method squash
|
|
|
13
13
|
|
|
14
14
|
## Installation
|
|
15
15
|
|
|
16
|
-
###
|
|
16
|
+
### npm (Recommended)
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
The easiest way to install `oh-gc` is via npm:
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
chmod +x /usr/local/bin/oh-gc
|
|
21
|
+
npm install -g @oh-gc/cli
|
|
22
|
+
oh-gc --help
|
|
24
23
|
```
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
tar -xzf oh-gc-linux-x64.tar.gz -C /usr/local/bin
|
|
30
|
-
chmod +x /usr/local/bin/oh-gc
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
To install without root (user-local):
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
mkdir -p ~/.local/bin
|
|
37
|
-
tar -xzf oh-gc-linux-x64.tar.gz -C ~/.local/bin
|
|
38
|
-
chmod +x ~/.local/bin/oh-gc
|
|
39
|
-
# Make sure ~/.local/bin is in your PATH
|
|
40
|
-
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### Windows
|
|
44
|
-
|
|
45
|
-
1. Download `oh-gc-win-x64.zip` from the [Releases page](https://gitcode.com/guozejun/ohos_gitcode_cli/releases)
|
|
46
|
-
2. Extract `oh-gc.cmd`
|
|
47
|
-
3. Move `oh-gc.cmd` to a folder that is on your `PATH`
|
|
48
|
-
4. Open a new terminal and run `oh-gc --help`
|
|
49
|
-
|
|
50
|
-
### From source (requires Node.js 18+)
|
|
25
|
+
### From Source
|
|
51
26
|
|
|
52
27
|
```bash
|
|
53
28
|
git clone https://gitcode.com/guozejun/ohos_gitcode_cli.git
|
|
54
29
|
cd ohos_gitcode_cli
|
|
55
30
|
npm install
|
|
56
31
|
npm run build
|
|
57
|
-
npm link
|
|
32
|
+
npm link
|
|
58
33
|
```
|
|
59
34
|
|
|
60
35
|
---
|
|
@@ -7,6 +7,7 @@ export default class IssueCreate extends BaseCommand {
|
|
|
7
7
|
body: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
8
|
assignee: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
9
9
|
labels: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
repo: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
11
|
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
};
|
|
12
13
|
run(): Promise<void>;
|
|
@@ -55,11 +55,17 @@ class IssueCreate extends base_command_1.BaseCommand {
|
|
|
55
55
|
const { flags } = await this.parse(IssueCreate);
|
|
56
56
|
const token = (0, index_1.getToken)();
|
|
57
57
|
if (!token)
|
|
58
|
-
this.error('Not logged in. Run: gc auth login');
|
|
58
|
+
this.error('Not logged in. Run: oh-gc auth login');
|
|
59
59
|
let owner, repo;
|
|
60
60
|
try {
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
if (flags.repo) {
|
|
62
|
+
;
|
|
63
|
+
({ owner, repo } = (0, index_2.parseRepoString)(flags.repo));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
;
|
|
67
|
+
({ owner, repo } = (0, index_2.resolveRepo)());
|
|
68
|
+
}
|
|
63
69
|
}
|
|
64
70
|
catch (err) {
|
|
65
71
|
this.error(err.message);
|
|
@@ -94,6 +100,7 @@ IssueCreate.description = 'Create a new issue';
|
|
|
94
100
|
IssueCreate.examples = [
|
|
95
101
|
'<%= config.bin %> issue create',
|
|
96
102
|
'<%= config.bin %> issue create --title "Bug" --body "Steps to reproduce..."',
|
|
103
|
+
'<%= config.bin %> issue create --repo openharmony/arkui_ace_engine --title "Bug"',
|
|
97
104
|
];
|
|
98
105
|
IssueCreate.flags = {
|
|
99
106
|
...base_command_1.BaseCommand.baseFlags,
|
|
@@ -101,6 +108,7 @@ IssueCreate.flags = {
|
|
|
101
108
|
body: core_1.Flags.string({ description: 'Issue body' }),
|
|
102
109
|
assignee: core_1.Flags.string({ description: 'Username to assign' }),
|
|
103
110
|
labels: core_1.Flags.string({ description: 'Comma-separated label names' }),
|
|
111
|
+
repo: core_1.Flags.string({ description: 'Target repository (owner/repo), defaults to current repo' }),
|
|
104
112
|
};
|
|
105
113
|
exports.default = IssueCreate;
|
|
106
114
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/issue/create.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAAmC;AACnC,wDAAyC;AACzC,qDAAgD;AAChD,8CAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/issue/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export default class PRCreate extends BaseCommand {
|
|
|
8
8
|
base: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
9
9
|
head: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
10
|
draft: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
repo: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
12
|
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
};
|
|
13
14
|
run(): Promise<void>;
|
|
@@ -64,18 +64,32 @@ class PRCreate extends base_command_1.BaseCommand {
|
|
|
64
64
|
const { flags } = await this.parse(PRCreate);
|
|
65
65
|
const token = (0, index_1.getToken)();
|
|
66
66
|
if (!token)
|
|
67
|
-
this.error('Not logged in. Run: gc auth login');
|
|
67
|
+
this.error('Not logged in. Run: oh-gc auth login');
|
|
68
68
|
let owner, repo;
|
|
69
69
|
try {
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
if (flags.repo) {
|
|
71
|
+
;
|
|
72
|
+
({ owner, repo } = (0, index_2.parseRepoString)(flags.repo));
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
;
|
|
76
|
+
({ owner, repo } = (0, index_2.resolveRepo)());
|
|
77
|
+
}
|
|
72
78
|
}
|
|
73
79
|
catch (err) {
|
|
74
80
|
this.error(err.message);
|
|
75
81
|
}
|
|
76
|
-
const
|
|
82
|
+
const currentBranch = getCurrentBranch();
|
|
83
|
+
let head = flags.head ?? currentBranch;
|
|
77
84
|
if (!head)
|
|
78
85
|
this.error('Could not determine current branch. Use --head to specify.');
|
|
86
|
+
// For cross-repo PRs, prefix head with fork owner
|
|
87
|
+
if (flags.repo) {
|
|
88
|
+
const forkOwner = (0, index_2.getForkOwner)();
|
|
89
|
+
if (forkOwner && !head.includes(':')) {
|
|
90
|
+
head = `${forkOwner}:${head}`;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
79
93
|
const title = flags.title ?? (await prompt('Title: '));
|
|
80
94
|
if (!title)
|
|
81
95
|
this.error('Title cannot be empty.');
|
|
@@ -107,6 +121,7 @@ PRCreate.description = 'Create a pull request';
|
|
|
107
121
|
PRCreate.examples = [
|
|
108
122
|
'<%= config.bin %> pr create',
|
|
109
123
|
'<%= config.bin %> pr create --title "Fix bug" --body "Details" --base main',
|
|
124
|
+
'<%= config.bin %> pr create --repo openharmony/arkui_ace_engine --head my-feature',
|
|
110
125
|
];
|
|
111
126
|
PRCreate.flags = {
|
|
112
127
|
...base_command_1.BaseCommand.baseFlags,
|
|
@@ -115,6 +130,7 @@ PRCreate.flags = {
|
|
|
115
130
|
base: core_1.Flags.string({ description: 'Target branch (default: main)', default: 'main' }),
|
|
116
131
|
head: core_1.Flags.string({ description: 'Source branch (default: current branch)' }),
|
|
117
132
|
draft: core_1.Flags.boolean({ description: 'Create as draft PR', default: false }),
|
|
133
|
+
repo: core_1.Flags.string({ description: 'Target repository (owner/repo) for cross-repo PR, defaults to current repo' }),
|
|
118
134
|
};
|
|
119
135
|
exports.default = PRCreate;
|
|
120
136
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/pr/create.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAAmC;AACnC,wDAAyC;AACzC,2DAA6C;AAC7C,qDAAgD;AAChD,8CAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/pr/create.ts"],"names":[],"mappings":"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"}
|
package/dist/git/index.d.ts
CHANGED
|
@@ -5,7 +5,18 @@ export declare function parseOwnerRepo(url: string): {
|
|
|
5
5
|
owner: string;
|
|
6
6
|
repo: string;
|
|
7
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* Parse owner/repo from a string like "owner/repo"
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseRepoString(repoStr: string): {
|
|
12
|
+
owner: string;
|
|
13
|
+
repo: string;
|
|
14
|
+
};
|
|
8
15
|
export declare function resolveRepo(): {
|
|
9
16
|
owner: string;
|
|
10
17
|
repo: string;
|
|
11
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Get the fork owner (the owner of origin remote, typically user's fork)
|
|
21
|
+
*/
|
|
22
|
+
export declare function getForkOwner(): string | null;
|
package/dist/git/index.js
CHANGED
|
@@ -4,12 +4,24 @@ exports.getConfiguredRemote = getConfiguredRemote;
|
|
|
4
4
|
exports.setConfiguredRemote = setConfiguredRemote;
|
|
5
5
|
exports.getRemoteUrl = getRemoteUrl;
|
|
6
6
|
exports.parseOwnerRepo = parseOwnerRepo;
|
|
7
|
+
exports.parseRepoString = parseRepoString;
|
|
7
8
|
exports.resolveRepo = resolveRepo;
|
|
9
|
+
exports.getForkOwner = getForkOwner;
|
|
8
10
|
const node_child_process_1 = require("node:child_process");
|
|
9
11
|
const node_fs_1 = require("node:fs");
|
|
10
12
|
const GITCODE_FILE = '.gitcode';
|
|
13
|
+
function isGitcodeFile() {
|
|
14
|
+
if (!(0, node_fs_1.existsSync)(GITCODE_FILE))
|
|
15
|
+
return false;
|
|
16
|
+
try {
|
|
17
|
+
return (0, node_fs_1.statSync)(GITCODE_FILE).isFile();
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
11
23
|
function getConfiguredRemote() {
|
|
12
|
-
if ((
|
|
24
|
+
if (isGitcodeFile()) {
|
|
13
25
|
try {
|
|
14
26
|
const data = JSON.parse((0, node_fs_1.readFileSync)(GITCODE_FILE, 'utf8'));
|
|
15
27
|
if (data.remote)
|
|
@@ -22,7 +34,7 @@ function getConfiguredRemote() {
|
|
|
22
34
|
return 'origin';
|
|
23
35
|
}
|
|
24
36
|
function setConfiguredRemote(remote) {
|
|
25
|
-
const existing = (
|
|
37
|
+
const existing = isGitcodeFile()
|
|
26
38
|
? JSON.parse((0, node_fs_1.readFileSync)(GITCODE_FILE, 'utf8'))
|
|
27
39
|
: {};
|
|
28
40
|
existing.remote = remote;
|
|
@@ -43,9 +55,32 @@ function parseOwnerRepo(url) {
|
|
|
43
55
|
}
|
|
44
56
|
return { owner: match[1], repo: match[2] };
|
|
45
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Parse owner/repo from a string like "owner/repo"
|
|
60
|
+
*/
|
|
61
|
+
function parseRepoString(repoStr) {
|
|
62
|
+
const match = repoStr.match(/^([^/]+)\/([^/]+)$/);
|
|
63
|
+
if (!match) {
|
|
64
|
+
throw new Error(`Invalid repository format: "${repoStr}". Expected "owner/repo".`);
|
|
65
|
+
}
|
|
66
|
+
return { owner: match[1], repo: match[2] };
|
|
67
|
+
}
|
|
46
68
|
function resolveRepo() {
|
|
47
69
|
const remote = getConfiguredRemote();
|
|
48
70
|
const url = getRemoteUrl(remote);
|
|
49
71
|
return parseOwnerRepo(url);
|
|
50
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Get the fork owner (the owner of origin remote, typically user's fork)
|
|
75
|
+
*/
|
|
76
|
+
function getForkOwner() {
|
|
77
|
+
try {
|
|
78
|
+
const url = getRemoteUrl('origin');
|
|
79
|
+
const { owner } = parseOwnerRepo(url);
|
|
80
|
+
return owner;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
51
86
|
//# sourceMappingURL=index.js.map
|
package/dist/git/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oh-gc/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "GitCode CLI — manage issues and PRs from the terminal",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "guozejun",
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
"dev": "node bin/dev.js",
|
|
47
47
|
"test": "jest",
|
|
48
48
|
"typecheck": "tsc --noEmit",
|
|
49
|
-
"pack:linux": "
|
|
50
|
-
"pack:win": "
|
|
51
|
-
"pack": "
|
|
49
|
+
"pack:linux": "bash scripts/pack-tarball.sh",
|
|
50
|
+
"pack:win": "bash scripts/pack-tarball.sh",
|
|
51
|
+
"pack": "bash scripts/pack-tarball.sh",
|
|
52
52
|
"release": "node bin/run.js release:create",
|
|
53
53
|
"prepublishOnly": "npm run build && npm test",
|
|
54
54
|
"publish:npm": "npm publish --access public"
|