diff options
| -rw-r--r-- | CHANGELOG | 10 | ||||
| -rw-r--r-- | Rantfile | 282 | 
2 files changed, 164 insertions, 128 deletions
| @@ -12,16 +12,18 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_0.55.6.orig.tar.gz    sisu_0.55.6-1.dsc    sisu_0.55.6-1.diff.gz -  * matching of multiple urls within a paragraph -    * db html (html_lite), bug fix -    * multiple uls listed, refinement: html, html_lite, xml, odf, texpdf +  * matching multiple and consecutive urls within a paragraph, refinements +    * db html (html_lite), multiple urls, bug fix +    * consecutive url matching: html, html_lite, xml, odf, texpdf    * open archive initiative for metadata harvesting, initial implementation,      Dublin Core, XML output available (-O), decide use later (filenames, output      dir etc.) +  * rant installer, minor adjustments +    * debian vim -    * moved vim install back to addons +    * moved installation of syntax and ftplugin back to vim/addons      * added recommends vim-addon-manager      (thanks zack) @@ -2,9 +2,9 @@  raise 'Please, use ruby1.8.4 or later.' if RUBY_VERSION < '1.8.4'  =begin   Rantfile installer for SiSU - * Homepage: <http://www.jus.uio.no/sisu/SiSU> <http://www.sisudoc.org> - * Download:  <http://www.jus.uio.no/sisu/download> - + * Homepage: <http://www.jus.uio.no/sisu/SiSU> +             <http://search.sisudoc.org> + * Download: <http://www.jus.uio.no/sisu/download>   Copyright (C) 2007 Ralph Amissah @@ -19,7 +19,6 @@ raise 'Please, use ruby1.8.4 or later.' if RUBY_VERSION < '1.8.4'       http://make.rubyforge.org/   Notes on use: -       rant -T   SiSU can also be Setup/Installation using: @@ -31,35 +30,76 @@ raise 'Please, use ruby1.8.4 or later.' if RUBY_VERSION < '1.8.4'  #create_makefile("sisu")  require 'find'  require 'fileutils' +#require 'ftools'  require 'rbconfig.rb' +require 'yaml'  include FileUtils -@dir=Hash.new -@proj=Hash.new -                                                           #%% project specific variables -@proj[:name]='SiSU' -@proj[:rant]="Rantfile for the installation/setup of #{@proj[:name]}" -@proj[:platform_notice]="[#{@proj[:name]} is for the Linux/Unix Platforms]" -@dir[:proj]='sisu' -Version=` pwd | grep -o "[0-9]+\.[0-9]+\.[0-9]+$" | grep -o "^[0-9]+\.[0-9]+"`                                             #%% NOTE placing version number permits fine grained removal of version directories if used in lib and conf / etc -                                                           #%% system configuration -@env=Config::CONFIG -PKG_VERSION=Version -@dir[:version]=Version -@host=@env['host'] -@dir[:arch]=@env['archdir'] -@dir[:sitearch]=@env['sitearchdir'] -@dir[:bin]=@env['bindir'] -#@dir_lib=@env['rubylibdir'] -@dir[:lib]=@env['sitelibdir'] -#@dir_lib='/usr/local/lib/site_ruby/1.9' #@env['sitelibdir'] -@dir[:data]=@env['datadir'] -@dir[:share]="#{@env['datadir']}/sisu" -@dir[:conf]=@env['sysconfdir']                     #etc -@dir[:man]=@env['mandir'] -@dir[:vim]="#{@env['datadir']}/sisu/vim" -@dir[:out]="#{@env['localstatedir']}/#{@dir[:proj]}" -@rubylib=@env['LIBRUBYARG_SHARED'] -@pwd=Dir.pwd +class Project_details +  def name +    'SiSU' +  end +  def rant +    "Rantfile for the installation/setup of #{name}" +  end +  def platform_notice +    "[#{name} is for the Linux/Unix Platforms]" +  end +  def dir_proj +    'sisu' +  end +  def env +    Config::CONFIG +  end +  def host +    env['host'] +  end +  def dir_arch +    env['archdir'] +  end +  def dir_sitearch +    env['sitearchdir'] +  end +  def dir_bin +    env['bindir'] +  end +  def dir_lib +    env['sitelibdir'] +  end +  def dir_data +    env['datadir'] +  end +  def dir_share +    "#{env['datadir']}/sisu" +  end +  def dir_conf +    env['sysconfdir'] +  end +  def dir_man +    env['mandir'] +  end +  def dir_vim +    "#{env['datadir']}/sisu/vim" +  end +  def dir_out +    "#{env['localstatedir']}/#{dir_proj}" +  end +  def dir_rubylib +    env['LIBRUBYARG_SHARED'] +  end +  def dir_pwd +    Dir.pwd #ENV['PWD'] +  end +  def version +    stamp={} +    v="#{dir_pwd}/conf/sisu/version.yml" +    version=if File.exist?(v) +      stamp=YAML::load(File::open(v)) +      stamp[:version] +    else '' +    end +  end +end +@p=Project_details.new  def answer?(ask)    resp='redo'    print ask + " ['yes', 'no' or 'quit']: " @@ -73,10 +113,10 @@ def answer?(ask)    end  end  def default_notice -    ans= %{#{@proj[:rant]} +    ans= %{#{@p.rant}    Information on alternative actions is available using:      "rant help" or "rant -T" -  Default action selected - "install and to setup #{@proj[:name]}" proceed? } +  Default action selected - "install and to setup #{@p.name}" proceed? }      resp=answer?(ans)      exit unless resp  end @@ -95,8 +135,8 @@ def chmod_util(place)  end                                                             #%% using a directory and its mapping  def setup_find_create(dir_get,dir_put)                     #primary, -  Find.find("#@pwd/#{dir_get}") do |f| -    stub=f.scan(/#@pwd\/#{dir_get}\/(\S+)/).join +  Find.find("#{@p.dir_pwd}/#{dir_get}") do |f| +    stub=f.scan(/#{@p.dir_pwd}\/#{dir_get}\/(\S+)/).join      place="#{dir_put}/#{stub}"      action=case      when File.file?(f) @@ -112,8 +152,8 @@ def setup_find_create(dir_get,dir_put)                     #primary,    end  end  def setup_find_cp_r(dir_get,dir_put)                       #secondary, using recursive copy -  Find.find("#@pwd/#{dir_get}") do |f| -    stub=f.scan(/#@pwd\/#{dir_get}\/(\S+)/).join +  Find.find("#{@p.dir_pwd}/#{dir_get}") do |f| +    stub=f.scan(/#{@p.dir_pwd}\/#{dir_get}\/(\S+)/).join      place="#{dir_put}/#{stub}"      case      when File.file?(f) @@ -126,52 +166,52 @@ def setup_find_cp_r(dir_get,dir_put)                       #secondary, using rec  end  def rant_system_info    puts <<WOK -  #{@proj[:platform_notice]} +  #{@p.platform_notice}    Host -    host:             #@host -    arch:             #{@dir[:arch]} -    sitearch:         #{@dir[:sitearch]} +    host:             #{@p.host} +    arch:             #{@p.dir_arch} +    sitearch:         #{@p.dir_sitearch}    Directories for installation -    bin:                                          #{@dir[:bin]} -    lib (site-ruby):                              #{@dir[:lib]}/#{@dir[:proj]}/#{Version} -    conf [etc]:                                   #{@dir[:conf]}/#{@dir[:proj]} -    data (odf, shared images):                    #{@dir[:share]} -    vim  (vim syntax, highlighting, ftplugin):    #{@dir[:data]}/sisu/vim -    data (README, version_manifest):              #{@dir[:data]}/doc/#{@dir[:proj]} -    man (manual pages):                           #{@dir[:man]} -    output:                                       #{@dir[:out]} -      processing:                                 #{@dir[:out]}/processing -      www:                                        #{@dir[:out]}/www +    bin:                                          #{@p.dir_bin} +    lib (site-ruby):                              #{@p.dir_lib}/#{@p.dir_proj}/v* +    conf [etc]:                                   #{@p.dir_conf}/#{@p.dir_proj} +    data (odf, shared images):                    #{@p.dir_share} +    vim  (vim syntax, highlighting, ftplugin):    #{@p.dir_data}/sisu/vim +    data (README, version_manifest):              #{@p.dir_data}/doc/#{@p.dir_proj} +    man (manual pages):                           #{@p.dir_man} +    output:                                       #{@p.dir_out} +      processing:                                 #{@p.dir_out}/processing +      www:                                        #{@p.dir_out}/www -    rubylib:          #@rubylib +    rubylib:          #{@p.dir_rubylib}  WOK  end  def rant_project_help    puts <<WOK -#{@proj[:name]} -  #{@proj[:rant]} -  #{@proj[:platform_notice]} +#{@p.name} +  #{@p.rant} +  #{@p.platform_notice}  Commands quick start list -  #{@proj[:name]} Rant Help:          (This Rantfile uses the same directory structure as setup.rb) +  #{@p.name} Rant Help:          (This Rantfile uses the same directory structure as setup.rb)      rant -T                # a task list, (generated by Rant) for more complete and up to date help      rant system            # system info used -  Quick start install and remove project #{@proj[:name]} +  Quick start install and remove project #{@p.name}     as root: -    rant                   # install #{@proj[:name]} +    rant                   # install #{@p.name} -    rant setup             # install #{@proj[:name]} (without additonal configuration and generating of test file) +    rant setup             # install #{@p.name} (without additonal configuration and generating of test file) -    rant reinstall         # reinstall #{@proj[:name]} +    rant reinstall         # reinstall #{@p.name} -    rant remove            # clobber/remove #{@proj[:name]}, current version: #{Version} -    rant remove_package    # clobber/remove #{@proj[:name]}, all versions +    rant remove            # clobber/remove #{@p.name}, current version: #{@p.version} +    rant remove_package    # clobber/remove #{@p.name}, all versions  For a more detailed and up to date list of command options use @@ -186,127 +226,125 @@ end  desc "rant (as root type 'rant' for default action)"  task :default => [:default_notice,:project]  #task :default => [:help,:notice,:project] -desc "Setup/Install #{@proj[:name]} and try generate a file" +desc "Setup/Install #{@p.name} and try generate a file"  task :project=> [:setup_bin,:setup_lib,:setup_conf,:setup_share,:setup_data,:setup_man,:setup_vim,:post_install_note] -desc "Setup/Install #{@proj[:name]}" +desc "Setup/Install #{@p.name}"  task :setup=> [:setup_bin, :setup_lib,:setup_conf,:setup_share,:setup_data] #, :help] -desc "Setup/Install #{@proj[:name]}: bin, lib and conf (no data)" +desc "Setup/Install #{@p.name}: bin, lib and conf (no data)"  task :setup_base=> [:setup_bin,:setup_lib,:setup_conf,:setup_share,:setup_man,:setup_vim] -desc "Setup/Install #{@proj[:name]} bin, lib and conf (no data and no attempt to do postinstall setup)" +desc "Setup/Install #{@p.name} bin, lib and conf (no data and no attempt to do postinstall setup)"  task :base=> [:setup_base]  if File.directory?('bin')                                       #bin -  desc "Setup #{@proj[:name]} bin only, synonym :bin" +  desc "Setup #{@p.name} bin only, synonym :bin"    task :setup_bin => [:setup_bin]    task :bin => [:setup_bin]  end  if File.directory?('lib')                                       #lib -  desc "Setup #{@proj[:name]} lib only, synonym :lib" +  desc "Setup #{@p.name} lib only, synonym :lib"    task :setup_lib => [:setup_lib]    task :lib => [:setup_lib]  end  if File.directory?('conf')                                      #conf or etc -  desc "Setup #{@proj[:name]} conf only, synonyms :conf & :etc" +  desc "Setup #{@p.name} conf only, synonyms :conf & :etc"    task :setup_conf => [:setup_conf]    task :conf => [:setup_conf]    task :setup_etc => [:setup_conf]    task :etc => [:setup_conf]  end  if File.directory?('data')                                      #data -  desc "Setup #{@proj[:name]} data only, synonyms :data & :examples" +  desc "Setup #{@p.name} data only, synonyms :data & :examples"    task :setup_data => [:setup_data]    task :data => [:setup_data]    task :setup_examples => [:setup_data]    task :examples => [:setup_data]  end  if File.directory?('data/sisu')                                      #share (odf shared-images) -  desc "Setup #{@proj[:name]} shared data only (odf & shared images)" +  desc "Setup #{@p.name} shared data only (odf & shared images)"    task :setup_share => [:setup_share]    task :share => [:setup_share]  end  if File.directory?('man')                                  #man pages -  desc "Setup #{@proj[:name]} man pages only, synonyms :man" +  desc "Setup #{@p.name} man pages only, synonyms :man"    task :setup_man => [:setup_man]    task :man => [:setup_man]  end  if File.directory?('data/vim')                                  #man pages -  desc "Setup #{@proj[:name]} vim config files only, synonyms :vim" +  desc "Setup #{@p.name} vim config files only, synonyms :vim"    task :setup_vim => [:setup_vim]    task :vim => [:setup_vim]  end -desc "Setup/Install #{@proj[:name]}: bin, lib, conf and data (no attempt to do postinstall setup)" +desc "Setup/Install #{@p.name}: bin, lib, conf and data (no attempt to do postinstall setup)"  task :setup_only=> [:setup_bin,:setup_lib,:setup_conf,:setup_share,:setup_data,:help] -#desc "Remove #{@proj[:name]} version: #{Version}" -#task :remove => [:remove_version] -desc "Remove #{@proj[:name]} (all versions)"                   #remove project +desc "Remove #{@p.name} (all versions)"                   #remove project  task :remove_package => [:remove_bin, :remove_lib, :remove_conf]  if File.directory?('bin')                                       #bin -  desc "Remove #{@proj[:name]} bin only"                       #remove bin +  desc "Remove #{@p.name} bin only"                       #remove bin    task :remove_bin => [:remove_bin]  end  if File.directory?('lib')                                       #lib -  desc "Remove #{@proj[:name]} lib only"                       #remove lib +  desc "Remove #{@p.name} lib only"                       #remove lib    task :remove_lib => [:remove_lib]  end  if File.directory?('conf')                                      #conf -  desc "Remove #{@proj[:name]} conf only"                      #remove conf +  desc "Remove #{@p.name} conf only"                      #remove conf    task :remove_conf => [:remove_conf]  end  #if File.directory?('data')                                      #data -#  desc "Remove #{@proj[:name]} data only"                      #remove data +#  desc "Remove #{@p.name} data only"                      #remove data  #  task :remove_data => [:remove_data]  #end -desc "Re-setup #{@proj[:name]}, synonym :reinstall"            #resetup reinstall +desc "Re-setup #{@p.name}, synonym :reinstall"            #resetup reinstall  task :resetup => [:remove, :setup]  task :reinstall => [:remove, :setup] -desc "Re-setup #{@proj[:name]}: bin, lib, conf (ignore data), synonym :reinstall"  #partial reinstall +desc "Re-setup #{@p.name}: bin, lib, conf (ignore data), synonym :reinstall"  #partial reinstall  task :resetup_base => [:remove, :setup_base]  task :reinstall_base => [:remove, :setup_base]  if File.directory?('bin')                                       #bin -  desc "Re-setup #{@proj[:name]} bin, synonym :reinstall" +  desc "Re-setup #{@p.name} bin, synonym :reinstall"    task :resetup_bin => [:remove_bin, :setup_bin]    task :reinstall_bin => [:remove_bin, :setup_bin]  end  if File.directory?('lib')                                       #lib -  desc "Re-setup #{@proj[:name]} lib, synonym :reinstall_lib" +  desc "Re-setup #{@p.name} lib, synonym :reinstall_lib"    task :resetup_lib => [:remove_lib, :setup_lib]    task :reinstall_lib => [:remove_lib, :setup_lib]  end  if File.directory?('conf')                                       #conf -  desc "Re-setup #{@proj[:name]} conf, synonyms :reinstall_conf & :resetup_etc" +  desc "Re-setup #{@p.name} conf, synonyms :reinstall_conf & :resetup_etc"    task :resetup_conf => [:remove_conf, :setup_conf]    task :reinstall_conf => [:remove_conf, :setup_conf]    task :resetup_etc => [:remove_conf, :setup_conf]    task :reinstall_etc => [:remove_conf, :setup_conf]  end  if File.directory?('data/sisu')                                       #share -  desc "Re-setup #{@proj[:name]} shared data, (odf & images)" +  desc "Re-setup #{@p.name} shared data, (odf & images)"    task :resetup_share => [:remove_share, :setup_share]    task :reinstall_share => [:remove_share, :setup_share]  end  if File.directory?('man')                                    #man -  desc "Re-setup #{@proj[:name]} man, synonym :reinstall_man" +  desc "Re-setup #{@p.name} man, synonym :reinstall_man"    task :resetup_man => [:remove_man, :setup_man]    task :reinstall_man => [:remove_man, :setup_man]  end -desc "Setup Note" +desc 'Setup Note'  task :setup_note => [:help] -desc "System information used by #{@proj[:name]}" +desc "System information used by #{@p.name}"  task :system => [:system_info,:project_help,:post_install_note]  desc "show all system info available - parameters found"  task :system_param => [:system_param] -desc "Help" -task :help => [:project_help,:system_info,:rant_tasks,:pi?] -#desc "Setup/Install #{@proj[:name]} (uses filelist)" +desc 'Help' +task :help => [:project_help,:system_info,:rant_tasks] +#desc "Setup/Install #{@p.name} (uses filelist)"  task :install => [:default_notice,:project]  task :install_bin => [:setup_bin] -desc "[make rant install file]" +desc '[make rant install file]'  task :create_rant_independent_task_file => [:rant_independence]                                                             #%% setup/install tasks  task :rant_independence do                                 #notice    resp=''    while resp.length < 4      resp='sisu-install'                                     #default name install -    print %{#{@proj[:rant]} +    print %{#{@p.rant}    Create a rant dependency independent file    provide filename default name is "install"      [Warning, will overwrite file of name provided @@ -326,63 +364,59 @@ task :default_notice do                                    #notice    default_notice  end  task :rant_default2 do                                     #secondary -  setup_find_cp_r('bin',@dir[:bin]) if File.directory?('bin') -  setup_find_cp_r('lib',@dir[:lib]) if File.directory?('lib') -  setup_find_cp_r('conf',@dir[:conf]) if File.directory?('conf') -  setup_find_cp_r('data/sisu',"#{@dir[:share]}") if File.directory?('data/sisu') # -  setup_find_cp_r('data',@dir[:data]) if File.directory?('data') -  setup_find_cp_r('data/vim',"#{@dir[:data]}/vim") if File.directory?('data/vim') -  setup_find_cp_r('man',@dir[:man]) if File.directory?('man') +  setup_find_cp_r('bin',@p.dir_bin) if File.directory?('bin') +  setup_find_cp_r('lib',@p.dir_lib) if File.directory?('lib') +  setup_find_cp_r('conf',@p.dir_conf) if File.directory?('conf') +  setup_find_cp_r('data/sisu',@p.dir_share) if File.directory?('data/sisu') # +  setup_find_cp_r('data',@p.dir_data) if File.directory?('data') +  setup_find_cp_r('data/vim',"#{@p.dir_data}/vim") if File.directory?('data/vim') +  setup_find_cp_r('man',@p.dir_man) if File.directory?('man')  end  task :setup_bin do                                         #bin -  setup_find_create('bin',@dir[:bin]) if File.directory?('bin') +  setup_find_create('bin',@p.dir_bin) if File.directory?('bin')  end  task :setup_lib do                                         #lib -  setup_find_create('lib',@dir[:lib]) if File.directory?('lib') +  setup_find_create('lib',@p.dir_lib) if File.directory?('lib')  end  task :setup_conf do                                        #conf -  setup_find_create('conf',@dir[:conf]) if File.directory?('conf') +  setup_find_create('conf',@p.dir_conf) if File.directory?('conf')  end  task :setup_share do                                        #share -  setup_find_create('data/sisu',@dir[:share]) if File.directory?('data/sisu') +  setup_find_create('data/sisu',@p.dir_share) if File.directory?('data/sisu')  end  task :setup_data do                                        #data -  setup_find_create('data',@dir[:data]) if File.directory?('data') +  setup_find_create('data',@p.dir_data) if File.directory?('data')  end  task :setup_man do                                         #man -  setup_find_create('man',@dir[:man]) if File.directory?('man') #man pages -  setup_find_create('man.deb/man',@dir[:man]) if File.directory?('man.deb/man') #man pages +  setup_find_create('man',@p.dir_man) if File.directory?('man') #man pages +  setup_find_create('man.deb/man',@p.dir_man) if File.directory?('man.deb/man') #man pages  end  task :setup_vim do                                         #man -  setup_find_create('data/vim',@dir[:vim]) if File.directory?('data/vim') #man pages +  setup_find_create('data/vim',@p.dir_vim) if File.directory?('data/vim') #man pages  end                                                             #%% post install                                                             #%% clobber/remove tasks  task :remove_bin do -  rm_r "#{@dir[:bin]}/#{@dir[:proj]}" if FileTest.file?("#{@dir[:bin]}/#{@dir[:proj]}") +  rm_r "#{@p.dir_bin}/#{@p.dir_proj}" if FileTest.file?("#{@p.dir_bin}/#{@p.dir_proj}")  end  task :remove_lib do -  rm_r "#{@dir[:lib]}/#{@dir[:proj]}" if FileTest.directory?("#{@dir[:lib]}/#{@dir[:proj]}") +  rm_r "#{@p.dir_lib}/#{@p.dir_proj}" if FileTest.directory?("#{@p.dir_lib}/#{@p.dir_proj}")  end  task :remove_conf do -  rm_r "#{@dir[:conf]}/#{@dir[:proj]}" if FileTest.directory?("#{@dir[:conf]}/#{@dir[:proj]}") +  rm_r "#{@p.dir_conf}/#{@p.dir_proj}" if FileTest.directory?("#{@p.dir_conf}/#{@p.dir_proj}")  end -#task :remove_data do -#  rm_r "#{@dir[:data]}/#{@dir[:proj_eg]}" if FileTest.directory?("#{@dir[:data]}/#{@dir[:proj_eg]}") -#end  task :remove_man do -  rm_r "#{@dir[:man]}/**/#{@dir[:proj]}" if FileTest.directory?("#{@dir[:man]}/man1/#{@dir[:proj]}") +  rm_r "#{@p.dir_man}/**/#{@p.dir_proj}" if FileTest.directory?("#{@p.dir_man}/man1/#{@p.dir_proj}")  end  task :remove_version do -  rm_r "#{@dir[:bin]}/#{@dir[:proj]}" if FileTest.file?("#{@dir[:bin]}/#{@dir[:proj]}") -  rm_r "#{@dir[:lib]}/#{@dir[:proj]}/#{Version}" if FileTest.directory?("#{@dir[:lib]}/#{@dir[:proj]}/#{Version}") -  rm_r "#{@dir[:conf]}/#{@dir[:proj]} if FileTest.directory?("#{@dir[:conf]}/#{@dir[:proj]}") -  #rm_r "#@dir_data/#{@dir[:proj]}" +  rm_r "#{@p.dir_bin}/#{@p.dir_proj}" if FileTest.file?("#{@p.dir_bin}/#{@p.dir_proj}") +  rm_r "#{@p.dir_lib}/#{@p.dir_proj}/#{@p.version}" if FileTest.directory?("#{@p.dir_lib}/#{@p.dir_proj}/#{@p.version}") +  rm_r "#{@p.dir_conf}/#{@p.dir_proj} if FileTest.directory?("#{@p.dir_conf}/#{@p.dir_proj}")  end  task :remove_package do -  rm_r "#{@dir[:bin]}/#{@dir[:proj]}" if FileTest.file?("#{@dir[:bin]}/#{@dir[:proj]}") -  rm_r "#{@dir[:lib]}/#{@dir[:proj]}" if FileTest.directory?("#{@dir[:lib]}/#{@dir[:proj]}") -  rm_r "#{@dir[:conf]}/#{@dir[:proj]}" if FileTest.directory?("#{@dir[:conf]}/#{@dir[:proj]}") +  rm_r "#{@p.dir_bin}/#{@p.dir_proj}" if FileTest.file?("#{@p.dir_bin}/#{@p.dir_proj}") +  rm_r "#{@p.dir_lib}/#{@p.dir_proj}" if FileTest.directory?("#{@p.dir_lib}/#{@p.dir_proj}") +  rm_r "#{@p.dir_conf}/#{@p.dir_proj}" if FileTest.directory?("#{@p.dir_conf}/#{@p.dir_proj}")  end  task :post_install_note do    puts <<WOK | 
