Compare commits

...

4 Commits

Author SHA1 Message Date
Ulysse Gressé-Lugué
d54b3c8dd6
Merge 5a15cc1035 into 6aaeeff9a4 2024-11-19 16:22:06 +01:00
Daniel Scalzi
6aaeeff9a4
Update comment. 2024-11-12 15:14:59 -05:00
Daniel Scalzi
9cca37ca8a
Fix issue with submodule library overrides. (#366) 2024-11-12 14:48:55 -05:00
LegendMC
5a15cc1035 Added an overlay for non 0 exit codes. 2024-05-13 18:18:21 +02:00
3 changed files with 39 additions and 20 deletions

View File

@ -8,7 +8,7 @@ const { Type } = require('helios-distribution-types')
const os = require('os')
const path = require('path')
const ConfigManager = require('./configmanager')
const ConfigManager = require('./configmanager')
const logger = LoggerUtil.getLogger('ProcessBuilder')
@ -94,6 +94,21 @@ class ProcessBuilder {
})
child.on('close', (code, signal) => {
logger.info('Exited with code', code)
if(code != 0){
setOverlayContent(
Lang.queryJS('processbuilder.exit.exitErrorHeader'),
Lang.queryJS('processbuilder.exit.message') + code,
Lang.queryJS('processbuilder.exit.copyCode')
)
setOverlayHandler(() => {
copy(Lang.queryJS('processbuilder.exit.copyCodeText') + code)
toggleOverlay(false)
})
setDismissHandler(() => {
toggleOverlay(false)
})
toggleOverlay(true, true)
}
fs.remove(tempNativePath, (err) => {
if(err){
logger.warn('Error while deleting temp dir', err)
@ -839,9 +854,7 @@ class ProcessBuilder {
libs[mdl.getVersionlessMavenIdentifier()] = mdl.getPath()
if(mdl.subModules.length > 0){
const res = this._resolveModuleLibraries(mdl)
if(res.length > 0){
libs = {...libs, ...res}
}
libs = {...libs, ...res}
}
}
}
@ -850,9 +863,7 @@ class ProcessBuilder {
for(let i=0; i<mods.length; i++){
if(mods.sub_modules != null){
const res = this._resolveModuleLibraries(mods[i])
if(res.length > 0){
libs = {...libs, ...res}
}
libs = {...libs, ...res}
}
}
@ -863,27 +874,25 @@ class ProcessBuilder {
* Recursively resolve the path of each library required by this module.
*
* @param {Object} mdl A module object from the server distro index.
* @returns {Array.<string>} An array containing the paths of each library this module requires.
* @returns {{[id: string]: string}} An object containing the paths of each library this module requires.
*/
_resolveModuleLibraries(mdl){
if(!mdl.subModules.length > 0){
return []
return {}
}
let libs = []
let libs = {}
for(let sm of mdl.subModules){
if(sm.rawModule.type === Type.Library){
if(sm.rawModule.classpath ?? true) {
libs.push(sm.getPath())
libs[sm.getVersionlessMavenIdentifier()] = sm.getPath()
}
}
// If this module has submodules, we need to resolve the libraries for those.
// To avoid unnecessary recursive calls, base case is checked here.
if(mdl.subModules.length > 0){
const res = this._resolveModuleLibraries(sm)
if(res.length > 0){
libs = libs.concat(res)
}
libs = {...libs, ...res}
}
}
return libs

View File

@ -5,16 +5,20 @@
* modules, excluding dependencies.
*/
// Requirements
const $ = require('jquery')
const {ipcRenderer, shell, webFrame} = require('electron')
const remote = require('@electron/remote')
const isDev = require('./assets/js/isdev')
const { LoggerUtil } = require('helios-core')
const Lang = require('./assets/js/langloader')
const $ = require('jquery')
const {ipcRenderer, shell, webFrame, clipboard} = require('electron')
const remote = require('@electron/remote')
const isDev = require('./assets/js/isdev')
const { LoggerUtil } = require('helios-core')
const Lang = require('./assets/js/langloader')
const loggerUICore = LoggerUtil.getLogger('UICore')
const loggerAutoUpdater = LoggerUtil.getLogger('AutoUpdater')
function copy(value) {
clipboard.writeText(value, 'selection')
}
// Log deprecation and process warnings.
process.traceProcessWarnings = true
process.traceDeprecation = true

View File

@ -218,6 +218,12 @@ joined = "Exploring the Realm!"
[js.overlay]
dismiss = "Dismiss"
[js.processbuilder.exit]
exitErrorHeader = "Game exited with an error code"
message = "The game exited abnormally with the exited code: "
copyCode = "Copy exit code"
copyCodeText = "Minecraft exit code "
[js.settings.fileSelectors]
executables = "Executables"
allFiles = "All Files"