@lowlighter/git
v1.0.0
Published
[](https://jsr.io/@libs/git) [](https://jsr.io/@libs/git) [](https://libs-coverage.lecoq.io/git)
Readme
🟰 Git
Parse the output of common git commands into structured data.
📑 Examples
import { blame, changed, commit, diff, grep, log, pull, push, status, tag, tags } from "./mod.ts"
// Parse `git blame --line-porcelain` (line attribution, authorship and commit metadata)
blame("mod.ts")
// Parse `git diff` (files, statuses, modes, hunks and lines)
diff("HEAD~1..HEAD")
// Parse `git grep --line-number --column -I -z` (matched paths, positions and contents)
grep("TODO", { paths: ["*.ts"] })
// Parse `git log` (commit history, with conventional commits support)
log("1.0.0", { filter: { conventional: true } })
// Parse `git status --porcelain=v1 -z` (staged and unstaged changes, renames and untracked files)
status()
// Parse `git tag --list` (sorted by version) and create tags
tags({ glob: "v*" })
tags({ glob: "v*", commit: true })
tag("v1.0.0")
// List changed files matching glob patterns
changed(["git/**", ".github/workflows/*.yml"], { base: "origin/main" })
// Commit as the github-actions bot, pull with rebase and push
commit("chore: update generated files", { paths: ["README.md"] })
pull({ rebase: true })
push()Each function shells out to git synchronously, or parses a provided stdout instead (in which case no permission is required).
✨ Features
- Support for parsing
git blame,git diff,git grep,git log,git statusandgit tagoutputs. - Support for common workflow operations:
pull(),push(),tag(),changed()andcommit()(authored by the github-actions bot by default). - Support for conventional commits parsing and filtering in
log(). - Support for renames, copies, mode changes, binary files and quoted paths in
diff(). - Uses unambiguous output formats (NUL-delimited fields) when shelling out to
git.
📜 License and credits
Copyright (c) Simon Lecoq <@lowlighter>. (MIT License)
https://github.com/lowlighter/libs/blob/main/LICENSE