@done-coding/cli-git 0.2.2-alpha.0 → 0.3.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/cli.mjs CHANGED
@@ -1,14 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { c as r } from "./index-e8efef08.js";
3
- import "chalk";
2
+ import { c as m } from "./index-1cb42d1b.js";
3
+ import "@done-coding/cli-utils";
4
4
  import "@done-coding/request-axios";
5
5
  import "axios";
6
- import "prompts";
7
- import "@done-coding/cli-utils";
8
6
  import "node:fs";
9
7
  import "node:path";
10
8
  import "node:child_process";
11
- import "yargs";
12
- import "yargs/helpers";
13
9
  import "lodash.curry";
14
- r();
10
+ m();
@@ -0,0 +1,192 @@
1
+ #!/usr/bin/env node
2
+ import { lookForParentTarget as y, log as n, decryptAES as I, xPrompts as l, createSubcommand as h, createMainCommand as S } from "@done-coding/cli-utils";
3
+ import { createRequest as C } from "@done-coding/request-axios";
4
+ import v from "axios";
5
+ import N from "node:fs";
6
+ import "node:path";
7
+ import { execSync as w } from "node:child_process";
8
+ import B from "lodash.curry";
9
+ var u = /* @__PURE__ */ ((e) => (e.CLONE = "clone", e))(u || {}), i = /* @__PURE__ */ ((e) => (e.GITHUB = "github", e.GITEE = "gitee", e))(i || {});
10
+ const P = 1e4, d = Math.random(), $ = {
11
+ timeout: P,
12
+ getBusinessCode() {
13
+ return d;
14
+ },
15
+ getBusinessMsg(e) {
16
+ return e.statusText;
17
+ },
18
+ getBusinessData(e) {
19
+ return e.data;
20
+ },
21
+ businessSuccessCodeList: [d],
22
+ axios: v
23
+ }, b = C({
24
+ basePath: " https://gitee.com",
25
+ ...$
26
+ }), _ = C({
27
+ basePath: "https://api.github.com",
28
+ ...$
29
+ }), x = ({
30
+ username: e
31
+ }) => b({
32
+ url: `/api/v5/users/${e}/repos`,
33
+ method: "GET"
34
+ }), O = ({
35
+ accessToken: e
36
+ }) => b({
37
+ url: "/api/v5/user/repos",
38
+ method: "GET",
39
+ params: {
40
+ access_token: e,
41
+ per_page: 100,
42
+ page: 1,
43
+ sort: "updated"
44
+ }
45
+ }), R = ({
46
+ username: e
47
+ }) => _({
48
+ url: `/users/${e}/repos`,
49
+ method: "GET"
50
+ }), T = {
51
+ version: "0.3.0-alpha.0",
52
+ name: "@done-coding/cli-git",
53
+ description: "git跨平台操作命令行工具",
54
+ cliConfig: {
55
+ namespaceDir: ".done-coding",
56
+ moduleName: "git"
57
+ }
58
+ }, { namespaceDir: k, moduleName: D } = T.cliConfig, H = `${k}/${D}`, L = (e) => `${H}/.${e}`, A = ({
59
+ secretKey: e,
60
+ platform: s
61
+ }) => {
62
+ const r = L(s), o = y(r);
63
+ if (!o) {
64
+ n.warn("配置文件不存在");
65
+ return;
66
+ }
67
+ const a = `${o}/${r}`, c = N.readFileSync(a, "utf-8"), m = I({ encryptedText: c, secretKey: e });
68
+ if (!m) {
69
+ n.warn("配置文件解密失败");
70
+ return;
71
+ }
72
+ return JSON.parse(m);
73
+ }, F = async ({
74
+ platform: e,
75
+ username: s
76
+ } = {}) => {
77
+ const r = {
78
+ platform: e,
79
+ username: s
80
+ };
81
+ if (!e) {
82
+ const t = [
83
+ { title: "GitHub", value: i.GITHUB },
84
+ { title: "Gitee", value: i.GITEE }
85
+ ];
86
+ r.platform = (await l({
87
+ type: "select",
88
+ name: "platform",
89
+ message: "选择git平台",
90
+ choices: t
91
+ })).platform;
92
+ }
93
+ s || (r.username = (await l({
94
+ type: "text",
95
+ name: "username",
96
+ message: "请输入用户名",
97
+ format: (t) => t.trim(),
98
+ validate: (t) => t.length > 0 || "用户名不能为空"
99
+ })).username);
100
+ const { platform: o, username: a } = r;
101
+ let c = [];
102
+ const m = A({
103
+ secretKey: a,
104
+ platform: o
105
+ });
106
+ let g = m == null ? void 0 : m.accessToken;
107
+ n.stage(`正在获取${a}的${o}仓库列表...`);
108
+ const p = {
109
+ username: a,
110
+ accessToken: g
111
+ };
112
+ switch (r.platform) {
113
+ case i.GITHUB: {
114
+ c = (await R(p)).data.map((t) => ({
115
+ name: t.name,
116
+ httpUrl: t.clone_url,
117
+ sshUrl: t.ssh_url,
118
+ description: t.description || ""
119
+ }));
120
+ break;
121
+ }
122
+ case i.GITEE: {
123
+ c = (await (p.accessToken ? O : x)(p)).data.map((t) => ({
124
+ name: t.name,
125
+ httpUrl: t.html_url,
126
+ sshUrl: t.ssh_url,
127
+ description: t.description || ""
128
+ }));
129
+ break;
130
+ }
131
+ default:
132
+ return n.error(`未知平台${o}`), process.exit(1);
133
+ }
134
+ if (n.success(`获取${a}的${o}仓库列表成功`), c.length === 0) {
135
+ n.warn(`${a} 可获取${o}仓库列表为空`);
136
+ return;
137
+ } else
138
+ n.stage(`共${c.length}个仓库`);
139
+ const { repoUrl: G } = await l({
140
+ name: "repoUrl",
141
+ type: "select",
142
+ message: "选择仓库",
143
+ choices: c.map((t) => ({
144
+ title: `${t.name} ${t.description}`,
145
+ value: t.sshUrl
146
+ }))
147
+ });
148
+ return G;
149
+ }, M = async (e) => {
150
+ const s = await F(e);
151
+ w(`git clone ${s} 1>&2`), n.success(`克隆${s}成功`);
152
+ }, q = async (e, s) => e === u.CLONE ? M(s) : (n.error(`无效的命令: ${e}`), process.exit(1)), {
153
+ version: j,
154
+ description: J,
155
+ cliConfig: { moduleName: f }
156
+ } = T, K = {
157
+ command: `${u.CLONE} <platform> <username>`,
158
+ describe: "从选择的git平台克隆代码",
159
+ positionals: {
160
+ platform: {
161
+ describe: "选择git平台",
162
+ type: "string",
163
+ choices: [i.GITHUB, i.GITEE]
164
+ },
165
+ username: {
166
+ describe: "git平台用户名",
167
+ type: "string"
168
+ }
169
+ },
170
+ handler: B(q)(u.CLONE)
171
+ }, U = {
172
+ describe: J,
173
+ version: j,
174
+ subcommands: [K].map((e) => h(e)),
175
+ demandCommandCount: 1
176
+ }, E = (e = !1) => {
177
+ const s = e ? f : void 0, r = `$0${e ? ` ${f}` : ""} <command> [options]`;
178
+ return { command: s, usage: r };
179
+ }, ee = async () => S({
180
+ ...U,
181
+ ...E()
182
+ }), te = () => h({
183
+ ...U,
184
+ ...E(!0)
185
+ });
186
+ export {
187
+ te as a,
188
+ M as b,
189
+ ee as c,
190
+ F as g,
191
+ q as h
192
+ };
package/es/index.mjs CHANGED
@@ -1,20 +1,15 @@
1
1
  #!/usr/bin/env node
2
- import { a as C, b, d as h, g as c, h as f } from "./index-e8efef08.js";
3
- import "chalk";
2
+ import { a as s, g, b, h as d } from "./index-1cb42d1b.js";
3
+ import "@done-coding/cli-utils";
4
4
  import "@done-coding/request-axios";
5
5
  import "axios";
6
- import "prompts";
7
- import "@done-coding/cli-utils";
8
6
  import "node:fs";
9
7
  import "node:path";
10
8
  import "node:child_process";
11
- import "yargs";
12
- import "yargs/helpers";
13
9
  import "lodash.curry";
14
10
  export {
15
- C as command,
16
- b as getTargetRepoUrl,
17
- h as gitClone,
18
- c as gitCloneCommand,
19
- f as handler
11
+ s as crateAsSubcommand,
12
+ g as getTargetRepoUrl,
13
+ b as gitClone,
14
+ d as handler
20
15
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@done-coding/cli-git",
3
- "version": "0.2.2-alpha.0",
3
+ "version": "0.3.0-alpha.0",
4
4
  "description": "git跨平台操作命令行工具",
5
5
  "private": false,
6
6
  "module": "es/index.mjs",
@@ -41,10 +41,9 @@
41
41
  "license": "MIT",
42
42
  "sideEffects": false,
43
43
  "devDependencies": {
44
- "@done-coding/cli-inject": "^0.4.6-alpha.0",
44
+ "@done-coding/cli-inject": "^0.5.0-alpha.0",
45
45
  "@types/lodash.curry": "^4.1.8",
46
46
  "@types/node": "^16.0.0",
47
- "@types/prompts": "^2.4.6",
48
47
  "@types/yargs": "^17.0.28",
49
48
  "rimraf": "^6.0.1",
50
49
  "typescript": "^5.2.2",
@@ -55,13 +54,10 @@
55
54
  "node": ">=16.0.0"
56
55
  },
57
56
  "dependencies": {
58
- "@done-coding/cli-utils": "^0.2.1-alpha.0",
57
+ "@done-coding/cli-utils": "^0.3.0-alpha.0",
59
58
  "@done-coding/request-axios": "^1.1.1",
60
59
  "axios": "^1.8.4",
61
- "chalk": "^5.3.0",
62
- "lodash.curry": "^4.1.1",
63
- "prompts": "^2.4.2",
64
- "yargs": "^17.7.2"
60
+ "lodash.curry": "^4.1.1"
65
61
  },
66
- "gitHead": "21eb698f64179882cfec979bd8f19920b047dacb"
62
+ "gitHead": "c5a54bdf08759425701a2024442a923883065189"
67
63
  }
@@ -1,6 +1,5 @@
1
1
  import { SubcommandEnum } from './utils';
2
2
  import type { Options } from './utils';
3
- import type { ArgumentsCamelCase } from "yargs";
3
+ import type { CliHandlerArgv } from "@done-coding/cli-utils";
4
4
  /** 子命令处理函数 */
5
- export declare const subHandler: (command: SubcommandEnum, argv: ArgumentsCamelCase<Options> | Options) => Promise<void>;
6
- export declare const handler: (argv: ArgumentsCamelCase<Options> | Options) => Promise<void>;
5
+ export declare const handler: (command: SubcommandEnum, argv: CliHandlerArgv<Options>) => Promise<void>;
package/types/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { handler } from "./handler";
2
- export { command, gitCloneCommand } from "./main";
2
+ export { crateAsSubcommand } from "./main";
3
3
  export { getTargetRepoUrl, gitClone } from "./utils";
@@ -1,5 +1,5 @@
1
1
  declare const _default: {
2
- "version": "0.2.2-alpha.0",
2
+ "version": "0.3.0-alpha.0",
3
3
  "name": "@done-coding/cli-git",
4
4
  "description": "git跨平台操作命令行工具",
5
5
  "cliConfig": {
package/types/main.d.ts CHANGED
@@ -1,5 +1,9 @@
1
- import type { CommandModule } from "yargs";
2
- import { type Options } from './utils';
3
- export declare const gitCloneCommand: CommandModule;
4
- export declare const command: CommandModule<Options, Options>;
5
- export declare const createCli: () => Promise<void>;
1
+ /// <reference types="yargs" />
2
+ /** 作为主命令创建 */
3
+ export declare const createCommand: () => Promise<void | {
4
+ [x: string]: unknown;
5
+ _: (string | number)[];
6
+ $0: string;
7
+ }>;
8
+ /** 作为子命令创建 */
9
+ export declare const crateAsSubcommand: () => import("yargs").CommandModule<{}, {}>;
@@ -1,197 +0,0 @@
1
- #!/usr/bin/env node
2
- import s from "chalk";
3
- import { createRequest as C } from "@done-coding/request-axios";
4
- import S from "axios";
5
- import g from "prompts";
6
- import { lookForParentTarget as v, decryptAES as w, onPromptFormStateForSigint as d } from "@done-coding/cli-utils";
7
- import B from "node:fs";
8
- import "node:path";
9
- import { execSync as I } from "node:child_process";
10
- import N from "yargs";
11
- import { hideBin as x } from "yargs/helpers";
12
- import P from "lodash.curry";
13
- var m = /* @__PURE__ */ ((e) => (e.CLONE = "clone", e))(m || {}), i = /* @__PURE__ */ ((e) => (e.GITHUB = "github", e.GITEE = "gitee", e))(i || {});
14
- const _ = 1e4, h = Math.random(), $ = {
15
- timeout: _,
16
- getBusinessCode() {
17
- return h;
18
- },
19
- getBusinessMsg(e) {
20
- return e.statusText;
21
- },
22
- getBusinessData(e) {
23
- return e.data;
24
- },
25
- businessSuccessCodeList: [h],
26
- axios: S
27
- }, U = C({
28
- basePath: " https://gitee.com",
29
- ...$
30
- }), O = C({
31
- basePath: "https://api.github.com",
32
- ...$
33
- }), k = ({
34
- username: e
35
- }) => U({
36
- url: `/api/v5/users/${e}/repos`,
37
- method: "GET"
38
- }), D = ({
39
- accessToken: e
40
- }) => U({
41
- url: "/api/v5/user/repos",
42
- method: "GET",
43
- params: {
44
- access_token: e,
45
- per_page: 100,
46
- page: 1,
47
- sort: "updated"
48
- }
49
- }), R = ({
50
- username: e
51
- }) => O({
52
- url: `/users/${e}/repos`,
53
- method: "GET"
54
- }), p = {
55
- version: "0.2.2-alpha.0",
56
- name: "@done-coding/cli-git",
57
- description: "git跨平台操作命令行工具",
58
- cliConfig: {
59
- namespaceDir: ".done-coding",
60
- moduleName: "git"
61
- }
62
- }, { namespaceDir: H, moduleName: F } = p.cliConfig, L = `${H}/${F}`, q = (e) => `${L}/.${e}`, M = ({
63
- secretKey: e,
64
- platform: o
65
- }) => {
66
- const n = q(o), r = v(n);
67
- if (!r) {
68
- console.log(s.yellow("配置文件不存在"));
69
- return;
70
- }
71
- const a = `${r}/${n}`, c = B.readFileSync(a, "utf-8"), l = w({ encryptedText: c, secretKey: e });
72
- if (!l) {
73
- console.log(s.yellow("配置文件解密失败"));
74
- return;
75
- }
76
- return JSON.parse(l);
77
- }, A = async ({
78
- platform: e,
79
- username: o
80
- } = {}) => {
81
- const n = {
82
- platform: e,
83
- username: o
84
- };
85
- if (!e) {
86
- const t = [
87
- { title: "GitHub", value: i.GITHUB },
88
- { title: "Gitee", value: i.GITEE }
89
- ];
90
- n.platform = (await g({
91
- type: "select",
92
- name: "platform",
93
- message: "选择git平台",
94
- choices: t,
95
- onState: d
96
- })).platform;
97
- }
98
- o || (n.username = (await g({
99
- type: "text",
100
- name: "username",
101
- message: "请输入用户名",
102
- format: (t) => t.trim(),
103
- validate: (t) => t.length > 0 || "用户名不能为空",
104
- onState: d
105
- })).username);
106
- const { platform: r, username: a } = n;
107
- let c = [];
108
- const l = M({
109
- secretKey: a,
110
- platform: r
111
- });
112
- let f = l == null ? void 0 : l.accessToken;
113
- console.log(s.blue(`正在获取${a}的${r}仓库列表...`));
114
- const u = {
115
- username: a,
116
- accessToken: f
117
- };
118
- switch (n.platform) {
119
- case i.GITHUB: {
120
- c = (await R(u)).data.map((t) => ({
121
- name: t.name,
122
- httpUrl: t.clone_url,
123
- sshUrl: t.ssh_url,
124
- description: t.description || ""
125
- }));
126
- break;
127
- }
128
- case i.GITEE: {
129
- c = (await (u.accessToken ? D : k)(u)).data.map((t) => ({
130
- name: t.name,
131
- httpUrl: t.html_url,
132
- sshUrl: t.ssh_url,
133
- description: t.description || ""
134
- }));
135
- break;
136
- }
137
- default:
138
- return console.log(s.red(`未知平台${r}`)), process.exit(1);
139
- }
140
- if (console.log(s.green(`获取${a}的${r}仓库列表成功`)), c.length === 0) {
141
- console.log(s.yellow(`${a} 可获取${r}仓库列表为空`));
142
- return;
143
- } else
144
- console.log(s.blue(`共${c.length}个仓库`));
145
- const { repoUrl: G } = await g({
146
- name: "repoUrl",
147
- type: "select",
148
- message: "选择仓库",
149
- choices: c.map((t) => ({
150
- title: `${t.name} ${t.description}`,
151
- value: t.sshUrl
152
- })),
153
- onState: d
154
- });
155
- return G;
156
- }, j = async (e) => {
157
- const o = await A(e);
158
- I(`git clone ${o} 1>&2`), console.log(s.green(`克隆${o}成功`));
159
- }, J = async (e, o) => e === m.CLONE ? j(o) : (console.log(s.red(`无效的命令: ${e}`)), process.exit(1)), y = async (e) => {
160
- }, T = p.cliConfig.moduleName, K = (e, o) => {
161
- console.log(e ? s.red(e) : s.red(o.message)), process.exit(1);
162
- }, z = p.description, Q = `Usage: $0 ${T} <command> [options]`, V = "Usage: $0 <command> [options]", W = {
163
- command: `${m.CLONE} <platform> <username>`,
164
- describe: "从选择的git平台克隆代码",
165
- builder: (e) => e.positional("platform", {
166
- describe: "选择git平台",
167
- type: "string",
168
- choices: [i.GITHUB, i.GITEE]
169
- }).positional("username", {
170
- describe: "git平台用户名",
171
- type: "string"
172
- }),
173
- /** @ts-ignore */
174
- async handler(e) {
175
- return await P(J)(m.CLONE)(
176
- e
177
- ), process.exit(0);
178
- }
179
- }, b = (e) => e.command(W).demandCommand(1), E = (e, o = !1) => o ? b(e.strict().usage(Q)) : b(
180
- e.strict().usage(V).help("help").version(p.version).alias("v", "version").alias("h", "help")
181
- ).fail(K).argv, X = (e) => E(e, !0), le = {
182
- command: T,
183
- describe: z,
184
- builder: X,
185
- handler: y
186
- }, me = async () => {
187
- const e = N(x(process.argv));
188
- return await E(e), y();
189
- };
190
- export {
191
- le as a,
192
- A as b,
193
- me as c,
194
- j as d,
195
- W as g,
196
- y as h
197
- };