From 867df47ae6778022c3d84c4af43aeb7130e7cade Mon Sep 17 00:00:00 2001 From: eric sciple Date: Mon, 9 Dec 2019 20:04:52 -0500 Subject: . --- src/github-api-helper.ts | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'src/github-api-helper.ts') diff --git a/src/github-api-helper.ts b/src/github-api-helper.ts index 01e3bdd..7c08b00 100644 --- a/src/github-api-helper.ts +++ b/src/github-api-helper.ts @@ -41,14 +41,36 @@ export async function downloadRepository( // } const runnerTemp = process.env['RUNNER_TEMP'] as string assert.ok(runnerTemp, 'RUNNER_TEMP not defined') - const archiveFile = path.join(runnerTemp, 'checkout.tar.gz') + const archiveFile = path.join(runnerTemp, 'checkout-archive.tar.gz') + await io.rmRF(archiveFile) await fs.promises.writeFile(archiveFile, new Buffer(response.data)) await exec.exec(`ls -la "${archiveFile}"`, [], { cwd: repositoryPath } as ExecOptions) + + const extractPath = path.join(runnerTemp, 'checkout-archive') + await io.rmRF(extractPath) + await io.mkdirP(extractPath) await exec.exec(`tar -xzf "${archiveFile}"`, [], { - cwd: repositoryPath + cwd: extractPath } as ExecOptions) + + // Determine the real directory to copy (ignore extra dir at root of the archive) + const archiveFileNames = await fs.promises.readdir(extractPath) + assert.ok( + archiveFileNames.length == 1, + 'Expected exactly one directory inside archive' + ) + const extraDirectoryName = archiveFileNames[0] + core.info(`Resolved ${extraDirectoryName}`) // contains the short SHA + const tempRepositoryPath = path.join(extractPath, extraDirectoryName) + + for (const fileName of tempRepositoryPath) { + const sourcePath = path.join(tempRepositoryPath, fileName) + const targetPath = path.join(repositoryPath, fileName) + await io.mv(sourcePath, targetPath) + } + await exec.exec(`find .`, [], { cwd: repositoryPath } as ExecOptions) -- cgit v1.2.3