@roboplay/sage
Version:
Codemod for Robo.js
77 lines (71 loc) • 2.55 kB
JavaScript
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