Skip to content

Commit

Permalink
Revert to CommonJS & fix bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
KingRainbow44 committed Apr 25, 2022
1 parent ed020e4 commit 298053d
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 32 deletions.
12 changes: 8 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"name": "installer",
"description": "A basic installer for Grasscutter-related applications.",
"version": "1.0.0",
"type": "module",

"main": "src/index.js",
"bin": "src/index.js",
Expand All @@ -14,9 +13,10 @@
"chalk": "^5.0.1",
"readline-sync": "^1.4.10",
"unzipper": "^0.10.11",
"node-fetch": "^3.2.3",
"node-fetch": "^2.6.7",
"fs-extra": "^10.1.0",
"node-7z-archive": "^1.0.7"
"node-7z": "^3.0.0",
"7zip-bin": "^5.1.1"
},
"devDependencies": {
"pkg": "^5.6.0"
Expand All @@ -25,6 +25,10 @@
"pkg": {
"assets": "resources/**/*",
"targets": ["node16-windows-x64"],
"outputPath": "builds"
"outputPath": "builds",
"options": [
"experimental-modules",
"experimental-json-modules"
]
}
}
65 changes: 37 additions & 28 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
/* Imports. */
import * as util from "util";
import * as fs from "fs";
import * as os from "os";
import * as fse from "fs-extra";
import * as unzip from "unzipper";
import * as readline from "readline-sync";

import fetch from "node-fetch";
import {fullArchive} from "node-7z-archive";
import {exec} from "child_process";
const util = require('util');
const fs = require('fs');
const os = require('os');
const fse = require('fs-extra');
const stream = require('stream');
const unzip = require('unzipper');
const readline = require('readline-sync');
const fetch = require('node-fetch');

const {extractFull} = require('node-7z');
const {exec} = require('child_process');

/* Constants. */
const tempDirectory = os.tmpdir();
const installPath = `${process.env.LOCALAPPDATA}/Grasscutters`;
const execute = util.promisify(exec);
const streamPipeline = util.promisify(stream.pipeline);
const pathTo7zip = require('7zip-bin').path7za;

/* Localization. */
import * as enUS from "../resources/en-US.json";
import * as zhCN from "../resources/zh-CN.json";
let languages = {
en: enUS.default,
cn: zhCN.default
const languages = {
en: require("../resources/en-US.json"),
cn: require("../resources/zh-CN.json")
};

let messages = undefined;
Expand All @@ -40,11 +41,16 @@ async function downloadAndInstall(application, file, installCallback = undefined
const downloadUrl = asDownload("Grasscutters", application, file);

const response = await fetch(downloadUrl);
response.body.pipe(fs.createWriteStream(`${tempDirectory}/${file}`));
await streamPipeline(response.body, fs.createWriteStream(`${tempDirectory}/${file}`));

if(installCallback) await installCallback(`${tempDirectory}/${file}`);
}

async function extractTo(file, destination) {
const contents = fs.createReadStream(file);
contents.pipe(unzip.Extract({path: destination}));
}

function exit() {
console.log("Press any key to return to the main menu.");
process.stdin.setRawMode(true);
Expand Down Expand Up @@ -124,25 +130,28 @@ async function installGrassclipper() {
const response = await fetch(downloadUrl);

console.log("GrassClipper has started installing. This may take a while.");
response.body.pipe(unzip.Extract({path: `${installPath}`}));
await streamPipeline(response.body, unzip.Extract({path: `${installPath}`}));
console.log("Finished downloading & extracting archive!");

console.log("Finished installing GrassClipper!"); exit();
}

async function installGrassclipperX() {
async function installGrassclipperX(file) {
console.clear();

const downloadUrl = asDownload("Grasscutters", "GrassClipper-X", "GrassClipper-X-1.0.0-win-x64.7z");
const response = await fetch(downloadUrl);

console.log("GrassClipper has started installing. This may take a while.");
response.body.pipe(fs.createWriteStream(`${installPath}/GrassClipper-X.7z`));

console.log("Extracting archive...");
await fullArchive(`${installPath}/GrassClipper-X.7z`, `${installPath}/GrassClipper-X`);
console.log("Finished extracting archive!");

console.log("Finished installing GrassClipper!"); exit();
const extract = extractFull(file, `${installPath}/GrassClipper-X`, {$bin: pathTo7zip});

extract.on('end', () => {
console.log("Finished extracting archive!");

// Cleanup.
console.log("Cleaning up...");
fs.unlinkSync(`${tempDirectory}/GrassClipper-X-1.0.0-win-x64.7z`);

console.log("Finished installing GrassClipper!"); exit();
});
}

/* Screens. */
Expand Down Expand Up @@ -184,7 +193,7 @@ async function mainMenu() {
installGrassclipper();
break;
case "3":
installGrassclipperX();
await downloadAndInstall("GrassClipper-X", "GrassClipper-X-1.0.0-win-x64.7z", installGrassclipperX);
break;
case "4":
process.exit(0);
Expand Down

0 comments on commit 298053d

Please sign in to comment.