1
0
Fork 0
toolkit/packages/tool-cache
Frederik Wallner 2710592b73
tool-cache: Support for extracting xar compatible archives (#207)
* Test xar extraction

* Support for extracting xar compatible archives

* Only allow extractXar on mac

* Create xar during test instead of using prebuilt

* Update lockfiles

* Add verbose flag if debug

* Add extractXar example to readme

* Revert "Update lockfiles"

This reverts commit a6cbddccf6.

* Use node pkg in example

* Remove and ignore prebuilt xar

* Tests for non-existing dir and without flags

* Better arguments handling

* Make sure that target directory exists

Co-authored-by: Thomas Boop <52323235+thboop@users.noreply.github.com>
2020-07-15 14:49:23 -04:00
..
__tests__ tool-cache: Support for extracting xar compatible archives (#207) 2020-07-15 14:49:23 -04:00
scripts use zip and unzip from path (#161) 2019-09-24 17:07:08 -04:00
src tool-cache: Support for extracting xar compatible archives (#207) 2020-07-15 14:49:23 -04:00
README.md tool-cache: Support for extracting xar compatible archives (#207) 2020-07-15 14:49:23 -04:00
RELEASES.md tool-cache 1.3.5 release (#454) 2020-05-13 14:39:10 -04:00
package-lock.json bump tool-cache version 2020-05-19 13:38:19 -04:00
package.json Pipe audit results to a json file so lerna does not overflow (#515) 2020-07-14 16:05:53 -04:00
tsconfig.json Add tool-cache (#12) 2019-06-06 14:16:48 -04:00

README.md

@actions/tool-cache

Functions necessary for downloading and caching tools.

Usage

Download

You can use this to download tools (or other files) from a download URL:

const tc = require('@actions/tool-cache');

const node12Path = await tc.downloadTool('https://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz');

Extract

These can then be extracted in platform specific ways:

const tc = require('@actions/tool-cache');

if (process.platform === 'win32') {
  const node12Path = await tc.downloadTool('https://nodejs.org/dist/v12.7.0/node-v12.7.0-win-x64.zip');
  const node12ExtractedFolder = await tc.extractZip(node12Path, 'path/to/extract/to');

  // Or alternately
  const node12Path = await tc.downloadTool('https://nodejs.org/dist/v12.7.0/node-v12.7.0-win-x64.7z');
  const node12ExtractedFolder = await tc.extract7z(node12Path, 'path/to/extract/to');
}
else if (process.platform === 'darwin') {
  const node12Path = await tc.downloadTool('https://nodejs.org/dist/v12.7.0/node-v12.7.0.pkg');
  const node12ExtractedFolder = await tc.extractXar(node12Path, 'path/to/extract/to');
}
else {
  const node12Path = await tc.downloadTool('https://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz');
  const node12ExtractedFolder = await tc.extractTar(node12Path, 'path/to/extract/to');
}

Cache

Finally, you can cache these directories in our tool-cache. This is useful if you want to switch back and forth between versions of a tool, or save a tool between runs for self-hosted runners.

You'll often want to add it to the path as part of this step:

const tc = require('@actions/tool-cache');
const core = require('@actions/core');

const node12Path = await tc.downloadTool('https://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz');
const node12ExtractedFolder = await tc.extractTar(node12Path, 'path/to/extract/to');

const cachedPath = await tc.cacheDir(node12ExtractedFolder, 'node', '12.7.0');
core.addPath(cachedPath);

You can also cache files for reuse.

const tc = require('@actions/tool-cache');

const cachedPath = await tc.cacheFile('path/to/exe', 'destFileName.exe', 'myExeName', '1.1.0');

Find

Finally, you can find directories and files you've previously cached:

const tc = require('@actions/tool-cache');
const core = require('@actions/core');

const nodeDirectory = tc.find('node', '12.x', 'x64');
core.addPath(nodeDirectory);

You can even find all cached versions of a tool:

const tc = require('@actions/tool-cache');

const allNodeVersions = tc.findAllVersions('node');
console.log(`Versions of node available: ${allNodeVersions}`);