require 'rails/generators/base' module Revelry module Generators module Core class InstallGenerator < Rails::Generators::Base source_root File.expand_path("../templates", __FILE__) desc "Creates a Revelry::Core initializer and copies files to your application." class_option :orm def revelry_app_js create_file "app/assets/javascripts/revelry-app.js", <<-JS //= require_tree ./models //= require_tree ./mixins //= require_tree ./components //= require_tree ./examples JS create_file "app/assets/javascripts/models/.keep" create_file "app/assets/javascripts/mixins/.keep" create_file "app/assets/javascripts/components/.keep" create_file "app/assets/javascripts/examples/.keep" end def application_js file_name = "app/assets/javascripts/application.js" if File.exist? file_name file_name_backup = "#{file_name}.#{Time.now.to_i}" run "mv #{file_name} #{file_name_backup}" prepend_file file_name_backup, "// MOVED BY revelry:core:install - In most cases you can delete this file now." end create_file file_name, <<-JS //= require revelry/client JS end def revelry_app_css settings_source = "#{Gem.loaded_specs['foundation-rails'].full_gem_path}/vendor/assets/stylesheets/foundation/_settings.scss" settings_destination = "app/assets/stylesheets/_settings.scss" if File.exist? settings_destination file_name_backup = "#{settings_source}.#{Time.now.to_i}" run "mv #{settings_source} #{file_name_backup}" prepend_file file_name_backup, "// MOVED BY revelry:core:install - In most cases you can delete this file now." end run "cp #{settings_source} #{settings_destination}" create_file "app/assets/stylesheets/components/__keep.scss", <<-SCSS // This file can be safely deleted once you have other SASS/SCSS files in this directory. // sass-rails just really doesn't like it when you @import a directory with no SASS in it. SCSS create_file "app/assets/stylesheets/revelry-app.scss", <<-SCSS @import "settings"; // Zurb Foundation variables and such: http://foundation.zurb.com/docs/using-sass.html @import "revelry"; @import "components/**/*"; SCSS end def application_css file_name = "app/assets/stylesheets/application.css" if File.exist? file_name file_name_backup = "#{file_name}.#{Time.now.to_i}" run "mv #{file_name} #{file_name_backup}" prepend_file file_name_backup, "/* MOVED BY revelry:core:install - In most cases you can delete this file now. */" end create_file file_name, <<-CSS /* *= require revelry-app */ CSS end end end end end