@lansisdev/gh-createpr 1.3.5 → 1.3.6
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/dist/github.d.ts +8 -0
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +63 -12
- package/dist/github.js.map +1 -1
- package/dist/index.js +107 -21
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/github.d.ts
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
export declare const getCurrentGitRepo: () => {
|
|
2
|
+
owner: string;
|
|
3
|
+
repo: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const fetchOpenIssues: () => Promise<Array<{
|
|
6
|
+
number: number;
|
|
7
|
+
title: string;
|
|
8
|
+
}>>;
|
|
1
9
|
export declare const createPrFromGithubIssue: (issueArg: string) => Promise<void>;
|
|
2
10
|
//# sourceMappingURL=github.d.ts.map
|
package/dist/github.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,iBAAiB;;;CAoB7B,CAAC;AAEF,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC,CA8CtF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,UAAU,MAAM,kBAmM7D,CAAC"}
|
package/dist/github.js
CHANGED
|
@@ -5,6 +5,64 @@ import pc from "picocolors";
|
|
|
5
5
|
// @ts-ignore
|
|
6
6
|
const fetch = globalThis.fetch;
|
|
7
7
|
const GITHUB_GRAPHQL_URL = "https://api.github.com/graphql";
|
|
8
|
+
export const getCurrentGitRepo = () => {
|
|
9
|
+
try {
|
|
10
|
+
const currentRemote = execSync("git remote get-url origin", { encoding: "utf-8" }).trim();
|
|
11
|
+
const remoteRegex = /github\.com[:/]([^/]+)\/([^/.]+)/;
|
|
12
|
+
const remoteMatch = currentRemote.match(remoteRegex);
|
|
13
|
+
if (!remoteMatch) {
|
|
14
|
+
throw new Error("No se pudo determinar el repositorio actual desde el remote de git");
|
|
15
|
+
}
|
|
16
|
+
const owner = remoteMatch[1];
|
|
17
|
+
let repo = remoteMatch[2];
|
|
18
|
+
// Strip out .git from repo name if it exists
|
|
19
|
+
repo = repo.replace(/\.git$/, '');
|
|
20
|
+
return { owner, repo };
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
throw new Error("Error obteniendo el repo actual. Asegurate de estar en un repo de git con un remote origin en github.com.");
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
export const fetchOpenIssues = async () => {
|
|
27
|
+
const { owner, repo } = getCurrentGitRepo();
|
|
28
|
+
const GITHUB_TOKEN = process.env.GITHUB_TOKEN || "";
|
|
29
|
+
if (!GITHUB_TOKEN) {
|
|
30
|
+
p.cancel(pc.red("Falta la variable de entorno GITHUB_TOKEN"));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
const query = `
|
|
34
|
+
query GetOpenIssues($owner: String!, $repo: String!) {
|
|
35
|
+
repository(owner: $owner, name: $repo) {
|
|
36
|
+
issues(states: OPEN, first: 30, orderBy: {field: UPDATED_AT, direction: DESC}) {
|
|
37
|
+
nodes {
|
|
38
|
+
number
|
|
39
|
+
title
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
45
|
+
const res = await fetch(GITHUB_GRAPHQL_URL, {
|
|
46
|
+
method: "POST",
|
|
47
|
+
headers: {
|
|
48
|
+
"Authorization": `Bearer ${GITHUB_TOKEN}`,
|
|
49
|
+
"Content-Type": "application/json",
|
|
50
|
+
},
|
|
51
|
+
body: JSON.stringify({
|
|
52
|
+
query,
|
|
53
|
+
variables: { owner, repo },
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
if (!res.ok) {
|
|
57
|
+
throw new Error(`Error en la API de GitHub: ${res.status} ${res.statusText}`);
|
|
58
|
+
}
|
|
59
|
+
const response = (await res.json());
|
|
60
|
+
if (response.errors && response.errors.length > 0) {
|
|
61
|
+
throw new Error(`Error de GraphQL: ${response.errors.map((e) => e.message).join(", ")}`);
|
|
62
|
+
}
|
|
63
|
+
const issues = response.data?.repository?.issues?.nodes || [];
|
|
64
|
+
return issues;
|
|
65
|
+
};
|
|
8
66
|
export const createPrFromGithubIssue = async (issueArg) => {
|
|
9
67
|
const issueRegex = /^(?:([a-zA-Z0-9-]+)\/([a-zA-Z0-9._-]+)#(\d+)|#(\d+)|(\d+))$/;
|
|
10
68
|
const match = issueArg.match(issueRegex);
|
|
@@ -21,21 +79,14 @@ export const createPrFromGithubIssue = async (issueArg) => {
|
|
|
21
79
|
else if (match[4] || match[5]) {
|
|
22
80
|
// #number or just number format - use current repo from git
|
|
23
81
|
try {
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (!remoteMatch) {
|
|
28
|
-
throw new Error("No se pudo determinar el repositorio actual desde el remote de git");
|
|
29
|
-
}
|
|
30
|
-
owner = remoteMatch[1];
|
|
31
|
-
repo = remoteMatch[2];
|
|
82
|
+
const current = getCurrentGitRepo();
|
|
83
|
+
owner = current.owner;
|
|
84
|
+
repo = current.repo;
|
|
32
85
|
const numStr = match[4] || match[5];
|
|
33
86
|
issueNumber = parseInt(numStr, 10);
|
|
34
|
-
// Strip out .git from repo name if it exists
|
|
35
|
-
repo = repo.replace(/\.git$/, '');
|
|
36
87
|
}
|
|
37
88
|
catch (e) {
|
|
38
|
-
p.cancel(pc.red(
|
|
89
|
+
p.cancel(pc.red(e.message));
|
|
39
90
|
process.exit(1);
|
|
40
91
|
}
|
|
41
92
|
}
|
|
@@ -95,7 +146,7 @@ export const createPrFromGithubIssue = async (issueArg) => {
|
|
|
95
146
|
if (response.errors && response.errors.length > 0) {
|
|
96
147
|
throw new Error(`Error de GraphQL: ${response.errors.map((e) => e.message).join(", ")}`);
|
|
97
148
|
}
|
|
98
|
-
const issue = response.repository?.issue;
|
|
149
|
+
const issue = response.data?.repository?.issue;
|
|
99
150
|
if (!issue) {
|
|
100
151
|
throw new Error(`No se encontró la issue #${issueNumber} en ${owner}/${repo}`);
|
|
101
152
|
}
|
package/dist/github.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,8CAA8C;AAC9C,aAAa;AACb,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAE/B,MAAM,kBAAkB,GAAG,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,8CAA8C;AAC9C,aAAa;AACb,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAE/B,MAAM,kBAAkB,GAAG,gCAAgC,CAAC;AAwB5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1F,MAAM,WAAW,GAAG,kCAAkC,CAAC;QACvD,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAErD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAW,CAAC;QACvC,IAAI,IAAI,GAAG,WAAW,CAAC,CAAC,CAAW,CAAC;QAEpC,6CAA6C;QAC7C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAElC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,2GAA2G,CAAC,CAAC;IAC/H,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAqD,EAAE;IACzF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;IAEpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG;;;;;;;;;;;GAWb,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,kBAAkB,EAAE;QAC1C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,YAAY,EAAE;YACzC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK;YACL,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SAC3B,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;IAE3C,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;IAChE,MAAM,UAAU,GAAG,6DAA6D,CAAC;IACjF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,KAAa,CAAC;IAClB,IAAI,IAAY,CAAC;IACjB,IAAI,WAAmB,CAAC;IAExB,IAAI,KAAK,EAAE,CAAC;QACV,2BAA2B;QAC3B,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAW,CAAC;YAC3B,IAAI,GAAG,KAAK,CAAC,CAAC,CAAW,CAAC;YAC1B,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,4DAA4D;YAC5D,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;gBACpC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;gBACtB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACpB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpC,WAAW,GAAG,QAAQ,CAAC,MAAgB,EAAE,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC,CAAC;YACxG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC,CAAC;QACxG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;IAEpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC,CAAC,KAAK,CAAC,mBAAmB,WAAW,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC;IAEjE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;KAoBb,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,kBAAkB,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,YAAY,EAAE;gBACzC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE;aAChD,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QAE3C,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,WAAW,OAAO,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,KAAK,GAAW,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,WAAW,GAAW,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QAE7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,WAAW,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,CAAC,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAEpD,yBAAyB;QACzB,MAAM,SAAS,GAAG,KAAK;aACpB,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;aAChD,WAAW,EAAE;aACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;aAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAE3B,MAAM,SAAS,GAAG,GAAG,KAAK,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEjE,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,WAAW,IAAI;YACxC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC;QACrD,IAAI,KAAK;YAAE,WAAW,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;QAC5D,WAAW,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAE5D,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAEtC,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;YACrC,OAAO,EAAE,6CAA6C;YACtD,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClD,CAAC,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACtC,0CAA0C;QAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QACtG,CAAC;QAED,yDAAyD;QACzD,MAAM,aAAa,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1F,IAAI,aAAa,EAAE,CAAC;YAClB,sDAAsD;YACtD,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,QAAQ,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC5I,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,aAAa,sDAAsD,CAAC,CAAC;gBAChI,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,6BAA6B;YAC/B,CAAC;QACH,CAAC;QACD,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAEjC,CAAC,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACjD,QAAQ,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,QAAQ,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAEnC,CAAC,CAAC,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;QAC7C,QAAQ,CAAC,mBAAmB,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE7C,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACrC,QAAQ,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3C,QAAQ,CAAC,uBAAuB,SAAS,yBAAyB,KAAK,6BAA6B,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3H,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEhC,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACvC,QAAQ,CAAC,mBAAmB,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAExB,CAAC,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,IAAI,SAAS,KAAK,KAAK,KAAK,KAAK,EAAE;YACrC,CAAC,CAAC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,sBAAsB,KAAK,IAAI,IAAI,WAAW,WAAW,EAAE,CAAC;QAC7E,MAAM,MAAM,GAAG,WAAW;YACxB,CAAC,CAAC,8BAA8B,WAAW,KAAK,QAAQ,UAAU,WAAW,EAAE;YAC/E,CAAC,CAAC,8BAA8B,WAAW,KAAK,QAAQ,KAAK,CAAC;QAEhE,QAAQ,CAAC,yBAAyB,OAAO,aAAa,MAAM,4BAA4B,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5H,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAE9B,QAAQ,CAAC,mCAAmC,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEhF,CAAC,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;IAE1F,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3B,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -148,6 +148,62 @@ import * as p2 from "@clack/prompts";
|
|
|
148
148
|
import pc2 from "picocolors";
|
|
149
149
|
var fetch2 = globalThis.fetch;
|
|
150
150
|
var GITHUB_GRAPHQL_URL = "https://api.github.com/graphql";
|
|
151
|
+
var getCurrentGitRepo = () => {
|
|
152
|
+
try {
|
|
153
|
+
const currentRemote = execSync2("git remote get-url origin", { encoding: "utf-8" }).trim();
|
|
154
|
+
const remoteRegex = /github\.com[:/]([^/]+)\/([^/.]+)/;
|
|
155
|
+
const remoteMatch = currentRemote.match(remoteRegex);
|
|
156
|
+
if (!remoteMatch) {
|
|
157
|
+
throw new Error("No se pudo determinar el repositorio actual desde el remote de git");
|
|
158
|
+
}
|
|
159
|
+
const owner = remoteMatch[1];
|
|
160
|
+
let repo = remoteMatch[2];
|
|
161
|
+
repo = repo.replace(/\.git$/, "");
|
|
162
|
+
return { owner, repo };
|
|
163
|
+
} catch (e) {
|
|
164
|
+
throw new Error("Error obteniendo el repo actual. Asegurate de estar en un repo de git con un remote origin en github.com.");
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
var fetchOpenIssues = async () => {
|
|
168
|
+
const { owner, repo } = getCurrentGitRepo();
|
|
169
|
+
const GITHUB_TOKEN = process.env.GITHUB_TOKEN || "";
|
|
170
|
+
if (!GITHUB_TOKEN) {
|
|
171
|
+
p2.cancel(pc2.red("Falta la variable de entorno GITHUB_TOKEN"));
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
const query = `
|
|
175
|
+
query GetOpenIssues($owner: String!, $repo: String!) {
|
|
176
|
+
repository(owner: $owner, name: $repo) {
|
|
177
|
+
issues(states: OPEN, first: 30, orderBy: {field: UPDATED_AT, direction: DESC}) {
|
|
178
|
+
nodes {
|
|
179
|
+
number
|
|
180
|
+
title
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
`;
|
|
186
|
+
const res = await fetch2(GITHUB_GRAPHQL_URL, {
|
|
187
|
+
method: "POST",
|
|
188
|
+
headers: {
|
|
189
|
+
"Authorization": `Bearer ${GITHUB_TOKEN}`,
|
|
190
|
+
"Content-Type": "application/json"
|
|
191
|
+
},
|
|
192
|
+
body: JSON.stringify({
|
|
193
|
+
query,
|
|
194
|
+
variables: { owner, repo }
|
|
195
|
+
})
|
|
196
|
+
});
|
|
197
|
+
if (!res.ok) {
|
|
198
|
+
throw new Error(`Error en la API de GitHub: ${res.status} ${res.statusText}`);
|
|
199
|
+
}
|
|
200
|
+
const response = await res.json();
|
|
201
|
+
if (response.errors && response.errors.length > 0) {
|
|
202
|
+
throw new Error(`Error de GraphQL: ${response.errors.map((e) => e.message).join(", ")}`);
|
|
203
|
+
}
|
|
204
|
+
const issues = response.data?.repository?.issues?.nodes || [];
|
|
205
|
+
return issues;
|
|
206
|
+
};
|
|
151
207
|
var createPrFromGithubIssue = async (issueArg) => {
|
|
152
208
|
const issueRegex = /^(?:([a-zA-Z0-9-]+)\/([a-zA-Z0-9._-]+)#(\d+)|#(\d+)|(\d+))$/;
|
|
153
209
|
const match = issueArg.match(issueRegex);
|
|
@@ -161,19 +217,13 @@ var createPrFromGithubIssue = async (issueArg) => {
|
|
|
161
217
|
issueNumber = parseInt(match[3], 10);
|
|
162
218
|
} else if (match[4] || match[5]) {
|
|
163
219
|
try {
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
if (!remoteMatch) {
|
|
168
|
-
throw new Error("No se pudo determinar el repositorio actual desde el remote de git");
|
|
169
|
-
}
|
|
170
|
-
owner = remoteMatch[1];
|
|
171
|
-
repo = remoteMatch[2];
|
|
220
|
+
const current = getCurrentGitRepo();
|
|
221
|
+
owner = current.owner;
|
|
222
|
+
repo = current.repo;
|
|
172
223
|
const numStr = match[4] || match[5];
|
|
173
224
|
issueNumber = parseInt(numStr, 10);
|
|
174
|
-
repo = repo.replace(/\.git$/, "");
|
|
175
225
|
} catch (e) {
|
|
176
|
-
p2.cancel(pc2.red(
|
|
226
|
+
p2.cancel(pc2.red(e.message));
|
|
177
227
|
process.exit(1);
|
|
178
228
|
}
|
|
179
229
|
} else {
|
|
@@ -231,7 +281,7 @@ var createPrFromGithubIssue = async (issueArg) => {
|
|
|
231
281
|
if (response.errors && response.errors.length > 0) {
|
|
232
282
|
throw new Error(`Error de GraphQL: ${response.errors.map((e) => e.message).join(", ")}`);
|
|
233
283
|
}
|
|
234
|
-
const issue = response.repository?.issue;
|
|
284
|
+
const issue = response.data?.repository?.issue;
|
|
235
285
|
if (!issue) {
|
|
236
286
|
throw new Error(`No se encontr\xF3 la issue #${issueNumber} en ${owner}/${repo}`);
|
|
237
287
|
}
|
|
@@ -310,7 +360,7 @@ ${description}` : `**Relates to GitHub issue [${issueNumber}](${issueUrl})**`;
|
|
|
310
360
|
|
|
311
361
|
// src/index.ts
|
|
312
362
|
var program = new Command();
|
|
313
|
-
program.name("gh-createpr").description("CLI interactiva para crear GitHub Pull Requests desde Jira o GitHub Issues").version("1.3.
|
|
363
|
+
program.name("gh-createpr").description("CLI interactiva para crear GitHub Pull Requests desde Jira o GitHub Issues").version("1.3.6");
|
|
314
364
|
program.command("jira").description("Crear PR desde un ticket de Jira").argument("[ticket]", "ID del ticket de Jira (ej: LAN-3)").action(async (ticket) => {
|
|
315
365
|
let finalTicket = ticket;
|
|
316
366
|
if (!finalTicket) {
|
|
@@ -376,16 +426,52 @@ program.action(async () => {
|
|
|
376
426
|
}
|
|
377
427
|
await createPrFromJira(ticketId);
|
|
378
428
|
} else if (sourceType === "github") {
|
|
379
|
-
const
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
429
|
+
const GITHUB_TOKEN = process.env.GITHUB_TOKEN || "";
|
|
430
|
+
if (!GITHUB_TOKEN) {
|
|
431
|
+
p3.cancel(pc3.red("Falta la variable de entorno GITHUB_TOKEN. Configurala para poder listar las issues."));
|
|
432
|
+
process.exit(1);
|
|
433
|
+
}
|
|
434
|
+
const s = p3.spinner();
|
|
435
|
+
s.start("Buscando issues abiertas en el repositorio...");
|
|
436
|
+
let openIssues = [];
|
|
437
|
+
try {
|
|
438
|
+
openIssues = await fetchOpenIssues();
|
|
439
|
+
s.stop(`Encontradas ${openIssues.length} issues abiertas.`);
|
|
440
|
+
} catch (e) {
|
|
441
|
+
s.stop("No se pudieron cargar las issues abiertas.");
|
|
442
|
+
p3.log.warn(`\u26A0\uFE0F Error: ${e.message}`);
|
|
443
|
+
openIssues = [];
|
|
444
|
+
}
|
|
445
|
+
let issueId = "";
|
|
446
|
+
if (openIssues.length > 0) {
|
|
447
|
+
const options = openIssues.map((issue) => ({
|
|
448
|
+
value: issue.number.toString(),
|
|
449
|
+
label: `#${issue.number} - ${issue.title.length > 60 ? issue.title.substring(0, 57) + "..." : issue.title}`
|
|
450
|
+
}));
|
|
451
|
+
options.push({ value: "manual", label: pc3.yellow("\u270F\uFE0F Ingresar ID manualmente...") });
|
|
452
|
+
issueId = await p3.select({
|
|
453
|
+
message: "Seleccion\xE1 la issue para trabajar:",
|
|
454
|
+
options
|
|
455
|
+
});
|
|
456
|
+
if (p3.isCancel(issueId)) {
|
|
457
|
+
p3.cancel("Operaci\xF3n cancelada.");
|
|
458
|
+
process.exit(0);
|
|
459
|
+
}
|
|
460
|
+
} else {
|
|
461
|
+
issueId = "manual";
|
|
462
|
+
}
|
|
463
|
+
if (issueId === "manual") {
|
|
464
|
+
issueId = await p3.text({
|
|
465
|
+
message: "Ingres\xE1 el ID de la Issue:",
|
|
466
|
+
placeholder: "#123",
|
|
467
|
+
validate: (value) => {
|
|
468
|
+
if (!value) return "Por favor ingres\xE1 un ID v\xE1lido.";
|
|
469
|
+
}
|
|
470
|
+
});
|
|
471
|
+
if (p3.isCancel(issueId)) {
|
|
472
|
+
p3.cancel("Operaci\xF3n cancelada.");
|
|
473
|
+
process.exit(0);
|
|
384
474
|
}
|
|
385
|
-
});
|
|
386
|
-
if (p3.isCancel(issueId)) {
|
|
387
|
-
p3.cancel("Operaci\xF3n cancelada.");
|
|
388
|
-
process.exit(0);
|
|
389
475
|
}
|
|
390
476
|
await createPrFromGithubIssue(issueId);
|
|
391
477
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|