lib/kentucky/generator.rb in kentucky-3.0.3 vs lib/kentucky/generator.rb in kentucky-3.1.0
- old
+ new
@@ -5,23 +5,68 @@
module Kentucky
class Generator < Thor
map ['-v', '--version'] => :version
desc 'install', 'Install Kentucky into your project'
- method_options :path => :string, :dir => :boolean
+ method_options :path => :string, :force => :boolean, :dir => :boolean
def install
- install_files
- puts "Kentucky files installed! Happy coding!"
+ if kentucky_files_already_exist? && !options[:force]
+ puts "Kentucky files already installed, doing nothing."
+ else
+ create_site_structure if !options[:force]
+ install_files
+ puts "Kentucky files installed to #{install_path_kentucky}/"
+ end
end
+ desc 'update', 'Update Kentucky'
+ method_options :path => :string
+ def update
+ if kentucky_files_already_exist?
+ remove_kentucky_directory
+ create_kentucky_directory
+ install_files
+ puts "Kentucky files updated."
+ else
+ puts "No existing Kentucky installation. Doing nothing."
+ end
+ end
+
desc 'version', 'Show Kentucky version'
def version
say "Kentucky #{Kentucky::VERSION}"
end
private
+ def kentucky_files_already_exist?
+ install_path_kentucky.exist?
+ end
+
+ def create_site_structure
+ make_install_directory
+ if options[:dir]
+ dirs = %w(images scripts scss css)
+ dirs.each do |dir|
+ FileUtils.mkdir(install_path + Pathname.new(dir))
+ end
+ end
+ create_kentucky_directory
+ end
+
+ def make_install_directory
+ FileUtils.mkdir_p(install_path)
+ end
+
+ def create_kentucky_directory
+ FileUtils.mkdir(install_path_kentucky)
+ end
+
+ def remove_kentucky_directory
+ FileUtils.rm_rf(install_path_kentucky)
+ end
+
def install_path
if options[:path]
path = Pathname.new(options[:path])
else
path = Pathname.new('.')
@@ -34,18 +79,39 @@
def install_files
copy_in_scss_files
end
def copy_in_scss_files
- FileUtils.cp_r(kentucky_stylesheets, install_path)
+ FileUtils.cp_r(kentucky_stylesheets, install_path_kentucky)
+ FileUtils.cp(master_stylesheet, install_path_scss)
end
+ def install_path_scss
+ if options[:dir]
+ return install_path + Pathname.new("scss")
+ else
+ return install_path
+ end
+ end
+
+ def install_path_kentucky
+ return install_path_scss + Pathname.new("kentucky")
+ end
+
+ def master_stylesheet
+ Dir["#{stylesheets_directory}/style.scss"]
+ end
+
def kentucky_stylesheets
Dir["#{kentucky_directory}/*"]
end
+ def all_stylesheets
+ Dir["#{stylesheets_directory}/*"]
+ end
+
def kentucky_directory
- File.join(stylesheets_directory)
+ File.join(stylesheets_directory, "kentucky")
end
def stylesheets_directory
File.join(top_level_directory, "app", "assets", "stylesheets")
end