135 lines
4.2 KiB
YAML
135 lines
4.2 KiB
YAML
name: nuget-install
|
|
description: "Download the desired .nupkg file."
|
|
inputs:
|
|
name:
|
|
description: "Name of the .nupkg file."
|
|
required: true
|
|
version:
|
|
description: "Version of the .nupkg file."
|
|
required: false
|
|
default: ""
|
|
prerelease:
|
|
description: "Install prerelease packages. Values: true, false."
|
|
required: false
|
|
default: "false"
|
|
outputDirectory:
|
|
description: "Directory for the output file."
|
|
required: true
|
|
default: "."
|
|
directDownload:
|
|
description: "Download the .nupkg file directly from the source."
|
|
required: true
|
|
default: "true"
|
|
excludeVersion:
|
|
description: "Exclude the version when downloading the .nuget package."
|
|
required: true
|
|
default: "false"
|
|
nupkgOnly:
|
|
description: "Only output the .nupkg file directly to the output directory."
|
|
required: true
|
|
default: "false"
|
|
additionalArgs:
|
|
description: "Additional arguments to use when dowloading the .nupkg file."
|
|
required: false
|
|
source:
|
|
description: "Name of the source to use."
|
|
required: true
|
|
default: ${{ github.repository_owner }}
|
|
url:
|
|
description: "Url of the NuGet repository."
|
|
required: true
|
|
default: ${{ github.server_url }}/_registry/nuget/${{ github.repository_owner }}/index.json
|
|
username:
|
|
description: "Username for the nuget repository to search."
|
|
required: true
|
|
default: ${{ github.actor }}
|
|
password:
|
|
description: "Password or ApiKey of the nuget repository to search."
|
|
required: true
|
|
default: ${{ github.token }}
|
|
tmpDir:
|
|
description: "Temporary directory. Default: _tmp"
|
|
required: true
|
|
default: _tmp
|
|
cleanTmp:
|
|
description: "Remove the temporary directory after use. Default: true"
|
|
required: true
|
|
default: "true"
|
|
outputs:
|
|
nupkg:
|
|
description: "The path to the .nupkg file."
|
|
value: ${{ steps.move.outputs.nupkg }}
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: "Make temporary folder if we are using .nupkg only."
|
|
id: mktmp
|
|
uses: act/common/utils/mktemp@master
|
|
with:
|
|
tmpDir: ${{ inputs.tmpDir }}
|
|
outputType: dir
|
|
- name: "Create Output Directory"
|
|
run: |
|
|
OUTPUT_DIR="${{ inputs.outputDirectory }}"
|
|
mkdir "$OUTPUT_DIR" -p
|
|
shell: bash
|
|
- name: "Build nuget command."
|
|
id: command
|
|
run: |
|
|
COMMAND="install ${{ inputs.name }} -OutputDirectory \"${{ steps.mktmp.outputs.tmp }}\" ${{ inputs.additionalArgs }}"
|
|
VERSION="${{ inputs.version }}"
|
|
PRERELEASE="${{ inputs.prerelease }}"
|
|
DIRECT="${{ inputs.directDownload }}"
|
|
|
|
if [ "$DIRECT" == "true" ]; then
|
|
COMMAND="$COMMAND -DirectDownload"
|
|
fi
|
|
if [ -n "$VERSION" ]; then
|
|
COMMAND="$COMMAND -Version $VERSION"
|
|
fi
|
|
if [ "$PRERELEASE" == "true" ]; then
|
|
COMMAND="$COMMAND -Prerelease"
|
|
fi
|
|
echo "command=$COMMAND" >> "$GITHUB_OUTPUT"
|
|
shell: bash
|
|
- name: "Download the .nupkg file."
|
|
uses: act/common/nuget/nuget@master
|
|
with:
|
|
command: ${{ steps.command.outputs.command }}
|
|
username: ${{ inputs.username }}
|
|
password: ${{ inputs.password }}
|
|
source: ${{ inputs.source }}
|
|
url: ${{ inputs.url }}
|
|
- name: "Take ownership of the artifacts."
|
|
uses: act/common/utils/chown@master
|
|
with:
|
|
file: ${{ steps.mktmp.outputs.tmp }}
|
|
- name: "Copy contents to output folder."
|
|
id: move
|
|
run: |
|
|
OUTPUT_DIR="${{ inputs.outputDirectory }}"
|
|
TMP_DIR="${{ steps.mktmp.outputs.tmp }}"
|
|
EXCLUDE_VERSION="${{ inputs.excludeVersion }}"
|
|
NUPKG_ONLY="${{ inputs.nupkgOnly }}"
|
|
|
|
if [ "$EXCLUDE_VERSION" == "true" ]; then
|
|
NUPKG_NAME="${{ inputs.name }}.nupkg"
|
|
else
|
|
# Get the subdirectory name
|
|
OUTDIR=($TMP_DIR/*)
|
|
BASE_NAME=$(basename "$OUTDIR")
|
|
NUPKG_NAME="${BASE_NAME}.nupkg"
|
|
fi
|
|
|
|
if [ "$NUPKG_ONLY" == "true" ]; then
|
|
mv "$OUTDIR/$NUPKG_NAME" "$OUTPUT_DIR"
|
|
echo "nupkg=$OUTPUT_DIR/$NUPKG_NAME" >> "$GITHUB_OUTPUT"
|
|
else
|
|
mv "$TMP_DIR"/* "$OUTPUT_DIR"
|
|
echo "nupkg=$OUTPUT_DIR/$OUTDIR/$NUPKG_NAME" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
shell: bash
|
|
- name: "Remove temporary files."
|
|
if: ${{ inputs.cleanTmp == 'true' }}
|
|
run: rm -rf "${{ inputs.tmpDir }}"
|
|
shell: bash |