@armit/git
Advanced tools
+6
-0
| # @armit/git | ||
| ## 0.0.27 | ||
| ### Patch Changes | ||
| - [`530efa8`](https://github.com/armitjs/armit/commit/530efa85828181518043f75e7cfaa67a28b0bdbe) Thanks [@tianyingchun](https://github.com/tianyingchun)! - imporve branches | ||
| ## 0.0.26 | ||
@@ -4,0 +10,0 @@ |
+5
-5
@@ -9,3 +9,3 @@ /** | ||
| declare function getLastCommitHash(): Promise<string>; | ||
| declare function getLastCommitHash(): Promise<string | null>; | ||
@@ -39,4 +39,4 @@ declare function gitBranchName(): Promise<string>; | ||
| * 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 | ||
| * @param lastCommit The lasted commit `HEAD` | ||
| * @param earlyCommit The early commit `master` | ||
| * @returns All commits | ||
@@ -48,4 +48,4 @@ */ | ||
| * 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 | ||
| * @param lastCommit if not will look up to first commit `HEAD` | ||
| * @param earlyCommit The earlier commit `master` | ||
| * @returns All commits | ||
@@ -52,0 +52,0 @@ */ |
+2
-2
| import { exec } from 'node:child_process'; | ||
| 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)}; | ||
| var w=(r="HEAD",t=!0)=>new Promise(n=>{exec(`git rev-parse ${t?"--short ":""}${r}`,(e,i)=>{if(e)return n(null);n(i.replace(/\r\n|\n|\r/g,""));});});function B(){return new Promise(r=>{exec("git log --pretty=format:'%h' -n 1",(t,n)=>{if(t)return r(null);r(n.replace(/'/g,""));});})}function A(){return new Promise((r,t)=>{exec("git branch | sed -n '/\\* /s///p'",(n,e)=>{if(n)return t(n);r(e.replace(/\r\n|\n|\r/g,""));});})}function U(r){return new Promise((t,n)=>{exec(`git ls-files ${r}`,(e,i)=>{if(e)return n(e);t(i.replace(/\r\n|\n|\r/g,"").length>0);});})}function D(r,t){let n=r&&t?`${t}..${r}`:r;return new Promise(e=>{exec(`git --no-pager diff --name-only ${n}`,(i,o)=>{if(i)return e([]);e(o.split(/[\r\n]/).filter(String));});})}var s=(r,t)=>{let n=t&&r?`${t}..${r}`:r;return new Promise(e=>{exec(`git --no-pager log --oneline ${n} | cut -d " " -f1`,(i,o)=>{if(i)return e([]);e(o.split(/[\r\n|]/).filter(String));});})};function f(r){function t(n,e,i){return i.indexOf(n)===e}return r.filter(t)}var x=r=>new Promise(t=>{exec(`git --no-pager branch --contains ${r}`,(n,e)=>{if(n)return t([]);let i=e.split(/[\r\n]/).filter(o=>!~o.toUpperCase().indexOf("(HEAD")).map(o=>o.trim());t(i);});}),N=async(r,t)=>{let n=[],e=await s(r,t);for(let i of e){let o=await x(i);n.push(...o);}return f(n)}; | ||
| export { s as getAllCommitsBetween, N as getBranchesBetweenCommits, w as getCommitIdOfBranch, T as getDiffFiles, A as getFileCommitStatus, d as getLastCommitHash, S as gitBranchName }; | ||
| export { s as getAllCommitsBetween, N as getBranchesBetweenCommits, w as getCommitIdOfBranch, D as getDiffFiles, U as getFileCommitStatus, B as getLastCommitHash, A 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","../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"]} | ||
| {"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","gitBranchName","reject","getFileCommitStatus","fileName","getDiffFiles","earlyCommit","lastCommit","diff","getAllCommitsBetween","arrayUnique","arr","onlyUnique","value","index","self","getBranchesContainCommitHash","commit","branches","branch","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 | null>((resolve) => {\n exec(`git log --pretty=format:'%h' -n 1`, (err, out) => {\n if (err) {\n return resolve(null);\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 `HEAD`\n * @param earlyCommit The early commit `master`\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((branch) => {\n // Remove `* (HEAD detached at b121521)`\n return !~branch.toUpperCase().indexOf('(HEAD');\n })\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 `HEAD`\n * @param earlyCommit The earlier commit `master`\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.26", | ||
| "version": "0.0.27", | ||
| "homepage": "https://github.com/armitjs/armit", | ||
@@ -5,0 +5,0 @@ "repository": { |
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 1 instance in 1 package
19421
2.5%2
100%