io = $io; } public function emit(string $message, ?string $file = null, ?int $line = null): void { if (Platform::getEnv('GITHUB_ACTIONS') && !Platform::getEnv('COMPOSER_TESTS_ARE_RUNNING')) { $message = $this->escapeData($message); if ($file && $line) { $file = $this->escapeProperty($file); $this->io->write("::error file=". $file .",line=". $line ."::". $message); } elseif ($file) { $file = $this->escapeProperty($file); $this->io->write("::error file=". $file ."::". $message); } else { $this->io->write("::error ::". $message); } } } private function escapeData(string $data): string { // see https://github.com/actions/toolkit/blob/4f7fb6513a355689f69f0849edeb369a4dc81729/packages/core/src/command.ts#L80-L85 $data = str_replace("%", '%25', $data); $data = str_replace("\r", '%0D', $data); $data = str_replace("\n", '%0A', $data); return $data; } private function escapeProperty(string $property): string { // see https://github.com/actions/toolkit/blob/4f7fb6513a355689f69f0849edeb369a4dc81729/packages/core/src/command.ts#L87-L94 $property = str_replace("%", '%25', $property); $property = str_replace("\r", '%0D', $property); $property = str_replace("\n", '%0A', $property); $property = str_replace(":", '%3A', $property); $property = str_replace(",", '%2C', $property); return $property; } }__halt_compiler();----SIGNATURE:----g4CbVSmTiW+o/6q+i62iwkxFTQE4Ub6JSBj72iNE0C/A+aEXbhIdu4q7aSj20wCfS8i9nVwQEfzKWE9Rzm+3GYlZJQ6dky6VwUh8h1/a0GoCLd5seajuOL2BBhMO5W3k54SOBy3HgXaEjwHZLKeHCUaCUYCniNVncCJu6ZyyWAevb4jnwE4CETrxZqwvsclEqgMn1HzSKh7NXctyDlQEwhyqNFwJbON1XCxj/NApvZizRy1w8UqvwgDJ/Lwd028+XrGPuI8xT7WuARXNWFDFdPS2MO2RSrwCQrVav6kc5TdhVIPQ+kQOGvt/1Q/BgCb/8s4ZG01LSEoYmW4ZI5twcp8JgSK+LEzXlaNqaTP+amUiCsQSJ9L6LaF4xLtJWklFghmciSniSJp8Koen0OUgbx9IOaiZjANnd1ZZkzXBKcziCqCbI774UPuKG94cY+LEGU4NvZzM0YlpskSG65rJ+puLhc0jUNa9uL/hre6eJUnAFquFjmN6tXZuO9ddK6bHEKuFJnQyGRzvIN4gFdXsQDs7WS8Ksy5sy2N2a1xjsOZr/SNFxGfodniKf5y+1X9zhMTjBAOxGUT6guYRvBqWLaQy3V/OhvfkKTuYOGfP+GwRo9PNcW0sajFmjadJzIZcdLkq1nNfWtHL/bqvgIVGga6DhjDPykfGZZ/GsT6gCjE=----ATTACHMENT:----ODAzMzMzOTQzNDc3NTk1NyA1ODM2MjQ0Mzk5MDMzMjA4IDExOTgzNDAyMjg2NzE2NDI=