rs-toolchain/src/args.ts

52 lines
1.5 KiB
TypeScript
Raw Normal View History

2019-10-16 15:12:53 +03:00
import {input} from '@actions-rs/core';
import {info, debug} from "@actions/core";
import {existsSync, readFileSync} from 'fs';
2019-09-12 16:44:29 +03:00
export interface ToolchainOptions {
name: string,
2019-10-16 15:12:53 +03:00
target: string | undefined,
2019-09-12 16:44:29 +03:00
default: boolean,
2019-10-16 15:12:53 +03:00
override: boolean,
profile: string | undefined,
components: string[] | undefined,
2019-09-12 16:44:29 +03:00
}
export function toolchain_args(overrideFile: string): ToolchainOptions {
2019-10-16 15:12:53 +03:00
let components: string[] | undefined = input.getInputList('components');
if (components && components.length === 0) {
components = undefined;
}
2019-09-12 16:44:29 +03:00
return {
name: determineToolchain(overrideFile),
2019-10-16 15:12:53 +03:00
target: input.getInput('target') || undefined,
default: input.getInputBool('default'),
override: input.getInputBool('override'),
profile: input.getInput('profile') || undefined,
components: components,
};
2019-09-12 16:44:29 +03:00
}
function determineToolchain(overrideFile: string): string {
const toolchainInput = input.getInput('toolchain', {required: false});
if (toolchainInput) {
debug(`using toolchain from input: ${toolchainInput}`);
return toolchainInput
}
if (!existsSync(overrideFile)) {
throw new Error("toolchain input was not given and repository does not have a rust-toolchain file")
}
const rustToolchainFile = readFileSync(overrideFile, {
encoding: "utf-8",
flag: "r"
}).trim();
debug(`using toolchain from rust-toolchain file: ${rustToolchainFile}`);
return rustToolchainFile;
}