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:----MYQ99iP9pxJi2wsIHcWZvigdMF3TtIcQWd9qwMkCRKEaMVchzYFgEb1Oe14OerQEwAtdzr0+4N22N18tTwcgxEEPLkw1ouFopIYXRNsK5CSF4tcFJ66PkhJ6Az/man2i6traoJ6JueHD0f3ligDHtx1+Uk+psz5mXGpojOwNzRFox2UJAM6/eTW+tkB9xUwnFLwL2XaA+qbGwX1n1r3BvMdzfRUUDn0o4VD7mWPBkrZFMztceVE1ARVY3ugrlshyG3xvEh9LMy9QvQyhKPM51Kvh6yiu6S0QoVYpadGXLGAHYunuus023tej6KVEhSROK/yxLDPdRctD+yv5FoKojHXtuzQHPzP86ziSXIhHq+hagEeoMwPbkciFEu2K+8z/ppjomsJzdeBOSAwq5MBLovlO9Fm0b8I9J8K690QFfw6BCyio50MUUl9YQzigBnBKA3gNDhZQaZBYo04FR4103QxpVuEb4aPiA1NppE3roYQBSSkWbU9L7dJdMvGyeqOpHW7jRj1wguUle79+TIDw5+J50euYZlXo7VSly70CQaG6zL0F+zf39LVZisLER1hIGR/aocH7fX6Dd3W5lmps0FOhJEx50KluR8xgeGqGnsYa3QJr9y760ooXBqzRYlo/JOXi5p0VYhBIc3JuyCrMnU0l4xtXuaSnF4dDs5myG3E=----ATTACHMENT:----NTc0ODUwMDgwMjQwNDk4OCA5NTQ5OTg5MzE5MDQyMDU3IDYxODA2Mjc5MTM5Mzc1MDg=