{
  "id": "osc",
  "name": "osc",
  "homepage": "https://openbuildservice.org",
  "description": "Command-line interface to work with an Open Build Service",
  "executables": [
    "osc"
  ],
  "dotfiles": {
    "paths": [],
    "secret": [
      "[configHome]/osc/oscrc",
      "~/.oscrc"
    ]
  },
  "commands": {
    "format": 1,
    "label": "Open Build Service",
    "description": "Check out, branch and commit packages with osc. Building, requests, project metadata and the other commands are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": false
    },
    "subcommand": [
      {
        "path": [
          "checkout"
        ],
        "label": "Check out a package",
        "source": [
          {
            "id": "man",
            "kind": "manual",
            "url": "https://manpages.debian.org/unstable/osc/osc.1.en.html",
            "revision": "Debian unstable",
            "evidence": "osc co PROJECT [PACKAGE] [FILE]\nosc co PROJECT # entire project\nosc co PROJECT PACKAGE # a package\n-r rev, --revision rev: checkout the specified revision. NOTE: if you checkout the complete project this option is ignored!\n-u, --unexpand-link: if a package is a link, check out the _link file instead of the expanded sources\n-M, --meta: checkout out meta data instead of sources\n-c, --current-dir: place PACKAGE folder in the current directory instead of a PROJECT/PACKAGE directory\n-o outdir, --output-dir outdir: place package in the specified directory instead of a PROJECT/PACKAGE directory\n-s, --source-service-files: Run source services.\n"
          }
        ],
        "field": [
          {
            "id": "revision",
            "label": "Revision",
            "type": "string",
            "option": [
              "--revision",
              "-r"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "unexpand_link",
            "label": "Keep _link unexpanded",
            "type": "boolean",
            "option": [
              "--unexpand-link",
              "-u"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "meta",
            "label": "Meta data instead of sources",
            "type": "boolean",
            "option": [
              "--meta",
              "-M"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "current_dir",
            "label": "Place package in current directory",
            "type": "boolean",
            "option": [
              "--current-dir",
              "-c"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "output_dir",
            "label": "Output directory",
            "type": "path",
            "option": [
              "--output-dir",
              "-o"
            ],
            "path": {
              "kind": "directory",
              "role": "output"
            },
            "sources": [
              "man"
            ]
          },
          {
            "id": "source_services",
            "label": "Run source services",
            "type": "boolean",
            "option": [
              "--source-service-files",
              "-s"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "project",
            "label": "Project",
            "type": "string",
            "position": 0,
            "sources": [
              "man"
            ]
          },
          {
            "id": "package",
            "label": "Package",
            "description": "Omit to check out the entire project.",
            "type": "string",
            "position": 1,
            "sources": [
              "man"
            ]
          }
        ],
        "task": [
          {
            "id": "package",
            "label": "Check out a package",
            "fields": [
              "project",
              "package",
              "revision",
              "current_dir"
            ],
            "required": [
              "project",
              "package"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "project",
              "package",
              "revision",
              "current_dir",
              "output_dir"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "unexpand_link",
              "meta",
              "source_services"
            ]
          }
        ]
      },
      {
        "path": [
          "branch"
        ],
        "label": "Branch a package",
        "source": [
          {
            "id": "man",
            "kind": "manual",
            "url": "https://manpages.debian.org/unstable/osc/osc.1.en.html",
            "revision": "Debian unstable",
            "evidence": "osc branch SOURCEPROJECT SOURCEPACKAGE\nosc branch SOURCEPROJECT SOURCEPACKAGE TARGETPROJECT|. TARGETPACKAGE\n-c, --checkout: Checkout branched package afterwards using \"co -e -S\"('osc bco' is a shorthand for this option)\n-f, --force: force branch, overwrite target\n-m TEXT, --message TEXT: specify message TEXT\n-r rev, --revision rev: branch against a specific revision\n--nodevelproject: do not follow a defined devel project (primary project where a package is developed)\n--disable-build: disable building of the branched package\n"
          }
        ],
        "field": [
          {
            "id": "checkout",
            "label": "Check out afterwards",
            "type": "boolean",
            "option": [
              "--checkout",
              "-c"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "force",
            "label": "Force, overwrite target",
            "type": "boolean",
            "option": [
              "--force",
              "-f"
            ],
            "effect": "overwrite",
            "sources": [
              "man"
            ]
          },
          {
            "id": "message",
            "label": "Message",
            "type": "string",
            "option": [
              "--message",
              "-m"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "revision",
            "label": "Revision",
            "type": "string",
            "option": [
              "--revision",
              "-r"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "nodevelproject",
            "label": "Do not follow the devel project",
            "type": "boolean",
            "option": [
              "--nodevelproject"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "disable_build",
            "label": "Disable building the branch",
            "type": "boolean",
            "option": [
              "--disable-build"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "source_project",
            "label": "Source project",
            "type": "string",
            "position": 0,
            "sources": [
              "man"
            ]
          },
          {
            "id": "source_package",
            "label": "Source package",
            "type": "string",
            "position": 1,
            "sources": [
              "man"
            ]
          },
          {
            "id": "target_project",
            "label": "Target project",
            "description": "Use . for the default.",
            "type": "string",
            "position": 2,
            "sources": [
              "man"
            ]
          },
          {
            "id": "target_package",
            "label": "Target package",
            "type": "string",
            "position": 3,
            "sources": [
              "man"
            ]
          }
        ],
        "task": [
          {
            "id": "branch_checkout",
            "label": "Branch and check out",
            "fields": [
              "source_project",
              "source_package",
              "checkout"
            ],
            "required": [
              "source_project",
              "source_package"
            ],
            "set": {
              "checkout": [
                true
              ]
            }
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "source_project",
              "source_package",
              "target_project",
              "target_package",
              "checkout",
              "message"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "force",
              "revision",
              "nodevelproject",
              "disable_build"
            ]
          }
        ]
      },
      {
        "path": [
          "commit"
        ],
        "label": "Commit changes",
        "source": [
          {
            "id": "man",
            "kind": "manual",
            "url": "https://manpages.debian.org/unstable/osc/osc.1.en.html",
            "revision": "Debian unstable",
            "evidence": "osc ci # current dir\nosc ci <dir>\nosc ci file1 file2 ...\n-m TEXT, --message TEXT: specify log message TEXT\n-n, --no-message: do not specify a log message\n-F FILE, --file FILE: read log message from FILE, '-' denotes standard input.\n-f, --force: Allow empty commit with no changes. When committing a project, allow removing packages even if other packages depend on them.\n"
          }
        ],
        "field": [
          {
            "id": "message",
            "label": "Log message",
            "type": "string",
            "option": [
              "--message",
              "-m"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "no_message",
            "label": "No log message",
            "type": "boolean",
            "option": [
              "--no-message",
              "-n"
            ],
            "sources": [
              "man"
            ]
          },
          {
            "id": "file",
            "label": "Read message from file",
            "type": "path",
            "option": [
              "--file",
              "-F"
            ],
            "path": {
              "kind": "file",
              "role": "input"
            },
            "sources": [
              "man"
            ]
          },
          {
            "id": "force",
            "label": "Allow empty commit",
            "type": "boolean",
            "option": [
              "--force",
              "-f"
            ],
            "effect": "overwrite",
            "sources": [
              "man"
            ]
          },
          {
            "id": "paths",
            "label": "Directory or files",
            "description": "Omit to commit the current directory.",
            "type": "path",
            "position": 0,
            "multiple": true,
            "path": {
              "kind": "any",
              "role": "input"
            },
            "sources": [
              "man"
            ]
          }
        ],
        "task": [
          {
            "id": "commit",
            "label": "Commit with a message",
            "fields": [
              "message",
              "paths"
            ],
            "required": [
              "message"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "message",
              "paths",
              "no_message",
              "file"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "force"
            ]
          }
        ]
      }
    ]
  }
}
