UNPKG

@synstack/git

Version:
1 lines 2.92 kB
{"version":3,"sources":["../src/git.index.ts","../src/git.lib.ts"],"sourcesContent":["export * from \"./git.lib.ts\";\nexport * as git from \"./git.lib.ts\";\n","import { execPipe, filter, flatMap } from \"iter-tools-es\";\n\nfunction importExeca() {\n return import(\"execa\").catch((error) => {\n throw new Error(\n \"The `execa` package is not installed. Please install it first.\",\n { cause: error },\n );\n });\n}\n\n/**\n * Lists all files in a Git repository, including tracked, modified, and untracked files.\n * Respects .gitignore rules.\n *\n * @param cwd - The working directory to execute the git command from\n * @returns A sorted array of file paths\n *\n * @example\n * ```ts\n * const files = await ls('./my-repo')\n * // ['index.ts', 'lib.ts', ...]\n * ```\n */\nexport async function ls(cwd: string = \".\") {\n const { execa } = await importExeca();\n const [trackedFiles, modifiedFiles, untrackedFiles] = await Promise.all([\n execa({\n cwd: cwd,\n })`git ls-files`,\n execa({\n cwd: cwd,\n })`git ls-files -m`,\n execa({\n cwd: cwd,\n })`git ls-files --others --exclude-standard`,\n ]);\n\n const files = execPipe(\n [trackedFiles, modifiedFiles, untrackedFiles],\n flatMap((r) => r.stdout.split(/\\r?\\n/)),\n filter((l) => l.trim().length > 0),\n );\n\n return [...new Set(files)].sort();\n}\n\n/**\n * Shows the details of a specific Git commit, including the commit message and changes.\n *\n * @param commitId - The hash of the commit to show\n * @param cwd - The working directory to execute the git command from\n * @returns The commit details as a string\n *\n * @example\n * ```ts\n * const commit = await show('449b7730436026243936a0a2f37c6d3474fcad3b')\n * // Returns commit message and changes\n * ```\n */\nexport async function show(commitId: string, cwd: string = \".\") {\n const { execa } = await importExeca();\n const res = await execa({\n cwd: cwd,\n })`git show ${commitId}`;\n return res.stdout.trim();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA0C;AAE1C,SAAS,cAAc;AACrB,SAAO,OAAO,OAAO,EAAE,MAAM,CAAC,UAAU;AACtC,UAAM,IAAI;AAAA,MACR;AAAA,MACA,EAAE,OAAO,MAAM;AAAA,IACjB;AAAA,EACF,CAAC;AACH;AAeA,eAAsB,GAAG,MAAc,KAAK;AAC1C,QAAM,EAAE,MAAM,IAAI,MAAM,YAAY;AACpC,QAAM,CAAC,cAAc,eAAe,cAAc,IAAI,MAAM,QAAQ,IAAI;AAAA,IACtE,MAAM;AAAA,MACJ;AAAA,IACF,CAAC;AAAA,IACD,MAAM;AAAA,MACJ;AAAA,IACF,CAAC;AAAA,IACD,MAAM;AAAA,MACJ;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,QAAM,YAAQ;AAAA,IACZ,CAAC,cAAc,eAAe,cAAc;AAAA,QAC5C,8BAAQ,CAAC,MAAM,EAAE,OAAO,MAAM,OAAO,CAAC;AAAA,QACtC,6BAAO,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC;AAAA,EACnC;AAEA,SAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK;AAClC;AAeA,eAAsB,KAAK,UAAkB,MAAc,KAAK;AAC9D,QAAM,EAAE,MAAM,IAAI,MAAM,YAAY;AACpC,QAAM,MAAM,MAAM,MAAM;AAAA,IACtB;AAAA,EACF,CAAC,aAAa,QAAQ;AACtB,SAAO,IAAI,OAAO,KAAK;AACzB;","names":[]}