packages/plugin-block/src/git.ts (42 lines of code) (raw):

import * as ora from "ora"; import * as execa from 'execa'; import { IContext } from "./types"; export async function gitClone(ctx: IContext, spinner: ora.Ora) { spinner.start('Clone git repo'); try { await execa( `git`, [`clone`, ctx.repo, ctx.id, `--single-branch`, `-b`, ctx.branch], { cwd: ctx.blocksTempPath, env: process.env, }, ); } catch (e) { spinner.fail(); throw new Error(e); } spinner.succeed(); } export async function gitUpdate(ctx: IContext, spinner: ora.Ora) { try { spinner.start('Git fetch'); await execa(`git`, ['fetch'], { cwd: ctx.templateTmpDirPath }); spinner.succeed(); spinner.start(`Git checkout ${ctx.branch}`); await execa(`git`, ['checkout', ctx.branch], { cwd: ctx.templateTmpDirPath, }); spinner.succeed(); spinner.start('Git pull'); await execa(`git`, [`pull`], { cwd: ctx.templateTmpDirPath, }); spinner.succeed(); } catch (e) { spinner.fail(); throw new Error(e); } }