Skip to main content

✨💖 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: runs git pull if there is a configured remote and clean workdir. If the working directory is dirty but there's a remote, runs git fetch instead.
  • uv: runs uv sync --upgrade in order to update uv.lock If the commit option is enabled, also git commit's the change.
  • prek: runs prek auto-update in order to update prek.toml hooks If the commit option is enabled, also git commit's the change.
  • push: runs git push if there is a configured remote. If the verify option 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 fate runs all enabled tasks; but you can also use -o/--only or -e/--exclude to restrict the list. Note that fate will 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 just 5 for 5 seconds), to throttle requests.

  • Pass -a/--all to include discovered Git repositories that don't have .faterc, allowing just pull and push on them.

  • Hidden directories are not searched by default (since ~/.cache often has repositories, for example). Pass -u/--unrestricted to search inside hidden directories too.

  • By default, only repositories directly inside the target directory are found. Use -r/--recursive to search to any depth, or --depth N to limit to N levels. (-r and --depth are 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

fate_casino-0.3.1.tar.gz (27.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fate_casino-0.3.1-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

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

Hashes for fate_casino-0.3.1.tar.gz
Algorithm Hash digest
SHA256 7249aa5c1f7d251d40246d6c61be669a240fa3b11d609bb143747f5291159279
MD5 63a358eb9c903f9be3bda42d5e86a935
BLAKE2b-256 67354b58faeee32766e7337a21f84f39631afe66f4aa8463678c0d8c6b5df61d

See more details on using hashes here.

Provenance

The following attestation bundles were made for fate_casino-0.3.1.tar.gz:

Publisher: release.yml on vEnhance/fate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for fate_casino-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 465a93c41cb1235230546105592b4db32eb2c504e528b81b2da8087cacc3f789
MD5 f69031799d00b770a3757eb648262146
BLAKE2b-256 483ef34fc13a391cae5a6bd6caa728a8df5de4e07095050ece0f50c501a72bfb

See more details on using hashes here.

Provenance

The following attestation bundles were made for fate_casino-0.3.1-py3-none-any.whl:

Publisher: release.yml on vEnhance/fate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page