Sha256: ef32279151b4898d8e14859c00340b541023f7d3a1f26c4d729b65318c63f6c8

Contents?: true

Size: 1.33 KB

Versions: 5

Compression:

Stored size: 1.33 KB

Contents

require 'fileutils'

module Pakyow
  module Generators
    class AppGenerator
      class << self
        def start
          case ARGV.first
          when '--help', '-h', nil
            puts File.open(File.join(PAK_PATH, 'commands/USAGE-NEW')).read
          else
            generator = self.new(ARGV.first)
            generator.build
          end
        end
      end

      def initialize(dest)
        @src = "#{File.expand_path('../', __FILE__)}/templates/."
        @dest = dest
      end

      def build
        puts "Generating project: #{@dest}"

        if !File.directory?(@dest) || (Dir.entries(@dest) - ['.', '..']).empty?
          copy
        else
          ARGV.clear
          print "The folder '#{@dest}' is in use. Would you like to populate it anyway? [Yn] "

          if gets.chomp! == 'Y'
            copy
          else
            puts "Aborted!"
            exit
          end
        end

        exec
        puts "Done! Run `cd #{@dest}; pakyow server` to get started!"
      end

      protected

      # copies src files to dest
      def copy
        FileUtils.cp_r(@src, @dest)
      end

      # performs and other setup (e.g. bundle install)
      def exec
        FileUtils.cd(@dest) do
          puts "Running `bundle install` in #{Dir.pwd}"
          system("bundle install")
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
pakyow-0.10.2 lib/generators/pakyow/app/app_generator.rb
pakyow-0.10.1 lib/generators/pakyow/app/app_generator.rb
pakyow-0.10.0 lib/generators/pakyow/app/app_generator.rb
pakyow-0.9.1 lib/generators/pakyow/app/app_generator.rb
pakyow-0.9.0 lib/generators/pakyow/app/app_generator.rb