setup-php 2.37.0 → 2.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -268,7 +268,7 @@ These tools can be set up globally using the `tools` input. It accepts a string
268
268
  uses: shivammathur/setup-php@v2
269
269
  with:
270
270
  php-version: '8.5'
271
- tools: composer:v1
271
+ tools: composer:v2
272
272
  ```
273
273
 
274
274
  - If you do not use composer in your workflow, you can specify `tools: none` to skip it.
@@ -950,11 +950,12 @@ Examples of using `setup-php` with various PHP frameworks and packages.
950
950
  | Framework/Package | Runs on | Workflow |
951
951
  |----------------------------------------|---------------------------------|---------------------------------------------------------------------------------------------------------------|
952
952
  | Blackfire | `macOS`, `ubuntu` and `windows` | [blackfire.yml](./examples/blackfire.yml "GitHub Action using Blackfire") |
953
- | Blackfire Player | `macOS`, `ubuntu` and `windows` | [blackfire-player.yml](./examples/blackfire-player.yml "GitHub Action using Blackfire Player") |
953
+ | Blackfire Player | `macOS` and `ubuntu` | [blackfire-player.yml](./examples/blackfire-player.yml "GitHub Action using Blackfire Player") |
954
954
  | CakePHP with `MySQL` and `Redis` | `ubuntu` | [cakephp-mysql.yml](./examples/cakephp-mysql.yml "GitHub Action for CakePHP with MySQL and Redis") |
955
955
  | CakePHP with `PostgreSQL` and `Redis` | `ubuntu` | [cakephp-postgres.yml](./examples/cakephp-postgres.yml "GitHub Action for CakePHP with Postgres and Redis") |
956
956
  | CakePHP without services | `macOS`, `ubuntu` and `windows` | [cakephp.yml](./examples/cakephp.yml "GitHub Action for CakePHP without services") |
957
957
  | CodeIgniter | `macOS`, `ubuntu` and `windows` | [codeigniter.yml](./examples/codeigniter.yml "GitHub Action for CodeIgniter") |
958
+ | Drupal 11 (Composer-managed) | `ubuntu` | [drupal.yml](./examples/drupal.yml "GitHub Action for Drupal 11 composer-managed projects") |
958
959
  | Laminas MVC | `macOS`, `ubuntu` and `windows` | [laminas-mvc.yml](./examples/laminas-mvc.yml "GitHub Action for Laminas Framework MVC Projects") |
959
960
  | Laravel with `MySQL` and `Redis` | `ubuntu` | [laravel-mysql.yml](./examples/laravel-mysql.yml "GitHub Action for Laravel with MySQL and Redis") |
960
961
  | Laravel with `PostgreSQL` and `Redis` | `ubuntu` | [laravel-postgres.yml](./examples/laravel-postgres.yml "GitHub Action for Laravel with PostgreSQL and Redis") |
@@ -964,14 +965,16 @@ Examples of using `setup-php` with various PHP frameworks and packages.
964
965
  | Lumen without services | `macOS`, `ubuntu` and `windows` | [lumen.yml](./examples/lumen.yml "GitHub Action for Lumen without services") |
965
966
  | Phalcon with `MySQL` | `ubuntu` | [phalcon-mysql.yml](./examples/phalcon-mysql.yml "GitHub Action for Phalcon with MySQL") |
966
967
  | Phalcon with `PostgreSQL` | `ubuntu` | [phalcon-postgres.yml](./examples/phalcon-postgres.yml "GitHub Action for Phalcon with PostgreSQL") |
967
- | Roots/bedrock | `ubuntu` | [bedrock.yml](./examples/bedrock.yml "GitHub Action for Wordpress Development using @roots/bedrock") |
968
- | Roots/sage | `ubuntu` | [sage.yml](./examples/sage.yml "GitHub Action for Wordpress Development using @roots/sage") |
969
968
  | Slim Framework | `macOS`, `ubuntu` and `windows` | [slim-framework.yml](./examples/slim-framework.yml "GitHub Action for Slim Framework") |
970
969
  | Symfony with `MySQL` | `ubuntu` | [symfony-mysql.yml](./examples/symfony-mysql.yml "GitHub Action for Symfony with MySQL") |
971
970
  | Symfony with `PostgreSQL` | `ubuntu` | [symfony-postgres.yml](./examples/symfony-postgres.yml "GitHub Action for Symfony with PostgreSQL") |
972
971
  | Symfony without services | `macOS`, `ubuntu` and `windows` | [symfony.yml](./examples/symfony.yml "GitHub Action for Symfony without services") |
973
- | Yii2 Starter Kit with `MySQL` | `ubuntu` | [yii2-mysql.yml](./examples/yii2-mysql.yml "GitHub Action for Yii2 Starter Kit with MySQL") |
974
- | Yii2 Starter Kit with `PostgreSQL` | `ubuntu` | [yii2-postgres.yml](./examples/yii2-postgres.yml "GitHub Action for Yii2 Starter Kit with PostgreSQL") |
972
+ | WordPress plugin | `ubuntu` | [wordpress.yml](./examples/wordpress.yml "GitHub Action for WordPress plugins") |
973
+ | WordPress with Roots/Bedrock | `ubuntu` | [bedrock.yml](./examples/bedrock.yml "GitHub Action for WordPress development using @roots/bedrock") |
974
+ | WordPress with Roots/Sage | `ubuntu` | [sage.yml](./examples/sage.yml "GitHub Action for WordPress development using @roots/sage") |
975
+ | Yii3 web application with `MySQL` | `ubuntu` | [yii3-mysql.yml](./examples/yii3-mysql.yml "GitHub Action for Yii3 web application with MySQL") |
976
+ | Yii3 web application with `PostgreSQL` | `ubuntu` | [yii3-postgres.yml](./examples/yii3-postgres.yml "GitHub Action for Yii3 web application with PostgreSQL") |
977
+ | Yii3 web application | `ubuntu` and `windows` | [yii3.yml](./examples/yii3.yml "GitHub Action for Yii3 web application") |
975
978
 
976
979
  ## :bookmark: Versioning
977
980
 
package/lib/config.js CHANGED
@@ -45,7 +45,7 @@ async function addINIValuesUnix(ini_values_csv) {
45
45
  '\n' + (await utils.addLog('$tick', line, 'Added to php.ini', 'linux'));
46
46
  });
47
47
  return ('echo "' +
48
- ini_values.join('\n') +
48
+ ini_values.map(v => utils.escapeForShell(v, 'linux')).join('\n') +
49
49
  '" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null 2>&1' +
50
50
  script);
51
51
  }
@@ -56,7 +56,10 @@ async function addINIValuesWindows(ini_values_csv) {
56
56
  script +=
57
57
  (await utils.addLog('$tick', line, 'Added to php.ini', 'win32')) + '\n';
58
58
  });
59
- return ('Add-Content "$php_dir\\php.ini" "' + ini_values.join('\n') + '"' + script);
59
+ return ('Add-Content "$php_dir\\php.ini" "' +
60
+ ini_values.map(v => utils.escapeForShell(v, 'win32')).join('\n') +
61
+ '"' +
62
+ script);
60
63
  }
61
64
  async function addINIValues(ini_values_csv, os, no_step = false) {
62
65
  let script = '\n';
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,4CAeC;AAOD,kDAYC;AASD,oCA+BC;AAjFD,+CAAiC;AAO1B,KAAK,UAAU,gBAAgB,CACpC,cAAsB;IAEtB,MAAM,UAAU,GAAkB,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,WAAW,IAAY;QAC/D,MAAM;YACJ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,OAAO,CACL,QAAQ;QACR,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACrB,gEAAgE;QAChE,MAAM,CACP,CAAC;AACJ,CAAC;AAOM,KAAK,UAAU,mBAAmB,CACvC,cAAsB;IAEtB,MAAM,UAAU,GAAkB,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvE,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,WAAW,IAAY;QAC/D,MAAM;YACJ,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,OAAO,CACL,mCAAmC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,MAAM,CAC3E,CAAC;AACJ,CAAC;AASM,KAAK,UAAU,YAAY,CAChC,cAAsB,EACtB,EAAU,EACV,OAAO,GAAG,KAAK;IAEf,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,IAAI;YACP,MAAM;gBACJ,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;oBAC/C,CAAC,MAAM,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;oBAChC,IAAI,CAAC;YACP,MAAM;QACR,KAAK,KAAK,CAAC;QACX;YACE,MAAM,IAAI,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YACjE,MAAM;IACV,CAAC;IACD,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,OAAO;YACV,OAAO,MAAM,GAAG,CAAC,MAAM,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9D,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACV,OAAO,MAAM,GAAG,CAAC,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3D;YACE,OAAO,MAAM,KAAK,CAAC,GAAG,CACpB,WAAW,GAAG,EAAE,GAAG,mBAAmB,EACtC,EAAE,EACF,OAAO,CACR,CAAC;IACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,4CAeC;AAOD,kDAeC;AASD,oCA+BC;AApFD,+CAAiC;AAO1B,KAAK,UAAU,gBAAgB,CACpC,cAAsB;IAEtB,MAAM,UAAU,GAAkB,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,WAAW,IAAY;QAC/D,MAAM;YACJ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,OAAO,CACL,QAAQ;QACR,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChE,gEAAgE;QAChE,MAAM,CACP,CAAC;AACJ,CAAC;AAOM,KAAK,UAAU,mBAAmB,CACvC,cAAsB;IAEtB,MAAM,UAAU,GAAkB,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvE,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,WAAW,IAAY;QAC/D,MAAM;YACJ,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,OAAO,CACL,mCAAmC;QACnC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChE,GAAG;QACH,MAAM,CACP,CAAC;AACJ,CAAC;AASM,KAAK,UAAU,YAAY,CAChC,cAAsB,EACtB,EAAU,EACV,OAAO,GAAG,KAAK;IAEf,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,IAAI;YACP,MAAM;gBACJ,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;oBAC/C,CAAC,MAAM,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;oBAChC,IAAI,CAAC;YACP,MAAM;QACR,KAAK,KAAK,CAAC;QACX;YACE,MAAM,IAAI,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YACjE,MAAM;IACV,CAAC;IACD,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,OAAO;YACV,OAAO,MAAM,GAAG,CAAC,MAAM,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9D,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACV,OAAO,MAAM,GAAG,CAAC,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3D;YACE,OAAO,MAAM,KAAK,CAAC,GAAG,CACpB,WAAW,GAAG,EAAE,GAAG,mBAAmB,EACtC,EAAE,EACF,OAAO,CACR,CAAC;IACN,CAAC;AACH,CAAC"}
package/lib/install.js CHANGED
@@ -53,13 +53,13 @@ async function getScript(os) {
53
53
  const filename = os + (await utils.scriptExtension(os));
54
54
  const script_path = path_1.default.join(__dirname, '../src/scripts', filename);
55
55
  const run_path = script_path.replace(os, 'run');
56
- const extension_csv = await utils.getInput('extensions', false);
56
+ const extension_csv = utils.sanitizeShellInput(await utils.getInput('extensions', false), true);
57
57
  const ini_values_csv = await utils.getInput('ini-values', false);
58
58
  const coverage_driver = await utils.getInput('coverage', false);
59
59
  const tools_csv = await utils.getInput('tools', false);
60
60
  const version = await utils.parseVersion(await utils.readPHPVersion());
61
61
  const ini_file = await utils.parseIniFile(await utils.getInput('ini-file', false));
62
- let script = await utils.joins('.', script_path, version, ini_file);
62
+ let script = await utils.joins('.', script_path, `'${version}'`, ini_file);
63
63
  if (extension_csv) {
64
64
  script += await extensions.addExtension(extension_csv, version, os);
65
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
package/lib/tools.d.ts CHANGED
@@ -26,6 +26,8 @@ export interface ToolData {
26
26
  export type ToolInput = Omit<ToolData, 'version' | 'url'> & {
27
27
  version?: string;
28
28
  };
29
+ export declare function skipGitHubAuthForComposerVersion(version: string): boolean;
30
+ export declare function cleanComposerAuthJson(): void;
29
31
  export declare function getSemverVersion(data: ToolData): Promise<string>;
30
32
  export declare function getLatestVersion(data: ToolInput): Promise<string>;
31
33
  export declare function getVersion(version: string, data: ToolData): Promise<string>;
package/lib/tools.js CHANGED
@@ -37,6 +37,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.functionRecord = void 0;
40
+ exports.skipGitHubAuthForComposerVersion = skipGitHubAuthForComposerVersion;
41
+ exports.cleanComposerAuthJson = cleanComposerAuthJson;
40
42
  exports.getSemverVersion = getSemverVersion;
41
43
  exports.getLatestVersion = getLatestVersion;
42
44
  exports.getVersion = getVersion;
@@ -64,6 +66,38 @@ const cv = __importStar(require("compare-versions"));
64
66
  const fetch = __importStar(require("./fetch"));
65
67
  const packagist = __importStar(require("./packagist"));
66
68
  const utils = __importStar(require("./utils"));
69
+ function skipGitHubAuthForComposerVersion(version) {
70
+ if (!/^\d+\.\d+\.\d+(?:-[\w-]+)?$/.test(version)) {
71
+ return false;
72
+ }
73
+ return fs_1.default
74
+ .readFileSync(path_1.default.join(__dirname, '../src/configs/composer-gh-auth-no-op'), 'utf8')
75
+ .trim()
76
+ .split(/\r?\n/)
77
+ .some(range => {
78
+ const [min, max] = range.trim().split(/\s+/);
79
+ return (cv.compareVersions(version, min) >= 0 &&
80
+ cv.compareVersions(version, max) < 0);
81
+ });
82
+ }
83
+ function cleanComposerAuthJson() {
84
+ try {
85
+ const auth_json = process.env['COMPOSER_AUTH_JSON'] || '';
86
+ if (!auth_json.includes('github-oauth'))
87
+ return;
88
+ const auth = JSON.parse(auth_json);
89
+ delete auth['github-oauth'];
90
+ if (!Object.keys(auth).length) {
91
+ delete process.env['COMPOSER_AUTH_JSON'];
92
+ }
93
+ else {
94
+ process.env['COMPOSER_AUTH_JSON'] = JSON.stringify(auth);
95
+ }
96
+ }
97
+ catch {
98
+ return;
99
+ }
100
+ }
67
101
  async function getSemverVersion(data) {
68
102
  const fixSemver = (t) => {
69
103
  if (/^\d+\.\d+\.\d+(-|$)/.test(t))
@@ -136,7 +170,7 @@ async function getVersion(version, data) {
136
170
  case !!data.repository && major_minor_regex.test(data.version):
137
171
  return await getSemverVersion(data);
138
172
  default:
139
- return data.version.replace(/[><=^~]*/, '');
173
+ return data.version.replace(/[^a-zA-Z0-9_.:@+,/-]/g, '');
140
174
  }
141
175
  }
142
176
  async function getRelease(release, data) {
@@ -209,7 +243,9 @@ async function addArchive(data) {
209
243
  async function addPackage(data) {
210
244
  const command = await utils.getCommand(data.os, 'composer_tool');
211
245
  const parts = data.repository.split('/');
212
- const args = await utils.joins(parts[1], data.release, parts[0] + '/', data.scope);
246
+ const args = [parts[1], data.release, parts[0] + '/', data.scope]
247
+ .map(a => utils.safeArg(a, data.os))
248
+ .join(' ');
213
249
  return command + args;
214
250
  }
215
251
  async function addBlackfirePlayer(data) {
@@ -254,6 +290,7 @@ async function addComposer(data) {
254
290
  const version_source_url = `${getcomposer}/download/${channel}/composer.phar`;
255
291
  let cache_url = `${releases_url},${spc_url},${cds_url}`;
256
292
  let source_url = `${getcomposer}/composer.phar`;
293
+ let skip_composer_github_auth = '';
257
294
  switch (true) {
258
295
  case /^snapshot$/.test(channel):
259
296
  source_url = is_lts ? lts_url : source_url;
@@ -264,7 +301,11 @@ async function addComposer(data) {
264
301
  case /^1$/.test(channel):
265
302
  source_url = channel_source_url;
266
303
  break;
267
- case /^\d+\.\d+\.\d+[\w-]*$/.test(data.version):
304
+ case /^\d+\.\d+\.\d+(?:-[\w-]+)?$/.test(data.version):
305
+ if (skipGitHubAuthForComposerVersion(data.version)) {
306
+ cleanComposerAuthJson();
307
+ skip_composer_github_auth = ' true';
308
+ }
268
309
  cache_url = `${github}/${data.repository}/releases/download/${data.version}/composer.phar`;
269
310
  source_url = version_source_url;
270
311
  break;
@@ -273,7 +314,7 @@ async function addComposer(data) {
273
314
  }
274
315
  const use_cache = (await utils.readEnv('NO_TOOLS_CACHE')) !== 'true';
275
316
  data.url = use_cache ? `${cache_url},${source_url}` : source_url;
276
- data.version_parameter = data.version;
317
+ data.version_parameter = data.version + skip_composer_github_auth;
277
318
  return await addArchive(data);
278
319
  }
279
320
  async function addDeployer(data) {
package/lib/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/lib/utils.d.ts CHANGED
@@ -8,6 +8,9 @@ export declare function color(type: string): Promise<string>;
8
8
  export declare function log(message: string, os: string, log_type: string): Promise<string>;
9
9
  export declare function stepLog(message: string, os: string): Promise<string>;
10
10
  export declare function addLog(mark: string, subject: string, message: string, os: string): Promise<string>;
11
+ export declare function escapeForShell(value: string, os: string): string;
12
+ export declare function safeArg(value: string, os: string): string;
13
+ export declare function sanitizeShellInput(value: string, strict?: boolean): string;
11
14
  export declare function extensionArray(extension_csv: string): Promise<Array<string>>;
12
15
  export declare function CSVArray(values_csv: string): Promise<Array<string>>;
13
16
  export declare function getExtensionPrefix(extension: string): Promise<string>;
package/lib/utils.js CHANGED
@@ -46,6 +46,9 @@ exports.color = color;
46
46
  exports.log = log;
47
47
  exports.stepLog = stepLog;
48
48
  exports.addLog = addLog;
49
+ exports.escapeForShell = escapeForShell;
50
+ exports.safeArg = safeArg;
51
+ exports.sanitizeShellInput = sanitizeShellInput;
49
52
  exports.extensionArray = extensionArray;
50
53
  exports.CSVArray = CSVArray;
51
54
  exports.getExtensionPrefix = getExtensionPrefix;
@@ -95,15 +98,27 @@ async function getManifestURLS() {
95
98
  }
96
99
  async function parseVersion(version) {
97
100
  switch (true) {
101
+ case /^pre(-installed)?$/.test(version):
102
+ return 'pre';
98
103
  case /^(latest|lowest|highest|nightly|master|\d+\.x)$/.test(version):
99
104
  for (const manifestURL of await getManifestURLS()) {
100
105
  const fetchResult = await fetch.fetch(manifestURL);
101
106
  if (fetchResult['data'] ?? false) {
102
- return JSON.parse(fetchResult['data'])[version];
107
+ const resolved = JSON.parse(fetchResult['data'])[version];
108
+ if (resolved === undefined) {
109
+ throw new Error(`Invalid PHP version: ${version.slice(0, 20)}`);
110
+ }
111
+ if (!/^\d+\.\d+$/.test(resolved)) {
112
+ throw new Error(`Invalid PHP version in manifest: ${resolved.slice(0, 10)}`);
113
+ }
114
+ return resolved;
103
115
  }
104
116
  }
105
117
  throw new Error(`Could not fetch the PHP version manifest.`);
106
118
  default:
119
+ if (!/^\d+(\.\d+){0,2}$/.test(version)) {
120
+ throw new Error(`Invalid PHP version: ${version.slice(0, 20)}`);
121
+ }
107
122
  switch (true) {
108
123
  case version.length > 1:
109
124
  return version.slice(0, 3);
@@ -113,14 +128,11 @@ async function parseVersion(version) {
113
128
  }
114
129
  }
115
130
  async function parseIniFile(ini_file) {
116
- switch (true) {
117
- case /^(production|development|none)$/.test(ini_file):
118
- return ini_file;
119
- case /php\.ini-(production|development)$/.test(ini_file):
120
- return ini_file.split('-')[1];
121
- default:
122
- return 'production';
131
+ if (/^(production|development|none)$/.test(ini_file)) {
132
+ return ini_file;
123
133
  }
134
+ const match = ini_file.match(/php\.ini-(production|development)$/);
135
+ return match ? match[1] : 'production';
124
136
  }
125
137
  async function asyncForEach(array, callback) {
126
138
  for (const [index, element] of array.entries()) {
@@ -155,25 +167,45 @@ async function log(message, os, log_type) {
155
167
  async function stepLog(message, os) {
156
168
  switch (os) {
157
169
  case 'win32':
158
- return 'Step-Log "' + message + '"';
170
+ return 'Step-Log "' + escapeForShell(message, os) + '"';
159
171
  case 'linux':
160
172
  case 'darwin':
161
- return 'step_log "' + message + '"';
173
+ return 'step_log "' + escapeForShell(message, os) + '"';
162
174
  default:
163
175
  return await log('Platform ' + os + ' is not supported', os, 'error');
164
176
  }
165
177
  }
166
178
  async function addLog(mark, subject, message, os) {
179
+ const sub = escapeForShell(subject, os);
180
+ const msg = escapeForShell(message, os);
167
181
  switch (os) {
168
182
  case 'win32':
169
- return 'Add-Log "' + mark + '" "' + subject + '" "' + message + '"';
183
+ return `Add-Log "${mark}" "${sub}" "${msg}"`;
170
184
  case 'linux':
171
185
  case 'darwin':
172
- return 'add_log "' + mark + '" "' + subject + '" "' + message + '"';
186
+ return `add_log "${mark}" "${sub}" "${msg}"`;
173
187
  default:
174
188
  return await log('Platform ' + os + ' is not supported', os, 'error');
175
189
  }
176
190
  }
191
+ function escapeForShell(value, os) {
192
+ if (os === 'win32') {
193
+ return value.replace(/[`$"]/g, '`$&');
194
+ }
195
+ return value.replace(/[\\`$"]/g, '\\$&');
196
+ }
197
+ function safeArg(value, os) {
198
+ if (!/^[a-zA-Z0-9_./:@+,~^-]*$/.test(value)) {
199
+ return '"' + escapeForShell(value, os) + '"';
200
+ }
201
+ return value;
202
+ }
203
+ function sanitizeShellInput(value, strict = false) {
204
+ const pattern = strict
205
+ ? /[$`"';|&(){}[\]\\<>*?\n\r\t]/g
206
+ : /[$`"';|&(){}[\]\\\n\r\t]/g;
207
+ return value.replace(pattern, '');
208
+ }
177
209
  async function extensionArray(extension_csv) {
178
210
  switch (extension_csv) {
179
211
  case '':
@@ -185,11 +217,11 @@ async function extensionArray(extension_csv) {
185
217
  ...extension_csv
186
218
  .split(',')
187
219
  .map(function (extension) {
220
+ extension = extension.trim().replace(/^\\\s*/, '');
188
221
  if (/.+-.+\/.+@.+/.test(extension)) {
189
222
  return extension;
190
223
  }
191
224
  return extension
192
- .trim()
193
225
  .toLowerCase()
194
226
  .replace(/^(:)?(php[-_]|none|zend )|(-[^-]*)-/, '$1$3');
195
227
  })
@@ -293,16 +325,23 @@ async function parseExtensionSource(extension, prefix) {
293
325
  matches[2] = matches[2] ? matches[2].slice(0, -1) : 'https://github.com';
294
326
  return await joins('\nadd_extension_from_source', ...matches.splice(1, matches.length), prefix);
295
327
  }
328
+ const VERSION_INPUT_REGEX = /^(latest|lowest|highest|nightly|master|pre|pre-installed|\d+\.x|\d+(\.\d+){0,2})$/;
329
+ function validatePHPVersionInput(version, source) {
330
+ if (!VERSION_INPUT_REGEX.test(version)) {
331
+ throw new Error(`Invalid PHP version in ${source}: ${version.slice(0, 20)}`);
332
+ }
333
+ return version;
334
+ }
296
335
  async function readPHPVersion() {
297
336
  const version = await getInput('php-version', false);
298
337
  if (version) {
299
- return version;
338
+ return validatePHPVersionInput(version, 'php-version input');
300
339
  }
301
340
  const versionFile = (await getInput('php-version-file', false)) || '.php-version';
302
341
  if (fs_1.default.existsSync(versionFile)) {
303
342
  const contents = fs_1.default.readFileSync(versionFile, 'utf8');
304
343
  const match = contents.match(/^(?:php\s)?(\d+\.\d+\.\d+)$/m);
305
- return match ? match[1] : contents.trim();
344
+ return validatePHPVersionInput(match ? match[1] : contents.trim(), versionFile);
306
345
  }
307
346
  else if (versionFile !== '.php-version') {
308
347
  throw new Error(`Could not find '${versionFile}' file.`);
@@ -311,18 +350,15 @@ async function readPHPVersion() {
311
350
  const composerLock = path.join(composerProjectDir, 'composer.lock');
312
351
  if (fs_1.default.existsSync(composerLock)) {
313
352
  const lockFileContents = JSON.parse(fs_1.default.readFileSync(composerLock, 'utf8'));
314
- if (lockFileContents['platform-overrides'] &&
315
- lockFileContents['platform-overrides']['php']) {
316
- return lockFileContents['platform-overrides']['php'];
353
+ if (lockFileContents['platform-overrides']?.['php']) {
354
+ return validatePHPVersionInput(lockFileContents['platform-overrides']['php'], 'composer.lock platform-overrides.php');
317
355
  }
318
356
  }
319
357
  const composerJson = path.join(composerProjectDir, 'composer.json');
320
358
  if (fs_1.default.existsSync(composerJson)) {
321
359
  const composerFileContents = JSON.parse(fs_1.default.readFileSync(composerJson, 'utf8'));
322
- if (composerFileContents['config'] &&
323
- composerFileContents['config']['platform'] &&
324
- composerFileContents['config']['platform']['php']) {
325
- return composerFileContents['config']['platform']['php'];
360
+ if (composerFileContents['config']?.['platform']?.['php']) {
361
+ return validatePHPVersionInput(composerFileContents['config']['platform']['php'], 'composer.json config.platform.php');
326
362
  }
327
363
  }
328
364
  return 'latest';
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "setup-php",
3
- "version": "2.37.0",
3
+ "version": "2.37.1",
4
4
  "private": false,
5
5
  "description": "Setup PHP for use with GitHub Actions",
6
6
  "main": "lib/install.js",
@@ -38,26 +38,26 @@
38
38
  "compare-versions": "^6.1.1"
39
39
  },
40
40
  "devDependencies": {
41
- "@eslint/compat": "^2.0.3",
41
+ "@eslint/compat": "^2.1.0",
42
42
  "@eslint/js": "^10.0.1",
43
43
  "@types/jest": "^30.0.0",
44
- "@types/node": "^25.5.0",
45
- "@typescript-eslint/eslint-plugin": "^8.57.0",
46
- "@typescript-eslint/parser": "^8.57.0",
44
+ "@types/node": "^25.7.0",
45
+ "@typescript-eslint/eslint-plugin": "^8.59.3",
46
+ "@typescript-eslint/parser": "^8.59.3",
47
47
  "@vercel/ncc": "^0.38.4",
48
- "eslint": "^10.0.3",
48
+ "eslint": "^10.3.0",
49
49
  "eslint-config-prettier": "^10.1.8",
50
50
  "eslint-import-resolver-typescript": "^4.4.4",
51
51
  "eslint-plugin-import-x": "^4.16.2",
52
- "eslint-plugin-jest": "^29.15.0",
52
+ "eslint-plugin-jest": "^29.15.2",
53
53
  "eslint-plugin-prettier": "^5.5.5",
54
- "globals": "^17.4.0",
55
- "jest": "^30.3.0",
56
- "jest-circus": "^30.3.0",
57
- "nock": "^14.0.11",
58
- "prettier": "^3.8.1",
54
+ "globals": "^17.6.0",
55
+ "jest": "^30.4.2",
56
+ "jest-circus": "^30.4.2",
57
+ "nock": "^14.0.15",
58
+ "prettier": "^3.8.3",
59
59
  "simple-git-hooks": "^2.13.1",
60
- "ts-jest": "^29.4.6",
60
+ "ts-jest": "^29.4.9",
61
61
  "typescript": "^5.9.3"
62
62
  },
63
63
  "overrides": {
package/src/config.ts CHANGED
@@ -16,7 +16,7 @@ export async function addINIValuesUnix(
16
16
  });
17
17
  return (
18
18
  'echo "' +
19
- ini_values.join('\n') +
19
+ ini_values.map(v => utils.escapeForShell(v, 'linux')).join('\n') +
20
20
  '" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null 2>&1' +
21
21
  script
22
22
  );
@@ -37,7 +37,10 @@ export async function addINIValuesWindows(
37
37
  (await utils.addLog('$tick', line, 'Added to php.ini', 'win32')) + '\n';
38
38
  });
39
39
  return (
40
- 'Add-Content "$php_dir\\php.ini" "' + ini_values.join('\n') + '"' + script
40
+ 'Add-Content "$php_dir\\php.ini" "' +
41
+ ini_values.map(v => utils.escapeForShell(v, 'win32')).join('\n') +
42
+ '"' +
43
+ script
41
44
  );
42
45
  }
43
46
 
@@ -0,0 +1,3 @@
1
+ 1.0.0-0 1.10.28
2
+ 2.0.0-0 2.2.28
3
+ 2.3.0-0 2.9.8
@@ -0,0 +1 @@
1
+ Composer %s has a known GitHub token parsing bug that exposes GitHub tokens in the error output. So, GitHub authentication has not been configured for this Composer version. Please update to the latest version of Composer. See: https://github.com/composer/composer/security/advisories/GHSA-f9f8-rm49-7jv2
@@ -21,4 +21,7 @@
21
21
  23.10,mantic
22
22
  24.04,noble
23
23
  24.10,oracular
24
- 25.10,plucky
24
+ 25.05,plucky
25
+ 25.10,questing
26
+ 26.04,resolute
27
+ 26.10,stonking
package/src/install.ts CHANGED
@@ -18,7 +18,10 @@ export async function getScript(os: string): Promise<string> {
18
18
  const filename = os + (await utils.scriptExtension(os));
19
19
  const script_path = path.join(__dirname, '../src/scripts', filename);
20
20
  const run_path = script_path.replace(os, 'run');
21
- const extension_csv: string = await utils.getInput('extensions', false);
21
+ const extension_csv: string = utils.sanitizeShellInput(
22
+ await utils.getInput('extensions', false),
23
+ true
24
+ );
22
25
  const ini_values_csv: string = await utils.getInput('ini-values', false);
23
26
  const coverage_driver: string = await utils.getInput('coverage', false);
24
27
  const tools_csv: string = await utils.getInput('tools', false);
@@ -28,7 +31,7 @@ export async function getScript(os: string): Promise<string> {
28
31
  const ini_file: string = await utils.parseIniFile(
29
32
  await utils.getInput('ini-file', false)
30
33
  );
31
- let script = await utils.joins('.', script_path, version, ini_file);
34
+ let script = await utils.joins('.', script_path, `'${version}'`, ini_file);
32
35
  if (extension_csv) {
33
36
  script += await extensions.addExtension(extension_csv, version, os);
34
37
  }
@@ -1,9 +1,9 @@
1
1
  # Helper function to add gearman extension.
2
2
  add_gearman_helper() {
3
- install_packages libgearman-dev
4
3
  enable_extension gearman extension
5
4
  if ! check_extension gearman; then
6
5
  status="Installed and enabled"
6
+ install_packages libgearman-dev
7
7
  if [[ "${version:?}" =~ 5.[3-6] ]]; then
8
8
  pecl_install gearman-1.1.2
9
9
  elif [[ "${version:?}" =~ 7.0 ]]; then
@@ -19,26 +19,6 @@ Function Get-PhalconReleaseAssetUrl() {
19
19
  $match = (Get-File -Url "$github/$releases/expanded_assets/v$Semver").Links.href | Select-String -Pattern "(phalcon_${arch}_.*_php${version}_${extension_version}.*[0-9]${nts}.zip)"
20
20
  } catch { }
21
21
  }
22
- } else {
23
- $nts = if (!$installed.ThreadSafe) { "-nts" } else { "-ts" }
24
- try {
25
- $match = (Invoke-RestMethod -Uri "$domain/$releases/tags/v$Semver").assets | Select-String -Pattern "browser_download_url=.*(php_phalcon-php${version}${nts}-windows.*-x64.zip)"
26
- } catch { }
27
- if($null -eq $match) {
28
- try {
29
- $match = (Get-File -Url "$github/$releases/expanded_assets/v$Semver").Links.href | Select-String -Pattern "(php_phalcon-php${version}${nts}-windows.*-x64.zip)"
30
- } catch { }
31
- }
32
- if($null -eq $match) {
33
- try {
34
- $match = (Invoke-RestMethod -Uri "$domain/$releases/tags/v$Semver").assets | Select-String -Pattern "browser_download_url=.*(phalcon-php${version}${nts}-windows.*-x64.zip)"
35
- } catch { }
36
- }
37
- if($null -eq $match) {
38
- try {
39
- $match = (Get-File -Url "$github/$releases/expanded_assets/v$Semver").Links.href | Select-String -Pattern "(phalcon-php${version}${nts}-windows.*-x64.zip)"
40
- } catch { }
41
- }
42
22
  }
43
23
  if($NULL -ne $match) {
44
24
  return "$github/$releases/download/v$Semver/$($match.Matches[0].Groups[1].Value)"
@@ -73,6 +53,8 @@ Function Get-PhalconSemver() {
73
53
  return '4.1.0'
74
54
  } elseif (($extension_version -eq '5') -and ($version -eq '7.4')) {
75
55
  return '5.4.0'
56
+ } elseif (($extension_version -eq '5') -and ($version -eq '8.0')) {
57
+ return '5.10.0'
76
58
  }
77
59
  return Get-PeclPackageVersion phalcon $extension_version stable stable | Select-Object -First 1
78
60
  }
@@ -80,7 +62,7 @@ Function Get-PhalconSemver() {
80
62
  # Function to install phalcon
81
63
  Function Add-PhalconHelper() {
82
64
  $semver = Get-PhalconSemver
83
- if ($extension_version -eq '3') {
65
+ if ($extension_version -match '[3-4]') {
84
66
  Add-PhalconFromGitHub $semver
85
67
  } else {
86
68
  Add-Extension -Extension phalcon -Stability stable -Extension_version $semver
@@ -3,6 +3,8 @@ get_phalcon_version() {
3
3
  if [ "$extension" = "phalcon5" ]; then
4
4
  if [ "${version:?}" = "7.4" ]; then
5
5
  echo '5.4.0'
6
+ elif [ "${version:?}" = "8.0" ]; then
7
+ echo '5.10.0'
6
8
  else
7
9
  get_pecl_version phalcon stable 5
8
10
  fi
@@ -3,6 +3,7 @@ $composer_home = "$env:APPDATA\Composer"
3
3
  $composer_bin = "$composer_home\vendor\bin"
4
4
  $composer_json = "$composer_home\composer.json"
5
5
  $composer_lock = "$composer_home\composer.lock"
6
+ $skip_composer_github_auth = $false
6
7
 
7
8
  # Function to configure composer.
8
9
  Function Edit-ComposerConfig() {
@@ -23,6 +24,7 @@ Function Edit-ComposerConfig() {
23
24
  if (-not(Test-Path $composer_json)) {
24
25
  Set-Content -Path $composer_json -Value "{}"
25
26
  }
27
+ Get-ToolVersion "composer" $null | Out-Null
26
28
  Set-ComposerEnv
27
29
  Add-Path $composer_bin
28
30
  Set-ComposerAuth
@@ -74,8 +76,18 @@ function Test-GitHubPublicAccess {
74
76
  }
75
77
  }
76
78
 
79
+ Function Write-ComposerGhAuthNoOpWarning() {
80
+ $message = (Get-Content (Join-Path $src 'configs\composer-gh-auth-warn') -Raw).Trim().Replace('%s', $composer_version)
81
+ if($env:fail_fast -eq 'true') {
82
+ Add-Log "$cross" "composer" $message
83
+ } else {
84
+ Write-Output "::warning::$message"
85
+ }
86
+ }
87
+
77
88
  # Function to setup authentication in composer.
78
89
  Function Set-ComposerAuth() {
90
+ $token = if ($env:COMPOSER_TOKEN) { $env:COMPOSER_TOKEN } else { $env:GITHUB_TOKEN }
79
91
  if(Test-Path env:COMPOSER_AUTH_JSON) {
80
92
  if(Test-Json -JSON $env:COMPOSER_AUTH_JSON) {
81
93
  Set-Content -Path $composer_home\auth.json -Value $env:COMPOSER_AUTH_JSON
@@ -83,13 +95,18 @@ Function Set-ComposerAuth() {
83
95
  Add-Log "$cross" "composer" "Could not parse COMPOSER_AUTH_JSON as valid JSON"
84
96
  }
85
97
  }
98
+ if($skip_composer_github_auth) {
99
+ Write-ComposerGhAuthNoOpWarning
100
+ }
86
101
  $composer_auth = @()
87
102
  if(Test-Path env:PACKAGIST_TOKEN) {
88
103
  $composer_auth += '"http-basic": {"repo.packagist.com": { "username": "token", "password": "' + $env:PACKAGIST_TOKEN + '"}}'
89
104
  }
90
105
  $write_token = $true
91
- $token = if ($env:COMPOSER_TOKEN) { $env:COMPOSER_TOKEN } else { $env:GITHUB_TOKEN }
92
106
  if ($token) {
107
+ if ($skip_composer_github_auth) {
108
+ $write_token = $false
109
+ }
93
110
  if ($env:GITHUB_SERVER_URL -ne "https://github.com" -and -not(Test-GitHubPublicAccess $token)) {
94
111
  $write_token = $false
95
112
  }
@@ -210,8 +227,13 @@ Function Add-Tool() {
210
227
  [ValidateNotNull()]
211
228
  $tool,
212
229
  [Parameter(Position = 2, Mandatory = $false)]
213
- $ver_param
230
+ $ver_param,
231
+ [Parameter(Position = 3, Mandatory = $false)]
232
+ $skip_composer_github_auth
214
233
  )
234
+ if($tool -eq "composer") {
235
+ $script:skip_composer_github_auth = $skip_composer_github_auth -eq 'true'
236
+ }
215
237
  $urls = $urls -split ','
216
238
  $tool_path = "$bin_dir\$tool"
217
239
  $is_exe = ((($urls[0] | Split-Path -Extension).ToLowerInvariant()) -eq '.exe')
@@ -3,6 +3,7 @@ export composer_home="$HOME/.composer"
3
3
  export composer_bin="$composer_home/vendor/bin"
4
4
  export composer_json="$composer_home/composer.json"
5
5
  export composer_lock="$composer_home/composer.lock"
6
+ skip_composer_github_auth=false
6
7
 
7
8
  # Function to extract tool version.
8
9
  get_tool_version() {
@@ -41,6 +42,7 @@ configure_composer() {
41
42
  echo '{}' | tee "$composer_json" >/dev/null
42
43
  chmod 644 "$composer_json"
43
44
  fi
45
+ get_tool_version composer >/dev/null
44
46
  set_composer_env
45
47
  add_path "$composer_bin"
46
48
  set_composer_auth
@@ -70,22 +72,39 @@ can_access_public_github() {
70
72
  curl --fail -s -H "Authorization: token $1" 'https://api.github.com/' >/dev/null 2>&1
71
73
  }
72
74
 
75
+ composer_gh_auth_no_op() {
76
+ local message
77
+ message="$(<"${src:?}"/configs/composer-gh-auth-warn)"
78
+ message="${message//%s/$composer_version}"
79
+ if [ "${fail_fast:-false}" = "true" ]; then
80
+ add_log "${cross:?}" "composer" "$message"
81
+ else
82
+ echo "::warning::$message"
83
+ fi
84
+ }
85
+
73
86
  # Function to setup authentication in composer.
74
87
  set_composer_auth() {
75
- if [ -n "$COMPOSER_AUTH_JSON" ]; then
76
- if php -r "json_decode('$COMPOSER_AUTH_JSON'); if(json_last_error() !== JSON_ERROR_NONE) { throw new Exception('invalid json'); }"; then
77
- echo "$COMPOSER_AUTH_JSON" | tee "$composer_home/auth.json" >/dev/null
88
+ token="${COMPOSER_TOKEN:-$GITHUB_TOKEN}"
89
+ if [ -n "${COMPOSER_AUTH_JSON:-}" ]; then
90
+ if printf '%s' "$COMPOSER_AUTH_JSON" | jq -e . >/dev/null; then
91
+ printf '%s' "$COMPOSER_AUTH_JSON" | tee "$composer_home/auth.json" >/dev/null
78
92
  else
79
93
  add_log "${cross:?}" "composer" "Could not parse COMPOSER_AUTH_JSON as valid JSON"
80
94
  fi
81
95
  fi
96
+ if [ "$skip_composer_github_auth" = "true" ]; then
97
+ composer_gh_auth_no_op
98
+ fi
82
99
  composer_auth=()
83
100
  if [ -n "$PACKAGIST_TOKEN" ]; then
84
101
  composer_auth+=( '"http-basic": {"repo.packagist.com": { "username": "token", "password": "'"$PACKAGIST_TOKEN"'"}}' )
85
102
  fi
86
- token="${COMPOSER_TOKEN:-$GITHUB_TOKEN}"
87
103
  if [ -n "$token" ]; then
88
104
  write_token=true
105
+ if [ "$skip_composer_github_auth" = "true" ]; then
106
+ write_token=false
107
+ fi
89
108
  if [ "$GITHUB_SERVER_URL" != "https://github.com" ]; then
90
109
  can_access_public_github "$token" || write_token=false
91
110
  fi
@@ -182,6 +201,9 @@ add_tool() {
182
201
  url=$1
183
202
  tool=$2
184
203
  ver_param=$3
204
+ if [ "$tool" = "composer" ]; then
205
+ skip_composer_github_auth="${4:-false}"
206
+ fi
185
207
  tool_path="$tool_path_dir/$tool"
186
208
  if ! [ -d "$tool_path_dir" ]; then
187
209
  sudo mkdir -p "$tool_path_dir"
@@ -206,8 +228,8 @@ add_tool() {
206
228
  url[0]="${url[0]//releases\/latest\/download/releases/download/$(get -s -n "" "$(echo "${url[0]}" | cut -d '/' -f '1-5')/releases" | grep -Eo -m 1 "([0-9]+\.[0-9]+\.[0-9]+)/$(echo "${url[0]}" | sed -e "s/.*\///")" | cut -d '/' -f 1)}"
207
229
  status_code=$(get -v -e "$tool_path" "${url[0]}")
208
230
  fi
209
- if [ "$status_code" = "200" ] && [ "$use_cache" = "true" ]; then
210
- sudo cp -a "$tool_path" "$cache_path"
231
+ if [ "$status_code" = "200" ]; then
232
+ [ "$use_cache" = "true" ] && sudo cp -a "$tool_path" "$cache_path"
211
233
  elif [ -f "$tool_path.bak" ]; then
212
234
  sudo mv "$tool_path.bak" "$tool_path"
213
235
  fi
@@ -215,8 +237,8 @@ add_tool() {
215
237
  fi
216
238
  if [ "$status_code" = "200" ]; then
217
239
  add_tools_helper "$tool"
218
- [ -L "$tool_cache_path_dir/$tool" ] || sudo ln -s "$tool_path" "$tool_cache_path_dir/$tool" 2>/dev/null || true
219
240
  tool_version=$(get_tool_version "$tool" "$ver_param")
241
+ sudo ln -sfn "$tool_path" "$tool_cache_path_dir/$tool" 2>/dev/null || true
220
242
  add_log "${tick:?}" "$tool" "Added $tool $tool_version"
221
243
  else
222
244
  if [ "$tool" = "composer" ]; then
@@ -203,16 +203,20 @@ Function Install-PSPackage() {
203
203
  $cmdlet
204
204
  )
205
205
  $module_path = "$bin_dir\$psm1_path.psm1"
206
- if(-not (Test-Path $module_path -PathType Leaf)) {
207
- $zip_file = "$bin_dir\$package.zip"
208
- Get-File -Url $url -OutFile $zip_file
209
- Expand-Archive -Path $zip_file -DestinationPath $bin_dir -Force
210
- }
211
- Import-Module $module_path
212
- if($null -eq (Get-Command $cmdlet -ErrorAction SilentlyContinue)) {
213
- Install-Module -Name $package -Force
214
- } else {
206
+ $imported = $false
207
+ try {
208
+ if(-not (Test-Path $module_path -PathType Leaf)) {
209
+ $zip_file = "$bin_dir\$package.zip"
210
+ Get-File -Url $url -OutFile $zip_file
211
+ Expand-Archive -Path $zip_file -DestinationPath $bin_dir -Force -ErrorAction Stop
212
+ }
213
+ Import-Module $module_path -ErrorAction Stop
214
+ $imported = $null -ne (Get-Command $cmdlet -ErrorAction SilentlyContinue)
215
+ } catch { }
216
+ if($imported) {
215
217
  Add-ToProfile $current_profile "$package-search" "Import-Module $module_path"
218
+ } else {
219
+ Install-Module -Name $package -Force
216
220
  }
217
221
  }
218
222
 
package/src/tools.ts CHANGED
@@ -95,6 +95,42 @@ interface DeployerManifestEntry {
95
95
  url: string;
96
96
  }
97
97
 
98
+ export function skipGitHubAuthForComposerVersion(version: string): boolean {
99
+ if (!/^\d+\.\d+\.\d+(?:-[\w-]+)?$/.test(version)) {
100
+ return false;
101
+ }
102
+ return fs
103
+ .readFileSync(
104
+ path.join(__dirname, '../src/configs/composer-gh-auth-no-op'),
105
+ 'utf8'
106
+ )
107
+ .trim()
108
+ .split(/\r?\n/)
109
+ .some(range => {
110
+ const [min, max] = range.trim().split(/\s+/);
111
+ return (
112
+ cv.compareVersions(version, min) >= 0 &&
113
+ cv.compareVersions(version, max) < 0
114
+ );
115
+ });
116
+ }
117
+
118
+ export function cleanComposerAuthJson(): void {
119
+ try {
120
+ const auth_json = process.env['COMPOSER_AUTH_JSON'] || '';
121
+ if (!auth_json.includes('github-oauth')) return;
122
+ const auth = JSON.parse(auth_json);
123
+ delete auth['github-oauth'];
124
+ if (!Object.keys(auth).length) {
125
+ delete process.env['COMPOSER_AUTH_JSON'];
126
+ } else {
127
+ process.env['COMPOSER_AUTH_JSON'] = JSON.stringify(auth);
128
+ }
129
+ } catch {
130
+ return;
131
+ }
132
+ }
133
+
98
134
  /**
99
135
  * Function to get version in semver format.
100
136
  *
@@ -195,7 +231,7 @@ export async function getVersion(
195
231
  case !!data.repository && major_minor_regex.test(data.version):
196
232
  return await getSemverVersion(data);
197
233
  default:
198
- return data.version.replace(/[><=^~]*/, '');
234
+ return data.version.replace(/[^a-zA-Z0-9_.:@+,/-]/g, '');
199
235
  }
200
236
  }
201
237
 
@@ -311,12 +347,9 @@ export async function addArchive(data: ToolData): Promise<string> {
311
347
  export async function addPackage(data: ToolData): Promise<string> {
312
348
  const command = await utils.getCommand(data.os, 'composer_tool');
313
349
  const parts: string[] = data.repository.split('/');
314
- const args: string = await utils.joins(
315
- parts[1],
316
- data.release,
317
- parts[0] + '/',
318
- data.scope
319
- );
350
+ const args = [parts[1], data.release, parts[0] + '/', data.scope]
351
+ .map(a => utils.safeArg(a, data.os))
352
+ .join(' ');
320
353
  return command + args;
321
354
  }
322
355
 
@@ -383,6 +416,7 @@ export async function addComposer(data: ToolData): Promise<string> {
383
416
  const version_source_url = `${getcomposer}/download/${channel}/composer.phar`;
384
417
  let cache_url = `${releases_url},${spc_url},${cds_url}`;
385
418
  let source_url = `${getcomposer}/composer.phar`;
419
+ let skip_composer_github_auth = '';
386
420
  switch (true) {
387
421
  case /^snapshot$/.test(channel):
388
422
  source_url = is_lts ? lts_url : source_url;
@@ -393,7 +427,11 @@ export async function addComposer(data: ToolData): Promise<string> {
393
427
  case /^1$/.test(channel):
394
428
  source_url = channel_source_url;
395
429
  break;
396
- case /^\d+\.\d+\.\d+[\w-]*$/.test(data.version):
430
+ case /^\d+\.\d+\.\d+(?:-[\w-]+)?$/.test(data.version):
431
+ if (skipGitHubAuthForComposerVersion(data.version)) {
432
+ cleanComposerAuthJson();
433
+ skip_composer_github_auth = ' true';
434
+ }
397
435
  cache_url = `${github}/${data.repository}/releases/download/${data.version}/composer.phar`;
398
436
  source_url = version_source_url;
399
437
  break;
@@ -402,7 +440,7 @@ export async function addComposer(data: ToolData): Promise<string> {
402
440
  }
403
441
  const use_cache: boolean = (await utils.readEnv('NO_TOOLS_CACHE')) !== 'true';
404
442
  data.url = use_cache ? `${cache_url},${source_url}` : source_url;
405
- data.version_parameter = data.version;
443
+ data.version_parameter = data.version + skip_composer_github_auth;
406
444
  return await addArchive(data);
407
445
  }
408
446
 
package/src/utils.ts CHANGED
@@ -62,15 +62,31 @@ export async function getManifestURLS(): Promise<string[]> {
62
62
  */
63
63
  export async function parseVersion(version: string): Promise<string> {
64
64
  switch (true) {
65
+ case /^pre(-installed)?$/.test(version):
66
+ return 'pre';
65
67
  case /^(latest|lowest|highest|nightly|master|\d+\.x)$/.test(version):
66
68
  for (const manifestURL of await getManifestURLS()) {
67
69
  const fetchResult = await fetch.fetch(manifestURL);
68
70
  if (fetchResult['data'] ?? false) {
69
- return JSON.parse(fetchResult['data'])[version];
71
+ const resolved: string | undefined = JSON.parse(fetchResult['data'])[
72
+ version
73
+ ];
74
+ if (resolved === undefined) {
75
+ throw new Error(`Invalid PHP version: ${version.slice(0, 20)}`);
76
+ }
77
+ if (!/^\d+\.\d+$/.test(resolved)) {
78
+ throw new Error(
79
+ `Invalid PHP version in manifest: ${resolved.slice(0, 10)}`
80
+ );
81
+ }
82
+ return resolved;
70
83
  }
71
84
  }
72
85
  throw new Error(`Could not fetch the PHP version manifest.`);
73
86
  default:
87
+ if (!/^\d+(\.\d+){0,2}$/.test(version)) {
88
+ throw new Error(`Invalid PHP version: ${version.slice(0, 20)}`);
89
+ }
74
90
  switch (true) {
75
91
  case version.length > 1:
76
92
  return version.slice(0, 3);
@@ -86,14 +102,11 @@ export async function parseVersion(version: string): Promise<string> {
86
102
  * @param ini_file
87
103
  */
88
104
  export async function parseIniFile(ini_file: string): Promise<string> {
89
- switch (true) {
90
- case /^(production|development|none)$/.test(ini_file):
91
- return ini_file;
92
- case /php\.ini-(production|development)$/.test(ini_file):
93
- return ini_file.split('-')[1];
94
- default:
95
- return 'production';
105
+ if (/^(production|development|none)$/.test(ini_file)) {
106
+ return ini_file;
96
107
  }
108
+ const match = ini_file.match(/php\.ini-(production|development)$/);
109
+ return match ? match[1] : 'production';
97
110
  }
98
111
 
99
112
  /**
@@ -172,10 +185,10 @@ export async function log(
172
185
  export async function stepLog(message: string, os: string): Promise<string> {
173
186
  switch (os) {
174
187
  case 'win32':
175
- return 'Step-Log "' + message + '"';
188
+ return 'Step-Log "' + escapeForShell(message, os) + '"';
176
189
  case 'linux':
177
190
  case 'darwin':
178
- return 'step_log "' + message + '"';
191
+ return 'step_log "' + escapeForShell(message, os) + '"';
179
192
  default:
180
193
  return await log('Platform ' + os + ' is not supported', os, 'error');
181
194
  }
@@ -194,17 +207,40 @@ export async function addLog(
194
207
  message: string,
195
208
  os: string
196
209
  ): Promise<string> {
210
+ const sub = escapeForShell(subject, os);
211
+ const msg = escapeForShell(message, os);
197
212
  switch (os) {
198
213
  case 'win32':
199
- return 'Add-Log "' + mark + '" "' + subject + '" "' + message + '"';
214
+ return `Add-Log "${mark}" "${sub}" "${msg}"`;
200
215
  case 'linux':
201
216
  case 'darwin':
202
- return 'add_log "' + mark + '" "' + subject + '" "' + message + '"';
217
+ return `add_log "${mark}" "${sub}" "${msg}"`;
203
218
  default:
204
219
  return await log('Platform ' + os + ' is not supported', os, 'error');
205
220
  }
206
221
  }
207
222
 
223
+ export function escapeForShell(value: string, os: string): string {
224
+ if (os === 'win32') {
225
+ return value.replace(/[`$"]/g, '`$&');
226
+ }
227
+ return value.replace(/[\\`$"]/g, '\\$&');
228
+ }
229
+
230
+ export function safeArg(value: string, os: string): string {
231
+ if (!/^[a-zA-Z0-9_./:@+,~^-]*$/.test(value)) {
232
+ return '"' + escapeForShell(value, os) + '"';
233
+ }
234
+ return value;
235
+ }
236
+
237
+ export function sanitizeShellInput(value: string, strict = false): string {
238
+ const pattern = strict
239
+ ? /[$`"';|&(){}[\]\\<>*?\n\r\t]/g
240
+ : /[$`"';|&(){}[\]\\\n\r\t]/g;
241
+ return value.replace(pattern, '');
242
+ }
243
+
208
244
  /**
209
245
  * Function to break extension csv into an array
210
246
  *
@@ -224,11 +260,11 @@ export async function extensionArray(
224
260
  .split(',')
225
261
 
226
262
  .map(function (extension: string) {
263
+ extension = extension.trim().replace(/^\\\s*/, '');
227
264
  if (/.+-.+\/.+@.+/.test(extension)) {
228
265
  return extension;
229
266
  }
230
267
  return extension
231
- .trim()
232
268
  .toLowerCase()
233
269
  .replace(/^(:)?(php[-_]|none|zend )|(-[^-]*)-/, '$1$3');
234
270
  })
@@ -431,22 +467,35 @@ export async function parseExtensionSource(
431
467
  );
432
468
  }
433
469
 
470
+ const VERSION_INPUT_REGEX =
471
+ /^(latest|lowest|highest|nightly|master|pre|pre-installed|\d+\.x|\d+(\.\d+){0,2})$/;
472
+
473
+ function validatePHPVersionInput(version: string, source: string): string {
474
+ if (!VERSION_INPUT_REGEX.test(version)) {
475
+ throw new Error(
476
+ `Invalid PHP version in ${source}: ${version.slice(0, 20)}`
477
+ );
478
+ }
479
+ return version;
480
+ }
481
+
434
482
  /**
435
483
  * Read php version from input or file
436
484
  */
437
485
  export async function readPHPVersion(): Promise<string> {
438
486
  const version = await getInput('php-version', false);
439
487
  if (version) {
440
- return version;
488
+ return validatePHPVersionInput(version, 'php-version input');
441
489
  }
442
490
  const versionFile =
443
491
  (await getInput('php-version-file', false)) || '.php-version';
444
492
  if (fs.existsSync(versionFile)) {
445
493
  const contents: string = fs.readFileSync(versionFile, 'utf8');
446
- const match: RegExpMatchArray | null = contents.match(
447
- /^(?:php\s)?(\d+\.\d+\.\d+)$/m
494
+ const match = contents.match(/^(?:php\s)?(\d+\.\d+\.\d+)$/m);
495
+ return validatePHPVersionInput(
496
+ match ? match[1] : contents.trim(),
497
+ versionFile
448
498
  );
449
- return match ? match[1] : contents.trim();
450
499
  } else if (versionFile !== '.php-version') {
451
500
  throw new Error(`Could not find '${versionFile}' file.`);
452
501
  }
@@ -456,11 +505,11 @@ export async function readPHPVersion(): Promise<string> {
456
505
  if (fs.existsSync(composerLock)) {
457
506
  const lockFileContents = JSON.parse(fs.readFileSync(composerLock, 'utf8'));
458
507
  /* istanbul ignore next */
459
- if (
460
- lockFileContents['platform-overrides'] &&
461
- lockFileContents['platform-overrides']['php']
462
- ) {
463
- return lockFileContents['platform-overrides']['php'];
508
+ if (lockFileContents['platform-overrides']?.['php']) {
509
+ return validatePHPVersionInput(
510
+ lockFileContents['platform-overrides']['php'],
511
+ 'composer.lock platform-overrides.php'
512
+ );
464
513
  }
465
514
  }
466
515
 
@@ -470,12 +519,11 @@ export async function readPHPVersion(): Promise<string> {
470
519
  fs.readFileSync(composerJson, 'utf8')
471
520
  );
472
521
  /* istanbul ignore next */
473
- if (
474
- composerFileContents['config'] &&
475
- composerFileContents['config']['platform'] &&
476
- composerFileContents['config']['platform']['php']
477
- ) {
478
- return composerFileContents['config']['platform']['php'];
522
+ if (composerFileContents['config']?.['platform']?.['php']) {
523
+ return validatePHPVersionInput(
524
+ composerFileContents['config']['platform']['php'],
525
+ 'composer.json config.platform.php'
526
+ );
479
527
  }
480
528
  }
481
529