id = "dotdrop"
name = "dotdrop"
homepage = "https://dotdrop.readthedocs.io/"
description = "Save your dotfiles once, deploy them everywhere."
executables = ["dotdrop"]
[dotfiles]
paths = ["[configHome]/dotdrop/config.yaml"]
secret = []
[commands]
format = 1
label = "Dotdrop"
description = "Manage dotfiles with dotdrop: install, compare, import and update. Remove, uninstall, detail and the listing commands are not covered."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = true }
[[commands.subcommand]]
path = ["install"]
label = "Install dotfiles"
[[commands.subcommand.source]]
id = "help"
kind = "help"
url = "https://dotdrop.readthedocs.io/"
revision = "dotdrop 1.18.0 --help"
evidence = """
dotdrop install [-VbtfndDaWR] [--prompt] [--no-prompt]
[-c <path>] [-p <profile>]
[-w <nb>] [<key>...]
-b --no-banner Do not display the banner.
-c --cfg=<path> Path to the config.
-d --dry Dry run.
-D --showdiff Show a diff before overwriting.
-f --force Do not ask user confirmation for anything.
-n --nodiff Do not diff when installing.
-p --profile=<profile> Specify the profile to use [default: MacBook-Pro.local].
-t --temp Install to a temporary directory for review.
-V --verbose Be verbose.
"""
[[commands.subcommand.field]]
id = "keys"
label = "Dotfile keys"
description = "Leave empty to install every dotfile of the profile."
type = "string"
position = 0
multiple = true
sources = ["help"]
[[commands.subcommand.field]]
id = "profile"
label = "Profile"
type = "string"
option = ["--profile", "-p"]
sources = ["help"]
[[commands.subcommand.field]]
id = "cfg"
label = "Config file"
type = "path"
option = ["--cfg", "-c"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["help"]
[[commands.subcommand.field]]
id = "dry"
label = "Dry run"
type = "boolean"
option = ["--dry", "-d"]
sources = ["help"]
[[commands.subcommand.field]]
id = "showdiff"
label = "Show diff before overwriting"
type = "boolean"
option = ["--showdiff", "-D"]
sources = ["help"]
[[commands.subcommand.field]]
id = "nodiff"
label = "Skip diff"
type = "boolean"
option = ["--nodiff", "-n"]
sources = ["help"]
[[commands.subcommand.field]]
id = "temp"
label = "Install to a temporary directory"
type = "boolean"
option = ["--temp", "-t"]
sources = ["help"]
[[commands.subcommand.field]]
id = "force"
label = "Do not ask for confirmation"
description = "Overwrites existing files without asking."
type = "boolean"
option = ["--force", "-f"]
effect = "overwrite"
sources = ["help"]
[[commands.subcommand.field]]
id = "verbose"
label = "Verbose"
type = "boolean"
option = ["--verbose", "-V"]
sources = ["help"]
[[commands.subcommand.field]]
id = "no_banner"
label = "No banner"
type = "boolean"
option = ["--no-banner", "-b"]
sources = ["help"]
[[commands.subcommand.task]]
id = "preview"
label = "Dry run"
set = { dry = [true] }
fields = ["keys", "profile", "cfg", "dry", "showdiff"]
required = []
[[commands.subcommand.task]]
id = "install"
label = "Install"
fields = ["keys", "profile", "cfg", "showdiff", "nodiff", "temp", "force"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["keys", "profile", "cfg", "dry", "showdiff", "nodiff", "temp", "force"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["verbose", "no_banner"]
[[commands.subcommand]]
path = ["compare"]
label = "Compare dotfiles"
[[commands.subcommand.source]]
id = "help"
kind = "help"
url = "https://dotdrop.readthedocs.io/"
revision = "dotdrop 1.18.0 --help"
evidence = """
dotdrop compare [-LVbz] [-c <path>] [-p <profile>]
[-w <nb>] [-C <file>...] [-i <pattern>...]
-c --cfg=<path> Path to the config.
-C --file=<path> Path of dotfile to compare.
-i --ignore=<pattern> Pattern to ignore.
-L --file-only Do not show diff but only the files that differ.
-p --profile=<profile> Specify the profile to use [default: MacBook-Pro.local].
-V --verbose Be verbose.
"""
[[commands.subcommand.field]]
id = "profile"
label = "Profile"
type = "string"
option = ["--profile", "-p"]
sources = ["help"]
[[commands.subcommand.field]]
id = "cfg"
label = "Config file"
type = "path"
option = ["--cfg", "-c"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["help"]
[[commands.subcommand.field]]
id = "file"
label = "Dotfile to compare"
type = "path"
option = ["--file", "-C"]
multiple = true
path = { kind = "file", role = "input", must_exist = true }
sources = ["help"]
[[commands.subcommand.field]]
id = "ignore"
label = "Ignore pattern"
type = "string"
option = ["--ignore", "-i"]
multiple = true
sources = ["help"]
[[commands.subcommand.field]]
id = "file_only"
label = "List differing files only"
type = "boolean"
option = ["--file-only", "-L"]
sources = ["help"]
[[commands.subcommand.field]]
id = "verbose"
label = "Verbose"
type = "boolean"
option = ["--verbose", "-V"]
sources = ["help"]
[[commands.subcommand.task]]
id = "compare"
label = "Compare installed dotfiles"
fields = ["profile", "cfg", "file", "ignore", "file_only"]
required = []
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["profile", "cfg", "file", "ignore", "file_only", "verbose"]
[[commands.subcommand]]
path = ["import"]
label = "Import files into dotdrop"
[[commands.subcommand.source]]
id = "help"
kind = "help"
url = "https://dotdrop.readthedocs.io/"
revision = "dotdrop 1.18.0 --help"
evidence = """
dotdrop import [-Vbdfm] [-c <path>] [-p <profile>]
[-i <pattern>...] [--dkey=<key>]
[--transr=<key>] [--transw=<key>]
[-l <link>] [-s <path>] <path>...
-c --cfg=<path> Path to the config.
-d --dry Dry run.
-i --ignore=<pattern> Pattern to ignore.
-l --link=<link> Link option (nolink|absolute|relative|link_children).
-m --preserve-mode Insert a chmod entry in the dotfile with its mode.
-p --profile=<profile> Specify the profile to use [default: MacBook-Pro.local].
-s --as=<path> Import as a different path from actual path.
"""
[[commands.subcommand.field]]
id = "paths"
label = "Files to import"
type = "path"
position = 0
multiple = true
min = 1
path = { kind = "any", role = "input", must_exist = true }
sources = ["help"]
[[commands.subcommand.field]]
id = "profile"
label = "Profile"
type = "string"
option = ["--profile", "-p"]
sources = ["help"]
[[commands.subcommand.field]]
id = "cfg"
label = "Config file"
type = "path"
option = ["--cfg", "-c"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["help"]
[[commands.subcommand.field]]
id = "link"
label = "Link option"
type = "enum"
option = ["--link", "-l"]
choices = [{ value = "nolink", label = "No link" }, { value = "absolute", label = "Absolute" }, { value = "relative", label = "Relative" }, { value = "link_children", label = "Link children" }]
sources = ["help"]
[[commands.subcommand.field]]
id = "as"
label = "Import as a different path"
type = "string"
option = ["--as", "-s"]
sources = ["help"]
[[commands.subcommand.field]]
id = "ignore"
label = "Ignore pattern"
type = "string"
option = ["--ignore", "-i"]
multiple = true
sources = ["help"]
[[commands.subcommand.field]]
id = "preserve_mode"
label = "Preserve file mode"
type = "boolean"
option = ["--preserve-mode", "-m"]
sources = ["help"]
[[commands.subcommand.field]]
id = "dry"
label = "Dry run"
type = "boolean"
option = ["--dry", "-d"]
sources = ["help"]
[[commands.subcommand.task]]
id = "import"
label = "Import files"
fields = ["paths", "profile", "cfg", "link", "preserve_mode", "dry"]
required = ["paths"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["paths", "profile", "cfg", "link", "preserve_mode", "dry"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["as", "ignore"]