more work

This commit is contained in:
Joey Eamigh
2023-06-21 18:22:39 -04:00
parent 2e74130b2e
commit 3aeb275a65
4 changed files with 106 additions and 46 deletions

View File

@@ -37,28 +37,6 @@ if (-not (Get-Command "java" -ErrorAction SilentlyContinue)) {
} }
# Check that git is installed
if (-not (Get-Command "git" -ErrorAction SilentlyContinue)) {
Write-Host "Error: git is not installed." -Foreground Red
if ($winget) {
Write-Host "Attempting to install git."
winget install --id Git.Git -e --source winget
}
else {
Write-Host "Please install git to continue." -Foreground Red
exit 1
}
}
# Check that multimc is installed
if (-not (Get-Command "multimc" -ErrorAction SilentlyContinue)) {
Write-Host "Error: multimc is not installed." -Foreground Red
Write-Host "Please install multimc to continue." -Foreground Red
exit 1
}
if (Test-Path ".venv") { } else { python -m venv .venv } if (Test-Path ".venv") { } else { python -m venv .venv }
. ./.venv/bin/Activate.ps1 . ./.venv/bin/Activate.ps1

View File

@@ -1,27 +1,113 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import os, sys, shutil, requests, tempfile, glob
from termcolor import cprint from termcolor import cprint
from typing import Any
OS = sys.platform
MOD_DOWNLOADER_URL = "https://github.com/North-West-Wind/CurseForge-CLI/releases/latest/download/curseforge.zip" MOD_DOWNLOADER_URL = "https://github.com/North-West-Wind/CurseForge-CLI/releases/latest/download/curseforge.zip"
REPO_URL = "https://git.233hfd.com/joey/FishPogPixelmon" MODPACK_RELEASES_URL = "https://git.233hfd.com/api/v1/repos/joey/FishPogPixelmon/releases?limit=1"
MULTIMC_DOWNLOAD_URL_WINDOWS = "https://files.multimc.org/downloads/mmc-develop-win32.zip"
MULTIMC_PARENT_DIR = ""
MULTIMC_DIR = ""
if OS == "darwin":
cprint("no support for macos yet", "red")
exit(1)
if OS == "linux":
MULTIMC_PARENT_DIR = f"{os.getenv('HOME')}/.local/share"
MULTIMC_DIR = f"{MULTIMC_PARENT_DIR}/multimc"
if OS == "windows":
MULTIMC_PARENT_DIR = f"{os.getenv('APPDATA')}/FishPog"
MULTIMC_DIR = f"{MULTIMC_PARENT_DIR}/MultiMC"
INSTANCE_DIR = f"{MULTIMC_DIR}/instances/FishPogPixelmon"
# main # main
def __main__(): def __main__():
header() header()
warning() multimc()
# info # multimc
def warning(): def instance():
cprint( release = most_recent_release()
"This updater may remove your singleplayer worlds. Please use a different instance for singleplayer.", "yellow"
) if not os.path.exists(INSTANCE_DIR):
if input("Continue? [Y/n] ").lower() == "n": download_instance(release)
exit()
else: f = open(".version", "r")
print("") version = f.read()
if version != release["tag_name"]:
download_instance(release)
def download_instance(release: dict[str, Any]):
os.makedirs(f"{INSTANCE_DIR}/.minecraft")
TMP = tempfile.mkdtemp()
os.chdir(TMP)
download_url = get_release_asset(release)
r = requests.get(download_url, allow_redirects=True)
open("instance.zip", "wb").write(r.content)
shutil.unpack_archive("multimc.zip", ".")
os.remove("multimc.zip")
for file in glob.glob(f"{TMP}/overrides/*"):
shutil.move(file, f"INSTANCE_DIR/.minecraft")
shutil.rmtree(f"{TMP}/overrides")
for file in glob.glob(f"{TMP}/*"):
shutil.move(file, INSTANCE_DIR)
shutil.rmtree(TMP)
f = open(".version", "w")
f.write(release["tag_name"])
f.close()
def multimc():
if os.path.exists(MULTIMC_DIR):
return
if OS != "windows":
cprint("multimc is not installed - please install it", "yellow")
exit(1)
os.makedirs(MULTIMC_PARENT_DIR)
os.chdir(MULTIMC_PARENT_DIR)
cprint("multimc is not installed - installing", "yellow")
r = requests.get(MULTIMC_DOWNLOAD_URL_WINDOWS, allow_redirects=True)
open("multimc.zip", "wb").write(r.content)
shutil.unpack_archive("multimc.zip", ".")
os.remove("multimc.zip")
return
# releases
def most_recent_release() -> dict[str, Any]:
r = requests.get(MODPACK_RELEASES_URL)
releases: list[dict[str, Any]] = r.json()
return releases[0]
def most_recent_version(release: dict[str, Any]) -> str:
return release["tag_name"]
def get_release_asset(release: dict[str, Any]):
return release["assets"][0]["browser_download_url"]
# ascii art lol # ascii art lol

View File

@@ -12,13 +12,7 @@ if ! [ -x "$(command -v java)" ]; then
exit 1 exit 1
fi fi
# check that git is installed # check that multimc is installed
if ! [ -x "$(command -v git)" ]; then
echo 'Error: git is not installed. Please install it to continue.' >&2
exit 1
fi
# check that git is installed
if ! [ -x "$(command -v multimc)" ]; then if ! [ -x "$(command -v multimc)" ]; then
echo 'Error: multimc is not installed. Please install it to continue.' >&2 echo 'Error: multimc is not installed. Please install it to continue.' >&2
exit 1 exit 1

View File

@@ -20,7 +20,7 @@ PAX_LATEST_RELEASE = f"{PAX_GITHUB}/releases/latest/download"
PAX_LINUX = f"{PAX_LATEST_RELEASE}/pax" PAX_LINUX = f"{PAX_LATEST_RELEASE}/pax"
PAX_WINDOWS = f"{PAX_LATEST_RELEASE}/pax-windows.zip" PAX_WINDOWS = f"{PAX_LATEST_RELEASE}/pax-windows.zip"
MODPACK_GITHUB = "https://git.233hfd.com/joey/FishPogPixelmon" MODPACK_GIT = "https://git.233hfd.com/joey/FishPogPixelmon"
MODPACK_RELEASES_URL = "https://git.233hfd.com/api/v1/repos/joey/FishPogPixelmon/releases" MODPACK_RELEASES_URL = "https://git.233hfd.com/api/v1/repos/joey/FishPogPixelmon/releases"
@@ -59,9 +59,9 @@ def release():
exit(1) exit(1)
repo = Repo(WORKING_DIR) repo = Repo(WORKING_DIR)
if repo.is_dirty(): # if repo.is_dirty():
cprint("repo is dirty - commit changes before releasing", "red") # cprint("repo is dirty - commit changes before releasing", "red")
exit(1) # exit(1)
export_pack() export_pack()
@@ -74,8 +74,10 @@ def release():
"tea", "tea",
"release", "release",
"create", "create",
"-t",
f"v{version}",
"-a", "-a",
".out/FishPog Pixelmon.zip", ".out/FishPogPixelmon.zip",
f"v{version}", f"v{version}",
] ]
) )
@@ -84,7 +86,7 @@ def release():
# export # export
def export_pack(): def export_pack():
subprocess.run(["./pax", "export"]) subprocess.run(["./pax", "export"])
os.rename(".out/FishPog Pixelmon.zip", ".out/FishPog Pixelmon.zip") os.rename(".out/FishPog Pixelmon.zip", ".out/FishPogPixelmon.zip")
# pax # pax