Sha256: 28847d44fea38fde7ec920b4328a59512d8e35f0086c6193ec3f55d7295c2436

Contents?: true

Size: 1.83 KB

Versions: 4

Compression:

Stored size: 1.83 KB

Contents

module Perkins
  module ThorUtils
    include Thor::Actions

    def self.source_root
       File.dirname(__FILE__)
    end

    def create_new_file(name, file=nil)
      log "Creating #{name}"
      contents = file.nil? ? '' : File.read(file)
      unless File.file?(location.join(name))
        File.open(location.join(name), 'w') { |f| f.write(contents) }
      end
    end

    def remove_files(*files)
      files.each do |file|
        log "Removing #{file} file."
        FileUtils.rm(location.join(file))
      end
    end

    def touch(*filenames)
      filenames.each do |filename|
        log "Creating #{filename} file."
        FileUtils.touch(location.join(filename))
      end
    end

    def create_directories(*dirs)
      dirs.each do |dir|
        log "Creating the #{dir} directory."
        FileUtils.mkdir_p(location.join(dir))
      end
    end

    def remove_directories(*names)
      names.each do |name|
        log "Removing #{name} directory."
        FileUtils.rm_rf(location.join(name))
      end
    end

    def create_with_template(name, template_location, contents={})
      template    = templates("#{template_location}.erb")
      eruby       = Erubis::Eruby.new(File.read(template))
      File.open(location.join(name.gsub(/^\//, '')), 'w') { |f| f.write(eruby.result(contents))}
    end

    def templates(path)
      ::Perkins.root.join('pullentity-client/templates').join(path)
    end

    def log(msg)
      ::Perkins::Logger.report(msg)
    end

    def error(msg)
      ::Perkins::Logger.error(msg)
    end

    def base_location
      @location ||= Pathname.new(Dir.pwd)
    end

    alias_method :location, :base_location

    def underscore(string)
      string.gsub(/::/, '/').
        gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
        gsub(/([a-z\d])([A-Z])/,'\1_\2').
        tr("-", "_").
        downcase
    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
perkins-0.0.5 lib/perkins/thor_utils.rb
perkins-0.0.3 lib/perkins/thor_utils.rb
perkins-0.0.2 lib/perkins/thor_utils.rb
perkins-0.0.1 lib/perkins/thor_utils.rb