mirror of
https://git.mirrors.martin98.com/https://github.com/actions/toolkit
synced 2025-08-22 01:59:21 +08:00

* 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 a6cbddccf6bf8f7278948e719dc9e28329608cdf. * 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>
87 lines
2.6 KiB
Markdown
87 lines
2.6 KiB
Markdown
# `@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:
|
|
|
|
```js
|
|
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:
|
|
|
|
```js
|
|
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:
|
|
|
|
```js
|
|
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.
|
|
|
|
```js
|
|
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:
|
|
|
|
```js
|
|
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:
|
|
|
|
```js
|
|
const tc = require('@actions/tool-cache');
|
|
|
|
const allNodeVersions = tc.findAllVersions('node');
|
|
console.log(`Versions of node available: ${allNodeVersions}`);
|
|
```
|