From 877b09823b1b30e1e42514be1e1204796cba36a7 Mon Sep 17 00:00:00 2001 From: steffel <2143646+steffenix@users.noreply.github.com> Date: Thu, 22 Apr 2021 12:48:39 +0200 Subject: [PATCH] feat: optional template argument --- lib/args.d.ts | 2 ++ lib/args.js | 6 ++++++ lib/bin/vydoc.js | 2 +- lib/generate.d.ts | 2 +- lib/generate.js | 8 ++++---- lib/table.d.ts | 3 +-- lib/types.d.ts | 1 + lib/types.js | 3 ++- package-lock.json | 8 +++++++- package.json | 5 +++-- src/args.ts | 6 ++++++ src/bin/vydoc.ts | 2 +- src/generate.ts | 11 +++++++---- src/table.ts | 2 +- src/types.ts | 2 ++ 15 files changed, 45 insertions(+), 18 deletions(-) diff --git a/lib/args.d.ts b/lib/args.d.ts index 1615d62..b8c3a02 100644 --- a/lib/args.d.ts +++ b/lib/args.d.ts @@ -7,5 +7,7 @@ export declare const options: import("yargs").Argv<{ compiler: string; } & { format: "markdown"; +} & { + template: string; }>; export declare const printCliArguments: (x: unknown) => void; diff --git a/lib/args.js b/lib/args.js index 3375ca3..b22ac3e 100644 --- a/lib/args.js +++ b/lib/args.js @@ -29,6 +29,12 @@ exports.options = yargs_1.option("input", { type: "string", description: "ddocs format", "default": types_1.cliArgumentsDefault.format +}) + .option("template", { + alias: "t", + type: "string", + description: "template to use", + "default": types_1.cliArgumentsDefault.template }) .help() .alias("help", "h"); diff --git a/lib/bin/vydoc.js b/lib/bin/vydoc.js index cc2241a..2765af3 100755 --- a/lib/bin/vydoc.js +++ b/lib/bin/vydoc.js @@ -51,7 +51,7 @@ var vyperFileExtentions = ["vy"]; switch (_a.label) { case 0: return [4 /*yield*/, compile_1.compileContracts(argv.input, filePaths, argv.compiler) .then(ramda_1.tap(function () { return console.log(chalk_1.blue("\nGenerate docs...")); })) - .then(function (contracts) { return generate_1.generateDocs(argv.format, argv.output, contracts); })]; + .then(function (contracts) { return generate_1.generateDocs(argv.format, argv.output, contracts, argv.template); })]; case 1: return [2 /*return*/, _a.sent()]; } }); diff --git a/lib/generate.d.ts b/lib/generate.d.ts index 713ea01..d23bb6d 100644 --- a/lib/generate.d.ts +++ b/lib/generate.d.ts @@ -2,4 +2,4 @@ import { Contract, Format } from "./types"; export declare const generateDocs: (format: Format, output: string, contracts: { fileName: string; data: Contract; -}[]) => Promise; +}[], templatePath: string) => Promise; diff --git a/lib/generate.js b/lib/generate.js index bf54938..34260de 100644 --- a/lib/generate.js +++ b/lib/generate.js @@ -45,10 +45,10 @@ var fs_1 = require("fs"); var path_1 = require("path"); var ramda_1 = require("ramda"); var progress_1 = require("./progress"); -var generateDocs = function (format, output, contracts) { return __awaiter(void 0, void 0, void 0, function () { +var generateDocs = function (format, output, contracts, templatePath) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, ramda_1.cond([ - [ramda_1.equals("markdown"), function () { return generateMarkDown(contracts, output); }], + [ramda_1.equals("markdown"), function () { return generateMarkDown(contracts, output, templatePath); }], [ ramda_1.T, function () { @@ -59,7 +59,7 @@ var generateDocs = function (format, output, contracts) { return __awaiter(void }); }); }; exports.generateDocs = generateDocs; -var generateMarkDown = function (contracts, output) { return __awaiter(void 0, void 0, void 0, function () { +var generateMarkDown = function (contracts, output, templatePath) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, ramda_1.pipe(fs_1.readFileSync, function (buffer) { return buffer.toString(); }, ejs_1["default"].compile, function (template) { return ramda_1.pipe(function (handler) { @@ -77,6 +77,6 @@ var generateMarkDown = function (contracts, output) { return __awaiter(void 0, v })) .map(ramda_1.tap(handler)); })(progress_1.makeProgressBar(contracts.length)); - })(path_1.join(__dirname, "../src/templates/markdown.ejs"))]; + })(templatePath)]; }); }); }; diff --git a/lib/table.d.ts b/lib/table.d.ts index cad40f2..fb322d4 100644 --- a/lib/table.d.ts +++ b/lib/table.d.ts @@ -1,4 +1,4 @@ -interface TableOptions { +export interface TableOptions { chars: Partial>; truncate: string; colors: boolean; @@ -14,4 +14,3 @@ interface TableOptions { head: string[]; } export declare const makeTable: (options?: Partial | undefined) => (values: any[]) => string; -export {}; diff --git a/lib/types.d.ts b/lib/types.d.ts index 8509566..2d1f6f0 100644 --- a/lib/types.d.ts +++ b/lib/types.d.ts @@ -3,6 +3,7 @@ export declare type CliArguments = { output: string; compiler: string; format: Format; + template: string; }; export declare type Format = "markdown"; export declare const cliArgumentsDefault: CliArguments; diff --git a/lib/types.js b/lib/types.js index 2ec5a9c..d8c0c53 100644 --- a/lib/types.js +++ b/lib/types.js @@ -5,5 +5,6 @@ exports.cliArgumentsDefault = { input: "./contracts", output: "./docs", compiler: "vyper", - format: "markdown" + format: "markdown", + template: "../src/templates/markdown.ejs" }; diff --git a/package-lock.json b/package-lock.json index 7f24754..008eda3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vydoc", - "version": "0.0.0", + "version": "0.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -330,6 +330,12 @@ "integrity": "sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==", "dev": true }, + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "dev": true + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index 8ba0a61..8713da2 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "@types/ejs": "^3.0.6", "@types/node": "^14.14.35", "@types/ramda": "^0.27.39", - "@types/yargs": "^16.0.0" + "@types/yargs": "^16.0.0", + "typescript": "^4.2.4" } -} \ No newline at end of file +} diff --git a/src/args.ts b/src/args.ts index 4c05c41..5573ff7 100644 --- a/src/args.ts +++ b/src/args.ts @@ -28,6 +28,12 @@ export const options = option("input", { description: "ddocs format", default: cliArgumentsDefault.format, }) + .option("template", { + alias: "t", + type: "string", + description: "template to use", + default: cliArgumentsDefault.template, + }) .help() .alias("help", "h"); diff --git a/src/bin/vydoc.ts b/src/bin/vydoc.ts index 3b83a7e..1d80fe7 100644 --- a/src/bin/vydoc.ts +++ b/src/bin/vydoc.ts @@ -18,5 +18,5 @@ const vyperFileExtentions = ["vy"]; async (filePaths) => await compileContracts(argv.input, filePaths, argv.compiler) .then(tap(() => console.log(blue("\nGenerate docs...")))) - .then((contracts) => generateDocs(argv.format, argv.output, contracts)) + .then((contracts) => generateDocs(argv.format, argv.output, contracts, argv.template)) )(argv))(options.argv); diff --git a/src/generate.ts b/src/generate.ts index 9c5ccf6..6c44832 100644 --- a/src/generate.ts +++ b/src/generate.ts @@ -4,14 +4,16 @@ import { join } from "path"; import { cond, equals, pipe, T, tap } from "ramda"; import { makeProgressBar } from "./progress"; import { Contract, Format } from "./types"; +import path from 'path'; export const generateDocs = async ( format: Format, output: string, - contracts: { fileName: string; data: Contract }[] + contracts: { fileName: string; data: Contract }[], + templatePath: string ) => cond([ - [equals("markdown"), () => generateMarkDown(contracts, output)], + [equals("markdown"), () => generateMarkDown(contracts, output, templatePath)], [ T, () => { @@ -22,7 +24,8 @@ export const generateDocs = async ( const generateMarkDown = async ( contracts: { fileName: string; data: Contract }[], - output: string + output: string, + templatePath: string ) => pipe( readFileSync, @@ -51,4 +54,4 @@ const generateMarkDown = async ( ) .map(tap(handler)) )(makeProgressBar(contracts.length)) - )(join(__dirname, "../src/templates/markdown.ejs")); + )(templatePath); diff --git a/src/table.ts b/src/table.ts index 622d61f..2cf4ed3 100644 --- a/src/table.ts +++ b/src/table.ts @@ -1,6 +1,6 @@ import Table from "cli-table"; -interface TableOptions { +export interface TableOptions { chars: Partial< Record< | "top" diff --git a/src/types.ts b/src/types.ts index 1278f8e..080a163 100644 --- a/src/types.ts +++ b/src/types.ts @@ -3,6 +3,7 @@ export type CliArguments = { output: string; compiler: string; format: Format; + template: string }; export type Format = "markdown"; @@ -12,6 +13,7 @@ export const cliArgumentsDefault = { output: "./docs", compiler: "vyper", format: "markdown", + template: "../src/templates/markdown.ejs" } as CliArguments; export type Contract = {