11const { writeFile, access, mkdir } = require ( "fs" ) ;
2- const { join, sep } = require ( "path" ) ;
32const { exec } = require ( "child_process" ) ;
3+ const { join, sep } = require ( "path" ) ;
4+ const sudo = require ( "sudo-prompt" ) ;
45
5- module . exports = async ( ) => {
6- // Define Guilded Directory from Global Variable for easy access.
7- const guildedDir = window . platform . dir ;
8-
9- // Double Check if ReGuilded is already Injected.
10- access ( guildedDir , async ( err ) => {
11- if ( err ) { // Not Injected
12- // Path to the Patcher.
13- const patcherPath = join ( window . reguildedPath , "scripts/reguildedPatcher.js" ) . replace ( RegExp ( sep . repeat ( 2 ) , "g" ) , "/" ) ;
14-
15- // Promise so the menu waits.
16- await new Promise ( ( resolve , reject ) => {
6+ module . exports = ( ) => {
7+ return new Promise ( ( resolve , reject ) => {
8+ // Define Guilded Directory from Global Variable for easy access.
9+ const guildedDir = window . platform . dir ;
1710
18- // Make the Guilded/Resources/App directory.
19- mkdir ( guildedDir , async ( err ) => {
20- if ( err ) throw reject ( err ) ;
11+ // Double Check if ReGuilded is already Injected.
12+ access ( guildedDir , async ( err ) => {
13+ if ( err ) { // Not Injected
14+ // Path to the Patcher.
15+ const patcherPath = join ( window . reguildedPath , "scripts/reguildedPatcher.js" ) . replace ( RegExp ( sep . repeat ( 2 ) , "g" ) , "/" ) ;
2116
22- // Create the Index File.
23- else writeFile ( join ( guildedDir , "index.js" ) , `require("${ patcherPath } ");` , async ( err ) => {
17+ // Makes the Guilded/Resources/App directory.
18+ // Elevate for Linux and run Terminal Commands
19+ // Or use FS for Windows & Mac
20+ if ( process . platform === "linux" && process . getuid ( ) !== 0 ) {
21+ const command = `mkdir ${ guildedDir } && echo '{"name": "Guilded", "main": "index.js"}' | tee -a ${ join ( guildedDir , "package.json" ) } > /dev/null &&` +
22+ `echo 'require("${ patcherPath } ")' | tee -a ${ join ( guildedDir , "index.js" ) } > /dev/null`
23+ sudo . exec ( command , { name : "ReGuilded Installer" } , function ( err , stdout , stderr ) {
24+ if ( err ) throw reject ( err ) ;
25+ else resolve ( ) ;
26+ } ) ;
27+ } else {
28+ mkdir ( guildedDir , async ( err ) => {
2429 if ( err ) throw reject ( err ) ;
2530
26- // Create the Package File.
27- else writeFile ( join ( guildedDir , "package.json " ) , JSON . stringify ( { name : "Guilded" , main : "index.js" } ) , async ( err ) => {
31+ // Create the Index File.
32+ else writeFile ( join ( guildedDir , "index.js " ) , `require(" ${ patcherPath } ");` , async ( err ) => {
2833 if ( err ) throw reject ( err ) ;
29- else resolve ( ) ;
34+
35+ // Create the Package File.
36+ else writeFile ( join ( guildedDir , "package.json" ) , JSON . stringify ( { name : "Guilded" , main : "index.js" } ) , async ( err ) => {
37+ if ( err ) throw reject ( err ) ;
38+ else resolve ( ) ;
39+ } ) ;
3040 } ) ;
3141 } ) ;
32- } ) ;
33- } ) ;
42+ }
3443
35- // Relaunch Guilded
36- exec ( window . platform . close , ( ) => {
37- exec ( window . platform . open ( ) , ( openError ) => {
38- if ( openError )
39- throw new Error ( "E" + openError ) ;
44+ // Relaunch Guilded
45+ exec ( window . platform . close , ( ) => {
46+ exec ( window . platform . open ( ) , ( openError ) => {
47+ if ( openError )
48+ throw new Error ( "E" + openError ) ;
49+ } )
4050 } )
41- } )
42- } else throw new Error ( "ALREADY_INJECTED" ) ;
43- } )
44- }
51+ } else throw reject ( "ALREADY_INJECTED" ) ;
52+ } ) ;
53+ } ) ;
54+ } ;
0 commit comments