In article <atagr002v9o / enews3.newsguy.com>,
Phil Tomson <ptkwt / shell1.aracnet.com> wrote:
>I proposed this idea last night on the tail-end of another thread and on 
>the RubyGarden wiki at QuickGuideToPackagingDiscussion as well as on 
>the raa-install list, but I thought it might make a good RCR:
>
>Anyone else find the current intall.rb/setup.rb script a bit awkward? When 
>I create a package I've got to remember where I left
>install.rb and copy it over into my package directory.  Then I've got to
>tar everything up and I've got a package...  Like I said, seems a little
>awkward.  What if an InstallPkg module that had all of the functionality 
>of the install.rb/setup.rb scripts was included with Ruby.  Then package 
>creators could create very simple install.rb scripts that would look like:
>
> #install.rb
> require 'install_pkg'
> include InstallPkg
> depends_on_hash=
> {"rexml"=>'0.5.0',"rubyfoo"=>'2.3.1','jabber4r'=>'1.2.1 }
> install_package(packageName, depends_on_hash, ...other arguments?...)
>
>Perhaps these install.rb scripts could even be automatically generated by 
>running some built-in package-gen script which would also create the
>tar.gz package itself?
>
>This would offer the following advantages:
>1) no more copying install.rb over into your package dir.
>2) it encourages the package creator to list dependencies and versions
>(though it might also be possible to figure these out automatically)
>3) the install.rb takes care of installing dependencies (via
>raa-install) which keeps raa-install simple and it's purpose clear 
>(separation of responsibilities).
>4) It seems better from a code reuse standpoint.  I see that a lot of
>people write their own install.rb scripts or they cut and paste from the
>install.rb on the RAA - this seems very inefficient.  A standard Install
>API would help a lot and people wouldn't have to reinvent the wheel all
>the time.
>

FYI:  I've got a working prototype for the propoed InstallPkg module.  
It's a quick kludge - I took  Minero Aoki's install.rb and wrapped the 
classes he defined in there in a 'module InstallPkg' and added a few module 
methods.  The kludgy part is how I had to deal with the commandline options 
he was using and turning them into arguments to methods (that part will 
have to be rewritten).

So basically using this module you would create your own install.rb file 
like:

  #your install.rb would look something like this:
  require 'install-pkg'
  depends_on = {'webfetcher'=>'0.0.0', 'scan_for_ruby'=>'0.0.0'}
  InstallPkg.install_pkg('thispkg',depends_on)

and run it like so:

$ ruby install.rb

(it does the config, setup and install steps for you so you don't have to 
:)

Comments?  Suggestions?

Phil
-- 
"Or perhaps the truth is less interesting than the facts?" 
Amy Weiss (accusing theregister.co.uk of engaging in 'tabloid journalism')
Senior VP, Communications
Recording Industry Association of America