Completed steps up to downloading forge universal jar for 1.8-1.12.

Next step is processing the version.json and transforming it into a deliverable module.
This commit is contained in:
Daniel Scalzi
2020-01-12 01:36:36 -05:00
parent baea8e657c
commit 419a4d5e91
14 changed files with 251 additions and 30 deletions

View File

@@ -0,0 +1,27 @@
import { Module } from '../../../model/spec/module'
import { ForgeResolver } from '../forge.resolver'
export class Forge113Adapter extends ForgeResolver {
public static isForVersion(version: string) {
return Forge113Adapter.isVersionAcceptable(version, [13, 14, 15])
}
constructor(
absoluteRoot: string,
relativeRoot: string,
minecraftVersion: string,
forgeVersion: string
) {
super(absoluteRoot, relativeRoot, minecraftVersion, forgeVersion)
}
public async getModule(): Promise<Module> {
return null as unknown as Module
}
public isForVersion(version: string): boolean {
return Forge113Adapter.isForVersion(version)
}
}

View File

@@ -1,10 +1,52 @@
import { Module } from '../../../model/spec/module'
import { ForgeRepoStructure } from '../../../model/struct/repo/forgerepo.struct'
import { ForgeResolver } from '../forge.resolver'
export class Forge18Adapter extends ForgeResolver {
public static isForVersion(version: string) {
return Forge18Adapter.isVersionAcceptable(version, [8, 9, 10, 11, 12])
}
constructor(
absoluteRoot: string,
relativeRoot: string,
minecraftVersion: string,
forgeVersion: string
) {
super(absoluteRoot, relativeRoot, minecraftVersion, forgeVersion)
}
public async getModule(): Promise<Module> {
await this.getForgeByVersion()
return null as unknown as Module
}
public isForVersion(version: string) {
return Forge18Adapter.isForVersion(version)
}
public async getForgeByVersion() {
const forgeRepo = this.repoStructure.getForgeRepoStruct()
const artifactVersion = `${this.minecraftVersion}-${this.forgeVersion}`
const targetLocalPath = forgeRepo.getLocalForge(artifactVersion, 'universal')
console.debug(`Checking for forge version at ${targetLocalPath}..`)
if (!await forgeRepo.artifactExists(targetLocalPath)) {
console.debug(`Forge not found locally, initializing download..`)
await forgeRepo.downloadArtifact(
this.REMOTE_REPOSITORY,
ForgeRepoStructure.FORGE_GROUP,
ForgeRepoStructure.FORGE_ARTIFACT,
artifactVersion, 'universal', 'jar')
} else {
console.debug('Using locally discovered forge.')
}
console.debug(`Beginning processing of Forge v${this.forgeVersion} (Minecraft ${this.minecraftVersion})`)
}
// TODO
// extract manifest
// parse manifest
// return module
}