id = "asimov"
name = "Asimov"
homepage = "https://github.com/AsimovMac/asimov"
description = "Automatically exclude development dependencies from Apple Time Machine backups."
executables = ["asimov"]
[dotfiles]
paths = ["~/.config/asimov/config"]
exclude = ["~/.cache/asimov/"]
secret = []
[commands]
format = 1
label = "Exclude dependency folders from Time Machine"
description = "Scan a directory (default: home) for dependency folders and exclude them from backups. The prune and doctor subcommands are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.source]]
id = "readme"
kind = "help"
url = "https://github.com/AsimovMac/asimov/blob/master/README.md"
revision = "master 2026-10-27"
evidence = """
asimov [--dry-run] [--verbose] [--quiet] [--stats] [--no-read-cache] [--no-write-cache] [--help] [--version] [directory]
| `--dry-run` | Print what would be excluded without changing Time Machine |
| `--verbose` | Show all directories including already-excluded ones |
| `--quiet` | Suppress all output except errors |
| `--stats` | Show per-directory sizes and a total-space summary |
| `--no-read-cache` | Ignore cached state; re-discover and re-verify everything, then rebuild the cache |
| `--no-write-cache` | Run normally but don't persist any cache updates |
"""
[[commands.field]]
id = "directory"
label = "Directory to scan"
type = "path"
path = { kind = "directory", role = "input" }
position = 0
sources = ["readme"]
[[commands.field]]
id = "dry_run"
label = "Preview only"
type = "boolean"
option = ["--dry-run"]
sources = ["readme"]
[[commands.field]]
id = "stats"
label = "Show sizes"
type = "boolean"
option = ["--stats"]
sources = ["readme"]
[[commands.field]]
id = "verbose"
label = "Show already-excluded too"
type = "boolean"
option = ["--verbose"]
sources = ["readme"]
[[commands.field]]
id = "quiet"
label = "Quiet"
type = "boolean"
option = ["--quiet"]
sources = ["readme"]
[[commands.field]]
id = "no_read_cache"
label = "Ignore cache (rescan)"
type = "boolean"
option = ["--no-read-cache"]
sources = ["readme"]
[[commands.field]]
id = "no_write_cache"
label = "Do not update cache"
type = "boolean"
option = ["--no-write-cache"]
sources = ["readme"]
[[commands.task]]
id = "preview"
label = "Preview with sizes"
set = { dry_run = [true], stats = [true] }
lock = ["dry_run"]
fields = ["directory", "dry_run", "stats", "verbose"]
[[commands.task]]
id = "apply"
label = "Apply exclusions"
fields = ["directory", "stats", "quiet"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["directory", "dry_run", "stats"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["verbose", "quiet", "no_read_cache", "no_write_cache"]