@armit/git
Advanced tools
+6
-0
| # @armit/git | ||
| ## 0.0.26 | ||
| ### Patch Changes | ||
| - [`bd584da`](https://github.com/armitjs/armit/commit/bd584da6106afe91436284ba5c5e1b54dbc7f9fb) Thanks [@tianyingchun](https://github.com/tianyingchun)! - Add branches fetch api | ||
| ## 0.0.25 | ||
@@ -4,0 +10,0 @@ |
+20
-4
@@ -30,8 +30,24 @@ /** | ||
| * ``` | ||
| * @param basedCommitHash The diff based commit hash | ||
| * @param newCommitHash If is omitted, it will have the same effect as using HEAD instead. | ||
| * @param earlyCommit The diff based earlier commit hash | ||
| * @param lastCommit If is omitted, it will have the same effect as using HEAD instead. | ||
| * @returns Return files between two commit hash | ||
| */ | ||
| declare function getDiffFiles(basedCommitHash: string, newCommitHash?: string): Promise<string[]>; | ||
| declare function getDiffFiles(earlyCommit: string, lastCommit?: string): Promise<string[]>; | ||
| export { getCommitIdOfBranch, getDiffFiles, getFileCommitStatus, getLastCommitHash, gitBranchName }; | ||
| /** | ||
| * This will list all commits that contain any of the commits between earlyCommit and lastCommit | ||
| * @param lastCommit The lasted commit | ||
| * @param earlyCommit The early commit | ||
| * @returns All commits | ||
| */ | ||
| declare const getAllCommitsBetween: (lastCommit: string, earlyCommit: string) => Promise<string[]>; | ||
| /** | ||
| * This will list all branches that contain any of the commits between commit1 and commit2 | ||
| * @param lastCommit if not will look up to first commit | ||
| * @param earlyCommit The earlier commit | ||
| * @returns All commits | ||
| */ | ||
| declare const getBranchesBetweenCommits: (lastCommit: string, earlyCommit: string) => Promise<string[]>; | ||
| export { getAllCommitsBetween, getBranchesBetweenCommits, getCommitIdOfBranch, getDiffFiles, getFileCommitStatus, getLastCommitHash, gitBranchName }; |
+2
-2
| import { exec } from 'node:child_process'; | ||
| var s=(t="HEAD",n=!0)=>new Promise(r=>{exec(`git rev-parse ${n?"--short ":""}${t}`,(e,o)=>{if(e)return r(null);r(o.replace(/\r\n|\n|\r/g,""));});});function a(){return new Promise((t,n)=>{exec("git log --pretty=format:'%h' -n 1",(r,e)=>{if(r)return n(r);t(e.replace(/'/g,""));});})}function h(){return new Promise((t,n)=>{exec("git branch | sed -n '/\\* /s///p'",(r,e)=>{if(r)return n(r);t(e.replace(/\r\n|\n|\r/g,""));});})}function y(t){return new Promise((n,r)=>{exec(`git ls-files ${t}`,(e,o)=>{if(e)return r(e);n(o.replace(/\r\n|\n|\r/g,"").length>0);});})}function F(t,n){let r=t&&n?`${n}..${t}`:t;return new Promise(e=>{exec(`git --no-pager diff --name-only ${r}`,(o,i)=>{if(o)return e([]);e(i.split(/[\r\n|]/).filter(String));});})} | ||
| var w=(r="HEAD",n=!0)=>new Promise(t=>{exec(`git rev-parse ${n?"--short ":""}${r}`,(e,i)=>{if(e)return t(null);t(i.replace(/\r\n|\n|\r/g,""));});});function d(){return new Promise((r,n)=>{exec("git log --pretty=format:'%h' -n 1",(t,e)=>{if(t)return n(t);r(e.replace(/'/g,""));});})}function S(){return new Promise((r,n)=>{exec("git branch | sed -n '/\\* /s///p'",(t,e)=>{if(t)return n(t);r(e.replace(/\r\n|\n|\r/g,""));});})}function A(r){return new Promise((n,t)=>{exec(`git ls-files ${r}`,(e,i)=>{if(e)return t(e);n(i.replace(/\r\n|\n|\r/g,"").length>0);});})}function T(r,n){let t=r&&n?`${n}..${r}`:r;return new Promise(e=>{exec(`git --no-pager diff --name-only ${t}`,(i,o)=>{if(i)return e([]);e(o.split(/[\r\n]/).filter(String));});})}var s=(r,n)=>{let t=n&&r?`${n}..${r}`:r;return new Promise(e=>{exec(` git --no-pager log --oneline ${t} | cut -d " " -f1`,(i,o)=>{if(i)return e([]);e(o.split(/[\r\n|]/).filter(String));});})};function f(r){function n(t,e,i){return i.indexOf(t)===e}return r.filter(n)}var x=r=>new Promise(n=>{exec(`git --no-pager branch --contains ${r}`,(t,e)=>{if(t)return n([]);let i=e.split(/[\r\n]/).filter(String).map(o=>o.trim());n(i);});}),N=async(r,n)=>{let t=[],e=await s(r,n);for(let i of e){let o=await x(i);t.push(...o);}return f(t)}; | ||
| export { s as getCommitIdOfBranch, F as getDiffFiles, y as getFileCommitStatus, a as getLastCommitHash, h as gitBranchName }; | ||
| export { s as getAllCommitsBetween, N as getBranchesBetweenCommits, w as getCommitIdOfBranch, T as getDiffFiles, A as getFileCommitStatus, d as getLastCommitHash, S as gitBranchName }; | ||
| //# sourceMappingURL=out.js.map | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/get-commit-id-of-branch.ts","../src/get-last-commit-hash.ts","../src/get-branch-name.ts","../src/get-file-commit-status.ts","../src/get-diff-files.ts"],"names":["exec","getCommitIdOfBranch","branchName","short","resolve","err","out","getLastCommitHash","reject","gitBranchName","getFileCommitStatus","fileName","getDiffFiles","basedCommitHash","newCommitHash","diff"],"mappings":"AAAA,OAAS,QAAAA,MAAY,qBAQd,IAAMC,EAAsB,CAACC,EAAa,OAAQC,EAAQ,KACxD,IAAI,QAAwBC,GAAY,CAC7CJ,EACE,iBAAiBG,EAAQ,WAAa,KAAKD,IAC3C,CAACG,EAAKC,IAAQ,CACZ,GAAID,EACF,OAAOD,EAAQ,IAAI,EAErBA,EAAQE,EAAI,QAAQ,cAAe,EAAE,CAAC,CACxC,CACF,CACF,CAAC,ECnBH,OAAS,QAAAN,MAAY,qBAEd,SAASO,GAAoB,CAClC,OAAO,IAAI,QAAgB,CAACH,EAASI,IAAW,CAC9CR,EAAK,oCAAqC,CAACK,EAAKC,IAAQ,CACtD,GAAID,EACF,OAAOG,EAAOH,CAAG,EAEnBD,EAAQE,EAAI,QAAQ,KAAM,EAAE,CAAC,CAC/B,CAAC,CACH,CAAC,CACH,CCXA,OAAS,QAAAN,MAAY,qBAEd,SAASS,GAAgB,CAC9B,OAAO,IAAI,QAAgB,CAACL,EAASI,IAAW,CAC9CR,EAAK,oCAAqC,CAACK,EAAKC,IAAQ,CACtD,GAAID,EACF,OAAOG,EAAOH,CAAG,EAEnBD,EAAQE,EAAI,QAAQ,cAAe,EAAE,CAAC,CACxC,CAAC,CACH,CAAC,CACH,CCXA,OAAS,QAAAN,MAAY,qBAOd,SAASU,EAAoBC,EAAU,CAC5C,OAAO,IAAI,QAAiB,CAACP,EAASI,IAAW,CAC/CR,EAAK,gBAAgBW,IAAY,CAACN,EAAKC,IAAQ,CAC7C,GAAID,EACF,OAAOG,EAAOH,CAAG,EAEnBD,EAAQE,EAAI,QAAQ,cAAe,EAAE,EAAE,OAAS,CAAC,CACnD,CAAC,CACH,CAAC,CACH,CChBA,OAAS,QAAAN,MAAY,qBAgBd,SAASY,EAAaC,EAAyBC,EAAwB,CAC5E,IAAMC,EACJF,GAAmBC,EACf,GAAGA,MAAkBD,IACrBA,EAEN,OAAO,IAAI,QAAmBT,GAAY,CACxCJ,EAAK,mCAAmCe,IAAQ,CAACV,EAAKC,IAAQ,CAC5D,GAAID,EAEF,OAAOD,EAAQ,CAAC,CAAC,EAEnBA,EAAQE,EAAI,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC,CAC7C,CAAC,CACH,CAAC,CACH","sourcesContent":["import { exec } from 'node:child_process';\n\n/**\n * https://stackoverflow.com/questions/15677439/command-to-get-latest-git-commit-hash-from-a-branch\n * Finding out the latest commit hash locally,\n * @param branchName e.g. `main`, `workspace`,....\n * @returns The branch commit hash.\n */\nexport const getCommitIdOfBranch = (branchName = 'HEAD', short = true) => {\n return new Promise<string | null>((resolve) => {\n exec(\n `git rev-parse ${short ? '--short ' : ''}${branchName}`,\n (err, out) => {\n if (err) {\n return resolve(null);\n }\n resolve(out.replace(/\\r\\n|\\n|\\r/g, ''));\n }\n );\n });\n};\n","import { exec } from 'node:child_process';\n\nexport function getLastCommitHash() {\n return new Promise<string>((resolve, reject) => {\n exec(`git log --pretty=format:'%h' -n 1`, (err, out) => {\n if (err) {\n return reject(err);\n }\n resolve(out.replace(/'/g, ''));\n });\n });\n}\n","import { exec } from 'node:child_process';\n\nexport function gitBranchName() {\n return new Promise<string>((resolve, reject) => {\n exec(`git branch | sed -n '/\\\\* /s///p'`, (err, out) => {\n if (err) {\n return reject(err);\n }\n resolve(out.replace(/\\r\\n|\\n|\\r/g, ''));\n });\n });\n}\n","import { exec } from 'node:child_process';\n\n/**\n * Check if the filepath has been commited.\n * @param fileName The file name\n * @returns Return true indicates the files has been commited.\n */\nexport function getFileCommitStatus(fileName) {\n return new Promise<boolean>((resolve, reject) => {\n exec(`git ls-files ${fileName}`, (err, out) => {\n if (err) {\n return reject(err);\n }\n resolve(out.replace(/\\r\\n|\\n|\\r/g, '').length > 0);\n });\n });\n}\n","import { exec } from 'node:child_process';\n\n/**\n * https://git-scm.com/docs/git-diff#Documentation/git-diff.txt-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203\n * Viewing the changes between two arbitrary <commit>.\n * If <commit> on one side is omitted, it will have the same effect as using HEAD instead.\n * @example\n * ```shell\n * git --no-pager diff --name-only 2b2ccff..50164ec\n * git --no-pager diff --name-only 2b2ccff 50164ec\n * git --no-pager diff --name-only 1381f5\n * ```\n * @param basedCommitHash The diff based commit hash\n * @param newCommitHash If is omitted, it will have the same effect as using HEAD instead.\n * @returns Return files between two commit hash\n */\nexport function getDiffFiles(basedCommitHash: string, newCommitHash?: string) {\n const diff =\n basedCommitHash && newCommitHash\n ? `${newCommitHash}..${basedCommitHash}`\n : basedCommitHash;\n\n return new Promise<string[]>((resolve) => {\n exec(`git --no-pager diff --name-only ${diff}`, (err, out) => {\n if (err) {\n // fatal: ambiguous argument 'df3s053': unknown revision or path not in the working tree.\n return resolve([]);\n }\n resolve(out.split(/[\\r\\n|]/).filter(String));\n });\n });\n}\n"]} | ||
| {"version":3,"sources":["../src/get-commit-id-of-branch.ts","../src/get-last-commit-hash.ts","../src/get-branch-name.ts","../src/get-file-commit-status.ts","../src/get-diff-files.ts","../src/get-all-commits-between.ts","../src/get-branches-between-commits.ts","../src/array-unique.ts"],"names":["exec","getCommitIdOfBranch","branchName","short","resolve","err","out","getLastCommitHash","reject","gitBranchName","getFileCommitStatus","fileName","getDiffFiles","earlyCommit","lastCommit","diff","getAllCommitsBetween","arrayUnique","arr","onlyUnique","value","index","self","getBranchesContainCommitHash","commit","branches","s","getBranchesBetweenCommits","allBranches","allCommits"],"mappings":"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","sourcesContent":["import { exec } from 'node:child_process';\n\n/**\n * https://stackoverflow.com/questions/15677439/command-to-get-latest-git-commit-hash-from-a-branch\n * Finding out the latest commit hash locally,\n * @param branchName e.g. `main`, `workspace`,....\n * @returns The branch commit hash.\n */\nexport const getCommitIdOfBranch = (branchName = 'HEAD', short = true) => {\n return new Promise<string | null>((resolve) => {\n exec(\n `git rev-parse ${short ? '--short ' : ''}${branchName}`,\n (err, out) => {\n if (err) {\n return resolve(null);\n }\n resolve(out.replace(/\\r\\n|\\n|\\r/g, ''));\n }\n );\n });\n};\n","import { exec } from 'node:child_process';\n\nexport function getLastCommitHash() {\n return new Promise<string>((resolve, reject) => {\n exec(`git log --pretty=format:'%h' -n 1`, (err, out) => {\n if (err) {\n return reject(err);\n }\n resolve(out.replace(/'/g, ''));\n });\n });\n}\n","import { exec } from 'node:child_process';\n\nexport function gitBranchName() {\n return new Promise<string>((resolve, reject) => {\n exec(`git branch | sed -n '/\\\\* /s///p'`, (err, out) => {\n if (err) {\n return reject(err);\n }\n resolve(out.replace(/\\r\\n|\\n|\\r/g, ''));\n });\n });\n}\n","import { exec } from 'node:child_process';\n\n/**\n * Check if the filepath has been commited.\n * @param fileName The file name\n * @returns Return true indicates the files has been commited.\n */\nexport function getFileCommitStatus(fileName) {\n return new Promise<boolean>((resolve, reject) => {\n exec(`git ls-files ${fileName}`, (err, out) => {\n if (err) {\n return reject(err);\n }\n resolve(out.replace(/\\r\\n|\\n|\\r/g, '').length > 0);\n });\n });\n}\n","import { exec } from 'node:child_process';\n\n/**\n * https://git-scm.com/docs/git-diff#Documentation/git-diff.txt-emgitdiffemltoptionsgtltcommitgtltcommitgt--ltpathgt82308203\n * Viewing the changes between two arbitrary <commit>.\n * If <commit> on one side is omitted, it will have the same effect as using HEAD instead.\n * @example\n * ```shell\n * git --no-pager diff --name-only 2b2ccff..50164ec\n * git --no-pager diff --name-only 2b2ccff 50164ec\n * git --no-pager diff --name-only 1381f5\n * ```\n * @param earlyCommit The diff based earlier commit hash\n * @param lastCommit If is omitted, it will have the same effect as using HEAD instead.\n * @returns Return files between two commit hash\n */\nexport function getDiffFiles(earlyCommit: string, lastCommit?: string) {\n const diff =\n earlyCommit && lastCommit ? `${lastCommit}..${earlyCommit}` : earlyCommit;\n\n return new Promise<string[]>((resolve) => {\n exec(`git --no-pager diff --name-only ${diff}`, (err, out) => {\n if (err) {\n // fatal: ambiguous argument 'df3s053': unknown revision or path not in the working tree.\n return resolve([]);\n }\n resolve(out.split(/[\\r\\n]/).filter(String));\n });\n });\n}\n","import { exec } from 'node:child_process';\n\n/**\n * This will list all commits that contain any of the commits between earlyCommit and lastCommit\n * @param lastCommit The lasted commit\n * @param earlyCommit The early commit\n * @returns All commits\n */\nexport const getAllCommitsBetween = (\n lastCommit: string,\n earlyCommit: string\n) => {\n // NOTE: The order is from `${earlyCommit} to ${lastComit}`\n const diff =\n earlyCommit && lastCommit ? `${earlyCommit}..${lastCommit}` : lastCommit;\n\n // if only `lastCommit` provider, will list all commits.\n return new Promise<string[]>((resolve) => {\n exec(\n ` git --no-pager log --oneline ${diff} | cut -d \" \" -f1`,\n (err, out) => {\n if (err) {\n // fatal: ambiguous argument 'df3s053': unknown revision or path not in the working tree.\n return resolve([]);\n }\n resolve(out.split(/[\\r\\n|]/).filter(String));\n }\n );\n });\n};\n","import { exec } from 'node:child_process';\nimport { arrayUnique } from './array-unique.js';\nimport { getAllCommitsBetween } from './get-all-commits-between.js';\n\nconst getBranchesContainCommitHash = (commit: string) => {\n return new Promise<string[]>((resolve) => {\n exec(`git --no-pager branch --contains ${commit}`, (err, out) => {\n if (err) {\n // fatal: ambiguous argument 'df3s053': unknown revision or path not in the working tree.\n return resolve([]);\n }\n const branches = out\n .split(/[\\r\\n]/)\n .filter(String)\n .map((s) => s.trim());\n\n resolve(branches);\n });\n });\n};\n\n/**\n * This will list all branches that contain any of the commits between commit1 and commit2\n * @param lastCommit if not will look up to first commit\n * @param earlyCommit The earlier commit\n * @returns All commits\n */\nexport const getBranchesBetweenCommits = async (\n lastCommit: string,\n earlyCommit: string\n) => {\n const allBranches: string[] = [];\n const allCommits = await getAllCommitsBetween(lastCommit, earlyCommit);\n for (const commit of allCommits) {\n const branches = await getBranchesContainCommitHash(commit);\n allBranches.push(...branches);\n }\n return arrayUnique(allBranches);\n};\n","export function arrayUnique<T>(arr: T[]): T[] {\n function onlyUnique(value, index, self) {\n return self.indexOf(value) === index;\n }\n return arr.filter(onlyUnique);\n}\n"]} |
+1
-1
| { | ||
| "name": "@armit/git", | ||
| "version": "0.0.25", | ||
| "version": "0.0.26", | ||
| "homepage": "https://github.com/armitjs/armit", | ||
@@ -5,0 +5,0 @@ "repository": { |
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
18948
36.42%55
41.03%