Sha256: 9a934346ee93f52a02e4d56b6447b641a1071438f7a854bd1d705578152b5c2d

Contents?: true

Size: 1.88 KB

Versions: 5

Compression:

Stored size: 1.88 KB

Contents

require 'rails/generators'

class ShopifyAppGenerator < Rails::Generators::Base
  argument :api_key, :type => :string, :required => false
  argument :secret, :type => :string, :required => false
  
  class_option :skip_routes, :type => :boolean, :default => false, :desc => 'pass true to skip route generation'
  
  def self.source_root
    File.join(File.dirname(__FILE__), 'templates')
  end
  
  def copy_files
    directory 'app'
    directory 'public'
    directory 'config'
  end
  
  def remove_static_index
    remove_file 'public/index.html'
  end
  
  def add_config_variables
    return if api_key.blank? || secret.blank?
    
    inject_into_file 'config/application.rb', <<-DATA, :after => "class Application < Rails::Application\n"
    
    # Shopify API connection credentials:
    config.shopify.api_key = '#{api_key}'
    config.shopify.secret = '#{secret}'
    DATA
  end

  def add_bootstrap_gem
    gem_group :development, :test do
      gem "less-rails-bootstrap"
      gem 'therubyracer', :platforms => :ruby
    end
  end
  
  def add_routes
    unless options[:skip_routes]
      route_without_newline "root :to => 'home#index'"
      route "end"
      route_without_newline "  delete 'logout' => :destroy"
      route_without_newline "  get 'auth/shopify/callback' => :show"
      route_without_newline "  post 'login' => :create"
      route_without_newline "  get 'login' => :new"
      route_without_newline "controller :sessions do"
      route "get 'design' => 'home#design'"
      route_without_newline "get 'welcome' => 'home#welcome'"
    end
  end
  
  def display_readme
    Bundler.with_clean_env do
      run 'bundle install'
    end

    readme '../README'
  end
  
  private
  
  def route_without_newline(routing_code)
    sentinel = /\.routes\.draw do(?:\s*\|map\|)?\s*$/
    inject_into_file 'config/routes.rb', "\n  #{routing_code}", { after: sentinel, verbose: false }
  end  
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
shopify_app_lrb3-5.0.0 lib/generators/shopify_app/shopify_app_generator.rb
shopify_app-5.0.0 lib/generators/shopify_app/shopify_app_generator.rb
shopify_app-4.4.6 lib/generators/shopify_app/shopify_app_generator.rb
shopify_app-4.4.5 lib/generators/shopify_app/shopify_app_generator.rb
shopify_app-4.4.4 lib/generators/shopify_app/shopify_app_generator.rb