Reewrite project #430
@@ -77,18 +77,16 @@ const serverConfig: actionConfig[] = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export async function startServer() {
 | 
					export async function startServer() {
 | 
				
			||||||
  if (!fsOld.existsSync(serverPath)) throw new Error("Install server fist");
 | 
					  if (!fsOld.existsSync(serverPath)) throw new Error("Install server fist");
 | 
				
			||||||
  let command = path.join(serverPath, "bedrock_server");
 | 
					 | 
				
			||||||
  const args: string[] = [];
 | 
					  const args: string[] = [];
 | 
				
			||||||
  if (process.platform === "linux") {
 | 
					  let command = path.join(serverPath, "bedrock_server");
 | 
				
			||||||
    if (process.arch !== "x64") {
 | 
					  if (process.platform === "linux" && process.arch !== "x64") {
 | 
				
			||||||
    args.push(command);
 | 
					    args.push(command);
 | 
				
			||||||
    if (await execAsync("command -v qemu-x86_64-static").then(() => true).catch(() => false)) command = "qemu-x86_64-static";
 | 
					    if (await execAsync("command -v qemu-x86_64-static").then(() => true).catch(() => false)) command = "qemu-x86_64-static";
 | 
				
			||||||
    else if (await execAsync("command -v box64").then(() => true).catch(() => false)) command = "box64";
 | 
					    else if (await execAsync("command -v box64").then(() => true).catch(() => false)) command = "box64";
 | 
				
			||||||
    else throw new Error("Cannot emulate x64 architecture. Check the documentents in \"https://github.com/The-Bds-Maneger/Bds-Maneger-Core/wiki/Server-Platforms#minecraft-bedrock-server-alpha\"");
 | 
					    else throw new Error("Cannot emulate x64 architecture. Check the documentents in \"https://github.com/The-Bds-Maneger/Bds-Maneger-Core/wiki/Server-Platforms#minecraft-bedrock-server-alpha\"");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const serverProcess = exec(command, args, {cwd: serverPath, maxBuffer: Infinity, env: {LD_LIBRARY_PATH: process.platform !== "win32" ? serverPath:undefined}});
 | 
					  const serverProcess = exec(command, args, {cwd: serverPath, maxBuffer: Infinity, env: {LD_LIBRARY_PATH: process.platform === "win32"?undefined:serverPath}});
 | 
				
			||||||
  const serverActions = new actions(serverProcess, serverConfig);
 | 
					  const serverActions = new actions(serverProcess, serverConfig);
 | 
				
			||||||
  return {serverProcess, serverActions};
 | 
					  return {serverProcess, serverActions};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,19 +1,12 @@
 | 
				
			|||||||
import { installServer, startServer } from "../src/bedrock";
 | 
					import { installServer, startServer } from "../src/bedrock";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
describe("Bedrock", () => {
 | 
					describe("Bedrock", () => {
 | 
				
			||||||
  it("Install", async function(){
 | 
					  it("Install and Start", async function(){
 | 
				
			||||||
    this.timeout(1000*60*60*15);
 | 
					 | 
				
			||||||
    return installServer(true);
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
  after(async () => {
 | 
					 | 
				
			||||||
    describe("After bedrock", async () => {
 | 
					 | 
				
			||||||
      it("Start Server", async function() {
 | 
					 | 
				
			||||||
    this.timeout(1000*60*60*15);
 | 
					    this.timeout(1000*60*60*15);
 | 
				
			||||||
 | 
					    await installServer(true);
 | 
				
			||||||
    const serverManeger = await startServer();
 | 
					    const serverManeger = await startServer();
 | 
				
			||||||
    serverManeger.serverProcess.on("stdoutRaw", data => process.stdout.write(data));
 | 
					    serverManeger.serverProcess.on("stdoutRaw", data => process.stdout.write(data));
 | 
				
			||||||
    serverManeger.serverActions.once("serverStarted", () => serverManeger.serverProcess.writeStdin("stop"));
 | 
					    serverManeger.serverActions.once("serverStarted", () => serverManeger.serverProcess.writeStdin("stop"));
 | 
				
			||||||
    return new Promise((done, reject) => serverManeger.serverProcess.on("close", ({code}) => code === 0?done():reject(new Error("Exit another code "+code))));
 | 
					    return new Promise((done, reject) => serverManeger.serverProcess.on("close", ({code}) => code === 0?done():reject(new Error("Exit another code "+code))));
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user