From 732adc41efcba07c3c8ed5c0d84135f15c2af97b Mon Sep 17 00:00:00 2001 From: Naveenraj M Date: Sun, 29 Mar 2020 16:04:56 +0530 Subject: [PATCH] tsc built --- lib/download-release-archive.js | 35 +++++++++++++++++++++++++++ lib/main.js | 43 ++++++++++++++++++++++++++++++--- 2 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 lib/download-release-archive.js diff --git a/lib/download-release-archive.js b/lib/download-release-archive.js new file mode 100644 index 0000000..c99b393 --- /dev/null +++ b/lib/download-release-archive.js @@ -0,0 +1,35 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const { Octokit } = require('@octokit/rest'); +const fs = require('fs'); +const tc = require('@actions/tool-cache'); +function download_archive(owner, repo, ref) { + return __awaiter(this, void 0, void 0, function* () { + try { + const octokit = new Octokit(); + const archive_format = "tarball"; + const downloadLocation = octokit.repos.getArchiveLink({ + owner, + repo, + archive_format, + ref + }); + console.log(`Download Location : ${downloadLocation}`); + const tarBallPath = yield tc.downloadTool(downloadLocation); + console.log(`Tarball Location : ${tarBallPath}`); + return tarBallPath; + } + catch (error) { + core.setFailed(error.message); + } + }); +} +module.exports = download_archive; diff --git a/lib/main.js b/lib/main.js index a72e6ac..3420c14 100644 --- a/lib/main.js +++ b/lib/main.js @@ -1,22 +1,57 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; const core = require('@actions/core'); const github = require('@actions/github'); +const exec = require('@actions/exec'); +const io = require('@actions/io'); +const download_tar = require('./download-release-archive'); function run() { return __awaiter(this, void 0, void 0, function* () { try { - const myInput = core.getInput('myInput'); - core.debug(`Hello ${myInput} from inside a container`); // Get github context data const context = github.context; - console.log(`We can even get context data, like the repo: ${context.repo.repo}`); + const owner = context.repo.owner; + const repo = context.repo.repo; + const ref = context.repo.ref; + console.log(`We can even get context data, like the owner: ${owner}, repo: ${repo}, ref: ${ref}`); + const tarBallPath = download_tar(owner, repo, ref); + console.log(`Tar Path for copy : ${tarBallPath}`); + const specFile = core.getInput('specFile'); + core.debug(`Hello ${specFile} from inside a container`); + // Get repo files from /github/workspace/ + yield exec.exec('ls -la /github/workspace'); + // LOG: know current directory + yield exec.exec('pwd && echo $HOME && ls'); + // Copy spec file from path specFile to /root/rpmbuild/SPECS/ + //await io.cp('path/to/file', 'path/to/dest'); + // Get tar.gz file of release + // 1. Write API call to download tar.gz from release OR + // 2. Create tar.gz of /github/workspace to get tar of source code + // Copy tar.gz file to /root/rpmbuild/SOURCES + // make sure the name of tar.gz is same as given in Source of spec file + //await io.cp('path/to/file', '/root/rpmbuild/SOURCES'); + // Execute rpmbuild + try { + yield exec.exec(`rpmbuild -ba ${specFile}`); + } + catch (err) { + core.setFailed(`action failed with error: ${err}`); + } + // Get path for rpm + //const rpmPath = await exec.exec('node', ['index.js', 'foo=bar'], options); + // setOutput rpm_path to /root/rpmbuild/RPMS , to be consumed by other actions like + // actions/upload-release-asset + // If you want to upload yourself , need to write api call to upload as asset + //core.setOutput("rpmPath", rpmPath) + //core.setOutput("sourceRpmPath", sourceRpmPath) // make option to upload source rpm } catch (error) { core.setFailed(error.message);