Skip to content

CoolOptions is a simple wrapper around optparse that provides less options and more convenience.

Notifications You must be signed in to change notification settings

ntalbott/cooloptions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a2894fa · Jan 10, 2007

History

9 Commits
Jan 10, 2007
Jan 10, 2007
Jan 10, 2007
Dec 1, 2006
Jan 10, 2007
Dec 9, 2006
Jan 10, 2007
Dec 10, 2006
Jan 10, 2007

Repository files navigation

= CoolOptions
    by Nathaniel Talbott <[email protected]>
    http://cooloptions.rubyforge.org/

== DESCRIPTION:
  
CoolOptions is a simple wrapper around optparse that provides less options and more convenience.

As a huge fan of optparse due to its flexibility, self-documenting nature, and ease of use, I nevertheless found myself doing almost the exact same thing with it over and over again, and decided to write a thin wrapper around it to handle the common cases. Thus CoolOptions was born.

== SYNOPSIS:

=== Declaration:

  options = CoolOptions.parse!("[options] PROJECTNAME") do |o|
    o.desc 'Sets up a new Rails project.'
    o.on "repository URL",         "Remote subversion repository."          
    o.on "svk",                    "Use svk.",                              true
    o.on "project-path PATH",      "Root of project workspaces.",           File.expand_path("~/svk")
    o.on "l)repository-path PATH", "Remote repository path.",               "/"
    o.on "mirror-path SVKPATH",    "SVK mirror path.",                      "//"
    o.on "local-pa(t)h SVKPATH",   "SVK local path.",                       "//local"
    o.on "create-structure",       "Create trunk/tags/branches structure.", true
    o.on "finish",                 "Prep and commit the new project.",      true

    o.after do |r|
      r.project_path = File.expand_path(r.project_path)
      o.error("Invalid path.") unless File.exist?(r.project_path)
      r.project_name = ARGV.shift
      o.error("Project name is required.") unless r.project_name
      o.error("Project name is too funky.") unless /^\w+$/ =~ r.project_name
    end
  end
  
=== Usage:

  $ ./new_rails_project --no-svk -r http://terralien.com/svn/terralien/ myproject
  
=== Result:
  
  p options.svk                 # => false
  p options.project_path        # => '/Users/ntalbott/svk'
  p options.repository          # => 'http://terralien.com/svn/terralien/'
  p options.create_structure    # => true
  p options.project_name        # => 'myproject'

=== Also:

  $ ./new_rails_project --help                                                               
  Usage: t.rb [options] PROJECTNAME
      -s, --[no-]svk                   Use svk.
                                       Default is: true
      -p, --project-path PATH          Root of project workspaces.
                                       Default is: /Users/ntalbott/svk
      -r, --repository URL             Remote subversion repository.
      -l, --repository-path PATH       Remote repository path.
                                       Default is: /
      -m, --mirror-path SVKPATH        SVK mirror path.
                                       Default is: //
      -t, --local-path SVKPATH         SVK local path.
                                       Default is: //local
      -c, --[no-]create-structure      Create trunk/tags/branches structure.
                                       Default is: true
      -f, --[no-]finish                Prep and commit the new project.
                                       Default is: true
      -h, --help                       This help info.

== REQUIREMENTS:

optparse & ostruct (included in Ruby standard library).

== DOWNLOAD:

Via gems or from the
{Rubyforge project page}[http://rubyforge.org/projects/cooloptions].

== INSTALL:

  sudo gem install cooloptions

== CONTRIBUTE:

Drop me an email (see above) and/or
{check out the source}[http://terralien.com/svn/projects/cooloptions/trunk].

== LICENSE:

The RUBY License

Copyright (c) 2006 Nathaniel Talbott and Terralien, Inc. All Rights Reserved.

About

CoolOptions is a simple wrapper around optparse that provides less options and more convenience.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages