UNPKG

@roboplay/sage

Version:
77 lines (71 loc) 2.55 kB
import { logger } from '../core/logger.js'; import { isRoboProject } from '../core/utils.js'; import { existsSync, mkdirSync, writeFileSync } from 'node:fs'; import { homedir } from 'node:os'; import path from 'node:path'; import { Command } from 'commander'; import { composeColors, color } from 'robo.js'; const Highlight = composeColors(color.bold, color.cyan); const command = new Command("link").description("Generate a Github action for continuous integrations").option("-s --silent", "do not print anything").option("-v --verbose", "print more information for debugging").action(linkAction); var link_default = command; async function linkAction(options) { logger({ enabled: !options.silent, level: options.verbose ? "debug" : "info" }); logger.debug(`CLI Options:`, options); const isGitProject = existsSync(path.join(process.cwd(), ".git")); const roboProject = isRoboProject(); if (isGitProject && roboProject) { createGitWorkflow(); } else { logger.error("Please make sure this is a Github and a Robo project before executing this command."); } } async function createGitWorkflow() { const HOME_DIR = homedir(); if (!existsSync(path.join(HOME_DIR, ".robo", "roboplay", "session.json"))) { logger.error(`Please run ${Highlight("npx robo login")} before running this command.`); return; } try { const workflowPath = path.join(process.cwd(), ".github", "workflows"); if (!existsSync(workflowPath)) { mkdirSync(workflowPath, { recursive: true }); } const workflowFile = await generateWorkflowFile(); writeFileSync(path.join(workflowPath, "roboplay.yml"), workflowFile); } catch (e) { logger.error(e); } } async function generateWorkflowFile() { return `name: 'Deploy to RoboPlay' on: push: branches: - main jobs: GeneratedCIRoboFile: runs-on: ubuntu-latest steps: - name: Check out repo uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 - name: Create session File env: ROBOPLAY_SESSION: \${{ secrets.ROBOPLAY_SESSION }} run: | ROBO_PATH="$HOME/.robo/roboplay" mkdir -p $ROBO_PATH SESSION="$ROBO_PATH/session.json" DECODED_DATA=$(echo "$ROBOPLAY_SESSION" | base64 --decode) echo "$DECODED_DATA" > "$SESSION" - name: Deploy bot run: npm install && npx robo deploy `; } export { link_default as default }; //# sourceMappingURL=out.js.map //# sourceMappingURL=link.js.map