Setting up flow for resolvers.

Repo structure classes should be responsible for pulling versioned files.
Ex. /forge/1.14/ -> get the latest file (or only allow one file).
The resolver then gets that file to work with in order to resolve the forge
module, pull its libs, and attach them as submodules.
This commit is contained in:
Daniel Scalzi
2019-09-10 00:59:51 -04:00
parent 79ab8abad2
commit d04fb61f2a
21 changed files with 200 additions and 31 deletions

View File

@@ -0,0 +1,13 @@
import { Module } from '../model/spec/module'
import { Resolver } from './resolver'
export abstract class BaseResolver implements Resolver {
constructor(
protected absoluteRoot: string,
protected relativeRoot: string
) {}
public abstract getModule(): Promise<Module>
}

View File

@@ -0,0 +1,10 @@
import { Module } from '../../../model/spec/module'
import { ForgeResolver } from '../forge.resolver'
export class Forge18Adapter extends ForgeResolver {
public async getModule(): Promise<Module> {
return null as unknown as Module
}
}

View File

@@ -0,0 +1,33 @@
import { Module } from '../../model/spec/module'
import { RepoStructure } from '../../model/struct/repo/repo.struct'
import { BaseResolver } from '../baseresolver'
import { Forge18Adapter } from './adapter/forge18.resolver'
export abstract class ForgeResolver extends BaseResolver {
public static getResolver(version: string) {
return ForgeResolver.ADAPTER_LIST[version]
}
// tslint:disable: object-literal-key-quotes
private static readonly ADAPTER_LIST: {[version: string]: any} = {
'1.8': Forge18Adapter,
'1.9': Forge18Adapter,
'1.10': Forge18Adapter,
'1.11': Forge18Adapter,
'1.12': Forge18Adapter
}
protected repoStructure: RepoStructure
constructor(
absoluteRoot: string,
relativeRoot: string
) {
super(absoluteRoot, relativeRoot)
this.repoStructure = new RepoStructure(absoluteRoot, relativeRoot)
}
public abstract getModule(): Promise<Module>
}

7
src/resolver/resolver.ts Normal file
View File

@@ -0,0 +1,7 @@
import { Module } from '../model/spec/module'
export interface Resolver {
getModule(): Promise<Module>
}