Sha256: 50bd575eb34f5794ff918c53a67c27ed23ea63cc095f3834b453880ae94cb7ca

Contents?: true

Size: 1.72 KB

Versions: 17

Compression:

Stored size: 1.72 KB

Contents

require 'workspace/workspace_dir/archive'
module Workspace
  class WorkspaceDir
    include Workspace::WorkspaceDir::Archive

    attr_accessor :workspace, :path

    def initialize(workspace, path = "")
      @workspace = workspace
      @path = path
    end

    def to_s
      File.join(@workspace, @path)
    end

    def name
      File.basename(to_s)
    end

    def create
      FileUtils.mkdir_p(to_s)
      self
    end

    def exists?
      File.directory?(to_s)
    end

    def copy(target_dir)
      target_dir.parent_dir.create unless target_dir.parent_dir.exists?
      FileUtils.cp_r(to_s, target_dir.to_s)
    end

    def delete!
      FileUtils.rm_rf(to_s)
    end

    def reset!
      delete!
      create
    end

    def file(file_path)
      WorkspaceFile.new(@workspace, File.join(@path, file_path))
    end

    def dir(dir_path)
      self.class.new(@workspace, File.join(@path, dir_path))
    end

    def root_dir
      self.class.new(@workspace, "")
    end

    def chdir(target_dir = nil)
      if target_dir.nil?
        self.class.new(to_s, "")
      else
        self.class.new(dir(target_dir).to_s, "")
      end
    end

    def parent_dir
      root_dir.dir(File.expand_path("..", @path))
    end

    def children
      entries = []
      Dir.chdir(to_s) do
        Dir["*"].each do |path|
          entries.push(dir(path))
        end
      end
      entries
    end

    def files(glob = "*")
      entries = []
      Dir.chdir(to_s) do
        Dir[glob].each do |path|
          entries.push(file(path))
        end
      end
      entries
    end

    def each_dir(&block)
      children.each do |subdir|
        yield(subdir)
      end
    end

    def absolute_path
      File.absolute_path(to_s)
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
maglove-1.1.5 lib/workspace/workspace_dir.rb
maglove-1.1.4 lib/workspace/workspace_dir.rb
maglove-1.1.3 lib/workspace/workspace_dir.rb
maglove-2.0.4 lib/workspace/workspace_dir.rb
maglove-2.0.2 lib/workspace/workspace_dir.rb
maglove-2.0.1 lib/workspace/workspace_dir.rb
maglove-1.1.2 lib/workspace/workspace_dir.rb
maglove-2.0.0 lib/workspace/workspace_dir.rb
maglove-1.1.1 lib/workspace/workspace_dir.rb
maglove-1.1.0 lib/workspace/workspace_dir.rb
maglove-1.0.9 lib/workspace/workspace_dir.rb
maglove-1.0.8 lib/workspace/workspace_dir.rb
maglove-1.0.7 lib/workspace/workspace_dir.rb
maglove-1.0.5 lib/workspace/workspace_dir.rb
maglove-1.0.4 lib/workspace/workspace_dir.rb
maglove-1.0.3 lib/workspace/workspace_dir.rb
maglove-1.0.2 lib/workspace/workspace_dir.rb