null, 'repo' => null, 'forge_url' => null, ]; } $commitMatch = []; $bareMatch = []; $hasCommitUrl = preg_match(self::COMMIT_URL_PATTERN, $modelOutput, $commitMatch, PREG_OFFSET_CAPTURE) === 1; $hasBareSha = preg_match(self::BARE_SHA_PATTERN, $modelOutput, $bareMatch, PREG_OFFSET_CAPTURE) === 1; if (! $hasCommitUrl && ! $hasBareSha) { return [ 'sha' => null, 'repo' => null, 'forge_url' => null, ]; } if ($hasCommitUrl && (! $hasBareSha || $commitMatch[0][1] <= $bareMatch[0][1])) { return [ 'sha' => $commitMatch[3][0], 'repo' => "{$commitMatch[1][0]}/{$commitMatch[2][0]}", 'forge_url' => $commitMatch[0][0], ]; } return [ 'sha' => $bareMatch[1][0], 'repo' => null, 'forge_url' => null, ]; } }