// // Copyright 2022 DXOS.org // import { getRepo } from '../helpers'; import { asyncExec, asyncSpawn } from './util'; // TODO(burdon): Get within time range. // TODO(burdon): Hide old jobs (i.e., if newer job has run). export const getJobs = async (): Promise => { try { const fields = [ 'conclusion', 'createdAt', 'databaseId', 'headBranch', 'name', 'status', 'url' ]; const json = await asyncExec(`gh run list --json ${fields.join(',')}`) return JSON.parse(json); } catch (err) { console.log(err); return []; } }; export const viewJob = async (id: number, search?: string | undefined, lines = 16) => { try { // TODO(burdon): Only grep if match. const cmds = []; if (search) { cmds.push(`gh run view --log-failed ${id}`); cmds.push(`grep ${search} -A ${lines} || true`); } else { cmds.push(`gh run view ${id}`); } return await asyncExec(cmds.join(' | ')); } catch (err) { console.log(err); return []; } } export const watchJob = async (id: number, logger = console.log) => { try { await asyncSpawn('gh', ['run', 'watch', id], logger); } catch (err) { console.log(err); return []; } }