sbv2-solana/tools/scripts/generate-cli-docs.js

71 lines
2.0 KiB
JavaScript

#!/usr/bin/env node
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable import/no-extraneous-dependencies */
/**
* This script will
* - Generate OCLIF CLI documentation
* - Add underscores to filenames so they are hidden in docusaurus sidebar
* - Remove first two lines so they are partial MDX files and can be imported
*/
const shell = require("shelljs");
const fs = require("fs");
const path = require("path");
const { execSync } = require("child_process");
const projectRoot = path.join(__dirname, "..", "..");
const cliPath = path.join(projectRoot, "cli");
const cliOutPath = path.join(projectRoot, "website", "api", "cli");
const cliOutRelPath = path.relative(cliPath, cliOutPath);
const oclifBin = path.join(
projectRoot,
"cli",
"node_modules",
".bin",
"oclif-dev"
);
// Generate Oclif documentation
shell.cd(cliPath);
if (shell.exec(`npx oclif-dev readme`).code !== 0) {
shell.echo(`Error: Oclif failed to generate documentation`);
shell.exit(1);
}
if (
shell.exec(`npx oclif-dev readme --multi --dir ${cliOutRelPath}`).code !== 0
) {
shell.echo(`Error: Oclif failed to generate documentation`);
shell.exit(1);
}
shell.cd(cliOutPath);
// Remove old underscored files
shell.ls(`_*.md`).forEach((file) => {
shell.rm(file);
});
// Add underscores, remove first two lines, and update documentation path
shell.ls(`*.md`).forEach((file) => {
// add underscore to filename
const fileName = path.basename(file);
const underscoredFileName = "_" + fileName;
shell.mv("-f", fileName, underscoredFileName);
// TODO: Update URL to release tag
// update github documentation links
shell.sed(
"-i",
`https://github.com/switchboard-xyz/switchboard-v2/blob/.*/src`,
"https://github.com/switchboard-xyz/switchboard-v2/tree/main/cli/src",
underscoredFileName
);
// remove first two lines
fs.writeFileSync(
underscoredFileName,
fs.readFileSync(underscoredFileName, "utf8").split("\n").slice(2).join("\n")
);
});