feat(projectinfo): migrate project info loading to async factories and update build configuration
This commit is contained in:
@@ -2,31 +2,37 @@ import * as plugins from './projectinfo.plugins.js';
|
||||
|
||||
export class ProjectinfoNpm {
|
||||
isNpm: boolean = false;
|
||||
packageJson: any;
|
||||
name: string;
|
||||
version: string;
|
||||
status: string;
|
||||
license: string;
|
||||
git: plugins.smartstring.GitRepo;
|
||||
packageJson: any = null;
|
||||
name: string = '';
|
||||
version: string = '';
|
||||
status: string = '';
|
||||
license: string = '';
|
||||
git: plugins.smartstring.GitRepo | null = null;
|
||||
|
||||
constructor(cwdArg: string, optionsArg: { gitAccessToken?: string } = {}) {
|
||||
let resolvedCwd = plugins.path.resolve(cwdArg);
|
||||
if (plugins.smartfile.fs.fileExists(plugins.path.join(resolvedCwd, 'package.json'))) {
|
||||
this.isNpm = true;
|
||||
this.packageJson = plugins.smartfile.fs.toObjectSync(
|
||||
plugins.path.join(resolvedCwd, 'package.json'),
|
||||
'json'
|
||||
);
|
||||
this.name = this.packageJson.name;
|
||||
this.version = this.packageJson.version;
|
||||
this.status = 'ok';
|
||||
this.license = this.packageJson.license;
|
||||
if (this.packageJson.repository) {
|
||||
this.git = new plugins.smartstring.GitRepo(
|
||||
this.packageJson.repository.url,
|
||||
private constructor() {}
|
||||
|
||||
static async create(cwdArg: string, optionsArg: { gitAccessToken?: string } = {}): Promise<ProjectinfoNpm> {
|
||||
const instance = new ProjectinfoNpm();
|
||||
const resolvedCwd = plugins.path.resolve(cwdArg);
|
||||
const smartFsInstance = new plugins.smartfs.SmartFs(new plugins.smartfs.SmartFsProviderNode());
|
||||
const packageJsonPath = plugins.path.join(resolvedCwd, 'package.json');
|
||||
|
||||
const fileExists = await smartFsInstance.file(packageJsonPath).exists();
|
||||
if (fileExists) {
|
||||
instance.isNpm = true;
|
||||
const content = await smartFsInstance.file(packageJsonPath).encoding('utf8').read();
|
||||
instance.packageJson = JSON.parse(content as string);
|
||||
instance.name = instance.packageJson.name;
|
||||
instance.version = instance.packageJson.version;
|
||||
instance.status = 'ok';
|
||||
instance.license = instance.packageJson.license;
|
||||
if (instance.packageJson.repository) {
|
||||
instance.git = new plugins.smartstring.GitRepo(
|
||||
instance.packageJson.repository.url,
|
||||
optionsArg.gitAccessToken
|
||||
);
|
||||
}
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user