From 8fe556a9db11d6caf783cf3f94a9db04b89ee822 Mon Sep 17 00:00:00 2001 From: Yusaku Sato Date: Thu, 16 May 2024 11:11:47 +0900 Subject: [PATCH] feat(git-diff): add `@d-zero/git-diff` --- packages/@d-zero/git-diff/CHANGELOG.md | 6 ++++++ packages/@d-zero/git-diff/README.md | 19 +++++++++++++++++++ packages/@d-zero/git-diff/package.json | 22 ++++++++++++++++++++++ packages/@d-zero/git-diff/src/index.ts | 10 ++++++++++ packages/@d-zero/git-diff/tsconfig.json | 10 ++++++++++ 5 files changed, 67 insertions(+) create mode 100644 packages/@d-zero/git-diff/CHANGELOG.md create mode 100644 packages/@d-zero/git-diff/README.md create mode 100644 packages/@d-zero/git-diff/package.json create mode 100644 packages/@d-zero/git-diff/src/index.ts create mode 100644 packages/@d-zero/git-diff/tsconfig.json diff --git a/packages/@d-zero/git-diff/CHANGELOG.md b/packages/@d-zero/git-diff/CHANGELOG.md new file mode 100644 index 00000000..bd76d596 --- /dev/null +++ b/packages/@d-zero/git-diff/CHANGELOG.md @@ -0,0 +1,6 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [1.0.0] diff --git a/packages/@d-zero/git-diff/README.md b/packages/@d-zero/git-diff/README.md new file mode 100644 index 00000000..36f0a999 --- /dev/null +++ b/packages/@d-zero/git-diff/README.md @@ -0,0 +1,19 @@ +# `@d-zero/git-diff` + +gitの差分を持つファイルの一覧を取得するためのツールです。 + +## CLI + +```sh +# HEADからタグが付いているコミットまでの差分を取得する場合 +npx @d-zero/git-diff + +# HEADから特定のコミットまでの差分を取得する場合 +npx @d-zero/git-diff + +# 特定のコミットから特定のコミットまでの差分を取得する場合 +npx @d-zero/git-diff +``` + +差分を取得したいローカルリポジトリに移動し、上記コマンドを入力してください。 +コミットのハッシュ値を指定する場合、古い方のコミットを先に入力してください diff --git a/packages/@d-zero/git-diff/package.json b/packages/@d-zero/git-diff/package.json new file mode 100644 index 00000000..1db5678a --- /dev/null +++ b/packages/@d-zero/git-diff/package.json @@ -0,0 +1,22 @@ +{ + "name": "@d-zero/git-diff", + "version": "1.0.0", + "description": "Get a list of files with git diffs", + "author": "D-ZERO", + "license": "MIT", + "private": false, + "publishConfig": { + "access": "public" + }, + "main": "./dist/index.js", + "bin": { + "git-diff": "./dist/index.js" + }, + "files": [ + "dist" + ], + "scripts": { + "build": "tsc", + "clean": "tsc --build --clean" + } +} diff --git a/packages/@d-zero/git-diff/src/index.ts b/packages/@d-zero/git-diff/src/index.ts new file mode 100644 index 00000000..f63ef579 --- /dev/null +++ b/packages/@d-zero/git-diff/src/index.ts @@ -0,0 +1,10 @@ +import { execSync } from 'node:child_process'; + +const tag = + process.argv[2] || execSync('git describe --tags --abbrev=0').toString('utf8').trim(); +const tag2 = process.argv[3] || 'HEAD'; +// cspell:disable-next-line +const gitDiff = `git diff --name-only ${tag} ${tag2} --diff-filter=ACMR`; +const list = execSync(gitDiff).toString('utf8').trim(); +// eslint-disable-next-line no-console +console.log(list); diff --git a/packages/@d-zero/git-diff/tsconfig.json b/packages/@d-zero/git-diff/tsconfig.json new file mode 100644 index 00000000..c20f70ab --- /dev/null +++ b/packages/@d-zero/git-diff/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist", + "rootDir": "./src" + }, + "include": ["./src/**/*"], + "exclude": ["node_modules", "dist", "./src/**/*.spec.ts"] +}