Sha256: a000305ffae680fa1bcaa0a93c9a0c2b0a4312aa0448757bc48f17b4891ebfa2

Contents?: true

Size: 1.3 KB

Versions: 2

Compression:

Stored size: 1.3 KB

Contents

require "fileutils"
require "kickster/version"
require "pathname"
require "thor"

module Kickster
  class Generator < Thor
    map ['-v', '--version'] => :version

    desc 'new', 'Create new folder with the Kickster template'
    method_options :path => :string, :force => :boolean
    def new(name)
      if kickster_files_already_exist?(name) && !options[:force]
        puts "Folder already exist, use --force to overwrite."
      else
        install_files(name)
        puts "Kickster template folder successfully created!"
      end
    end

    desc 'version', 'Show Kickster version'
    def version
      say "kickster-#{Kickster::VERSION}"
    end

    private

    def kickster_files_already_exist?(name)
      install_path(name).exist?
    end

    def install_path(name)
      @install_path ||= if options[:path]
        Pathname.new(File.join(options[:path], name))
      else
        Pathname.new(name)
      end
    end

    def install_files(name)
      FileUtils.mkdir_p(install_path(name))
      FileUtils.cp_r(template_files, install_path(name))
    end

    def template_files
      Dir["#{template_directory}/."]
    end

    def template_directory
      File.join(top_level_directory, "template")
    end

    def top_level_directory
      File.dirname(File.dirname(File.dirname(__FILE__)))
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kickster-0.1.2 lib/kickster/generator.rb
kickster-0.1.1 lib/kickster/generator.rb