lib/yuyi/roll.rb in yuyi-0.0.8 vs lib/yuyi/roll.rb in yuyi-1.0.0
- old
+ new
@@ -11,31 +11,55 @@
def self.file_name file_name = nil
file_name ? @file_name = file_name : @file_name
end
def self.pre_install &block
- @pre_install ||= block
+ if block
+ @pre_install = block
+ else
+ @pre_install
+ end
end
def self.install &block
- @install ||= block
+ if block
+ @install = block
+ else
+ @install
+ end
end
def self.post_install &block
- @post_install ||= block
+ if block
+ @post_install = block
+ else
+ @post_install
+ end
end
def self.uninstall &block
- @uninstall ||= block
+ if block
+ @uninstall = block
+ else
+ @uninstall
+ end
end
def self.upgrade &block
- @upgrade ||= block
+ if block
+ @upgrade = block
+ else
+ @upgrade
+ end
end
def self.installed? &block
- @installed ||= block
+ if block
+ @installed = block
+ else
+ @installed
+ end
end
def self.dependencies *dependencies
@dependencies ||= []
@@ -115,36 +139,52 @@
end
# Add to global collection of rolls
#
def self.inherited klass
- # convert class name to a human readble title-cased string
- klass.title klass.to_s.gsub(/(?=[A-Z])/, ' ').strip
+ return if klass.to_s.include? 'RollModel'
- # convert absolute path to a file name symbol
- klass.file_name caller.first[/[a-z_]+?(?=\.rb)/].to_sym
+ add_roll klass, caller
+ end
+ def self.add_roll klass, caller
+ # convert class name to a title string
+ klass.title class_to_title klass
+
+ # convert caller to a file name symbol
+ klass.file_name caller_to_file_name caller
+
Yuyi::Menu.add_roll klass.file_name, klass
end
+ def self.class_to_title klass
+ klass.to_s.match(/[^:]+$/)[0].gsub(/(?=[A-Z])/, ' ').strip
+ end
+
+ def self.caller_to_file_name caller
+ caller.first[/[a-z_]+?(?=\.rb)/].to_sym
+ end
+
def self.require_dependencies
@dependencies.each do |roll|
unless Yuyi::Menu.on_the_menu? roll
Yuyi::Menu.find_roll roll
end
end
end
def pre_install
+ return unless self.class.pre_install
instance_eval(&self.class.pre_install)
end
def install
instance_eval(&self.class.install)
end
def post_install
+ return unless self.class.post_install
instance_eval(&self.class.post_install)
end
def uninstall
instance_eval(&self.class.uninstall)
@@ -158,9 +198,10 @@
!!instance_eval(&self.class.installed?)
end
# Helpers for Yuyi Cli methods
def say *args; Yuyi.say *args; end
+ def ask *args; Yuyi.ask *args; end
def run *args; Yuyi.run *args; end
def command? *args; Yuyi.command? *args; end
def osx_version; Yuyi.osx_version; end
def on_the_menu? roll