fvm-installer
Advanced tools
Comparing version 1.1.6 to 1.1.8
@@ -1,3 +0,3 @@ | ||
var fileTools = require('./file-tools'); | ||
var chalk = require('chalk'); | ||
const fileTools = require('./file-tools'); | ||
const chalk = require('chalk'); | ||
@@ -4,0 +4,0 @@ function ConfigFile(existingFile) { |
@@ -1,17 +0,17 @@ | ||
var fs = require('fs'); | ||
var path = require('path'); | ||
const fs = require('fs'); | ||
const path = require('path'); | ||
module.exports = { | ||
check_existing_config_file: function(){ | ||
check_existing_config_file: _ => { | ||
return fs.existsSync(path.join(process.cwd(), "scripts.json")); | ||
}, | ||
check_existing_resource_folder: function(){ | ||
check_existing_resource_folder: _ => { | ||
return fs.existsSync(path.join(process.cwd(), "resources")); | ||
}, | ||
get_config_file: function(){ | ||
get_config_file: _ => { | ||
return require(path.join(process.cwd(), "scripts.json")); | ||
}, | ||
set_config_file: function(data){ | ||
set_config_file: (data) => { | ||
fs.writeFileSync(path.join(process.cwd(), "scripts.json"), data); | ||
} | ||
}; |
{ | ||
"name": "fvm-installer", | ||
"version": "1.1.6", | ||
"version": "1.1.8", | ||
"description": "Resource Installer for FiveM", | ||
@@ -31,12 +31,12 @@ "main": "./fvm", | ||
"dependencies": { | ||
"adm-zip": "^0.4.13", | ||
"chalk": "^3.0.0", | ||
"adm-zip": "^0.4.14", | ||
"chalk": "^4.0.0", | ||
"co": "^4.6.0", | ||
"co-prompt": "^1.0.0", | ||
"extract-zip": "^1.6.7", | ||
"extract-zip": "^2.0.0", | ||
"latest-version": "^5.1.0", | ||
"rimraf": "^3.0.0", | ||
"superagent": "^5.2.1", | ||
"rimraf": "^3.0.2", | ||
"superagent": "^5.2.2", | ||
"superagent-binary-parser": "^1.0.1" | ||
} | ||
} |
@@ -1,4 +0,5 @@ | ||
FiveM Installer [NO LONGER MAINTAINED] | ||
FiveM Installer | ||
-------------- | ||
FiveM Installer is a package for FiveM Server (FX). This scripts download resources to build your server. | ||
Is not longer maintained by me but by the community. | ||
**La version française est en bas de la page.** | ||
@@ -112,2 +113,3 @@ | ||
FiveM Installer est un utilitaire pour pouvoir télécharger des scripts de FiveM pour un serveur FX. | ||
Le projet n'est plus maintenu par moi mais par la communauté. | ||
@@ -114,0 +116,0 @@ Installation |
325
tools.js
@@ -1,44 +0,34 @@ | ||
var binaryParser = require('superagent-binary-parser'); | ||
var request = require('superagent'); | ||
var chalk = require('chalk'); | ||
var fs = require('fs'); | ||
var extract = require('extract-zip'); | ||
var rimraf = require('rimraf'); | ||
var path = require('path'); | ||
const binaryParser = require('superagent-binary-parser'); | ||
const request = require('superagent'); | ||
const chalk = require('chalk'); | ||
const fs = require('fs'); | ||
const extract = require('extract-zip'); | ||
const rimraf = require('rimraf'); | ||
const path = require('path'); | ||
module.exports = { | ||
download_resource: function(resource, dataConfigFile, save, specifiedfolder) { | ||
var arraytosplit = resource.split("/"); | ||
var resource_user = arraytosplit[0]; | ||
var resource_name = arraytosplit[1].split("@")[0] || arraytosplit[1]; | ||
download_resource: (resource, dataConfigFile, save, specifiedfolder) => { | ||
const arraytosplit = resource.split("/"); | ||
const resource_user = arraytosplit[0]; | ||
const resource_name = arraytosplit[1].split("@")[0] || arraytosplit[1]; | ||
const versionarray = arraytosplit[1].split("@"); | ||
var resource_version; | ||
var versionarray = arraytosplit[1].split("@"); | ||
if(versionarray.length > 0){ | ||
resource_version = versionarray[1] || ""; | ||
} | ||
if (versionarray.length > 0) resource_version = versionarray[1] || ""; | ||
return new Promise(function(resolve, reject) { | ||
request.get('https://api.github.com/repos/' + resource_user + "/" + resource_name + "/tags").set('Accept', 'application/json').set('User-Agent', 'fvm-installer').end(function(err, res) { | ||
if (err) { | ||
console.log(chalk.red("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to download !")); | ||
console.log("\n"); | ||
reject("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to download !"); | ||
return; | ||
} else { | ||
return new Promise(async (resolve, reject) => { | ||
await request.get('https://api.github.com/repos/' + resource_user + "/" + resource_name + "/tags").set('Accept', 'application/json').set('User-Agent', 'fvm-installer') | ||
.then(async res => { | ||
var data; | ||
if(resource_version == ""){ | ||
if(resource_version == "") { | ||
data = res.body[0]; | ||
resource_version = data.name; | ||
}else{ | ||
data = res.body.find(function(element){ | ||
if(element.name == resource_version){ | ||
return true; | ||
}else{ | ||
return false; | ||
} | ||
} else { | ||
data = res.body.find((element) => { | ||
return (element.name == resource_version) ? true : false | ||
}); | ||
if (!(data)){ | ||
if (!(data)) { | ||
console.log(chalk.red("Error: Version for "+ resource_user + "/" + resource_name + " not found !")); | ||
@@ -48,88 +38,75 @@ console.log("\n"); | ||
return; | ||
} | ||
} | ||
} | ||
console.log(chalk.green("Installing " + resource_name + " - " + resource_version)); | ||
var zip_url = data.zipball_url; | ||
console.log(chalk.green('Installing ' + resource_name + ' - ' + resource_version)); | ||
const zip_url = data.zipball_url; | ||
console.log(zip_url); | ||
request.get(zip_url).set('User-Agent', 'fvm-installer').parse(binaryParser).buffer().end(function(err, resp) { | ||
if(err){ | ||
console.log(chalk.red("Please Try Again in 60 Minutes - Exceed Github Rate Limite or Github Down")); | ||
process.exit(0); | ||
} | ||
if(!res.body){ | ||
console.log(chalk.red("Please Try Again - Network Bug")); | ||
process.exit(0); | ||
} | ||
fs.writeFileSync("resourcedownloadedfvm.zip", resp.body); | ||
var zipfolder = ""; | ||
extract("resourcedownloadedfvm.zip", { | ||
dir: path.join(process.cwd(), "resources"), | ||
onEntry: function(fileunzipped, zip) { | ||
if (zipfolder == "") { | ||
zipfolder = fileunzipped.fileName; | ||
} | ||
await request | ||
.get(zip_url) | ||
.set('User-Agent', 'fvm-installer') | ||
.parse(binaryParser) | ||
.buffer() | ||
.then(async resp => { | ||
if (!resp.body) { | ||
console.log(chalk.red('Please Try Again - Network Bug')); | ||
process.exit(0); | ||
} | ||
}, function(err) { | ||
fs.unlinkSync(path.join(process.cwd(), "resourcedownloadedfvm.zip")); | ||
//Remove and put resource in folder | ||
var pathtoinstall = path.join(process.cwd(), "resources", resource_name); | ||
fs.writeFileSync('resourcedownloadedfvm.zip', resp.body); | ||
var zipfolder = ''; | ||
try { | ||
await extract('resourcedownloadedfvm.zip', { | ||
dir: path.join(process.cwd(), 'resources'), | ||
onEntry: (fileunzipped, zip) => { if (zipfolder == '') zipfolder = fileunzipped.fileName; }, | ||
}) | ||
fs.unlinkSync(path.join(process.cwd(), 'resourcedownloadedfvm.zip')); | ||
//Remove and put resource in folder | ||
var pathtoinstall = path.join(process.cwd(), 'resources', resource_name); | ||
if(specifiedfolder != ""){ | ||
pathtoinstall = path.join(process.cwd(), "resources", "[" + specifiedfolder + "]", resource_name, "/"); | ||
if (!fs.existsSync(path.join(process.cwd(), "resources", "[" + specifiedfolder + "]"))){ | ||
fs.mkdirSync(path.join(process.cwd(), "resources", "[" + specifiedfolder + "]")); | ||
} | ||
} | ||
rimraf(pathtoinstall, function() { | ||
fs.rename(path.join(process.cwd(), "resources", zipfolder), pathtoinstall, function(err) { | ||
console.log("\n"); | ||
if(save){ | ||
dataConfigFile.addResource(resource_user+"/"+resource_name, resource_version, specifiedfolder); | ||
if (specifiedfolder != '') { | ||
pathtoinstall = path.join(process.cwd(), 'resources', '[' + specifiedfolder + ']', resource_name, '/'); | ||
if (!fs.existsSync(path.join(process.cwd(), 'resources', '[' + specifiedfolder + ']'))) fs.mkdirSync(path.join(process.cwd(), 'resources', '[' + specifiedfolder + ']')); | ||
} | ||
resolve("Install Successful of "+resource_user+"/"+resource_name); | ||
}); | ||
}); | ||
}); | ||
}); | ||
} | ||
rimraf(pathtoinstall, _ => { | ||
fs.rename(path.join(process.cwd(), 'resources', zipfolder), pathtoinstall, (err) => { | ||
console.log('\n'); | ||
if (save) dataConfigFile.addResource(resource_user + '/' + resource_name, resource_version, specifiedfolder); | ||
resolve('Install Successful of ' + resource_user + '/' + resource_name); | ||
}); | ||
}); | ||
} catch (err) { console.log (err) } | ||
}) | ||
.catch(err => { | ||
console.log(chalk.red('Please Try Again in 60 Minutes - Exceed Github Rate Limite or Github Down')); | ||
process.exit(0); | ||
}) | ||
}); | ||
}) | ||
.catch(err => { | ||
console.log(chalk.red("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to download !")); | ||
console.log("\n"); | ||
reject("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to download !"); | ||
return; | ||
}); | ||
}); | ||
}, | ||
update_resource: function(resource, previous_version, dataConfigFile, save) { | ||
var arraytosplit = resource.split("/"); | ||
var resource_user = arraytosplit[0]; | ||
var resource_name = arraytosplit[1].split("@")[0] || arraytosplit[1]; | ||
update_resource: (resource, previous_version, dataConfigFile, save) => { | ||
const arraytosplit = resource.split("/"); | ||
const resource_user = arraytosplit[0]; | ||
const resource_name = arraytosplit[1].split("@")[0] || arraytosplit[1]; | ||
var resource_version; | ||
var versionarray = arraytosplit[1].split("@"); | ||
const versionarray = arraytosplit[1].split("@"); | ||
if(versionarray.length > 0){ | ||
resource_version = versionarray[1] || ""; | ||
} | ||
return new Promise(function(resolve, reject) { | ||
request.get('https://api.github.com/repos/' + resource_user + "/" + resource_name + "/tags").set('Accept', 'application/json').end(function(err, res) { | ||
if (err) { | ||
console.log(chalk.red("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to update !")); | ||
console.log("\n"); | ||
reject("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to update !"); | ||
return; | ||
} else { | ||
if(versionarray.length > 0) resource_version = versionarray[1] || ""; | ||
return new Promise(async (resolve, reject) => { | ||
await request.get('https://api.github.com/repos/' + resource_user + "/" + resource_name + "/tags").set('Accept', 'application/json') | ||
.then(async res => { | ||
var data; | ||
if(resource_version == ""){ | ||
if(resource_version == "") { | ||
data = res.body[0]; | ||
resource_version = data.name; | ||
}else{ | ||
data = res.body.find(function(element){ | ||
if(element.name == resource_version){ | ||
return true; | ||
}else{ | ||
return false; | ||
} | ||
} else { | ||
data = res.body.find((element) => { | ||
return (element.name == resource_version) ? true : false; | ||
}); | ||
@@ -144,4 +121,2 @@ | ||
} | ||
console.log(chalk.green("Updating " + resource_name + " - " + chalk.red(previous_version) + " -> " + resource_version)); | ||
@@ -151,7 +126,4 @@ var zip_url = data.zipball_url; | ||
request.get(zip_url).parse(binaryParser).buffer().end(function(err, resp) { | ||
if(err){ | ||
console.log(chalk.red("Please Try Again in 60 Minutes - Exceed Github Rate Limite or Github Down ")); | ||
process.exit(0); | ||
} | ||
await request.get(zip_url).parse(binaryParser).buffer() | ||
.then(async res => { | ||
if(!res.body){ | ||
@@ -161,61 +133,56 @@ console.log(chalk.red("Please Try Again - Network Bug")); | ||
} | ||
fs.writeFileSync("resourcedownloadedfvm.zip", resp.body); | ||
fs.writeFileSync("resourcedownloadedfvm.zip", res.body); | ||
var zipfolder = ""; | ||
extract("resourcedownloadedfvm.zip", { | ||
dir: path.join(process.cwd(), "resources"), | ||
onEntry: function(fileunzipped, zip) { | ||
if (zipfolder == "") { | ||
zipfolder = fileunzipped.fileName; | ||
} | ||
} | ||
}, function(err) { | ||
try { | ||
await extract('resourcedownloadedfvm.zip', { | ||
dir: path.join(process.cwd(), 'resources'), onEntry: (fileunzipped, zip) => { | ||
if (zipfolder == '') zipfolder = fileunzipped.fileName; | ||
}, | ||
}); | ||
// fs.unlinkSync(path.join(process.cwd(), "resourcedownloadedfvm.zip")); | ||
//Remove and put resource in folder | ||
var pathtoupdate = path.join(process.cwd(), "resources", resource_name); | ||
if(dataConfigFile.folder[resource_user+"/"+resource_name]){ | ||
pathtoupdate = path.join(process.cwd(), "resources", "[" + dataConfigFile.folder[resource_user+"/"+resource_name] + "]", resource_name); | ||
if (!fs.existsSync(path.join(process.cwd(), "resources", "[" + dataConfigFile.folder[resource_user+"/"+resource_name] + "]"))){ | ||
fs.mkdirSync(path.join(process.cwd(), "resources", "[" + dataConfigFile.folder[resource_user+"/"+resource_name] + "]")); | ||
} | ||
var pathtoupdate = path.join(process.cwd(), 'resources', resource_name); | ||
if (dataConfigFile.folder[resource_user + '/' + resource_name]) { | ||
pathtoupdate = path.join(process.cwd(), 'resources', '[' + dataConfigFile.folder[resource_user + '/' + resource_name] + ']', resource_name); | ||
if (!fs.existsSync(path.join(process.cwd(), 'resources', '[' + dataConfigFile.folder[resource_user + '/' + resource_name] + ']'))) fs.mkdirSync(path.join(process.cwd(), 'resources', '[' + dataConfigFile.folder[resource_user + '/' + resource_name] + ']')); | ||
} | ||
rimraf(pathtoupdate, function() { | ||
fs.rename(path.join(process.cwd(), "resources", zipfolder), pathtoupdate, function(err) { | ||
console.log("\n"); | ||
if(save){ | ||
if(dataConfigFile.folder[resource_user+"/"+resource_name]){ | ||
dataConfigFile.addResource(resource_user+"/"+resource_name, resource_version, dataConfigFile.folder[resource_user+"/"+resource_name]); | ||
}else{ | ||
dataConfigFile.addResource(resource_user+"/"+resource_name, resource_version, ""); | ||
} | ||
rimraf(pathtoupdate, _ => { | ||
fs.rename(path.join(process.cwd(), 'resources', zipfolder), pathtoupdate, (err) => { | ||
console.log('\n'); | ||
if (save) { | ||
(dataConfigFile.folder[resource_user + '/' + resource_name]) | ||
? dataConfigFile.addResource(resource_user + '/' + resource_name, resource_version, dataConfigFile.folder[resource_user + '/' + resource_name]) | ||
: dataConfigFile.addResource(resource_user + '/' + resource_name, resource_version, ''); | ||
} | ||
resolve("Update Successful of "+resource_user+"/"+resource_name); | ||
resolve('Update Successful of ' + resource_user + '/' + resource_name); | ||
}); | ||
}); | ||
}); | ||
}); | ||
} | ||
} catch (err) { console.log (err) } | ||
}) | ||
.catch(err => { | ||
console.log(chalk.red("Please Try Again in 60 Minutes - Exceed Github Rate Limite or Github Down ")); | ||
process.exit(0); | ||
}) | ||
}) | ||
.catch(err => { | ||
console.log(chalk.red("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to update !")); | ||
console.log("\n"); | ||
reject("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to update !"); | ||
return; | ||
}); | ||
}); | ||
}, | ||
deleteresource: function(resource, save, dataConfigFile){ | ||
return new Promise(function(resolve, reject) { | ||
var arraytosplit = resource.split("/"); | ||
var resource_user = arraytosplit[0]; | ||
var resource_name = arraytosplit[1].split("@")[0] || arraytosplit[1]; | ||
deleteresource: (resource, save, dataConfigFile) => { | ||
return new Promise((resolve, reject) => { | ||
const arraytosplit = resource.split("/"); | ||
const resource_user = arraytosplit[0]; | ||
const resource_name = arraytosplit[1].split("@")[0] || arraytosplit[1]; | ||
var pathtodelete = path.join(process.cwd(), "resources", resource_name); | ||
if(dataConfigFile.folder[resource]){ | ||
pathtodelete = path.join(process.cwd(), "resources", "[" + dataConfigFile.folder[resource] + "]", resource_name) | ||
} | ||
if(dataConfigFile.folder[resource]) pathtodelete = path.join(process.cwd(), "resources", "[" + dataConfigFile.folder[resource] + "]", resource_name); | ||
rimraf(pathtodelete, function() { | ||
if (save){ | ||
dataConfigFile.removeResource(resource); | ||
} | ||
rimraf(pathtodelete, _ => { | ||
if (save) dataConfigFile.removeResource(resource); | ||
console.log("Delete Successful of "+resource_user+"/"+resource_name); | ||
@@ -226,30 +193,28 @@ resolve("Delete Successful of "+resource_user+"/"+resource_name); | ||
}, | ||
check_update_resource: function(resource, resource_version){ | ||
var arraytosplit = resource.split("/"); | ||
var resource_user = arraytosplit[0]; | ||
var resource_name = arraytosplit[1].split("@")[0] || arraytosplit[1]; | ||
check_update_resource: (resource, resource_version) => { | ||
const arraytosplit = resource.split("/"); | ||
const resource_user = arraytosplit[0]; | ||
const resource_name = arraytosplit[1].split("@")[0] || arraytosplit[1]; | ||
return new Promise(function(resolve, reject) { | ||
request.get('https://api.github.com/repos/' + resource_user + "/" + resource_name + "/tags").set('Accept', 'application/json').end(function(err, res) { | ||
if (err) { | ||
console.log(chalk.red("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to update !")); | ||
console.log("\n"); | ||
reject("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to update !"); | ||
return; | ||
} else { | ||
var version = res.body[0].name; | ||
if(resource_version != version){ | ||
console.log(resource + "\t"+ "Installed: " + resource_version+"\t" +chalk.green(" New Version:"+version)+"\n"); | ||
}else{ | ||
console.log(resource + "\t"+ "Installed: " + resource_version+"\n"); | ||
} | ||
resolve(); | ||
} | ||
return new Promise(async (resolve, reject) => { | ||
await request.get('https://api.github.com/repos/' + resource_user + "/" + resource_name + "/tags").set('Accept', 'application/json') | ||
.then(res => { | ||
const version = res.body[0].name; | ||
(resource_version != version) | ||
? console.log(resource + "\t"+ "Installed: " + resource_version+"\t" +chalk.green(" New Version:"+version)+"\n") | ||
: console.log(resource + "\t"+ "Installed: " + resource_version+"\n"); | ||
resolve(); | ||
}) | ||
.catch(err => { | ||
console.log(chalk.red("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to update !")); | ||
console.log("\n"); | ||
reject("Error: Resource "+ resource_user + "/" + resource_name + " Not Found or not possible to update !"); | ||
return; | ||
}); | ||
}); | ||
}, | ||
check_resource_format: function (resource_name){ | ||
check_resource_format: (resource_name) => { | ||
return /(^([^/]+)\/([^/]+)@\S+$)|(^([^/]+)\/([^/]+)$)/g.test(resource_name); | ||
} | ||
}; | ||
}; |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
206
61364
268
1
+ Added@types/node@22.13.5(transitive)
+ Added@types/yauzl@2.10.3(transitive)
+ Addedchalk@4.1.2(transitive)
+ Addedextract-zip@2.0.1(transitive)
+ Addedsafe-buffer@5.2.1(transitive)
+ Addedstring_decoder@1.3.0(transitive)
+ Addedundici-types@6.20.0(transitive)
- Removedbuffer-from@1.1.2(transitive)
- Removedchalk@3.0.0(transitive)
- Removedconcat-stream@1.6.2(transitive)
- Removedcore-util-is@1.0.3(transitive)
- Removeddebug@2.6.9(transitive)
- Removedextract-zip@1.7.0(transitive)
- Removedisarray@1.0.0(transitive)
- Removedmkdirp@0.5.6(transitive)
- Removedms@2.0.0(transitive)
- Removedprocess-nextick-args@2.0.1(transitive)
- Removedreadable-stream@2.3.8(transitive)
- Removedsafe-buffer@5.1.2(transitive)
- Removedstring_decoder@1.1.1(transitive)
- Removedtypedarray@0.0.6(transitive)
Updatedadm-zip@^0.4.14
Updatedchalk@^4.0.0
Updatedextract-zip@^2.0.0
Updatedrimraf@^3.0.2
Updatedsuperagent@^5.2.2