summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rwxr-xr-xext/tk/lib/tkextlib/pkg_checker.rb73
1 files changed, 64 insertions, 9 deletions
diff --git a/ext/tk/lib/tkextlib/pkg_checker.rb b/ext/tk/lib/tkextlib/pkg_checker.rb
index 813273e65b..5ebf675189 100755
--- a/ext/tk/lib/tkextlib/pkg_checker.rb
+++ b/ext/tk/lib/tkextlib/pkg_checker.rb
@@ -10,15 +10,58 @@ TkRoot.new.withdraw # hide root window
name = File.basename(__FILE__)
+add_path = false
+verbose = false
+
+def help_msg
+ print "Usage: #{$0} [-l] [-v] [-h] [--] [dir]\n"
+ print "\tIf dir is omitted, check the directry that this command exists.\n"
+ print "\tAvailable options are \n"
+ print "\t -l : Add dir to $LOAD_PATH\n"
+ print "\t (If dir == '<parent>/tkextlib', add <parent> also.)\n"
+ print "\t -v : Verbose mode (show reason of fail)\n"
+ print "\t -h : Show this message\n"
+ print "\t -- : End of options\n"
+end
+
+while(ARGV[0] && ARGV[0][0] == ?-)
+ case ARGV[0]
+ when '--'
+ ARGV.shift
+ break;
+ when '-l'
+ ARGV.shift
+ add_path = true
+ when '-v'
+ ARGV.shift
+ verbose = true
+ when '-h'
+ help_msg
+ exit(0)
+ else
+ print "Argument Error!! : unknown option '#{ARGV[0]}'\n"
+ help_msg
+ exit(1)
+ end
+end
+
if ARGV[0]
dir = File.expand_path(ARGV[0])
else
dir = File.dirname(File.expand_path(__FILE__))
end
+if add_path
+ $LOAD_PATH.unshift(dir)
+ if File.basename(dir) == 'tkextlib'
+ $LOAD_PATH.unshift(File.dirname(dir))
+ end
+end
+
print "\nRuby/Tk extension library checker\n"
print "( Note:: This check is very simple one. Shown status may be wrong. )\n"
-print "\n check directory :: #{dir}\n"
+print "\n check directory :: #{dir}"
+print "\n $LOAD_PATH :: #{$LOAD_PATH.inspect}\n"
def get_pkg_list(file)
pkg_list = []
@@ -36,12 +79,16 @@ def get_pkg_list(file)
pkg = [$2, :script]
pkg_list << pkg unless pkg_list.member?(pkg)
end
+ if l =~ /^(?:[^#]+\s|\s*)(?:|;\s*)require\s*\(?\s*(["'])((\w|\/|:)+)\1/
+ pkg = [$2, :require_ruby_lib]
+ pkg_list << pkg unless pkg_list.member?(pkg)
+ end
}
pkg_list
end
-def check_pkg(file)
+def check_pkg(file, verbose=false)
pkg_list = get_pkg_list(file)
error_list = []
@@ -67,9 +114,16 @@ def check_pkg(file)
success_list[name] = :script
error_list.delete_if{|n, t| n == name}
+ when :require_ruby_lib
+ require name
+
+ end
+ rescue => e
+ if verbose
+ error_list << [name, type, e.message]
+ else
+ error_list << [name, type]
end
- rescue
- error_list << [name, type]
end
}
@@ -86,14 +140,14 @@ def check_pkg(file)
[success_list, error_list]
end
-def subdir_check(dir)
+def subdir_check(dir, verbose=false)
Dir.foreach(dir){|f|
next if f == '.' || f == '..'
if File.directory?(f)
subdir_check(File.join(dir, f))
elsif File.extname(f) == '.rb'
path = File.join(dir, f)
- suc, err = check_pkg(path)
+ suc, err = check_pkg(path, verbose)
if err.empty?
print 'Ready : ', path, ' : require->', suc.inspect, "\n"
else
@@ -108,16 +162,17 @@ Dir.chdir(dir)
(Dir['*.rb'] - ['setup.rb', name]).each{|f|
subdir = File.basename(f, '.*')
+=begin
begin
# read 'setup.rb' as if the library has standard structure
require File.join(subdir, 'setup.rb')
rescue LoadError
# ignore error
end
-
+=end
print "\n"
- suc, err = check_pkg(f)
+ suc, err = check_pkg(f, verbose)
if err.empty?
print 'Ready : ', f, ' : require->', suc.inspect, "\n"
else
@@ -125,5 +180,5 @@ Dir.chdir(dir)
' FAIL->', err.inspect, "\n"
end
- subdir_check(subdir) if File.directory?(subdir)
+ subdir_check(subdir, verbose) if File.directory?(subdir)
}