diff --git a/Data/Scripts/001_Technical/002_Files/001_FileTests.rb b/Data/Scripts/001_Technical/002_Files/001_FileTests.rb index ff0b7a796..b90527413 100644 --- a/Data/Scripts/001_Technical/002_Files/001_FileTests.rb +++ b/Data/Scripts/001_Technical/002_Files/001_FileTests.rb @@ -32,6 +32,7 @@ class Dir # Checks for existing directory, gets around accents #----------------------------------------------------------------------------- def self.safe?(dir) + return false if !FileTest.directory?(dir) ret = false self.chdir(dir) { ret = true } rescue nil return ret diff --git a/Data/Scripts/001_Technical/005_PluginManager.rb b/Data/Scripts/001_Technical/005_PluginManager.rb index 0c3aa8fcc..9bff0b7b5 100644 --- a/Data/Scripts/001_Technical/005_PluginManager.rb +++ b/Data/Scripts/001_Technical/005_PluginManager.rb @@ -350,7 +350,8 @@ module PluginManager def self.error(msg) Graphics.update t = Thread.new do - p "Plugin Error:\n#{msg}" + echoln "Plugin Error:\r\n#{msg}" + p "Plugin Error: #{msg}" Thread.exit end while t.status @@ -505,14 +506,17 @@ module PluginManager def self.validateDependencies(name, meta, og = nil) # exit if no registered dependency return nil if !meta[name] || !meta[name][:dependencies] + og = [name] if !og # go through all dependencies for dname in meta[name][:dependencies] # clean the name to a simple string dname = dname[0] if dname.is_a?(Array) && dname.length == 2 dname = dname[1] if dname.is_a?(Array) && dname.length == 3 - # catch looping dependecy issue - self.error("Plugin '#{og}' has looping dependencies which cannot be resolved automatically.") if !og.nil? && og == dname - self.validateDependencies(dname, meta, name) + # catch looping dependency issue + self.error("Plugin '#{og[0]}' has looping dependencies which cannot be resolved automatically.") if !og.nil? && og.include?(dname) + new_og = og.clone + new_og.push(dname) + self.validateDependencies(dname, meta, new_og) end return name end