mirror of
https://github.com/moonrepo/setup-rust.git
synced 2025-04-29 13:30:03 +00:00
Install rustup.
This commit is contained in:
parent
c5f1dc6e9e
commit
b00fdf0c6c
7 changed files with 46 additions and 12 deletions
|
@ -7,4 +7,7 @@ module.exports = {
|
||||||
project: 'tsconfig.json',
|
project: 'tsconfig.json',
|
||||||
tsconfigRootDir: __dirname,
|
tsconfigRootDir: __dirname,
|
||||||
},
|
},
|
||||||
|
rules: {
|
||||||
|
'unicorn/prefer-top-level-await': 'off',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# 1.0.0
|
# 1.0.0
|
||||||
|
|
||||||
|
- Will now install `rustup` if it does not exist in the environment.
|
||||||
- Added musl support to `cargo-binstall`.
|
- Added musl support to `cargo-binstall`.
|
||||||
|
|
||||||
# 0.6.0
|
# 0.6.0
|
||||||
|
|
|
@ -147,11 +147,6 @@ Outside of being evergreen, this action also supports the following features:
|
||||||
- Assumes `rustup`, `cargo`, and other commands are available globally. This allows you to use them
|
- Assumes `rustup`, `cargo`, and other commands are available globally. This allows you to use them
|
||||||
directly in a `run` command, without having to use `actions-rs/cargo`.
|
directly in a `run` command, without having to use `actions-rs/cargo`.
|
||||||
|
|
||||||
However, this action _does not_:
|
|
||||||
|
|
||||||
- Install `rustup` if it does not exist, while `actions-rs` will. This is typically fine if using
|
|
||||||
GitHub provided runners as all Rust tooling comes pre-installed.
|
|
||||||
|
|
||||||
### `dtolnay/rust-toolchain`
|
### `dtolnay/rust-toolchain`
|
||||||
|
|
||||||
Our action is very similar to theirs, which was a great implementation reference, but our action
|
Our action is very similar to theirs, which was a great implementation reference, but our action
|
||||||
|
|
34
index.ts
34
index.ts
|
@ -1,8 +1,39 @@
|
||||||
import path from 'path';
|
import fs from 'node:fs';
|
||||||
|
import os from 'node:os';
|
||||||
|
import path from 'node:path';
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
|
import * as exec from '@actions/exec';
|
||||||
|
import * as io from '@actions/io';
|
||||||
|
import * as tc from '@actions/tool-cache';
|
||||||
import { CARGO_HOME, installBins, restoreCache } from './src/cargo';
|
import { CARGO_HOME, installBins, restoreCache } from './src/cargo';
|
||||||
import { installToolchain } from './src/rust';
|
import { installToolchain } from './src/rust';
|
||||||
|
|
||||||
|
export async function installRustup() {
|
||||||
|
try {
|
||||||
|
await io.which('rustup', true);
|
||||||
|
return;
|
||||||
|
} catch {
|
||||||
|
// Doesn't exist
|
||||||
|
}
|
||||||
|
|
||||||
|
core.info('rustup does not exist, attempting to install');
|
||||||
|
|
||||||
|
const scriptPath = path.join(os.tmpdir(), 'rustup-init');
|
||||||
|
const script = await tc.downloadTool(
|
||||||
|
process.platform === 'win32' ? 'https://win.rustup.rs' : 'https://sh.rustup.rs',
|
||||||
|
scriptPath,
|
||||||
|
);
|
||||||
|
|
||||||
|
core.info(`Downloaded installation script to ${script}`);
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-magic-numbers
|
||||||
|
await fs.promises.chmod(script, 0o755);
|
||||||
|
|
||||||
|
await exec.exec(script, ['--default-toolchain', 'none', '-y']);
|
||||||
|
|
||||||
|
core.info('Installed rustup');
|
||||||
|
}
|
||||||
|
|
||||||
async function run() {
|
async function run() {
|
||||||
core.info('Setting cargo environment variables');
|
core.info('Setting cargo environment variables');
|
||||||
|
|
||||||
|
@ -14,6 +45,7 @@ async function run() {
|
||||||
core.addPath(path.join(CARGO_HOME, 'bin'));
|
core.addPath(path.join(CARGO_HOME, 'bin'));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
await installRustup();
|
||||||
await installToolchain();
|
await installToolchain();
|
||||||
await installBins();
|
await installBins();
|
||||||
|
|
||||||
|
|
|
@ -34,5 +34,8 @@
|
||||||
"prettier-config-moon": "^1.1.2",
|
"prettier-config-moon": "^1.1.2",
|
||||||
"tsconfig-moon": "^1.3.0",
|
"tsconfig-moon": "^1.3.0",
|
||||||
"typescript": "^5.1.6"
|
"typescript": "^5.1.6"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import crypto from 'crypto';
|
import crypto from 'node:crypto';
|
||||||
import fs from 'fs';
|
import fs from 'node:fs';
|
||||||
import os from 'os';
|
import os from 'node:os';
|
||||||
import path from 'path';
|
import path from 'node:path';
|
||||||
import * as cache from '@actions/cache';
|
import * as cache from '@actions/cache';
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as exec from '@actions/exec';
|
import * as exec from '@actions/exec';
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* eslint-disable import/no-mutable-exports */
|
/* eslint-disable import/no-mutable-exports */
|
||||||
|
|
||||||
import fs from 'fs';
|
import fs from 'node:fs';
|
||||||
import path from 'path';
|
import path from 'node:path';
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as exec from '@actions/exec';
|
import * as exec from '@actions/exec';
|
||||||
import TOML from '@ltd/j-toml';
|
import TOML from '@ltd/j-toml';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue