Update pocketmine list version #497
@@ -1,6 +1,5 @@
 | 
			
		||||
import { customChildProcess, httpRequest, httpRequestGithub, httpRequestLarge } from "@sirherobrine23/coreutils";
 | 
			
		||||
import { pathControl, bdsPlatformOptions } from "./platformPathManeger";
 | 
			
		||||
import { platformManeger } from "@the-bds-maneger/server_versions";
 | 
			
		||||
import { existsSync as fsExistsSync, Stats } from "node:fs";
 | 
			
		||||
import { promisify } from "node:util";
 | 
			
		||||
import * as globalPlatfroms from "./globalPlatfroms";
 | 
			
		||||
@@ -9,6 +8,18 @@ import fs from "node:fs/promises";
 | 
			
		||||
import os from "node:os";
 | 
			
		||||
import AdmZip from "adm-zip";
 | 
			
		||||
 | 
			
		||||
export async function listVersions() {
 | 
			
		||||
  return (await httpRequestGithub.GithubRelease("pmmp", "PocketMine-MP")).map(data => {
 | 
			
		||||
    const pharFile = data.assets.find(data => data.name.endsWith((".phar")));
 | 
			
		||||
    return {
 | 
			
		||||
      version: data.tag_name,
 | 
			
		||||
      publish: new Date(data.published_at),
 | 
			
		||||
      pharFile: pharFile?.browser_download_url,
 | 
			
		||||
      size: pharFile?.size
 | 
			
		||||
    };
 | 
			
		||||
  }).filter(rel => !!rel.pharFile);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function findPhp(serverPath: string, extraPath?: string): Promise<string> {
 | 
			
		||||
  if (!extraPath) extraPath = path.join(serverPath, "bin");
 | 
			
		||||
  const files = await Promise.all((await fs.readdir(extraPath)).map(file => fs.lstat(path.join(extraPath, file)).then(stat => ({stat, file, fullPath: path.join(extraPath, file)})).catch(() => {})));
 | 
			
		||||
@@ -105,13 +116,15 @@ export async function installServer(version: string|boolean, platformOptions: bd
 | 
			
		||||
  platformOptions.withBuildFolder = true;
 | 
			
		||||
  const { serverPath, buildFolder, id } = await pathControl("pocketmine", platformOptions);
 | 
			
		||||
  await installPhp(serverPath, buildFolder);
 | 
			
		||||
  const info = await platformManeger.pocketmine.find(version);
 | 
			
		||||
  await httpRequestLarge.saveFile({url: info?.url, filePath: path.join(serverPath, "pocketmine.phar")});
 | 
			
		||||
  if (typeof version === "boolean") version = "latest";
 | 
			
		||||
  if (version?.trim()?.toLowerCase() === "latest") version = (await listVersions()).at(0)?.version
 | 
			
		||||
  const info = (await listVersions()).find(rel => rel.version === version);
 | 
			
		||||
  await httpRequestLarge.saveFile({url: info?.pharFile, filePath: path.join(serverPath, "pocketmine.phar")});
 | 
			
		||||
  return {
 | 
			
		||||
    id,
 | 
			
		||||
    version: info.version,
 | 
			
		||||
    url: info.url,
 | 
			
		||||
    date: info.date
 | 
			
		||||
    url: info.pharFile,
 | 
			
		||||
    date: info.publish
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user