74 lines
1.9 KiB
TypeScript
74 lines
1.9 KiB
TypeScript
|
import * as plugins from '../plugins.js';
|
||
|
|
||
|
export class ProjectContext {
|
||
|
public static async fromDir(dirArg: string) {}
|
||
|
|
||
|
// INSTANCE
|
||
|
public projectDir: string;
|
||
|
|
||
|
constructor(projectDirArg: string) {
|
||
|
this.projectDir = projectDirArg;
|
||
|
}
|
||
|
|
||
|
public async gatherFiles() {
|
||
|
const smartfilePackageJSON = await plugins.smartfile.SmartFile.fromFilePath(
|
||
|
plugins.path.join(this.projectDir, 'package.json'),
|
||
|
this.projectDir
|
||
|
);
|
||
|
const smartfilesReadme = await plugins.smartfile.SmartFile.fromFilePath(
|
||
|
plugins.path.join(this.projectDir, 'readme.md'),
|
||
|
this.projectDir
|
||
|
);
|
||
|
const smartfilesNpmextraJSON = await plugins.smartfile.SmartFile.fromFilePath(
|
||
|
plugins.path.join(this.projectDir, 'npmextra.json'),
|
||
|
this.projectDir
|
||
|
);
|
||
|
const smartfilesMod = await plugins.smartfile.fs.fileTreeToObject(
|
||
|
this.projectDir,
|
||
|
'ts/**/*.ts'
|
||
|
);
|
||
|
const smartfilesTest = await plugins.smartfile.fs.fileTreeToObject(
|
||
|
this.projectDir,
|
||
|
'test/**/*.ts'
|
||
|
);
|
||
|
return {
|
||
|
smartfilePackageJSON,
|
||
|
smartfilesReadme,
|
||
|
smartfilesNpmextraJSON,
|
||
|
smartfilesMod,
|
||
|
smartfilesTest,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
public async convertFilesToContext(filesArg: plugins.smartfile.SmartFile[]) {
|
||
|
return filesArg
|
||
|
.map((smartfile) => {
|
||
|
return `
|
||
|
====== START OF FILE ${smartfile.relative} ======
|
||
|
|
||
|
${smartfile.contents.toString()}
|
||
|
|
||
|
====== END OF FILE ${smartfile.relative} ======
|
||
|
`;
|
||
|
})
|
||
|
.join('\n');
|
||
|
}
|
||
|
|
||
|
private async buildContext(dirArg: string) {
|
||
|
const files = await this.gatherFiles();
|
||
|
let context = await this.convertFilesToContext([
|
||
|
files.smartfilePackageJSON,
|
||
|
files.smartfilesReadme,
|
||
|
files.smartfilesNpmextraJSON,
|
||
|
...files.smartfilesMod,
|
||
|
...files.smartfilesTest,
|
||
|
]);
|
||
|
return context;
|
||
|
}
|
||
|
|
||
|
public async update() {
|
||
|
const result = await this.buildContext(this.projectDir);
|
||
|
return result;
|
||
|
}
|
||
|
}
|