readme.md in vos-0.1.0 vs readme.md in vos-0.1.1

- old
+ new

@@ -1,122 +1,44 @@ -# Vfs - Virtual File System +# Vos - Virtual Operating System -Handy and simple abstraction over any storage that can represent concept of File and Directory (or at least part of it). -The Vfs for File System Storages is the same as ActiveRecord is for Relational Databases. +Small abstraction over Operating System, mainly it should be used in conjunction with [Virtual File System][vos] tool. Kind of +Capistrano but without extra stuff and more universal, not forcing You to follow 'The Rails Way'. Currently, there are following implementations available: -- local file system -- remote file system (over ssh) +- local os +- remote os (over ssh) -## Goals - -- **handy, simple and clean** API. -- **high performance** - the same as by using low-level storage API, there should be no extra calls **. -- same API for different storages (Local FS, SSH, Hadoop, or any other , ...). -- should work **simultaneously with different storages**. -- small codebase, easy to extend by others. -- simple storage-driver implementation, easy add new storage types (Hadoop DFS, LDAP, Document Oriented DB, In-Memory, ...). - -** all methods should have the same performance as native system calls, except for :move and :rename. Right now they are implemented -ASAP by using copy+destroy approach, will be fixed as soon as I'll have free time to do it. - ## Installation - $ gem install vfs $ gem install vos ## Code samples: - gem 'vfs' # Virtual File System - require 'vfs' - gem 'vos' # Virtual Operating System require 'vos' - # Connections, let's deploy our 'cool_app' project from our local box to remote server server = Vfs::Box.new(host: 'cool_app.com', ssh: {user: 'me', password: 'secret'}) - me = '~'.to_dir - - cool_app = server['apps/cool_app'] - projects = me['projects'] - - - # Working with dirs, copying dir from any source to any destination (local/remote/custom_storage_type) - projects['cool_app'].copy_to cool_app - - - # Working with files - dbc = cool_app.file('config/database.yml') # <= the 'config' dir not exist yet - dbc.write("user: root\npassword: secret") # <= now the 'database.yml' and parent 'config' has been created - dbc.content =~ /database/ # => false, we forgot to add the database - dbc.append("\ndatabase: mysql") # let's do it - - dbc.update do |content| # and add host info - content + "\nhost: cool_app.com " - end - - projects['cool_app/config/database.yml']. # or just overwrite it with our local dev version - copy_to! dbc - - # there are also streaming support (read/write/append), please go to specs for docs - - - # Checks - cool_app['config'].exist? # => true - cool_app.dir('config').exist? # => true - cool_app.file('config').exist? # => false - - cool_app['config'].dir? # => true - cool_app['config'].file? # => false - - - # Navigation - config = cool_app['config'] - config.parent # => </apps/cool_app> - config['../..'] # => </> - config['../..'].dir? # => true - - cool_app.entries # => list of dirs and files, also support &block - cool_app.files # => list of files, also support &block - cool_app.dirs # => list of dirs, also support &block - - - # For more please go to specs (create/update/move/copy/destroy/...) - -## Integration with [Vos][vos] (Virtual Operating System) + server.bash 'ls' server['apps/cool_app'].bash 'rails production' -For more details please go to [Vos][vos] project page. - -# Why? - -To easy my work: with local FS, remote FS (cluster management, deployment automation), and some specific systems like Hadoop DFS. - -Because the API of standard File/Dir/FileUtils classes are just terrible. And there's the reason for it - the goal of thouse tools -is to provide 1-to-1 clone of underlying OS API, instead of provididing handy tool. - -And if you want to use remote FS - things are getting even worse and more complicated (Net::SSH & Net::SFTP use a little -different API than local FS, and you has to remember all thouse little quirks). +For more details look also to [Virtual File System][vos] project. +Or checkout configuration I use to control my production servers [My Cluster][my_cluster] in conjunction with small +configuration tool [Cluster Management][cluster_management]. ## TODO ### v 0.1 (all done) -- bash & basic support for -- File.append -- list of entries/files/dirs -- support for efficient copy for Local and SSH storages +- bash +- some handy shortcuts for ubuntu +- integration with Vos -### v 0.2 (not started) +### v 0.2 -- efficient (not copy/destroy) versions of move_to, rename -- glob search for directories: Dir['**/*.yml'] -- access via attributes and helpers for unix chmod -- add storages: remote FS over HTTP. +- process management (find/kill/filters/attributes) +- other os resources management (disk) -### future - -- add storages: Hadoop DFS, MongoDB, Amazon S3 - -[vfs]: http://github.com/alexeypetrushin/vfs +[vos]: http://github.com/alexeypetrushin/vos +[cluster_management]: http://github.com/alexeypetrushin/cluster_management +[my_cluster]: http://github.com/alexeypetrushin/my_cluster \ No newline at end of file