@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 CHANGED
@@ -13,48 +13,23 @@ oh-gc pr merge 5 --method squash
13
13
 
14
14
  ## Installation
15
15
 
16
- ### Linux (Ubuntu / Debian and others)
16
+ ### npm (Recommended)
17
17
 
18
- Download and install with one command (requires Node.js 18+):
18
+ The easiest way to install `oh-gc` is via npm:
19
19
 
20
20
  ```bash
21
- curl -fsSL https://api.gitcode.com/guozejun/ohos_gitcode_cli/releases/download/v0.2.0/oh-gc-linux-x64.tar.gz \
22
- | tar -xz -C /usr/local/bin
23
- chmod +x /usr/local/bin/oh-gc
21
+ npm install -g @oh-gc/cli
22
+ oh-gc --help
24
23
  ```
25
24
 
26
- Or download manually from the [Releases page](https://gitcode.com/guozejun/ohos_gitcode_cli/releases), then:
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 # makes 'oh-gc' available globally
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
- ({ owner, repo } = (0, index_2.resolveRepo)());
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":"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"}
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
- ({ owner, repo } = (0, index_2.resolveRepo)());
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 head = flags.head ?? getCurrentBranch();
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":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/pr/create.ts"],"names":[],"mappings":"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"}
@@ -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 ((0, node_fs_1.existsSync)(GITCODE_FILE)) {
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 = (0, node_fs_1.existsSync)(GITCODE_FILE)
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":";;AASA,kDAUC;AAED,kDAMC;AAED,oCAMC;AAED,wCAMC;AAED,kCAIC;AAjDD,2DAA6C;AAC7C,qCAAiE;AAEjE,MAAM,YAAY,GAAG,UAAU,CAAA;AAM/B,SAAgB,mBAAmB;IACjC,IAAI,IAAA,oBAAU,EAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,YAAY,EAAE,MAAM,CAAC,CAAkB,CAAA;YAC5E,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAA;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAc;IAChD,MAAM,QAAQ,GAAkB,IAAA,oBAAU,EAAC,YAAY,CAAC;QACtD,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,YAAY,EAAE,MAAM,CAAC,CAAmB;QACnE,CAAC,CAAC,EAAE,CAAA;IACN,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,IAAA,uBAAa,EAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,SAAgB,YAAY,CAAC,MAAc;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,6BAAQ,EAAC,sBAAsB,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,2CAA2C,CAAC,CAAA;IAC/E,CAAC;AACH,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACvE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,0DAA0D,GAAG,EAAE,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAC5C,CAAC;AAED,SAAgB,WAAW;IACzB,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAA;IACpC,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IAChC,OAAO,cAAc,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":";;AAkBA,kDAUC;AAED,kDAMC;AAED,oCAMC;AAED,wCAMC;AAKD,0CAMC;AAED,kCAIC;AAKD,oCAQC;AAlFD,2DAA6C;AAC7C,qCAA2E;AAE3E,MAAM,YAAY,GAAG,UAAU,CAAA;AAM/B,SAAS,aAAa;IACpB,IAAI,CAAC,IAAA,oBAAU,EAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,CAAC;QACH,OAAO,IAAA,kBAAQ,EAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,SAAgB,mBAAmB;IACjC,IAAI,aAAa,EAAE,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,YAAY,EAAE,MAAM,CAAC,CAAkB,CAAA;YAC5E,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAA;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAc;IAChD,MAAM,QAAQ,GAAkB,aAAa,EAAE;QAC7C,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,YAAY,EAAE,MAAM,CAAC,CAAmB;QACnE,CAAC,CAAC,EAAE,CAAA;IACN,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,IAAA,uBAAa,EAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,SAAgB,YAAY,CAAC,MAAc;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,6BAAQ,EAAC,sBAAsB,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,2CAA2C,CAAC,CAAA;IAC/E,CAAC;AACH,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACvE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,0DAA0D,GAAG,EAAE,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAC5C,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,2BAA2B,CAAC,CAAA;IACpF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAC5C,CAAC;AAED,SAAgB,WAAW;IACzB,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAA;IACpC,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IAChC,OAAO,cAAc,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;QAClC,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;QACrC,OAAO,KAAK,CAAA;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oh-gc/cli",
3
- "version": "0.3.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": "esbuild bin/run.js --bundle --platform=node --target=node18 --outfile=dist-bin/oh-gc --minify && chmod +x dist-bin/oh-gc && tar -czf dist-bin/oh-gc-linux-x64.tar.gz -C dist-bin oh-gc",
50
- "pack:win": "cp dist-bin/oh-gc dist-bin/oh-gc.cmd && cd dist-bin && zip oh-gc-win-x64.zip oh-gc.cmd",
51
- "pack": "npm run pack:linux && npm run pack:win",
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"