Simplified Files and Directories handling
Workspace makes it a breeze to work with files and directories.
Workspace::Dir and Workspace::File are abstractions of the ruby Dir and File classes (although not extending them).
When working with files and folders, these abstractions can significantly help with keeping your code simple, consistent and easy to read.
require "workspace"
root = Workspace.dir # initializes a workspace in the current directory
root = Workspace.tmpdir # initializes a new workspace in a temporary directory
root.file("file.txt").write("hello world") # creates the file "file.txt" with contents "hello world"
root.dir("dir").file("file.txt").create # both the file "file.txt" and its parent directory "dir"
root.dir("dir").exists? # => true
root.dir("dir").delete # deletes the physical file, but keeps the Workspace::Dir
root.dir("dir").exists? # => false
file = root.dir("dir1").file("file.txt")
file.relative_path(root.dir("dir2")) # => "../dir1/file.txt"
root.dir("build").clean # delete and re-create directory
root.files # [file1, file2, file3...]
root.directories # [dir1, dir2, dir3...]
root.children("**/*.rb") # [...] recursive matched files with .rb extension
# install globally
gem install workspace
# install using bundler / Gemfile
gem "workspace"
workspace is available under an MIT-style license.