Gitにおいて、一時的にユーザー名とメールアドレスを指定したものに変更してからコミットするPowerShellスクリプト、ACommit.psm1を作成してください。

ユーザー名とメールアドレスは、スクリプトファイル同一フォルダにある、USERS.ymlにあるものを参照し、使用してください(例:ACommit claude→USERS.ymlにあるclaudeというエントリのユーザー名とメールアドレスを使用してコミット、ACommit claude -m "commit"→claudeユーザーでコミットしコミットメッセージをcommitとする)

以下の要件を満たすPowerShellモジュール ACommit.psm1 を作成します。

要件:

  1. ユーザー情報の取得
  2. Gitの一時設定
  3. コミット処理
  4. エラーハンドリング

ACommit.psm1

function ACommit {
  param(
    [Parameter(Mandatory=$true)]
    [string]$UserName,

    [Parameter(Mandatory=$false)]
    [string]$Message = "Temporary Commit"
  )

  # スクリプトのあるフォルダを取得
  $ScriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
  $UsersFile = Join-Path $ScriptPath "USERS.yml"

  if (!(Test-Path $UsersFile)) {
    Write-Error "USERS.yml が見つかりません: $UsersFile"
    return
  }

  # USERS.yml を読み込む
  try {
    $UsersData = Get-Content $UsersFile -Raw | ConvertFrom-Yaml
  } catch {
    Write-Error "USERS.yml の読み込みに失敗しました: $_"
    return
  }

  # 指定ユーザーの情報を取得
  if ($UsersData.$UserName -isnot [hashtable]) {
    Write-Error "指定されたユーザー '$UserName' の情報が USERS.yml にありません。"
    return
  }

  $GitUser = $UsersData.$UserName

  if (-not $GitUser.user.name -or -not $GitUser.user.email) {
    Write-Error "ユーザー '$UserName' の user.name または user.email が設定されていません。"
    return
  }

  # Gitの一時設定を適用
  git config --local user.name "$($GitUser.user.name)"
  git config --local user.email "$($GitUser.user.email)"

  if ($LASTEXITCODE -ne 0) {
    Write-Error "Git 設定の適用に失敗しました。"
    return
  }

  # コミット実行
  git commit -m "$Message"

  if ($LASTEXITCODE -ne 0) {
    Write-Error "Git コミットに失敗しました。"
  } else {
    Write-Host "コミットが成功しました: $Message"
  }
}
Export-ModuleMember -Function ACommit


USERS.yml のサンプル

claude:
  user:
    name: "Claude AI"
    email: "[email protected]"

alice:
  user:
    name: "Alice Smith"
    email: "[email protected]"


使用方法

1. モジュールのインポート

PowerShellで ACommit.psm1 があるフォルダへ移動し、以下を実行:

Import-Module .\\\\ACommit.psm1

2. コミット実行