ユーザー名とメールアドレスは、スクリプトファイル同一フォルダにある、USERS.ymlにあるものを参照し、使用してください(例:ACommit claude→USERS.ymlにあるclaudeというエントリのユーザー名とメールアドレスを使用してコミット、ACommit claude -m "commit"→claudeユーザーでコミットしコミットメッセージをcommitとする)
以下の要件を満たすPowerShellモジュール ACommit.psm1
を作成します。
USERS.yml
から該当ユーザーの名前 (user.name
) とメール (user.email
) を取得。USERS.yml
はスクリプトと同じフォルダに配置。git config --local user.name
と git config --local user.email
を変更し、指定のユーザーでコミット。m
オプションでコミットメッセージを指定可能(省略時はデフォルトメッセージ "Temporary Commit"
を使用)。USERS.yml
にユーザーが存在しない場合、エラーメッセージを表示。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]"
PowerShellで ACommit.psm1
があるフォルダへ移動し、以下を実行:
Import-Module .\\\\ACommit.psm1
claude
の情報を使ってコミット:
ACommit claude
→ [email protected]
を使い "Temporary Commit"
でコミット。