more work
This commit is contained in:
@@ -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
|
||||||
|
|||||||
108
client/client.py
108
client/client.py
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
14
tooling.py
14
tooling.py
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user