✨💖 Don't ask, just pull! 🎰🪙
Project description
fate
Pull makes happy!
fate is a Python program that helps git pull
a bunch of Git repositories in your home directory or similar.
(The name comes from Fate's Thread Casino in Mystery Hunt 2026,
in which the protagonists become addicted to the Keeper's gacha machines.)
Installation
It's fate-casino on PyPI, so e.g.
uv tool install fate-casino
fate --help
Usage
See the argparse help for full options.
fate init (or fate i)
For every directory you want to use with fate,
you need to create a .faterc or faterc (the latter takes precedence)
in the root of that Git repository.
You can do this by running fate init.
This is a TOML 1.1 file that specifies which actions fate performs
when run on that repository, and looks something like this:
[config]
branch = "main"
venv = ".venv" # path to the virtual environment, if using uv
[actions]
pull = {enabled = true}
uv = {enabled = true, commit = true}
prek = {enabled = true, commit = true}
push = {enabled = true, verify = true}
fate run (or fate r)
Once a directory has .faterc set up, you can use fate run.
The actions supported right now, if you have a clean working state:
pull: runsgit pullif there is a configured remote and clean workdir. If the working directory is dirty but there's a remote, runsgit fetchinstead.uv: runsuv sync --upgradein order to updateuv.lockIf thecommitoption is enabled, also git commit's the change.prek: runsprek auto-updatein order to updateprek.tomlhooks If thecommitoption is enabled, also git commit's the change.push: runsgit pushif there is a configured remote. If theverifyoption is turned off, adds--no-verify.
fate multirun (or fate m)
This recursively runs fate run on every directory under the specified one
which has a .faterc file.
The following options can be used for multirun mode:
-
By default
fateruns all enabled tasks; but you can also use-o/--onlyor-e/--excludeto restrict the list. Note thatfatewill never run a task not actually enabled in.faterc. -
You can add a delay between repositories with
-d/--delay(e.g.1s,500ms,2m, or just5for 5 seconds), to throttle requests. -
Pass
-a/--allto include discovered Git repositories that don't have.faterc, allowing justpullandpushon them. -
Hidden directories are not searched by default (since
~/.cacheoften has repositories, for example). Pass-u/--unrestrictedto search inside hidden directories too. -
By default, only repositories directly inside the target directory are found. Use
-r/--recursiveto search to any depth, or--depth Nto limit to N levels. (-rand--depthare mutually exclusive.)
We recommend installing fd
for much faster search;
fate otherwise falls back to os.walk (slower), and prints a warning.
fate ls (or fate l, or fate list)
Shows the status of each repository without running any tasks. (It doesn't make any network queries, so it's the fastest.)
Shortcuts for fate multirun
fate ls is actually just fate multirun with an empty --only list.
We also have the following:
- fate pull: equivalent to
fate multirun --only pull - fate gamble (or fate g): equivalent to
fate multirun --exclude push. - fate push: equivalent to
fate multirun --only push
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fate_casino-0.3.1.tar.gz.
File metadata
- Download URL: fate_casino-0.3.1.tar.gz
- Upload date:
- Size: 27.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7249aa5c1f7d251d40246d6c61be669a240fa3b11d609bb143747f5291159279
|
|
| MD5 |
63a358eb9c903f9be3bda42d5e86a935
|
|
| BLAKE2b-256 |
67354b58faeee32766e7337a21f84f39631afe66f4aa8463678c0d8c6b5df61d
|
Provenance
The following attestation bundles were made for fate_casino-0.3.1.tar.gz:
Publisher:
release.yml on vEnhance/fate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fate_casino-0.3.1.tar.gz -
Subject digest:
7249aa5c1f7d251d40246d6c61be669a240fa3b11d609bb143747f5291159279 - Sigstore transparency entry: 1212403999
- Sigstore integration time:
-
Permalink:
vEnhance/fate@1511e8819fea4141441fc2d74d8c4e8b2e4e0e19 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/vEnhance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1511e8819fea4141441fc2d74d8c4e8b2e4e0e19 -
Trigger Event:
release
-
Statement type:
File details
Details for the file fate_casino-0.3.1-py3-none-any.whl.
File metadata
- Download URL: fate_casino-0.3.1-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
465a93c41cb1235230546105592b4db32eb2c504e528b81b2da8087cacc3f789
|
|
| MD5 |
f69031799d00b770a3757eb648262146
|
|
| BLAKE2b-256 |
483ef34fc13a391cae5a6bd6caa728a8df5de4e07095050ece0f50c501a72bfb
|
Provenance
The following attestation bundles were made for fate_casino-0.3.1-py3-none-any.whl:
Publisher:
release.yml on vEnhance/fate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fate_casino-0.3.1-py3-none-any.whl -
Subject digest:
465a93c41cb1235230546105592b4db32eb2c504e528b81b2da8087cacc3f789 - Sigstore transparency entry: 1212404063
- Sigstore integration time:
-
Permalink:
vEnhance/fate@1511e8819fea4141441fc2d74d8c4e8b2e4e0e19 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/vEnhance
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1511e8819fea4141441fc2d74d8c4e8b2e4e0e19 -
Trigger Event:
release
-
Statement type: