Sha256: f89b026060aba9d2ce0f5670e3baaea61e05b3aa877b41d6f6a3989e1dd90be8

Contents?: true

Size: 1.83 KB

Versions: 5

Compression:

Stored size: 1.83 KB

Contents

require 'ore/config'

require 'thor'
require 'fileutils'
require 'uri'

module Ore
  class CLI < Thor

    map '-l' => :list
    map '-u' => :update
    map '-r' => :remove

    desc 'list', 'List installed Ore templates'

    #
    # Lists builtin and installed templates.
    #
    def list
      print_template = lambda { |path|
        puts "  #{File.basename(path)}"
      }

      say "Builtin templates:", :green
      Config.builtin_templates(&print_template)

      say "Installed templates:", :green
      Config.installed_templates(&print_template)
    end

    desc 'install URI', 'Installs an Ore template'

    #
    # Installs a template into `~/.ore/templates`.
    #
    # @param [String] uri
    #   The Git URI to install the template from.
    #
    def install(uri)
      url = URI(uri)

      name = File.basename(url.path)
      name.gsub!(/\.git$/,'')

      path = File.join(Config::TEMPLATES_DIR,name)

      if File.directory?(path)
        say "Template #{name} already installed.", :red
        exit -1
      end

      FileUtils.mkdir_p(path)
      system('git','clone',uri,path)
    end

    desc 'update', 'Updates all installed templates'

    #
    # Updates all previously installed templates.
    #
    def update
      Config.installed_templates do |path|
        say "Updating #{File.basename(path)} ...", :green

        Dir.chdir(path) { system('git','pull','-q') }
      end
    end

    desc 'remove NAME', 'Removes an Ore template'

    #
    # Removes a previously installed template.
    #
    # @param [String] name
    #   The name of the template to remove.
    #
    def remove(name)
      name = File.basename(name)
      path = File.join(Config::TEMPLATES_DIR,name)

      unless File.exists?(path)
        say "Unknown template: #{name}", :red
        exit -1
      end

      FileUtils.rm_rf(path)
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ore-0.9.4 lib/ore/cli.rb
ore-0.9.3 lib/ore/cli.rb
ore-0.9.2 lib/ore/cli.rb
ore-0.9.1 lib/ore/cli.rb
ore-0.9.0 lib/ore/cli.rb