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 committed 2019-09-10 00:59:51 -04:00
1 parent 79ab8abad2
commit d04fb61f2a
21 files changed
+200 -31

No files matched your search

+13
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>
}
@@ -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
}
}
+33
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
View File
@@ -0,0 +1,7 @@
import { Module } from '../model/spec/module'
export interface Resolver {
getModule(): Promise<Module>
}