name: autoinstall
help: Install files, repository and else
version: 0.1.4

flags:
  - long: --clean
    short: -c
    help: Clean exisiting targets
  - long: --hook
    short: -h
    help: Hook to run if something changed
    arg: hook

environment_variables:
  - name: AUTOINSTALL_CLEAN
    help: Clean exisiting targets

dependencies:
  http_client:
    command: [curl, wget]
    help: Please install either curl or wget

commands:
  - name: completions
    help: Generate bash completions

  - name: run
    help: Autoinstall from file
    args:
      - name: group
        required: true
        help: The group to install
    flags:
      - long: --file
        short: -f
        help: File from which to read autoinstall-config
        arg: file
        default: $XDG_CONFIG_HOME/autoinstall.conf

  - name: git
    help: Install a git repository
    args:
      - name: repo
        required: true
        help: The url of the git repository
      - name: target
        required: true
        help: The path to clone the repository into

  - name: file
    help: Install a file
    args:
      - name: url
        required: true
        help: The url of the file
      - name: target
        required: true
        help: The file-path to download the file into
    flags:
      - long: --pipe
        short: -p
        help: Pipe file through command (e.g. "tar xzO")
        arg: pipe
        default: cat

  - name: exe
    help: Install an executable
    args:
      - name: url
        required: true
        help: The url of the file
      - name: target
        required: true
        help: The file-path to download the file into
    filename: file_command.sh
    flags:
      - long: --pipe
        short: -f
        help: Pipe file through command (e.g. "tar xzO")
        arg: pipe
        default: cat
      - long: --completions
        short: -c
        help: Run a command on the new exe to install completions
        arg: completions

  - name: archive
    help: Install an archive
    args:
      - name: url
        required: true
        help: The url of the arhive
      - name: target
        required: true
        help: The path to clone the repository into

  - name: env
    help: Create a file with envsubst
    args:
      - name: template
        required: true
        help: The path to the template
      - name: target
        required: true
        help: The path to write the result to
    dependencies:
      envsubst: This tool is usually part of the gettext package

  - name: text
    help: Create a file from text
    args:
      - name: text
        required: true
        help: The text to write to the file
      - name: target
        required: true
        help: The path to write the result to

  - name: flatpak
    help: Install a flatpak
    args:
      - name: flatpak
        required: true
        help: The flatpak to install
      - name: mode
        required: true
        help: The target to install into (user or system)