Skip to content

Commit

Permalink
fix: scan the models folder recursive to find model metadata file (ja…
Browse files Browse the repository at this point in the history
…nhq#2982)

Co-authored-by: James <[email protected]>
  • Loading branch information
namchuai and James authored Jun 4, 2024
1 parent f658105 commit d7f161f
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions extensions/model-extension/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,30 @@ export default class JanModelExtension extends ModelExtension {
)
}

private async getModelJsonPath(
folderFullPath: string
): Promise<string | undefined> {
// try to find model.json recursively inside each folder
if (!(await fs.existsSync(folderFullPath))) return undefined
const files: string[] = await fs.readdirSync(folderFullPath)
if (files.length === 0) return undefined
if (files.includes(JanModelExtension._modelMetadataFileName)) {
return joinPath([
folderFullPath,
JanModelExtension._modelMetadataFileName,
])
}
// continue recursive
for (const file of files) {
const path = await joinPath([folderFullPath, file])
const fileStats = await fs.fileStat(path)
if (fileStats.isDirectory) {
const result = await this.getModelJsonPath(path)
if (result) return result
}
}
}

private async getModelsMetadata(
selector?: (path: string, model: Model) => Promise<boolean>
): Promise<Model[]> {
Expand All @@ -438,11 +462,11 @@ export default class JanModelExtension extends ModelExtension {
const readJsonPromises = allDirectories.map(async (dirName) => {
// filter out directories that don't match the selector
// read model.json
const jsonPath = await joinPath([
const folderFullPath = await joinPath([
JanModelExtension._homeDir,
dirName,
JanModelExtension._modelMetadataFileName,
])
const jsonPath = await this.getModelJsonPath(folderFullPath)

if (await fs.existsSync(jsonPath)) {
// if we have the model.json file, read it
Expand Down

0 comments on commit d7f161f

Please sign in to comment.