Sha256: 4fca4d4a51ba723ebc7fcfa67fc808c9e4ba5a3cb7e228e84269bf8829de803a

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

# encoding: UTF-8

require 'erubis'
require 'fileutils'

module GoodData::Command
  class Scaffold
    TEMPLATES_PATH = Pathname(__FILE__) + '../../../templates'

    class << self
      # Scaffolds new project
      # TODO: Add option for custom output dir
      def project(name)
        fail ArgumentError, 'No name specified' if name.nil?

        FileUtils.mkdir(name)
        FileUtils.cd(name) do

          FileUtils.mkdir('model')
          FileUtils.cd('model') do
            input = File.read(TEMPLATES_PATH + 'project/model/model.rb.erb')
            eruby = Erubis::Eruby.new(input)
            File.open('model.rb', 'w') do |f|
              f.write(eruby.result(:name => name))
            end
          end

          FileUtils.mkdir('data')
          FileUtils.cd('data') do
            FileUtils.cp(Dir.glob(TEMPLATES_PATH + 'project/data/*.csv'), '.')
          end

          input = File.read(TEMPLATES_PATH + 'project/Goodfile.erb')
          eruby = Erubis::Eruby.new(input)
          File.open('Goodfile', 'w') do |f|
            f.write(eruby.result())
          end
        end
      end

      # Scaffolds new brick
      # TODO: Add option for custom output dir
      def brick(name)
        fail ArgumentError, 'No name specified' if name.nil?

        FileUtils.mkdir(name)
        FileUtils.cd(name) do
          input = File.read(TEMPLATES_PATH + 'bricks/brick.rb.erb')
          eruby = Erubis::Eruby.new(input)
          File.open('brick.rb', 'w') do |f|
            f.write(eruby.result())
          end

          input = File.read(TEMPLATES_PATH + 'bricks/main.rb.erb')
          eruby = Erubis::Eruby.new(input)
          File.open('main.rb', 'w') do |f|
            f.write(eruby.result())
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gooddata-0.6.0 lib/gooddata/commands/scaffold.rb