diff --git a/manifests/demonologist.rmanifest b/manifests/demonologist.rmanifest new file mode 100644 index 0000000..b1cb643 --- /dev/null +++ b/manifests/demonologist.rmanifest @@ -0,0 +1,68 @@ +class Manifest { + static useLib = ["path", "open", "fs", "torrent", "extract"] + + static id = "demonologist" + static version = "02022024-1" + static pkg_name = "Demonologist" + static description = "Demonologist is a cooperative horror game that can be played with at least 1 and up to 4 players. Your objective is to identify the type of evil spirit in cursed places and exorcise it using your equipment, alone or with your team." + static icon = "https://static.wikia.nocookie.net/demonologist/images/3/39/Site-community-image/revision/latest?cb=20230822164101" + static author = "Clock Wizard Games" + + static os_compatible = ["win32"] + + // needed a +v20 for torrent download + static core_minimum_version = "0.20.0" + + static BaseMagnet = "magnet:?xt=urn:btih:5G6BVJ576WSBLEKPN6FFX3LKMSSRW3TZ&dn=Demonologist&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce" + static ExtractPassword = "online-fix.me" + + installSteps = [ + { + type: "torrent", + magnet: Manifest.BaseMagnet, + path: `${install_path}/torrent_files`, + } + ] + + updateSteps = [ + this.installSteps[0] + ] + + afterInstall = async () => { + const torrentFilesPath = Lib.path.resolve(install_path, "torrent_files") + const extractionDataPath = Lib.path.resolve(install_path, "data") + + //* declare files + const dataBundle = Lib.path.resolve(torrentFilesPath, "Demonologist", "Demonologist.Build.02022024-OFME.part1.rar") + const fixBundle = Lib.path.resolve(torrentFilesPath, "Demonologist", "Fix Repair", "Demonologist_Fix_Repair_Steam_V2_Generic.rar") + + // extract parts + await Lib.extract.extractFull(dataBundle, extractionDataPath, { + recursive: true, + password: Manifest.ExtractPassword, + }) + + // extract fix + await Lib.extract.extractFull(fixBundle, Lib.path.resolve(extractionDataPath, "Demonologist"), { + recursive: true, + password: Manifest.ExtractPassword, + }) + + // scan for files + const files = await Lib.fs.readDir(Lib.path.resolve(extractionDataPath, "Demonologist")) + + // move files + for await (const file of files) { + const src = Lib.path.resolve(extractionDataPath, "Demonologist", file) + const dest = Lib.path.resolve(install_path, file) + + await Lib.fs.rename(src, dest) + } + + // cleanup + await Lib.fs.rm(torrentFilesPath, { recursive: true }) + await Lib.fs.rm(extractionDataPath, { recursive: true }) + } + + execute = Lib.path.resolve(install_path, "Demonologist.exe") +} \ No newline at end of file