| name | bump-cabal-index-state |
| description | Update Cabal project index-state to the latest timestamp. Use when it needs to bump the cabal index-state. |
| allowed-tools | Bash(cabal build:*), Bash(cabal update:*), Bash(gh pr create:*), Bash(git add:*), Bash(git commit:*), Bash(git push:*), Bash(git status:*), Bash(git switch:*), Bash(nix flake check:*), Edit, Glob, Grep, Read, Write |
| effort | medium |
cabalプロジェクトのindex-stateを最新に更新します。
手順
ブランチの作成
PR作成に備えてブランチを作成します。
git switch -c bump-cabal-index-state
cabal updateの実行
cabal update
cabal updateの出力から最新のindex-stateタイムスタンプを取得します。
出力例:
Downloading the latest package list from hackage.haskell.org
Package list of hackage.haskell.org is up to date.
The index-state is set to 2026-01-11T09:48:01Z.
index-stateの更新
通常はcabal.projectファイルに書かれているindex-stateを更新します。
フォーマット: index-state: YYYY-MM-DDTHH:mm:ssZ
index-stateと日時の間にURLが入っていることも稀にあります。
もしcabal.projectに書いていないなら、
cabal.project.localやflake.nixなどに書かれている場合があります。
探して更新してください。
動作確認
プロジェクトのビルドシステムに応じて動作確認を行います。
Nixを使用している場合は以下のコマンドを実行してください。
nix flake check
Nixを使用していない場合は以下のコマンドを実行してください。
cabal build --disable-optimization --enable-tests all
haskell.nixを使用している場合の遅れへの対応
haskell.nixは最新のindex-stateへの対応に遅れがあります。
そのため最新のindex-stateを使用するとエラーになることがあります。
エラーメッセージに現在認識している最新のindex-stateが表示されます。
例:
> Error: [Cabal-7159]
> Latest known index-state for 'hackage.haskell.org' (2026-01-05T23:03:18Z) is older than the requested index-state (2026-01-11T18:45:48Z).
> Run 'cabal update' or set the index-state to a value at or before 2026-01-05T23:03:18Z.
このエラーが出た場合は、
エラーメッセージに記載されている最新の値を使用してください。
変更した後に再度動作確認を行ってください。
Gitにコミット
動作確認が成功したらGitにコミットしてください。
動作確認が成功しなければコミットは行わないで完了報告に進んでください。
コミットメッセージのタイトルは、
build(deps): cabalのindex-stateを更新
です。
本文は以下のテンプレートに従ってください。
`cabal.project`の`index-state`を`YYYY-MM-DDTHH:mm:ssZ`に更新しました。
このテンプレートを置き換えて本文を作成してください。
cabal.projectは実際に更新したファイル名に置き換えてください。
大抵はcabal.projectそのままです。
YYYY-MM-DDTHH:mm:ssZは実際の新しいindex-stateに置き換えてください。
ドメイン指定がある場合はindex-stateの前にスペースで囲んで、
hackage.haskell.orgのように更新したドメインを追加してください。
GitHubにプルリクエストを作成する
まずGitHubを利用しているか確認してください。
GitHubを利用していない場合はこの手順をスキップしてください。
GitHubを利用している場合は以下のGitコマンドでリモートリポジトリにプッシュしてください。
git push --verbose --set-upstream origin
その後以下のGitHub CLIコマンドでプルリクエストを作成してください。
gh pr create --assignee @me --fill --label "Type: Dependencies" --title "build(deps): cabalのindex-stateを更新"
完了報告
更新が完了したら以下を報告してください:
- 動作確認が成功したか
- 更新前の
index-state
- 更新後の
index-state
- haskell.nixを使用している場合、haskell.nixが認識している最新
index-stateがcabalの最新index-stateに比べてどれぐらい遅れているか
- プルリクエストを作成した場合はプルリクエストのURL