class Creategem::CLI

Attributes

gem_name[RW]

there has to be a method gem_name to use gem_name in the file names in the template directory: %gem_name%

Public Class Methods

source_root() click to toggle source

this is where the thor generator templates are found

# File lib/creategem/cli.rb, line 15
def self.source_root
  File.expand_path('../../../templates', __FILE__)
end

Public Instance Methods

gem(gem_name) click to toggle source
# File lib/creategem/cli.rb, line 23
def gem(gem_name)
  create_gem_scaffold(gem_name)
  initialize_repository(gem_name)
end
plugin(gem_name) click to toggle source
# File lib/creategem/cli.rb, line 34
def plugin(gem_name)
  @plugin = true
  @engine = options[:engine] || options[:mountable]
  @mountable = options[:mountable]
  create_gem_scaffold(gem_name)
  create_plugin_scaffold(gem_name)
  create_engine_scaffold(gem_name) if @engine
  create_mountable_scaffold(gem_name) if @mountable
  initialize_repository(gem_name)
end

Private Instance Methods

create_engine_scaffold(gem_name) click to toggle source
# File lib/creategem/cli.rb, line 75
def create_engine_scaffold(gem_name)
  say "Create a rails engine scaffold for gem named: #{gem_name}", :green
  directory "engine_scaffold", gem_name
end
create_gem_scaffold(gem_name) click to toggle source
# File lib/creategem/cli.rb, line 47
def create_gem_scaffold(gem_name)
  say "Create a gem scaffold for gem named: #{gem_name}", :green
  @gem_name = gem_name
  @class_name = Thor::Util.camel_case(gem_name.gsub("-", "_"))
  @executable = options[:executable]
  @vendor = options[:bitbucket] ? :bitbucket : :github
  @repository = Creategem::Repository.new(vendor: @vendor,
                                          user: git_repository_user_name(@vendor),
                                          name: gem_name,
                                          gem_server_url: gem_server_url(@vendor),
                                          private: options[:private])
  directory "gem_scaffold", gem_name
  if @executable
    directory "executable_scaffold", gem_name
  end
  if @repository.public?
    template "LICENCE.txt", "#{gem_name}/LICENCE.txt"
  end
end
create_mountable_scaffold(gem_name) click to toggle source
# File lib/creategem/cli.rb, line 80
def create_mountable_scaffold(gem_name)
  say "Create a rails mountable engine scaffold for gem named: #{gem_name}", :green
  directory "mountable_scaffold", gem_name
end
create_plugin_scaffold(gem_name) click to toggle source
# File lib/creategem/cli.rb, line 67
def create_plugin_scaffold(gem_name)
  say "Create a rails plugin scaffold for gem named: #{gem_name}", :green
  directory "plugin_scaffold", gem_name
  Dir.chdir gem_name do
    run "chmod +x test/dummy/bin/*"
  end
end
initialize_repository(gem_name) click to toggle source
# File lib/creategem/cli.rb, line 85
def initialize_repository(gem_name)
  Dir.chdir gem_name do
    run "chmod +x bin/*"
    run "chmod +x exe/*" if @executable
    create_local_git_repository
    run "bundle update"
    create_remote_git_repository(@repository) if yes?("Do you want me to create #{@vendor} repository named #{gem_name}? (y/n)")
  end
  say "The gem #{gem_name} was successfully created.", :green
  say "Please complete the information in #{gem_name}.gemspec and README.md (look for TODOs).", :blue
end