# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

name: License Eye Header
description: A full-featured license tool to check and fix license headers and dependencies' licenses.
branding:
  icon: book
  color: orange
inputs:
  log:
    description: The level of log, for example, "debug" or "info"
    required: false
    default: info
  config:
    description: The configuration file, for example, ".licenserc.yaml"
    required: false
    default: .licenserc.yaml
  token:
    description: |
      The token that license eye uses when it needs to comment on the pull request.
      Set to empty ("") to disable commenting on pull request.
    required: false
    default: ${{ github.token }}
  mode:
    description: |
      Which mode License Eye should be run in. Choices are `check` or `fix`. The
      default value is `check`.
    required: false
    default: check
runs:
  using: docker
  image: Dockerfile
  env:
    GITHUB_TOKEN: ${{ inputs.token }}
  args:
    - -v
    - ${{ inputs.log }}
    - -c
    - ${{ inputs.config }}
    - header
    - ${{ inputs.mode }}
