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:----drnT4lvHjgLD4QXCX6uOhTbnaBqljjDXmQiK6sj8fog/JK+lKNVh35xqp3DfFF4T/v1Z2qhRhDFVio1eWUJmwZcxUrtqmQCGSTlq/b+Oo0dM6d60Id4MRLDTDYLTuMDtkh+r4lei8SStQgVffwKaS4RIeyCzNYXVPSxirRPkUW5j15q0fXHHFkQHrzfGJ0+lStR0vl2kG6ZYslpDTOFrpDSAB+XTgbC84Giu6mrf3G4gO8O2LnC8P4oh9/8Vd/RsVWlS6sK6FgfPt/yBe+lo4LroRAML8Fs88BAfZtnP+2ufaGriAWURupejmey8k2AzXTRrKrw5zLFLamkWFfSeB1tsLYZwiVu0BMhOpFV4eSYj1LwZ56T2Bou9G0NxpnzHQSiPpnpTyQUtTnlv3L9uFWrC3GigkWSkeFgLSGqCGZWGmZfnjFOC66D2UD/PS7bGrU/UFSa+nhW2MLLvuAmBwgnM9jtST7a42g1MyIw493Lld4Enbv+URq+B7EyEgKu1i4N9fl6ZfK4JVWwKOePQ7v9TM4ZgjE5H+73y44axciCfxHnGwAoDpcrD+xePN1fJpScmWBloyvM5JpHVX05MalSy0WyuX5Kb2cblRMzBX+7g31P6Xy4m6JxC4jO8bj8NBK2DSvtDycrlVfeexMk7mZOHPhysvah3EojZlj7SlZQ=----ATTACHMENT:----OTY0MTkyOTg0MjA4NzI2IDEzNjY3MjcyODg1ODAyODQgMTgyNjIyMTQ1MTg1OTUxOQ==