forked from MarkusJx/install-boost
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstallV2.ts
83 lines (71 loc) · 2.22 KB
/
installV2.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import * as core from '@actions/core';
import * as path from 'path';
import { restoreCache, saveCache } from './cache';
import {
cleanup,
createDirectory,
downloadBoost,
getVersions,
OptionsV2,
parseArguments,
setOutputVariables,
untarBoost,
VersionsRecord,
} from './shared';
const VERSION_MANIFEST_ADDR: string =
'https://raw.githubusercontent.com/MarkusJx/prebuilt-boost/main/versions-manifest.json';
export default async function installV2(opts: OptionsV2): Promise<void> {
if (opts.cache) {
console.log('Trying to retrieve cache...');
if (await restoreCache(opts)) {
console.log('Cache successfully restored');
setOutputVariables(
path.join(opts.BOOST_ROOT_DIR, 'boost'),
opts.boost_version
);
return;
} else {
console.log('Cache miss');
}
}
console.log('Downloading versions-manifest.json...');
const versions: VersionsRecord = await getVersions(VERSION_MANIFEST_ADDR);
const {
boost_version,
toolset,
platform_version,
link,
arch,
BOOST_ROOT_DIR,
} = opts;
console.log('Parsing versions-manifest.json...');
const ver_data = parseArguments(
versions,
boost_version,
toolset,
platform_version,
link,
arch
);
const download_url: string = ver_data.url;
const filename: string = ver_data.filename;
core.startGroup(`Create ${BOOST_ROOT_DIR}`);
createDirectory(BOOST_ROOT_DIR);
core.endGroup();
core.startGroup('Download Boost');
await downloadBoost(download_url, path.join(BOOST_ROOT_DIR, filename));
core.endGroup();
let base_dir: string = filename.substring(0, filename.lastIndexOf('.'));
base_dir = base_dir.substring(0, base_dir.lastIndexOf('.'));
core.startGroup(`Extract ${filename}`);
await untarBoost(base_dir, BOOST_ROOT_DIR, false);
core.endGroup();
core.startGroup('Clean up');
cleanup(BOOST_ROOT_DIR, base_dir);
core.endGroup();
setOutputVariables(path.join(BOOST_ROOT_DIR, 'boost'), base_dir);
if (opts.cache) {
console.log('Saving cache');
saveCache(opts);
}
}