28 lines
797 B
TypeScript
28 lines
797 B
TypeScript
import * as plugins from './projectinfo.plugins.js';
|
|
import { ProjectinfoNpm } from './projectinfo.classes.npm.js';
|
|
import { ProjectinfoGit } from './projectinfo.classes.git.js';
|
|
export type TProjectType = 'git' | 'npm';
|
|
|
|
/**
|
|
* class projectinfo automatically examines a given directory and exposes relevant info about it
|
|
*/
|
|
export class ProjectInfo {
|
|
type: TProjectType = 'git';
|
|
npm: ProjectinfoNpm;
|
|
git: ProjectinfoGit;
|
|
|
|
private constructor(npm: ProjectinfoNpm, git: ProjectinfoGit) {
|
|
this.npm = npm;
|
|
this.git = git;
|
|
if (npm.isNpm) {
|
|
this.type = 'npm';
|
|
}
|
|
}
|
|
|
|
static async create(cwdArg: string): Promise<ProjectInfo> {
|
|
const npm = await ProjectinfoNpm.create(cwdArg);
|
|
const git = new ProjectinfoGit(cwdArg);
|
|
return new ProjectInfo(npm, git);
|
|
}
|
|
}
|