name: "Black"
description: "The uncompromising Python code formatter."
author: "Łukasz Langa and contributors to Black"
inputs:
  options:
    description:
      "Options passed to Black. Use `black --help` to see available options. Default:
      '--check --diff'"
    required: false
    default: "--check --diff"
  src:
    description: "Source to run Black. Default: '.'"
    required: false
    default: "."
  jupyter:
    description:
      "Set this option to true to include Jupyter Notebook files. Default: false"
    required: false
    default: false
  black_args:
    description: "[DEPRECATED] Black input arguments."
    required: false
    default: ""
    deprecationMessage:
      "Input `with.black_args` is deprecated. Use `with.options` and `with.src` instead."
  version:
    description: 'Python Version specifier (PEP440) - e.g. "21.5b1"'
    required: false
    default: ""
  use_pyproject:
    description: Read Black version specifier from pyproject.toml if `true`.
    required: false
    default: "false"
  summary:
    description: "Whether to add the output to the workflow summary"
    required: false
    default: true
  output-file:
    description: >
      Optional path to write Black output to a file in addition to stdout. Useful for
      keeping GitHub Actions logs clean when using --diff or --check.
    required: false
    default: ""
branding:
  color: "black"
  icon: "check-circle"
runs:
  using: composite
  steps:
    - name: black
      run: |
        # Even when black fails, do not close the shell
        set +e

        if [ "$RUNNER_OS" == "Windows" ]; then
          runner="python"
        else
          runner="python3"
        fi

        out=$(${runner} $GITHUB_ACTION_PATH/action/main.py)
        exit_code=$?

        # Display the raw output in the step
        echo "${out}"

        if [ "${INPUT_SUMMARY}" == "true" ]; then
          # Display the Markdown output in the job summary
          echo "\`\`\`python" >> $GITHUB_STEP_SUMMARY
          echo "${out}" >> $GITHUB_STEP_SUMMARY
          echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
        fi

        # Exit with the exit-code returned by Black
        exit ${exit_code}
      env:
        # TODO: Remove once https://github.com/actions/runner/issues/665 is fixed.
        INPUT_OPTIONS: ${{ inputs.options }}
        INPUT_SRC: ${{ inputs.src }}
        INPUT_JUPYTER: ${{ inputs.jupyter }}
        INPUT_BLACK_ARGS: ${{ inputs.black_args }}
        INPUT_VERSION: ${{ inputs.version }}
        INPUT_USE_PYPROJECT: ${{ inputs.use_pyproject }}
        INPUT_SUMMARY: ${{ inputs.summary }}
        OUTPUT_FILE: ${{ inputs.output-file }}
        pythonioencoding: utf-8
      shell: bash
