diff --git a/lib/qasim.rb b/lib/qasim.rb index b816fb9..232ca7e 100644 --- a/lib/qasim.rb +++ b/lib/qasim.rb @@ -5,11 +5,18 @@ def _ str Qt::Object.tr(str) end -module Qasim - autoload :Config, 'qasim/config' - autoload :Map, 'qasim/map' - autoload :Ui, 'qasim/ui' - autoload :Cli, 'qasim/cli' - autoload :MapManager, 'qasim/map_manager' -end + +## Core libs +require 'qasim/constants' +require 'qasim/config' +require 'qasim/map' +require 'qasim/map_manager' + +## Plugins for maps +require 'qasim/map/generic' +require 'qasim/map/smb' +require 'qasim/map/ssh' +require 'qasim/map/webdav' + + diff --git a/lib/qasim/gui.rb b/lib/qasim/gui.rb index 36bf87c..ad26b58 100644 --- a/lib/qasim/gui.rb +++ b/lib/qasim/gui.rb @@ -1,4 +1,5 @@ require 'qasim/qasim_qrc' +require 'qasim/ui' module Qasim class QasimApp diff --git a/lib/qasim/map.rb b/lib/qasim/map.rb index 6678aa5..eb5ee45 100644 --- a/lib/qasim/map.rb +++ b/lib/qasim/map.rb @@ -7,7 +7,7 @@ require 'qasim/map/webdav' module Qasim ; module Map class ParseError < RuntimeError ; end - class ConnectError < RuntimeError ; end + class ConnectError < RuntimeError ; end def class_for type plugin = nil @@ -68,8 +68,6 @@ module Qasim ; module Map line = env_substitute(line) params[:filename] = filename case line - when /^\s*TYPE\s*=\s*(.*)\s*$/ then - params[:type] = $1 when /^\s*REMOTE_USER\s*=\s*(.*)\s*$/ then params[:ssh_user] = $1 when /^\s*REMOTE_PORT\s*=\s*(.*)\s*$/ then @@ -83,13 +81,20 @@ module Qasim ; module Map when /^\s*MAP\s*=\s*(.*)\s+(.*)\s*$/ then params[:links] ||= {} params[:links][$1] = $2 + when /^\s*([A-Z_]+)\s*=\s*(.*)\s*$/ then + key = $1.downcase.to_sym + params[key] = $2 when /^\s*$/,/^\s*#/ then else - raise MapParseError, "parse error at #{@filename}:#{linect}" + STDERR.puts line + raise ParseError, "parse error at #{filename}:#{linect}" end end f.close map_class = class_for params[:type] + if map_class.nil? then + raise ParseError, "no plugin found for type « #{params[:type]} »" + end map = map_class.new appcfg, params return map end diff --git a/lib/qasim/map/generic.rb b/lib/qasim/map/generic.rb index ca9b619..0d82203 100644 --- a/lib/qasim/map/generic.rb +++ b/lib/qasim/map/generic.rb @@ -2,7 +2,7 @@ require 'fileutils' require 'pp' -module Qasim ; class Map; class Generic +module Qasim ; module Map; class Generic attr_reader :links attr_reader :filename attr_reader :name diff --git a/lib/qasim/map/smb.rb b/lib/qasim/map/smb.rb index d744b18..6edae76 100644 --- a/lib/qasim/map/smb.rb +++ b/lib/qasim/map/smb.rb @@ -3,22 +3,20 @@ require 'fileutils' require 'qasim/map/generic' -class Qasim::Map::Webdav < Qasim::Map::Generic +module Qasim; module Map; class Webdav < Qasim::Map::Generic def initialize *opts super end def self.parameters super.merge({ - webdav_user: { required: true}, # ex : foo - webdav_password: { required: true}, # ex : bar - webdav_port: { default: 80}, # ex : 80, 8080, 443 - webdav_protocol: { default: :http} # ex : http, https + smb_user: { required: true}, # ex : foo + smb_password: { required: true}, # ex : bar }) end def self.handles - [ :webdav, :webdavs ] + [ :samba, :cifs, :smb ] end -end +end ; end ; end diff --git a/lib/qasim/map/ssh.rb b/lib/qasim/map/ssh.rb index 4dfb1c8..bdb1dd6 100644 --- a/lib/qasim/map/ssh.rb +++ b/lib/qasim/map/ssh.rb @@ -2,7 +2,7 @@ require 'fileutils' require 'qasim/map/generic' -module Qasim ; class Map ; class Ssh < Qasim::Map::Generic +module Qasim ; module Map ; class Ssh < Qasim::Map::Generic attr_reader :path, :host, :port, diff --git a/lib/qasim/map/webdav.rb b/lib/qasim/map/webdav.rb index d744b18..fb76501 100644 --- a/lib/qasim/map/webdav.rb +++ b/lib/qasim/map/webdav.rb @@ -3,7 +3,7 @@ require 'fileutils' require 'qasim/map/generic' -class Qasim::Map::Webdav < Qasim::Map::Generic +module Qasim; module Map; class Webdav < Qasim::Map::Generic def initialize *opts super end @@ -20,5 +20,6 @@ class Qasim::Map::Webdav < Qasim::Map::Generic def self.handles [ :webdav, :webdavs ] end -end +end ; end ; end + diff --git a/lib/qasim/ui.rb b/lib/qasim/ui.rb index bb6e3cc..4bb58a4 100644 --- a/lib/qasim/ui.rb +++ b/lib/qasim/ui.rb @@ -1,8 +1,3 @@ -require 'qasim/constants' - -module Qasim ; module Ui - autoload :About, 'qasim/ui/about' - autoload :Preferences, 'qasim/ui/preferences' - -end ; end +require 'qasim/ui/about' +require 'qasim/ui/preferences'