Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/iboard/rst
Ruby Shell Tools (GEM)
https://github.com/iboard/rst
Last synced: 16 days ago
JSON representation
Ruby Shell Tools (GEM)
- Host: GitHub
- URL: https://github.com/iboard/rst
- Owner: iboard
- Created: 2013-03-12T20:50:48.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2013-05-07T03:45:16.000Z (over 11 years ago)
- Last Synced: 2024-12-12T10:48:47.824Z (22 days ago)
- Language: Ruby
- Size: 449 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Ruby Shell Tools
================RubyShellTools, RST is an experimental Ruby2-gem by Andreas Altendorfer
Inspired by this [talk about nodoc][] and by the clean style of
[Martin's code][], I've playing around with Ruby2, Yard, and my idea of
clean code with this gem named 'RubyShellTools' (short RST, but this
name wasn't available at rubygems anymore ;-)Since bash-history isn't always enough persistent for my daily work, I deal with the idea to create a kinda 'central toolbox' for my shell. RST represents the first steps in this direction. I'm not sure if the 'project' will survive, tho. I'll give it a try.
Current version features a very simple 'ls' and 'calendar'-command.
There is a command-line-version `bin/rst` and a Curses-version `bin/rst-ui`.
A Sinatra-version will be added later.The plan is to play around with the structure of the gem until I'm satisfied and feel comfortable to start implementing more features. There's a ton of ideas what RST could do, I'm just not sure what it shall do. Let's see ...
Install from rubygems.org
-------------------------
Find the gem at [RubyGems.org][]gem install rubyshelltools
export RST_DATA=$HOME/.rst # default: GEM_PATH/rubyshelltools/data
export RST_ENV=production # defaults: development
rst --helpClone/Fork from Github
----------------------You can clone from or fork the project at => [Github][]
git clone git://github.com/iboard/rst.git
### First steps ...
After downloading the project you can do
cd rst
bundle # install required Gems
rake # Run all specs
rake build # build the gem
rake install # build and install gemUsage
-----see file EXAMPLES.md:
* [EXAMPLES on Github][]
* [loacal copy](./file.examples.html)
or runbin/rst --examples
if you have done `rake install` you don't have to use `bin/rst` in
the project-directory but you can use `rst ...` directly from the shell.Documentation
-------------run `yard; open doc/index.html` to build the rdocs and open
it in your browser.The latest version is online at my [DAV-server][] too.
Browsing the code
-----------------**To get a glue what's goin on**
do a `rspec --format d specs/` in the project's root
Command-line arguments
--verbose - should list interpreted options and files with --verbose
ls - should list files with 'ls'
--help - should print help
--examples - should print out examples from doc/examples.md
..... cut out a lot of lines .....
**modules**
Modules are the core of this project. Within the directory
`lib/modules` you'll find* calendar # Everything about Calendars
* calendar # The Calendar-module and -class
* eventable # Eventable API (module to make a class an event)
* calendar_event # CalendarEvent-class
* persistent # Make things persistent
* persistent # The Persistent-Module defines Persistentable/API
* store # The abstract Store-class
* memory_store # Store-descendant for a non-persistent memory-store
* disk_store # Store-descendant using ruby-PStore to save to disk**command-line implementation**
* ./rst.rb # Defines global Constants and the Logger
* ./lib/rst.rb # Defines the class RstCommand used for the
# command-line-implementation
* ./lib/load.rb # requires all necessary files
# used by bin/rst and spec/spec_helper.rb
* ./bin/rst # Loads the library and instantiates a
# RstCommand-object**RstCommand**
Can handle two commands by now:
_ls_,
the directory-listing, is coded
inline and does a simple Dir for the given wildcards._print_calendar_,
opens the calendar-file (all calendars are stored in one file) and acts on the calendar
named by the --name parameter. It uses _DiskStore_ to make the calendars
persistent.cal = find_calendar( Persistent::DiskStore.new(CALENDAR_FILE) )
cal.list_days(options[:from], options[:to], options[:show_empty]).compact.join("\n")
Curses-interface
----------------`bin/rst-ui` is a Curses-program to display the calendar for -1 to +5 weeks
from today. You can walk around by weeks and years, using arrow-keys.
And you can display a nice 'banner' for the current year (clear the
calendar-screen)`rst-ui` uses `CursesController` which handles the curses-implementation
nothing has to change in our module's source.TDD
---And as always we are **green**
See the current [coverage output][] (generated with [simplecov][])
Running `rake` and `yard` from the project-directory the output should include
the following lines ...Finished in _a few_ seconds
_n_ examples, *0* failures
Coverage report generated for RSpec to rst/coverage. _n_ / _n+-0_ LOC (**100.0%**) covered.
**100.00% documented**To run specs you can use rake-tasks
rake [test] # Run Module-specs w/o command-line calls (default)
rake all # Run all tests including specs/commands
rake commands # Run command-specs only (slower because of system-calls)
rake modules # Run module-specs onlyLicense
=======This is free software
---------------------Use it without restrications and on your own risk.
Leaving the copyright is appreciated, though.Copyright
---------(c) 2013 by Andreas Altendorfer
[simplecov]: http://github.com/colszowka/simplecov
[RubyGems.org]: https://rubygems.org/gems/rubyshelltools
[coverage output]: http://dav.iboard.cc/container/rst-coverage
[Github]: https://github.com/iboard/rst
[EXAMPLES on Github]: https://github.com/iboard/rst/blob/master/assets/docs/examples.md#examples
[DAV-Server]: http://dav.iboard.cc/container/rst-doc
[talk about nodoc]: http://www.youtube.com/watch?v=tCw7CpRvYOE
[Martin's code]: https://github.com/snusnu