lib/githook/tasks.rb in git-hook-0.1.1 vs lib/githook/tasks.rb in git-hook-0.1.2
- old
+ new
@@ -1,11 +1,23 @@
+# https://stackoverflow.com/questions/8781263/access-rake-task-description-from-within-task
+# enable get task description
+# you aslo can see it in Rake source code: lib/rake/application.rb#select_tasks_to_show
+Rake::TaskManager.record_task_metadata = true
+
# load rake files from lib
-rake_files_pattern = File.dirname(__FILE__) + "/tasks/**/*.rake"
-# => gems/git-hook-0.1.1/lib/githook/tasks/**/*.rake
+rake_files_pattern = File.dirname(__FILE__) + "/tasks/*.rake"
+# => gems/git-hook-0.1.1/lib/githook/tasks/*.rake
Dir.glob(rake_files_pattern).each { |r| load r }
-# load rake files from outside project, defined by developer
-# in case the outside rake file has some errors,
-# not load them when target task is "install"
-if ARGV[0] != "install"
- Dir.glob(".githook/tasks/**/*.rake").each { |r| load r }
+# we must be very careful to load outside ruby code
+# because they are out of our control
+# only load outside "*.rake" when there are ".git" and ".githook" folder, and target task isn't "install"
+if Dir.exist?('.git') && Dir.exist?('.githook') && ARGV[0] != "install"
+ Dir.glob(".githook/tasks/**/*.rake").each do |rake|
+ begin
+ load rake
+ rescue => e
+ puts "Error: #{e.message} in #{rake}"
+ exit 1
+ end
+ end
end