mirror of
https://github.com/actions/download-artifact.git
synced 2025-07-27 00:48:28 +02:00
Add support for tilde expansion
This commit is contained in:
parent
83fcc74d04
commit
0d118dea33
3 changed files with 28 additions and 11 deletions
18
.github/workflows/test.yml
vendored
18
.github/workflows/test.yml
vendored
|
@ -68,16 +68,24 @@ jobs:
|
||||||
name: 'Artifact-A'
|
name: 'Artifact-A'
|
||||||
path: some/new/path
|
path: some/new/path
|
||||||
|
|
||||||
|
# Test downloading an artifact using tilde expansion
|
||||||
|
- name: Download artifact A
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
name: 'Artifact-A'
|
||||||
|
path: ~/some/path/with/a/tilde
|
||||||
|
|
||||||
- name: Verify successful download
|
- name: Verify successful download
|
||||||
run: |
|
run: |
|
||||||
$file = "some/new/path/file-A.txt"
|
$file1 = "some/new/path/file-A.txt"
|
||||||
if(!(Test-Path -path $file))
|
$file2 = "~/some/path/with/a/tilde/file-A.txt"
|
||||||
|
if(!(Test-Path -path $file1) -or !(Test-Path -path $file2))
|
||||||
{
|
{
|
||||||
Write-Error "Expected file does not exist"
|
Write-Error "Expected files do not exist"
|
||||||
}
|
}
|
||||||
if(!((Get-Content $file) -ceq "Lorem ipsum dolor sit amet"))
|
if(!((Get-Content $file1) -ceq "Lorem ipsum dolor sit amet") -or !((Get-Content $file2) -ceq "Lorem ipsum dolor sit amet"))
|
||||||
{
|
{
|
||||||
Write-Error "File contents of downloaded artifact are incorrect"
|
Write-Error "File contents of downloaded artifacts are incorrect"
|
||||||
}
|
}
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
|
||||||
|
|
9
dist/index.js
vendored
9
dist/index.js
vendored
|
@ -6634,6 +6634,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const core = __importStar(__webpack_require__(470));
|
const core = __importStar(__webpack_require__(470));
|
||||||
const artifact = __importStar(__webpack_require__(214));
|
const artifact = __importStar(__webpack_require__(214));
|
||||||
|
const os = __importStar(__webpack_require__(87));
|
||||||
const path_1 = __webpack_require__(622);
|
const path_1 = __webpack_require__(622);
|
||||||
const constants_1 = __webpack_require__(694);
|
const constants_1 = __webpack_require__(694);
|
||||||
function run() {
|
function run() {
|
||||||
|
@ -6641,12 +6642,14 @@ function run() {
|
||||||
try {
|
try {
|
||||||
const name = core.getInput(constants_1.Inputs.Name, { required: false });
|
const name = core.getInput(constants_1.Inputs.Name, { required: false });
|
||||||
const path = core.getInput(constants_1.Inputs.Path, { required: false });
|
const path = core.getInput(constants_1.Inputs.Path, { required: false });
|
||||||
|
// resolve tilde expansion
|
||||||
|
const resolvedPath = path_1.resolve(path.replace('~', os.homedir));
|
||||||
const artifactClient = artifact.create();
|
const artifactClient = artifact.create();
|
||||||
if (!name) {
|
if (!name) {
|
||||||
// download all artifacts
|
// download all artifacts
|
||||||
core.info('No artifact name specified, downloading all artifacts');
|
core.info('No artifact name specified, downloading all artifacts');
|
||||||
core.info('Creating an extra directory for each artifact that is being downloaded');
|
core.info('Creating an extra directory for each artifact that is being downloaded');
|
||||||
const downloadResponse = yield artifactClient.downloadAllArtifacts(path);
|
const downloadResponse = yield artifactClient.downloadAllArtifacts(resolvedPath);
|
||||||
core.info(`There were ${downloadResponse.length} artifacts downloaded`);
|
core.info(`There were ${downloadResponse.length} artifacts downloaded`);
|
||||||
for (const artifact of downloadResponse) {
|
for (const artifact of downloadResponse) {
|
||||||
core.info(`Artifact ${artifact.artifactName} was downloaded to ${artifact.downloadPath}`);
|
core.info(`Artifact ${artifact.artifactName} was downloaded to ${artifact.downloadPath}`);
|
||||||
|
@ -6658,12 +6661,12 @@ function run() {
|
||||||
const downloadOptions = {
|
const downloadOptions = {
|
||||||
createArtifactFolder: false
|
createArtifactFolder: false
|
||||||
};
|
};
|
||||||
const downloadResponse = yield artifactClient.downloadArtifact(name, path, downloadOptions);
|
const downloadResponse = yield artifactClient.downloadArtifact(name, resolvedPath, downloadOptions);
|
||||||
core.info(`Artifact ${downloadResponse.artifactName} was downloaded to ${downloadResponse.downloadPath}`);
|
core.info(`Artifact ${downloadResponse.artifactName} was downloaded to ${downloadResponse.downloadPath}`);
|
||||||
}
|
}
|
||||||
// output the directory that the artifact(s) was/were downloaded to
|
// output the directory that the artifact(s) was/were downloaded to
|
||||||
// if no path is provided, an empty string resolves to the current working directory
|
// if no path is provided, an empty string resolves to the current working directory
|
||||||
core.setOutput(constants_1.Outputs.DownloadPath, path_1.resolve(path));
|
core.setOutput(constants_1.Outputs.DownloadPath, resolvedPath);
|
||||||
core.info('Artifact download has finished successfully');
|
core.info('Artifact download has finished successfully');
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import * as artifact from '@actions/artifact'
|
import * as artifact from '@actions/artifact'
|
||||||
|
import * as os from 'os'
|
||||||
import {resolve} from 'path'
|
import {resolve} from 'path'
|
||||||
import {Inputs, Outputs} from './constants'
|
import {Inputs, Outputs} from './constants'
|
||||||
|
|
||||||
|
@ -8,6 +9,9 @@ async function run(): Promise<void> {
|
||||||
const name = core.getInput(Inputs.Name, {required: false})
|
const name = core.getInput(Inputs.Name, {required: false})
|
||||||
const path = core.getInput(Inputs.Path, {required: false})
|
const path = core.getInput(Inputs.Path, {required: false})
|
||||||
|
|
||||||
|
// resolve tilde expansion
|
||||||
|
const resolvedPath = resolve(path.replace('~', os.homedir))
|
||||||
|
|
||||||
const artifactClient = artifact.create()
|
const artifactClient = artifact.create()
|
||||||
if (!name) {
|
if (!name) {
|
||||||
// download all artifacts
|
// download all artifacts
|
||||||
|
@ -15,7 +19,9 @@ async function run(): Promise<void> {
|
||||||
core.info(
|
core.info(
|
||||||
'Creating an extra directory for each artifact that is being downloaded'
|
'Creating an extra directory for each artifact that is being downloaded'
|
||||||
)
|
)
|
||||||
const downloadResponse = await artifactClient.downloadAllArtifacts(path)
|
const downloadResponse = await artifactClient.downloadAllArtifacts(
|
||||||
|
resolvedPath
|
||||||
|
)
|
||||||
core.info(`There were ${downloadResponse.length} artifacts downloaded`)
|
core.info(`There were ${downloadResponse.length} artifacts downloaded`)
|
||||||
for (const artifact of downloadResponse) {
|
for (const artifact of downloadResponse) {
|
||||||
core.info(
|
core.info(
|
||||||
|
@ -30,7 +36,7 @@ async function run(): Promise<void> {
|
||||||
}
|
}
|
||||||
const downloadResponse = await artifactClient.downloadArtifact(
|
const downloadResponse = await artifactClient.downloadArtifact(
|
||||||
name,
|
name,
|
||||||
path,
|
resolvedPath,
|
||||||
downloadOptions
|
downloadOptions
|
||||||
)
|
)
|
||||||
core.info(
|
core.info(
|
||||||
|
@ -39,7 +45,7 @@ async function run(): Promise<void> {
|
||||||
}
|
}
|
||||||
// output the directory that the artifact(s) was/were downloaded to
|
// output the directory that the artifact(s) was/were downloaded to
|
||||||
// if no path is provided, an empty string resolves to the current working directory
|
// if no path is provided, an empty string resolves to the current working directory
|
||||||
core.setOutput(Outputs.DownloadPath, resolve(path))
|
core.setOutput(Outputs.DownloadPath, resolvedPath)
|
||||||
core.info('Artifact download has finished successfully')
|
core.info('Artifact download has finished successfully')
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
core.setFailed(err.message)
|
core.setFailed(err.message)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue