mirror of
https://github.com/denoland/setup-deno.git
synced 2026-08-17 00:00:45 +02:00
refactor: convert action to TS and bundle code (#95)
(cherry picked from commit 95bbb87724)
This commit is contained in:
+65
@@ -0,0 +1,65 @@
|
||||
import process from "node:process";
|
||||
import core from "@actions/core";
|
||||
import path from "node:path";
|
||||
import {
|
||||
getDenoVersionFromFile,
|
||||
parseVersionRange,
|
||||
resolveVersion,
|
||||
} from "./version.ts";
|
||||
import { install } from "./install.ts";
|
||||
|
||||
declare global {
|
||||
interface ImportMeta {
|
||||
dirname?: string;
|
||||
filename?: string;
|
||||
}
|
||||
}
|
||||
|
||||
function exit(message: string): never {
|
||||
core.setFailed(message);
|
||||
process.exit();
|
||||
}
|
||||
|
||||
async function main() {
|
||||
try {
|
||||
const denoVersionFile = core.getInput("deno-version-file");
|
||||
const range = parseVersionRange(
|
||||
denoVersionFile
|
||||
? getDenoVersionFromFile(denoVersionFile)
|
||||
: core.getInput("deno-version"),
|
||||
);
|
||||
|
||||
if (range === null) {
|
||||
exit("The passed version range is not valid.");
|
||||
}
|
||||
|
||||
const version = await resolveVersion(range);
|
||||
if (version === null) {
|
||||
exit("Could not resolve a version for the given range.");
|
||||
}
|
||||
|
||||
core.info(`Going to install ${version.kind} version ${version.version}.`);
|
||||
|
||||
await install(version);
|
||||
|
||||
core.info(
|
||||
`::add-matcher::${
|
||||
path.join(
|
||||
import.meta.dirname ?? ".",
|
||||
"..",
|
||||
"deno-problem-matchers.json",
|
||||
)
|
||||
}`,
|
||||
);
|
||||
|
||||
core.setOutput("deno-version", version.version);
|
||||
core.setOutput("release-channel", version.kind);
|
||||
|
||||
core.info("Installation complete.");
|
||||
} catch (err) {
|
||||
core.setFailed((err instanceof Error) ? err : String(err));
|
||||
process.exit();
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user