Sha256: dde3b5211dd1343978084dfb0a052fa4868baf93c30fd367ec29fcb1ff0add64

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

module Stack
  class Runner
    attr_accessor :configuration
    attr_accessor :command
    attr_accessor :arguments
    attr_accessor :generator
    
    def initialize(argv)
      @argv = argv
      @options = { }
      
      parse!
    end
    
    # Parse options, command and arguments 
    def parse!
      options = Stack::parse! @argv
      
      @configuration = Stack::Configuration.new(options)
      
      @command = @argv.shift
      @arguments = @argv
    end
    
    # Run stack!
    def run!
      if @command.nil?
        @command = "generate"
      end
      
      if Stack::COMMANDS.include?(@command)
        run_command
      else
        abort "Unknown command: #{@command}. Use one of #{Stack::COMMANDS.join(", ")}."
      end
    end
    
    # Runs the specified command 
    def run_command
      @generator = Stack::Generator.new(Stack::runner.configuration.source, Stack::runner.configuration.target)
      
      case self.command
      when /(generate|gen)/
        @generator.transform!
      when /(server)/
        # make a watcher
        watcher = Stack::Watcher.new(@generator)
        watcher.keep_alive = false
        watcher.observe
        # and a server
        server = Stack::Server.new(@generator)
        server.observe
      when /(watch)/
        # setup a watcher
        watcher = Stack::Watcher.new(@generator)
        watcher.observe
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
stack-0.0.6 lib/stack/runner.rb