diff --git a/src/components/profiles-modals/ImportProfileModal.vue b/src/components/profiles-modals/ImportProfileModal.vue index 889ab9aa..ef41b3ae 100644 --- a/src/components/profiles-modals/ImportProfileModal.vue +++ b/src/components/profiles-modals/ImportProfileModal.vue @@ -1,32 +1,32 @@ diff --git a/src/utils/ProfileUtils.ts b/src/utils/ProfileUtils.ts index ba6a99db..9340e02c 100644 --- a/src/utils/ProfileUtils.ts +++ b/src/utils/ProfileUtils.ts @@ -1,6 +1,12 @@ -import ZipProvider from "../providers/generic/zip/ZipProvider"; import path from "path"; + +import * as yaml from "yaml"; + import Profile from "../model/Profile"; +import ExportFormat from "src/model/exports/ExportFormat"; +import ExportMod from "src/model/exports/ExportMod"; +import VersionNumber from "src/model/VersionNumber"; +import ZipProvider from "../providers/generic/zip/ZipProvider"; export async function extractZippedProfileFile(file: string, profileName: string) { const entries = await ZipProvider.instance.getEntries(file); @@ -27,3 +33,20 @@ export async function extractZippedProfileFile(file: string, profileName: string } } } + +export async function parseYamlToExportFormat(yamlContent: string) { + const parsedYaml = await yaml.parse(yamlContent); + return new ExportFormat( + parsedYaml.profileName, + parsedYaml.mods.map((mod: any) => { + const enabled = mod.enabled === undefined || mod.enabled; + return new ExportMod( + mod.name, + new VersionNumber( + `${mod.version.major}.${mod.version.minor}.${mod.version.patch}` + ), + enabled + ); + }) + ); +}