name: unity-project
description: "Run a Unity command using a project's version and a build target."
inputs:
  projectPath:
    description: "Path to the Unity project."
    required: true
    default: "."
  platform:
    description: "Unity Platform. Options: windows, windows32bit, mac, linux, android"
    required: true
  serial:
    description: "Unity license serial number. Or 'personal' for a personal license."
    required: true
    default: personal
  email:
    description: "Unity email."
    required: true
  password:
    description: "Unity password."
    required: true
  command:
    description: "Unity command to run."
    required: false
  unityBuilder:
    description: "Whether or not to use the UnityBuilder instead of a Unity command."
    required: false
  noGraphics:
    description: "Whether or not to use the graphics device when running Unity."
    required: false
    default: "true"
  cacheVolume:
    description: "Name of the volume to cache the Library folder to."
    required: false
  removeContainer:
    description: "Remove the mock container after building."
    required: false
    default: "false"
runs:
  using: "composite"
  steps:
  - name: "Get Unity Version."
    id: getVersion
    uses: act/unity/unity-get-version@master
    with:
      projectPath: ${{ inputs.projectPath }}
  - name: "Get Unity buildTarget."
    id: getTarget
    uses: act/unity/unity-get-buildtarget@master
    with:
      platform: ${{ inputs.platform }}
  - name: "Restore the cached Library folder."
    if: inputs.cacheVolume != null
    uses: act/common/docker/docker-cp@master
    with:
      volume: ${{ inputs.cacheVolume }}
      toPath: .
  - name: "Run Unity command."
    uses: act/unity/unity-command@master
    with:
      platform: ${{ inputs.platform }}
      version: ${{ steps.getVersion.outputs.projectVersion }}
      serial: ${{ inputs.serial }}
      email: ${{ inputs.email }}
      password: ${{ inputs.password }}
      command: -projectPath ${{ inputs.projectPath }} -buildTarget ${{ steps.getTarget.outputs.buildTarget }} ${{ inputs.command }}
      removeContainer: ${{ inputs.removeContainer }}
      noGraphics: ${{ inputs.noGraphics }}
  - name: "Cache the Library folder."
    if: inputs.cacheVolume != null
    uses: act/common/docker/docker-cp@master
    with:
      recreateVolume: true
      volume: ${{ inputs.cacheVolume }}
      fromPath: Library
