class EmberProj::Generators::BootstrapGenerator

Constants

TPL_PATH

Attributes

auth_notices[R]

Public Instance Methods

authentications() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 68
def authentications
  return if auth.blank?

  validate_auth! 
  use_auth_gems.each do |name|
    auth_notice name

    gem name unless has_gem? name
  end
end
bundle_all() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 92
def bundle_all
  if csv?
    bundle_gems!
    invoke "client_side_validations:ember:install" 
  else
    bundle_gems! if bundle?
  end
end
client_side_validations() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 86
def client_side_validations
  return unless csv?
  gem 'client_side_validations' unless has_gem? 'client_side_validations'
  gem 'client_side_validations-ember' unless has_gem? 'client_side_validations-ember'
end
emblem() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 79
def emblem
  return unless emblem?
  gem 'emblem-rails' unless has_gem? 'emblem-rails'

  say "Note: Emblem templates have the form: my_template.js.emblem", :green
end
move_ember_files() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 47
def move_ember_files
  say "Moving existing ember files...", :green
  move_to_app 'views/application_view', 'controllers/application_controller'
  move 'store', 'app/stores/store'
  move 'router', 'app/routes/router'

  # remove default application.js file
  # replaced by coffee version supplied by this gem!
  say "Cleanup...", :green

  if File.exist? Rails.root.join js_path('.js/.coffee')
    # Somehow I can't seem to get rid of this file!!!
    remove_file js_path('.js/.coffee')
  end

  if File.exist? Rails.root.join js_path('.js/.coffee')
    # remove old application.js manifest
    remove_file js_path('application')
  end
end
notices() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 101
def notices
  draw_border :thick
  auth_notices!
  extras_notice!
  other_gems_notice!
end
skeleton() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 23
def skeleton
  directory "app", "app/assets/javascripts/app", recursive: true

  app_directories.each do |app_dir|
    src = "app/#{app_dir}"
    target = "app/assets/javascripts/app/#{app_dir}"

    directory src, target, recursive: true

    sub_dirs.each do |sub_dir|
      sub_src = File.join(src, sub_dir)

      full_sub_path = File.join(TPL_PATH, sub_src)

      if File.directory? full_sub_path
        sub_target = File.join(target, sub_dir)
        directory sub_src, sub_target, recursive: true 
      end
    end
  end

  copy_file "application.js.coffee", (js_path(application) + '.coffee')
end

Protected Instance Methods

app_directories() click to toggle source

TODO: allow customization - which to include/exclude!

# File lib/generators/ember_proj/bootstrap_generator.rb, line 121
def app_directories
  %w{authentication config controllers helpers lib mixins models routes state_managers stores templates views}
end
auth() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 170
def auth
  @auth ||= options[:auth].map do |name|
    case name
    when 'oauth', 'oauth2', 'ember-oauth', 'ember-oauth2'
      'ember-oauth2-rails'
    when 'auth', 'ember-auth'
      'ember-auth-rails'
    else
      name
    end
  end
end
auth_gems() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 183
def auth_gems
  %w{ember-auth-rails ember-oauth2-rails}
end
auth_notice(name) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 142
def auth_notice name
  auth_notices << "See: #{auth_repo name} for authentication configuration details"
end
auth_notices!() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 127
def auth_notices!
  if auth_notices.empty?
    say "Authentication: was not configured", :green
    return
  end

  say "Authentication:", :green
  say auth_notices.join("\n"), :green
  say ""
end
auth_repo(name) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 146
def auth_repo name
  case name.to_s
  when 'ember-auth-rails'
    'https://github.com/heartsentwined/ember-auth-rails'
  when 'ember-oauth2-rails'
    'https://github.com/amkirwan/ember-oauth2'
  else
    say "Invalid auth gem: #{name}, must be oauth2 or auth", :red
    exit
  end
end
border(type = :thin) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 253
def border type = :thin
  border_char(type) * border_width + "\n"
end
border_char(type) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 257
def border_char type
  type == :thick ? "=" : '-'
end
border_width() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 261
def border_width
  80
end
bundle?() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 116
def bundle?
  options[:bundle]
end
csv?() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 225
def csv?
  options[:csv]
end
draw_border(type = :thin) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 245
def draw_border type = :thin
  say border(type), :green
end
emblem?() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 221
def emblem?
  options[:emblem]
end
extras() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 282
def extras
  %w{ember-data ember-data-validations ember-formBuilder ember-easyForm bootstrap rails.validations.ember}
end
extras_notice() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 234
      def extras_notice
        %Q{The following extra libs are referenced in this setup: 

  #{join extras}

Include these libs, using respective gems (#{join gems_list}) or the equivalent js files.

Note: You can also remove the libs you don't need from the application.js.coffee manifest
}        
      end
extras_notice!() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 229
def extras_notice!
  draw_border
  say extras_notice, :green
end
gems_list() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 286
def gems_list
  %w{client_side_validations-ember bootstrap-sass ember-rails}
end
join(list) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 265
def join list
  list.join ', '
end
js_app_path(path) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 212
def js_app_path path                
  js_path File.join('app', path)
end
js_path(path) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 216
def js_path path
  path = "#{path}.js" unless path =~ /\.js$/
  Rails.root.join('app/assets/javascripts', path)
end
move(src, target) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 193
def move src, target
  src = js_path(src)
  target = js_path(target)

  move_it! src, target
end
move_it!(src, target) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 200
def move_it! src, target
  return unless File.exist? src
  
  say_status :move, "#{src} -> #{target}"

  FileUtils.mv src, target
end
move_to_app(*paths) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 187
def move_to_app *paths
  paths.flatten.each do |path|
    move_it! js_path(path), js_app_path(path)
  end
end
nice(text) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 249
def nice text
  border + text
end
other_gems() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 278
def other_gems
  %q{ember-i18n-rails ember-auth-rails ember-oauth2-rails ember-bootstrap-rails}
end
other_gems_notice() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 274
def other_gems_notice
  "Other useful gems: #{other_gems}\n"
end
other_gems_notice!() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 269
def other_gems_notice!
  draw_border
  say other_gems_notice, :green
end
strip_front(path) click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 208
def strip_front path
  "app/assets" + path.to_s.split(/app\/assets/)[1]
end
sub_dirs() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 112
def sub_dirs
  %w{locales mixins extensions shortcuts}
end
use_auth_gems() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 166
def use_auth_gems
  [auth].flatten & auth_gems
end
validate_auth!() click to toggle source
# File lib/generators/ember_proj/bootstrap_generator.rb, line 158
def validate_auth!
  return if options[:auth].blank?

  if use_auth_gems.empty?
    say "Not a supported authentication gem: #{auth}. Must be one of #{auth_gems}", :red
  end
end