From: The rush folks Date: 2005-09-30T06:11:08+09:00 Subject: [Ann] rush 0.1.bandicoot: object-oriented shell goodness (rationed for your health)! = rush-0.1.bandicoot == rush? rush is an attempt to create an extremely flexible fully object-oriented shell in Ruby. 0.1.bandicoot is the current state of development (small and rather fuzzy). The purpose of this release was to offer rudimentary support for shell integration and to refine the infrastructure. The more extreme development is still to come. == Getting rush http://www.magical-cat.org/projects/rush/downloads/rush-0.1.bandicoot.tar.gz Unpack the archive: complete installation instructions are in doc/README. == What can it do? At this stage, rush is limited but already has some useful features: the most important one of these is that you can write any valid ruby code right from your command-line: r u s h > x = 1 + 2 r u s h > puts x + 2 5 r u s h > def foo(x) -ruby- 1> puts x -ruby- 1> end r u s h > r u s h > foo "Hello!" Hello! r u s h > You can treat rush as irb or just another .rb file (you can almost discard irb altogether). Some diagnostic information can also be requested: r u s h > $env.rubyreturn! r u s h > 1 + 1 # => 2 r u s h > $env.debug! # => true rush tries to integrate with traditional shell syntax. Currently, pipes and 'commands' are supported. Commands are the traditional shell programs such as 'ls' and 'cd'. rush defines some of these commands itself (Commands.list for a list) but it also allows one to access the commands provided by the system by prepending the command with a '!'; for example, !ls (some programs, such as vi, require special handling. These programs are launched with ^vi). Standard pipe filter syntax: r u s h > !ls test.rb foobar.rb r u s h > !ls | !grep 'foo' foobar.rb But here is where things get exciting: you can mix Ruby with pipes. r u s h > 'foo' | !grep 'foo' foo Or, the other way: r u s h > !ls | .first test.rb r u s h > !ls | .first | .reverse br.tset r u s h > !ls | .map {|file| file + '.bak'} test.rb.bak foobar.rb.bak r u s h > !ls | .class Array r u s h > 97 | .chr a You can invoke any method on the ruby object returned by the pipe as long as that object responds to it. You can also do more complex manipulation by accessing the object as $pipe which means you need not call one of its methods directly: r u s h > !ls | files = $pipe; foo(files) test.rb foobar.rb rush is completely customizable since it is written in ruby. You can, actually, modify the running program right from the command-line. If you want and/or need persistent initializations and such, you can use the standard location ~/.rushrc. See doc/HOWTO.customizing for information on this file. rush also includes tab completion for directories/files and ruby method completion! For more information, see doc/HOWTO.using in your rush directory. == Documentation All of rush's documentation is in the doc/ directory. Additionally, it is available on the web. http://www.magical-cat.org/projects/rush/rdoc IE and possibly Opera: http://www.magical-cat.org/projects/rush/rdoc-ie == Contact The simplest way is to join the channel #rush on freenode and ask away. You can also sign up for the mailing list or visit the bug tracker: http://rubyforge.org/mailman/listinfo/rush-developer http://rubyforge.org/tracker/?group_id=874 == Development See the world! Then join the project! Developer docs are in doc/HOWTO.development or on the web: http://www.magical-cat.org/projects/rush/rdoc/#file:doc.HOWTO.development Visit #rush on freenode. Sign up for the mailing list (with practically negative traffic): http://rubyforge.org/mailman/listinfo/rush-developer == Developers rush is: dpb, kazzmir, kbrooks, manveru, martin, reyn, rue, shevegen, vagabond == Thanks! Have fun with rush!