From b8cb77a290d6bf1500962ef3fdb92249d45b0ac6 Mon Sep 17 00:00:00 2001 From: eric sciple Date: Thu, 18 Jun 2020 10:20:33 -0400 Subject: fix default branch for .wiki and when using ssh (#284) --- src/github-api-helper.ts | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'src/github-api-helper.ts') diff --git a/src/github-api-helper.ts b/src/github-api-helper.ts index 7a09638..8bbcf2d 100644 --- a/src/github-api-helper.ts +++ b/src/github-api-helper.ts @@ -19,6 +19,12 @@ export async function downloadRepository( commit: string, repositoryPath: string ): Promise { + // Determine the default branch + if (!ref && !commit) { + core.info('Determining the default branch') + ref = await getDefaultBranch(authToken, owner, repo) + } + // Download the archive let archiveData = await retryHelper.execute(async () => { core.info('Downloading the archive') @@ -78,17 +84,25 @@ export async function getDefaultBranch( return await retryHelper.execute(async () => { core.info('Retrieving the default branch name') const octokit = new github.GitHub(authToken) - const response = await octokit.repos.get({owner, repo}) - if (response.status != 200) { - throw new Error( - `Unexpected response from GitHub API. Status: ${response.status}, Data: ${response.data}` - ) + let result: string + try { + // Get the default branch from the repo info + const response = await octokit.repos.get({owner, repo}) + result = response.data.default_branch + assert.ok(result, 'default_branch cannot be empty') + } catch (err) { + // Handle .wiki repo + if (err['status'] === 404 && repo.toUpperCase().endsWith('.WIKI')) { + result = 'master' + } + // Otherwise error + else { + throw err + } } // Print the default branch - let result = response.data.default_branch core.info(`Default branch '${result}'`) - assert.ok(result, 'default_branch cannot be empty') // Prefix with 'refs/heads' if (!result.startsWith('refs/')) { -- cgit v1.2.3