id = "ghorg" name = "ghorg" homepage = "https://github.com/gabrie30/ghorg" description = "A command-line utility to clone all repositories belonging to a GitHub organization." executables = ["ghorg"] [dotfiles] paths = ["[configHome]/ghorg/ghorgignore"] secret = ["[configHome]/ghorg/conf.yaml"] # ghorg documents conf.yaml as its global configuration (which may contain the # required API token) and ghorgignore as the user ignore file. # https://github.com/gabrie30/ghorg/blob/master/README.md [commands] format = 1 label = "Clone an organization" description = "Clone every repository of an organization, group or user. Tokens are deliberately not a field; keep them in the ghorg config or the environment." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.subcommand]] path = ["clone"] label = "Clone all repositories of an owner" [[commands.subcommand.source]] id = "readme" kind = "help" url = "https://github.com/gabrie30/ghorg#how-to-use" revision = "2026-10-27" evidence = """ $ ghorg clone davecheney --clone-type=user --token= $ ghorg clone gitlab-examples --scm=gitlab --preserve-dir --token= $ ghorg clone all-groups --scm=gitlab --base-url=https://gitlab.internal.yourcompany.com --preserve-dir $ ghorg clone kubernetes --path=/tmp/ghorg $ ghorg clone kubernetes --match-regex=^sig- --output-dir=kubernetes-sig-only Skip archived repos: use `--skip-archived` Skip forked repos: use `--skip-forks` ghorg clone kubernetes --backup --clone-wiki --include-submodules Use the `--concurrency` flag """ [[commands.subcommand.field]] id = "owner" label = "Organization, group or user" type = "string" position = 0 sources = ["readme"] [[commands.subcommand.field]] id = "scm" label = "Hosting service" type = "string" option = ["--scm"] suggestions = [{ value = "gitlab", label = "GitLab" }] sources = ["readme"] [[commands.subcommand.field]] id = "clone_type" label = "Owner type" type = "string" option = ["--clone-type"] suggestions = [{ value = "user", label = "User" }] sources = ["readme"] [[commands.subcommand.field]] id = "base_url" label = "Self-hosted base URL" type = "url" option = ["--base-url"] sources = ["readme"] [[commands.subcommand.field]] id = "path" label = "Clone into (absolute path)" type = "path" option = ["--path"] path = { kind = "directory", role = "output", must_exist = false } sources = ["readme"] [[commands.subcommand.field]] id = "output_dir" label = "Output directory name" type = "string" option = ["--output-dir"] sources = ["readme"] [[commands.subcommand.field]] id = "match_regex" label = "Only repositories matching regex" type = "string" option = ["--match-regex"] sources = ["readme"] [[commands.subcommand.field]] id = "skip_archived" label = "Skip archived" type = "boolean" option = ["--skip-archived"] sources = ["readme"] [[commands.subcommand.field]] id = "skip_forks" label = "Skip forks" type = "boolean" option = ["--skip-forks"] sources = ["readme"] [[commands.subcommand.field]] id = "preserve_dir" label = "Preserve directory structure" type = "boolean" option = ["--preserve-dir"] sources = ["readme"] [[commands.subcommand.field]] id = "backup" label = "Mirror backup" type = "boolean" option = ["--backup"] sources = ["readme"] [[commands.subcommand.field]] id = "concurrency" label = "Concurrent clones" type = "integer" option = ["--concurrency"] sources = ["readme"] [[commands.subcommand.task]] id = "clone" label = "Clone an organization" fields = ["owner", "path", "skip_archived", "skip_forks"] required = ["owner"] [[commands.subcommand.task]] id = "backup" label = "Mirror backup" set = { backup = [true] } lock = ["backup"] fields = ["owner", "path", "skip_archived"] required = ["owner"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["owner", "scm", "clone_type", "path", "skip_archived", "skip_forks"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["base_url", "output_dir", "match_regex", "preserve_dir", "backup", "concurrency"]