DannyBen/bashly

View on GitHub
support/schema/bashly.yml

Summary

Maintainability
Test Coverage
$schema: http://json-schema.org/draft-07/schema
definitions:
  argument:
    title: argument
    description: |-
      A positional argument of the current script or sub-command
      https://bashly.dannyb.co/configuration/argument/
    type: object
    required:
      - name
    properties:
      name:
        title: name
        description: |-
          A name of the current positional argument
          https://bashly.dannyb.co/configuration/argument/#name
        type: string
        minLength: 1
        examples:
          - user
      help:
        title: help
        description: |-
          A description of the current positional argument
          https://bashly.dannyb.co/configuration/argument/#help
        type: string
        minLength: 1
        examples:
          - AWS Username
      default:
        title: default
        description: |-
          A default value of the current positional argument
          https://bashly.dannyb.co/configuration/argument/#default
        oneOf:
          - type: string
          - type: array
            minItems: 1
            items:
              type: string
        examples:
          - '*.jpg'
      required:
        title: required
        description: |-
          Whether the current positional argument is required
          https://bashly.dannyb.co/configuration/argument/#required
        type: boolean
        default: true
      allowed:
        title: allowed
        description: |-
          Valid values of the current positional argument
          https://bashly.dannyb.co/configuration/argument/#allowed
        type: array
        minLength: 1
        uniqueItems: true
        items:
          description: A valid value of the current positional argument
          type: string
          minLength: 1
          examples:
            - eu
      repeatable:
        title: repeatable
        description: |-
          Whether the current positional argument can be repeated
          https://bashly.dannyb.co/configuration/argument/#repeatable
        type: boolean
        default: false
      validate:
        title: validate
        description: |-
          A validation function of the current positional argument
          https://bashly.dannyb.co/configuration/argument/#validate
        type: string
        examples:
          - file_exists
          - dir_exists
          - integer
          - non_empty
      unique:
        title: unique
        description: |-
          Whether the current positional argument is unique
          https://bashly.dannyb.co/configuration/argument/#unique
        type: boolean
        default: false
    dependencies:
      unique:
        properties:
          repeatable:
            const: true
    patternProperties: &custom-properties
      ^x_.:
        title: custom property
        description: A custom property of any type
        examples:
          - Anything
    additionalProperties: false
  flag:
    title: flag
    description: |-
      A flag of the current script or sub-command
      https://bashly.dannyb.co/configuration/flag/
    type: object
    anyOf:
      - required:
          - long
      - required:
          - short
    properties:
      long:
        title: long
        description: |-
          A long form of the current flag
          https://bashly.dannyb.co/configuration/flag/#long
        type: string
        pattern: ^--
        examples:
          - --ssh
      short:
        title: short
        description: |-
          A short form of the current flag
          https://bashly.dannyb.co/configuration/flag/#short
        type: string
        pattern: ^-[^-]
        examples:
          - -s
      help:
        title: help
        description: |-
          A description of the current flag
          https://bashly.dannyb.co/configuration/flag/#help
        type: string
        minLength: 1
        examples:
          - Clone using SSH
      arg:
        title: arg
        description: |-
          An argument name of the current flag
          https://bashly.dannyb.co/configuration/flag/#arg
        type: string
        minLength: 1
        examples:
          - user
      default:
        title: default
        description: |-
          A default value of the current flag
          https://bashly.dannyb.co/configuration/flag/#default
        oneOf:
          - type: string
          - type: array
            minItems: 1
            items:
              type: string
        examples:
          - '*.jpg'
      required:
        title: required
        description: |-
          Whether the current flag is required
          https://bashly.dannyb.co/configuration/flag/#required
        type: boolean
        default: true
      allowed:
        title: allowed
        description: |-
          Valid values of the current flag
          https://bashly.dannyb.co/configuration/flag/#allowed
        type: array
        minLength: 1
        uniqueItems: true
        items:
          description: A valid value of the current positional argument
          type: string
          minLength: 1
          examples:
            - user
      conflicts:
        title: conflicts
        description: |-
          Mutually exclusive flags of the current flag
          https://bashly.dannyb.co/configuration/flag/#conflicts
        type: array
        minLength: 1
        uniqueItems: true
        items:
          description: A mutually exclusive flag of the current flag
          type: string
          minLength: 1
          examples:
            - --no-cache
      completions:
        title: completions
        description: |-
          Completions of the current flag
          https://bashly.dannyb.co/configuration/flag/#completions
        type: array
        minLength: 1
        uniqueItems: true
        items:
          description: A completion of the current flag
          type: string
          minLength: 1
      private:
        title: private
        description: |-
          Whether the current flag is hidden from help
          https://bashly.dannyb.co/configuration/flag/#private
        type: boolean
        default: false
      repeatable:
        title: repeatable
        description: |-
          Whether the current flag can be repeated
          https://bashly.dannyb.co/configuration/flag/#repeatable
        type: boolean
        default: false
      validate:
        title: validate
        description: |-
          A validation function of the current flag
          https://bashly.dannyb.co/configuration/flag/#validate
        type: string
        examples:
          - file_exists
          - dir_exists
          - integer
          - non_empty
      unique:
        title: unique
        description: |-
          Whether the current flag is unique
          https://bashly.dannyb.co/configuration/flag/#unique
        type: boolean
        default: false
    dependencies:
      unique:
        properties:
          repeatable:
            const: true
    patternProperties: *custom-properties
    additionalProperties: false
  environment-variable:
    title: environment variable
    description: |-
      An environment variable of the current application
      https://bashly.dannyb.co/configuration/environment-variable/#environment-variable
    type: object
    required:
      - name
    properties:
      name:
        title: name
        description: |-
          A name of the current environment variable
          https://bashly.dannyb.co/configuration/environment-variable/#name
        type: string
        minLength: 1
        examples:
          - config_path
      help:
        title: help
        description: |-
          A description of the current environment variable
          https://bashly.dannyb.co/configuration/environment-variable/#help
        type: string
        minLength: 1
        examples:
          - Location of the config file
      private:
        title: private
        description: |-
          Whether the current environment variable is hidden from help
          https://bashly.dannyb.co/configuration/environment-variable/#private
        type: boolean
        default: false
      required:
        title: required
        description: |-
          Whether the current environment variable is required
          https://bashly.dannyb.co/configuration/environment-variable/#required
        type: boolean
        default: true
      allowed:
        title: allowed
        description: |-
          Valid values of the current environment variable
          https://bashly.dannyb.co/configuration/environment-variable/#allowed
        type: array
        minLength: 1
        uniqueItems: true
        items:
          description: A valid value of the current environment variable
          type: string
          minLength: 1
          examples:
            - production
      default:
        title: default
        description: |-
          A default value of the current environment variable
          https://bashly.dannyb.co/configuration/environment-variable/#default
        type: string
        examples:
          - ~/config.ini
    patternProperties: *custom-properties
    additionalProperties: false
  name-property:
    title: name
    description: |-
      A name of the current script or sub-command
      https://bashly.dannyb.co/configuration/command/#name
    type: string
    minLength: 1
    examples:
      - source
  sub-command-alias-property:
    $comment: '''sub-command-'' prefix is used as this property is marked with ''Sub-Commands Only'' badge'
    title: alias
    oneOf:
      - description: |-
          An alias of the current sub-command
          https://bashly.dannyb.co/configuration/command/#alias
        type: string
        minLength: 1
        examples:
          - s
      - description: |-
          Aliases of the current sub-command
          https://bashly.dannyb.co/configuration/command/#alias
        type: array
        minItems: 1
        uniqueItems: true
        items:
          description: An alias of the current sub-command
          type: string
          minLength: 1
          examples:
            - s
  help-property:
    title: help
    description: |-
      A description of the current script or sub-command
      https://bashly.dannyb.co/configuration/command/#help
    type: string
    minLength: 1
    examples:
      - URL to download from
  args-property:
    title: args
    description: |-
      Arguments of the current script or sub-command
      https://bashly.dannyb.co/configuration/command/#args
    type: array
    uniqueItems: true
    minItems: 1
    items:
      $ref: '#/definitions/argument'
  flags-property:
    title: flags
    description: |-
      Flags of the current script or sub-command
      https://bashly.dannyb.co/configuration/command/#flags
    type: array
    uniqueItems: true
    minItems: 1
    items:
      $ref: '#/definitions/flag'
  commands-property:
    title: commands
    description: |-
      Subcommands of the current script or sub-command
      https://bashly.dannyb.co/configuration/command/#commands
    type: array
    uniqueItems: true
    items:
      $ref: '#/definitions/command-property'
  root-version-property:
    $comment: '''root-'' prefix is used as this property is marked with ''Root Command Only'' badge'
    title: version
    description: |-
      A version of the current script
      https://bashly.dannyb.co/configuration/command/#version
    type: string
    minLength: 1
    examples:
      - 0.1.0
  sub-command-default-property:
    title: default
    description: |-
      Whether to use the current command as a fallback when CLI used incorrectly
      https://bashly.dannyb.co/configuration/command/#default
    oneOf:
      - type: boolean
        default: false
      - type: string
        enum:
          - force
  environment-variables-property:
    title: environment variables
    description: |-
      Environment variables of the current application
      https://bashly.dannyb.co/configuration/environment-variable/#environment-variable
    type: array
    uniqueItems: true
    items:
      $ref: '#/definitions/environment-variable'
  examples-property:
    title: examples
    oneOf:
      - description: |-
          An example of the current script or sub-command
          https://bashly.dannyb.co/configuration/command/#examples
        type: string
        minLength: 1
        examples:
          - cli upload profile.png -u admin -p s3cr3t
      - description: |-
          Examples of the current script or sub-command
          https://bashly.dannyb.co/configuration/command/#examples
        type: array
        minItems: 1
        uniqueItems: true
        items:
          description: |-
            An example of the current script or sub-command
            https://bashly.dannyb.co/configuration/command/#examples
          type: string
          minLength: 1
          examples:
            - cli upload profile.png -u admin -p s3cr3t
  footer-property:
    title: footer
    description: |-
      A description footer for the current script or sub-command
      https://bashly.dannyb.co/configuration/command/#footer
    type: string
    minLength: 1
    examples:
      - This will appear at the end of the --help message
  sub-command-group-property:
    title: group
    description: |-
      A group of the current sub-command
      https://bashly.dannyb.co/configuration/command/#group
    type: string
    minLength: 1
    examples:
      - File
  catch-all-property:
    title: catch all
    description: |-
      Whether to allow additional arguments or flags for the current command
      https://bashly.dannyb.co/configuration/command/#catch_all
    oneOf:
      - type: boolean
        default: false
      - type: string
        minLength: 1
        examples:
          - Additional arguments or flags for AWS CLI
      - type: object
        properties:
          label:
            description: |-
              A label for the current argument or flag
              https://bashly.dannyb.co/configuration/command/#catch_all
            type: string
            minLength: 1
            examples:
              - AWS Params
          help:
            description: |-
              A description for the current argument or flag
              https://bashly.dannyb.co/configuration/command/#catch_all
            type: string
            minLength: 1
            examples:
              - Additional arguments or flags for AWS CLI
          required:
            description: |-
              Whether the current argument or flag is required
              https://bashly.dannyb.co/configuration/command/#catch_all
            type: boolean
            default: false
        additionalProperties: false
  completions-property:
    title: completions
    description: |-
      Completions of the current script or sub-command
      https://bashly.dannyb.co/configuration/command/#completions
    type: array
    minLength: 1
    uniqueItems: true
    items:
      description: A completion of the current script or sub-command
      type: string
      minLength: 1
      examples:
        - <alias>
        - <arrayvar>
        - <binding>
        - <builtin>
        - <command>
        - <directory>
        - <disabled>
        - <enabled>
        - <export>
        - <file>
        - <function>
        - <group>
        - <helptopic>
        - <hostname>
        - <job>
        - <keyword>
        - <running>
        - <service>
        - <setopt>
        - <shopt>
        - <signal>
        - <stopped>
        - <user>
        - <variable>
  dependencies-command-property:
    title: command
    description: |-
      Dependencies of the current script or sub-command
      https://bashly.dannyb.co/configuration/dependency/#command
    type: array
    minItems: 1
    uniqueItems: true
    items:
      description: |-
        A dependency of the current script or sub-command
        https://bashly.dannyb.co/configuration/dependency/#command
      type: string
      minLength: 1
      examples:
        - git
  dependencies-help-property:
    title: help
    description: |-
      A help for the current dependency
      https://bashly.dannyb.co/configuration/dependency/#help
    type: string
    minLength: 1
    examples:
      - Run 'sudo apt install git'
  dependencies-property:
    title: dependencies
    oneOf:
      - description: |-
          Dependencies of the current script or sub-command
          https://bashly.dannyb.co/configuration/dependency/#dependency
        type: array
        minLength: 1
        uniqueItems: true
        items:
          description: |-
            A dependency of the current script or sub-command
            https://bashly.dannyb.co/configuration/dependency/#dependency
          oneOf:
            - type: string
              minLength: 1
            - type: "null"
      - description: |-
          Dependencies of the current script or sub-command
          https://bashly.dannyb.co/configuration/dependency/#dependency
        type: object
        patternProperties:
          .:
            description: |-
              A dependency of the current script or sub-command
              https://bashly.dannyb.co/configuration/dependency/#dependency
            oneOf:
              - type: string
                minLength: 1
              - type: "null"
              - type: object
                required:
                  - command
                properties:
                  command:
                    $ref: '#/definitions/dependencies-command-property'
                  help:
                    $ref: '#/definitions/dependencies-help-property'
                additionalProperties: false
        additionalProperties: false
  sub-command-expose-property:
    title: expose
    description: |-
      Whether to expose the current sub-command if it has sub-commands
      https://bashly.dannyb.co/configuration/command/#expose
    oneOf:
      - type: boolean
        default: false
      - type: string
        enum:
          - always
  root-extensible-property:
    title: extensible
    description: |-
      Whether to delegate the current unknown command to an external executable
      https://bashly.dannyb.co/configuration/command/#extensible
    oneOf:
      - type: boolean
        default: false
      - type: string
        examples:
          - git
  filename-property:
    title: filename
    description: |-
      A partial file path of the current script or sub-command
      https://bashly.dannyb.co/configuration/command/#filename
    type: string
    minLength: 1
    examples:
      - dir_commands/list.sh
  filters-property:
    title: filters
    description: |-
      Filters of the current script or sub-command
      https://bashly.dannyb.co/configuration/command/#filters
    type: array
    minItems: 1
    items:
      description: A filter of the current script or sub-command
      type: string
      minLength: 1
      examples:
        - docker_running
  function-property:
    title: function
    description: |-
      An internal function for the current script or sub-command
      https://bashly.dannyb.co/configuration/command/#function
    type: string
    minLength: 1
    examples:
      - deprecated_container_start
  sub-command-private-property:
    title: private
    description: |-
      Whether hide the current sub-command from help
      https://bashly.dannyb.co/configuration/command/#private
    type: boolean
    default: false
  sub-command-import-property:
    title: import
    description: |-
      A file import for the current sub-command
      https://bashly.dannyb.co/configuration/command/#import
    type: string
    minLength: 1
    examples:
      - src/download_command.sh
  command-property:
    title: command
    description: |-
      A command of the current application
      https://bashly.dannyb.co/configuration/command/#command
    type: object
    properties:
      name:
        $ref: '#/definitions/name-property'
      alias:
        $ref: '#/definitions/sub-command-alias-property'
      help:
        $ref: '#/definitions/help-property'
      args:
        $ref: '#/definitions/args-property'
      flags:
        $ref: '#/definitions/flags-property'
      commands:
        $ref: '#/definitions/commands-property'
      default:
        $ref: '#/definitions/sub-command-default-property'
      environment_variables:
        $ref: '#/definitions/environment-variables-property'
      examples:
        $ref: '#/definitions/examples-property'
      footer:
        $ref: '#/definitions/footer-property'
      group:
        $ref: '#/definitions/sub-command-group-property'
      catch_all:
        $ref: '#/definitions/catch-all-property'
      completions:
        $ref: '#/definitions/completions-property'
      dependencies:
        $ref: '#/definitions/dependencies-property'
      expose:
        $ref: '#/definitions/sub-command-expose-property'
      filename:
        $ref: '#/definitions/filename-property'
      filters:
        $ref: '#/definitions/filters-property'
      function:
        $ref: '#/definitions/function-property'
      private:
        $ref: '#/definitions/sub-command-private-property'
      import:
        $ref: '#/definitions/sub-command-import-property'
    patternProperties: *custom-properties
    additionalProperties: false
title: cli
description: |-
  A CLI of the current application
  https://bashly.dannyb.co/usage/getting-started/
type: object
properties:
  name:
    $ref: '#/definitions/name-property'
  help:
    $ref: '#/definitions/help-property'
  args:
    $ref: '#/definitions/args-property'
  flags:
    $ref: '#/definitions/flags-property'
  commands:
    $ref: '#/definitions/commands-property'
  version:
    $ref: '#/definitions/root-version-property'
  environment_variables:
    $ref: '#/definitions/environment-variables-property'
  examples:
    $ref: '#/definitions/examples-property'
  footer:
    $ref: '#/definitions/footer-property'
  catch_all:
    $ref: '#/definitions/catch-all-property'
  completions:
    $ref: '#/definitions/completions-property'
  dependencies:
    $ref: '#/definitions/dependencies-property'
  extensible:
    $ref: '#/definitions/root-extensible-property'
  filename:
    $ref: '#/definitions/filename-property'
  filters:
    $ref: '#/definitions/filters-property'
  function:
    $ref: '#/definitions/function-property'
patternProperties: *custom-properties
additionalProperties: false