[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <[email protected]> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12 namespace Symfony\Component\Console\CI; 13 14 use Symfony\Component\Console\Output\OutputInterface; 15 16 /** 17 * Utility class for Github actions. 18 * 19 * @author Maxime Steinhausser <[email protected]> 20 */ 21 class GithubActionReporter 22 { 23 private $output; 24 25 /** 26 * @see https://github.com/actions/toolkit/blob/5e5e1b7aacba68a53836a34db4a288c3c1c1585b/packages/core/src/command.ts#L80-L85 27 */ 28 private const ESCAPED_DATA = [ 29 '%' => '%25', 30 "\r" => '%0D', 31 "\n" => '%0A', 32 ]; 33 34 /** 35 * @see https://github.com/actions/toolkit/blob/5e5e1b7aacba68a53836a34db4a288c3c1c1585b/packages/core/src/command.ts#L87-L94 36 */ 37 private const ESCAPED_PROPERTIES = [ 38 '%' => '%25', 39 "\r" => '%0D', 40 "\n" => '%0A', 41 ':' => '%3A', 42 ',' => '%2C', 43 ]; 44 45 public function __construct(OutputInterface $output) 46 { 47 $this->output = $output; 48 } 49 50 public static function isGithubActionEnvironment(): bool 51 { 52 return false !== getenv('GITHUB_ACTIONS'); 53 } 54 55 /** 56 * Output an error using the Github annotations format. 57 * 58 * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-an-error-message 59 */ 60 public function error(string $message, string $file = null, int $line = null, int $col = null): void 61 { 62 $this->log('error', $message, $file, $line, $col); 63 } 64 65 /** 66 * Output a warning using the Github annotations format. 67 * 68 * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-a-warning-message 69 */ 70 public function warning(string $message, string $file = null, int $line = null, int $col = null): void 71 { 72 $this->log('warning', $message, $file, $line, $col); 73 } 74 75 /** 76 * Output a debug log using the Github annotations format. 77 * 78 * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-a-debug-message 79 */ 80 public function debug(string $message, string $file = null, int $line = null, int $col = null): void 81 { 82 $this->log('debug', $message, $file, $line, $col); 83 } 84 85 private function log(string $type, string $message, string $file = null, int $line = null, int $col = null): void 86 { 87 // Some values must be encoded. 88 $message = strtr($message, self::ESCAPED_DATA); 89 90 if (!$file) { 91 // No file provided, output the message solely: 92 $this->output->writeln(sprintf('::%s::%s', $type, $message)); 93 94 return; 95 } 96 97 $this->output->writeln(sprintf('::%s file=%s,line=%s,col=%s::%s', $type, strtr($file, self::ESCAPED_PROPERTIES), strtr($line ?? 1, self::ESCAPED_PROPERTIES), strtr($col ?? 0, self::ESCAPED_PROPERTIES), $message)); 98 } 99 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |