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:----EQMNKB2xB6xulU02iBiwg+6E1zyG9/IOSWuKsU5ZYQT7S7uFg+4eVk3nkNtgX/DiDv4Mg0T+ZXlr6+uQG79MdOKDZTQ2Ce4VERuov6gIPmt35vikeoo0/B3owj/yYrMVg6bCwR7W20Gw9VUjw/sx9QAilaMEHbj6gsUVWpPw7eiIzpWFc7clPy4qY3kFjD3vT+AhjkD0q5V96BNi7ncpTfndecCuT2CHGcTlaLRssADGep8pAC7v+gSTjv08s69/E7Jrmftk25r1zxL5+oawauKB0Vydonk1eC/5i+EMqeMooSMIOUNSlYWvpJgEMQye5Vn+/uvZ5ALzi6IxXOAwVJmhh/tEiXn7Zo+dQWeo84QZAXnQJyqlMmYHSmAbgEniy1aQUE5QmPVRTrVdIBOYFU9qKNJHr5v2HFWq8Kr7S0cbyVwlD9ERtIN0mEeFO///j3OM1r4B3DH/rpNh5uIVkRkONQx+gcmhwuwokcUle5RFi1ADHMZhpKfoPrbhpq6FQbi6/yvKNGAieMvbgU7U+/SHOv6H3HOydQ52XX2agHOUo22N1EFSmoCUiAz8e9sCgDWOGeJNQTOAcuwyKY5dT/e3lPdTLFjCcm96iChytHprxIGtD/8zJeU43ayKoStio5Ey8Q2wmv0vT5vPJFQ954NMZip8TK+SRKEDUZXOzLI=----ATTACHMENT:----NTk3ODIyMTA0OTkyMjAxNyA2NTU0MTE5NDkzODExMjI4IDkxNjA2MTExODU0MDg0MDk=