Sha256: 823f48fbbeb2c20e5e93850e1688ce45c205c1f4699079075c163bf007e7a6b4

Contents?: true

Size: 1.56 KB

Versions: 4

Compression:

Stored size: 1.56 KB

Contents

module Troy
  class Cli < Thor
    check_unknown_options!

    def self.exit_on_failure?
      true
    end

    def initialize(args = [], options = {}, config = {})
      if (config[:current_task] || config[:current_command]).name == "new" && args.empty?
        raise Error, "The site path is required. For details run: troy help new"
      end

      super
    end

    options assets: :boolean, file: :array
    desc "export", "Export files"
    def export
      if options[:assets]
        site.export_assets
        site.export_files
      elsif options[:file]
        options[:file].each do |file|
          site.export_pages(file)
        end
      else
        site.export
      end
    end

    desc "new SITE", "Generate a new site structure"
    def new(path)
      generator = Generator.new
      generator.destination_root = path
      generator.invoke_all
    end

    desc "version", "Display Troy version"
    map %w(-v --version) => :version
    def version
      say "Troy #{Troy::VERSION}"
    end

    desc "server", "Start a server"
    option :port, :type => :numeric, :default => 9292, :aliases => "-p"
    option :host, :type => :string, :default => "0.0.0.0", :aliases => "-b"
    def server
      begin
        handler = Rack::Handler::Thin
        Thin::Logging.level = Logger::DEBUG
      rescue Exception
        handler = Rack::Handler::WEBrick
      end

      handler.run Troy::Server.new(File.join(Dir.pwd, "public")), :Port => options[:port], :Host => options[:host]
    end

    private
    def site
      @site ||= Troy::Site.new(Dir.pwd)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
troy-0.0.29 lib/troy/cli.rb
troy-0.0.28 lib/troy/cli.rb
troy-0.0.27 lib/troy/cli.rb
troy-0.0.26 lib/troy/cli.rb