# 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
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 }}
