fix(core): update

This commit is contained in:
2019-10-14 09:31:28 +02:00
parent f4ea7f0d0a
commit 4a40c37be2
5 changed files with 257 additions and 232 deletions

View File

@ -31,7 +31,7 @@ export class MkDocs {
// Instance
public typedocDirectory: string;
constructor(dirPathArg) {
constructor(dirPathArg: string) {
this.typedocDirectory = dirPathArg;
}

62
ts/tsdoc.classes.tsdoc.ts Normal file
View File

@ -0,0 +1,62 @@
import * as plugins from './tsdoc.plugins';
import { MkDocs } from './tsdoc.classes.mkdocs';
import { TypeDoc } from './tsdoc.classes.typedoc';
import { logger } from './tsdoc.logging';
export type TDirectoryType = 'mkdocs' | 'typedoc';
export class TsDoc {
public smartshellInstance = new plugins.smartshell.Smartshell({
executor: 'bash'
});
public mkdocs: MkDocs;
public typedoc: TypeDoc;
public cwd: string;
public cwdDirType: TDirectoryType;
constructor(cwdArg: string) {
this.cwd = cwdArg;
this.mkdocs = new MkDocs(this.cwd);
this.typedoc = new TypeDoc(this.cwd);
}
public async buildDirectory() {
await this.detectDirectoryType();
if (this.cwdDirType === 'mkdocs') {
await this.mkdocs.compile();
} else if (this.cwdDirType === 'typedoc') {
await this.typedoc.compile();
}
await this.runAdditionalTasks();
}
private async detectDirectoryType () {
logger.log('warn', `Auto detecting environment!`);
switch (true) {
case await TypeDoc.isTypeDocDir(this.cwd):
logger.log('ok', `Detected TypeDoc compliant directory at ${this.cwd}`);
this.cwdDirType = 'typedoc';
break;
case await MkDocs.isMkDocsDir(this.cwd):
logger.log('ok', `Detected MkDocs compliant directory at ${this.cwd}`);
this.cwdDirType = 'mkdocs';
break;
default:
logger.log('error', `Cannot determine docs format at ${this.cwd}`);
}
}
/**
* runs additional tasks from package.json
*/
public runAdditionalTasks() {
const packageJson = plugins.smartfile.fs.toObjectSync(plugins.path.join(this.cwd, 'package.json'));
if (packageJson.scripts.tsdoc) {
this.smartshellInstance.exec('npm run tsdoc');
}
}
}

View File

@ -4,36 +4,21 @@ import { logger } from './tsdoc.logging';
import { TypeDoc } from './tsdoc.classes.typedoc';
import { MkDocs } from './tsdoc.classes.mkdocs';
import { TsDoc } from './tsdoc.classes.tsdoc';
export const run = async () => {
const tsdocCli = new plugins.smartcli.Smartcli();
tsdocCli.addCommand('typedoc').subscribe(async argvArg => {
const typeDocInstance = new TypeDoc(paths.cwd);
await typeDocInstance.compile();
tsdocCli.standardTask().subscribe(async argvArg => {
const tsdoc = new TsDoc(paths.cwd);
await tsdoc.buildDirectory();
});
tsdocCli.addCommand('mkdocs').subscribe(async argvArg => {
await MkDocs.handleCommand(argvArg);
});
tsdocCli.standardTask().subscribe(async argvArg => {
logger.log('warn', `Auto detecting environment!`);
switch (true) {
case await TypeDoc.isTypeDocDir(paths.cwd):
logger.log('ok', `Detected TypeDoc compliant directory at ${paths.cwd}`);
tsdocCli.trigger('typedoc');
break;
case await MkDocs.isMkDocsDir(paths.cwd):
logger.log('ok', `Detected MkDocs compliant directory at ${paths.cwd}`);
tsdocCli.trigger('mkdocs');
break;
default:
logger.log('error', `Cannot determine docs format at ${paths.cwd}`);
}
});
tsdocCli.addCommand('test').subscribe(argvArg => {
tsdocCli.trigger('typedoc');
process.on('exit', async () => {
await plugins.smartfile.fs.remove(paths.publicDir);
});