Repository navigation
Expand file tree
/
Copy pathinstall.ts
More file actions
80 lines (73 loc) · 2.52 KB
/
Copy pathinstall.ts
File metadata and controls
80 lines (73 loc) · 2.52 KB
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
import {fileURLToPath} from 'url';
import path from 'path';
import {exec} from '@actions/exec';
import fs from 'fs';
import * as config from './config.js';
import * as core from './core.js';
import * as coverage from './coverage.js';
import * as extensions from './extensions.js';
import * as tools from './tools.js';
import * as utils from './utils.js';
const dirname = path.dirname(fileURLToPath(import.meta.url));
/**
* Build the script
*
* @param os
*/
export async function getScript(os: string): Promise<string> {
const url = 'https://setup-php.com/sponsor';
const filename = os + (await utils.scriptExtension(os));
const script_path = path.join(dirname, '../src/scripts', filename);
const run_path = script_path.replace(os, 'run');
const extension_csv: string = utils.sanitizeShellInput(
await utils.getInput('extensions', false),
true
);
const ini_values_csv: string = await utils.getInput('ini-values', false);
const coverage_driver: string = await utils.getInput('coverage', false);
const tools_csv: string = await utils.getInput('tools', false);
const version: string = await utils.parseVersion(
await utils.readPHPVersion()
);
const ini_file: string = await utils.parseIniFile(
await utils.getInput('ini-file', false)
);
let script = await utils.joins('.', script_path, `'${version}'`, ini_file);
if (extension_csv) {
script += await extensions.addExtension(extension_csv, version, os);
}
script += await tools.addTools(tools_csv, version, os);
if (coverage_driver) {
script += await coverage.addCoverage(coverage_driver, version, os);
}
if (ini_values_csv) {
script += await config.addINIValues(ini_values_csv, os);
}
script += '\n' + (await utils.stepLog(`Sponsor setup-php`, os));
script += '\n' + (await utils.addLog('$tick', 'setup-php', url, os));
fs.writeFileSync(run_path, script, {mode: 0o755});
return await utils.addVerbose(run_path, os);
}
/**
* Function to set environment variables based on inputs.
*/
export async function setEnv(): Promise<void> {
process.env['fail_fast'] = await utils.getInput('fail-fast', false);
process.env['GITHUB_TOKEN'] ??= await utils.getInput('github-token', false);
}
/**
* Run the script
*/
export async function run(): Promise<void> {
await setEnv();
const os: string = process.platform;
const tool = await utils.scriptTool(os);
const run_path = await getScript(os);
await exec(tool + run_path);
}
// call the run function
(async () => {
await run();
})().catch(error => {
core.setFailed(error.message);
});