mirror of
				https://github.com/actions/download-artifact.git
				synced 2025-11-04 04:03:40 +00:00 
			
		
		
		
	* Add support for tilde expansion * Print resolved path with debug * Update README * README * Only replace tilde in certain scenarios * Fix
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import * as core from '@actions/core'
 | 
						|
import * as artifact from '@actions/artifact'
 | 
						|
import * as os from 'os'
 | 
						|
import {resolve} from 'path'
 | 
						|
import {Inputs, Outputs} from './constants'
 | 
						|
 | 
						|
async function run(): Promise<void> {
 | 
						|
  try {
 | 
						|
    const name = core.getInput(Inputs.Name, {required: false})
 | 
						|
    const path = core.getInput(Inputs.Path, {required: false})
 | 
						|
 | 
						|
    let resolvedPath
 | 
						|
    // resolve tilde expansions, path.replace only replaces the first occurrence of a pattern
 | 
						|
    if (path.startsWith(`~`)) {
 | 
						|
      resolvedPath = resolve(path.replace('~', os.homedir()))
 | 
						|
    } else {
 | 
						|
      resolvedPath = resolve(path)
 | 
						|
    }
 | 
						|
    core.debug(`Resolved path is ${resolvedPath}`)
 | 
						|
 | 
						|
    const artifactClient = artifact.create()
 | 
						|
    if (!name) {
 | 
						|
      // download all artifacts
 | 
						|
      core.info('No artifact name specified, downloading all artifacts')
 | 
						|
      core.info(
 | 
						|
        'Creating an extra directory for each artifact that is being downloaded'
 | 
						|
      )
 | 
						|
      const downloadResponse = await artifactClient.downloadAllArtifacts(
 | 
						|
        resolvedPath
 | 
						|
      )
 | 
						|
      core.info(`There were ${downloadResponse.length} artifacts downloaded`)
 | 
						|
      for (const artifact of downloadResponse) {
 | 
						|
        core.info(
 | 
						|
          `Artifact ${artifact.artifactName} was downloaded to ${artifact.downloadPath}`
 | 
						|
        )
 | 
						|
      }
 | 
						|
    } else {
 | 
						|
      // download a single artifact
 | 
						|
      core.info(`Starting download for ${name}`)
 | 
						|
      const downloadOptions = {
 | 
						|
        createArtifactFolder: false
 | 
						|
      }
 | 
						|
      const downloadResponse = await artifactClient.downloadArtifact(
 | 
						|
        name,
 | 
						|
        resolvedPath,
 | 
						|
        downloadOptions
 | 
						|
      )
 | 
						|
      core.info(
 | 
						|
        `Artifact ${downloadResponse.artifactName} was downloaded to ${downloadResponse.downloadPath}`
 | 
						|
      )
 | 
						|
    }
 | 
						|
    // 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
 | 
						|
    core.setOutput(Outputs.DownloadPath, resolvedPath)
 | 
						|
    core.info('Artifact download has finished successfully')
 | 
						|
  } catch (err) {
 | 
						|
    core.setFailed(err.message)
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
run()
 |