dokkie
Version:
Create good looking documentation from your Readme
268 lines • 8.5 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setAlternativeDefaults = exports.getDokkieVersion = exports.settings = exports.defaultSettings = void 0;
const yargs_1 = __importDefault(require("yargs"));
const { readFile } = require("fs").promises;
const path_1 = require("path");
const steps_1 = require("./steps");
exports.defaultSettings = {
type: "docs",
input: ".",
output: "dokkie",
layout: "default",
assets: {},
cleanBefore: true,
theme: "feather",
extensions: [".md"],
excludeFolders: ["node_modules", "dist", "public"],
copy: [],
strip: ["pages"],
codeHighlight: true,
projectTitle: "",
favicon: "",
flatNavigation: false,
skip: [],
showNavigation: [
{ name: "header", mobile: true, desktop: true },
{ name: "footer", mobile: true, desktop: true },
],
config: "dokkie.config.json",
language: "en",
logging: [],
showHome: false,
url: "",
enhance: {
search: true,
googleAnalytics: false,
pageTransition: false,
scrollClasses: false,
},
};
exports.settings = () => {
const cs = yargs_1.default.options({
type: {
require: false,
type: "string",
default: exports.defaultSettings.type,
},
input: {
required: false,
type: "string",
default: exports.defaultSettings.input,
alias: "i",
},
output: {
required: false,
type: "string",
default: exports.defaultSettings.output,
alias: "o",
},
layout: {
required: false,
type: "string",
default: exports.defaultSettings.layout,
alias: "l",
},
cleanBefore: {
required: false,
type: "string",
default: exports.defaultSettings.cleanBefore,
alias: "c",
},
theme: {
required: false,
type: "string",
default: exports.defaultSettings.theme,
alias: "t",
},
extensions: {
required: false,
type: "array",
default: exports.defaultSettings.extensions,
alias: "ext",
},
excludeFolders: {
required: false,
type: "array",
default: exports.defaultSettings.excludeFolders,
alias: "exclude",
},
copy: {
required: false,
type: "array",
default: exports.defaultSettings.copy,
},
strip: {
required: false,
type: "array",
default: exports.defaultSettings.strip,
},
flatNavigation: {
required: false,
type: "boolean",
default: exports.defaultSettings.flatNavigation,
},
showNavigation: {
required: false,
type: "array",
default: exports.defaultSettings.showNavigation,
},
codeHighlight: {
required: false,
type: "boolean",
default: exports.defaultSettings.codeHighlight,
},
projectTitle: {
require: false,
type: "string",
default: exports.defaultSettings.projectTitle,
},
favicon: {
require: false,
type: "string",
default: exports.defaultSettings.favicon,
},
logo: {
required: false,
type: "string",
default: null,
},
skip: {
require: false,
type: "array",
default: exports.defaultSettings.skip,
},
config: {
require: false,
type: "string",
default: exports.defaultSettings.config,
},
language: {
require: false,
type: "string",
default: exports.defaultSettings.language,
},
logging: {
require: false,
type: "array",
default: exports.defaultSettings.logging,
},
showHome: {
require: false,
type: "boolean",
default: exports.defaultSettings.showHome,
},
url: {
require: false,
type: "string",
default: exports.defaultSettings.url,
},
googleAnalytics: {
require: false,
type: "string",
default: exports.defaultSettings.enhance.googleAnalytics,
},
pageTransition: {
require: false,
type: "boolean",
default: exports.defaultSettings.enhance.pageTransition,
},
search: {
require: false,
type: "boolean",
default: exports.defaultSettings.enhance.search,
},
scrollClasses: {
require: false,
type: "boolean",
default: exports.defaultSettings.enhance.scrollClasses,
},
}).argv;
return {
type: cs.type,
input: cs.input,
output: cs.output,
layout: cs.layout,
excludeFolders: cs.excludeFolders,
extensions: cs.extensions,
cleanBefore: cs.cleanBefore,
theme: cs.theme,
assets: { logo: cs.logo, favicon: cs.favicon },
copy: cs.copy,
strip: cs.strip,
flatNavigation: cs.flatNavigation,
showNavigation: cs.showNavigation,
codeHighlight: cs.codeHighlight,
projectTitle: cs.projectTitle,
favicon: cs.favicon,
skip: cs.skip,
config: cs.config,
enhance: {
googleAnalytics: cs.googleAnalytics,
search: cs.search,
pageTransition: cs.pageTransition,
scrollClasses: cs.scrollClasses,
},
language: cs.language,
logging: cs.logging,
showHome: cs.showHome,
url: cs.url,
};
};
exports.getDokkieVersion = (s) => __awaiter(void 0, void 0, void 0, function* () {
try {
const dokkiePackage = yield readFile(path_1.join(__dirname, "../package.json"));
return Object.assign(Object.assign({}, s), { version: JSON.parse(dokkiePackage).version });
}
catch (err) {
throw new Error(err);
}
});
exports.setAlternativeDefaults = (s) => __awaiter(void 0, void 0, void 0, function* () {
const args = process.argv
.slice(2)
.map((arg) => (arg = arg.split("=")[0].replace("--", "")));
switch (s.type) {
case "blog":
if (!args.includes("layout"))
s.layout = "blog";
if (!args.includes("theme"))
s.theme = "feather";
if (!args.includes("flatNavigation"))
s.flatNavigation = true;
if (!args.includes("showNavigation"))
if (!args.includes("showNavigation")) {
s.showNavigation = [
{ name: "overview", desktop: true, mobile: true },
];
}
break;
case "docs":
if (!args.includes("input")) {
const files = yield steps_1.getFileTree(s.input, s);
if (files.length === 1)
s.layout = "simple";
}
break;
case "website":
if (!args.includes("layout"))
s.layout = "website";
if (!args.includes("theme"))
s.theme = "feather";
break;
}
return s;
});
//# sourceMappingURL=settings.js.map