diff options
Diffstat (limited to 'Rantfile')
l---------[-rw-r--r--] | Rantfile | 410 |
1 files changed, 1 insertions, 409 deletions
@@ -1,409 +1 @@ -#!/usr/bin/env ruby -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> - - - Copyright (C) 2007 Ralph Amissah - - * License: LGPL - GNU Lesser General Public License - [same license as Rant provided within the Rant package] - - * Ralph Amissah <ralph@amissah.com> - Ralph Amissah <ralph.amissah@gmail.com> - - Rant is a Ruby 'ant' by Stefan Lang - * Rant may be downloaded and installed from: - http://make.rubyforge.org/ - - Notes on use: - - rant -T - - SiSU can also be Setup/Installation using: - * Minero Aoki's setup.rb, provided along with SiSU, or - -=end -#%% produce a makefile suitable for the target platform -#require 'mkmf' -#create_makefile("sisu") -require 'find' -require 'fileutils' -require 'rbconfig.rb' -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 -def answer?(ask) - resp='redo' - print ask + " ['yes', 'no' or 'quit']: " - resp=File.new('/dev/tty').gets.strip - #resp=gets.strip - ans=if resp == 'yes'; true - elsif resp == 'no'; false - elsif resp =~/^quit|exit$/; exit - else puts "[please type: 'yes', 'no' or 'quit']" - answer?(ask) - end -end -def default_notice - ans= %{#{@proj[:rant]} - Information on alternative actions is available using: - "rant help" or "rant -T" - Default action selected - "install and to setup #{@proj[:name]}" proceed? } - resp=answer?(ans) - exit unless resp -end -def get_username - gets.strip -end -def chmod_file(place) - if place =~/\/bin/; File.chmod(0755,place) - else File.chmod(0644,place) - end -end -def chmod_util(place) - if place =~/\/bin/; chmod(0755,place) - else chmod(0644,place) - end -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 - place="#{dir_put}/#{stub}" - action=case - when File.file?(f) - cp(f,place) - chmod_file(place) - "-> #{dir_put}/" - when File.directory?(f) - FileUtils.mkpath(place) unless FileTest.directory?(place) - "./#{dir_get}/" - else '?' - end - puts "#{action}#{stub}" - 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 - place="#{dir_put}/#{stub}" - case - when File.file?(f) - cp_r(f,place) - chmod_util(place) - when File.directory?(f) - mkdir(place) unless FileTest.directory?(place) - end - end -end -def rant_system_info - puts <<WOK - #{@proj[:platform_notice]} - - Host - host: #@host - arch: #{@dir[:arch]} - sitearch: #{@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 - - rubylib: #@rubylib - -WOK -end -def rant_project_help - puts <<WOK - -#{@proj[:name]} - #{@proj[:rant]} - #{@proj[:platform_notice]} - -Commands quick start list - - #{@proj[: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]} - as root: - rant # install #{@proj[:name]} - - rant setup # install #{@proj[:name]} (without additonal configuration and generating of test file) - - rant reinstall # reinstall #{@proj[:name]} - - rant remove # clobber/remove #{@proj[:name]}, current version: #{Version} - rant remove_package # clobber/remove #{@proj[:name]}, all versions - -For a more detailed and up to date list of command options use - - rant -T - -WOK -end -def rant_tasks - sys('rant -T') -end - #%% tasks -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" -task :project=> [:setup_bin,:setup_lib,:setup_conf,:setup_share,:setup_data,:setup_man,:setup_vim,:post_install_note] -desc "Setup/Install #{@proj[: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)" -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)" -task :base=> [:setup_base] -if File.directory?('bin') #bin - desc "Setup #{@proj[: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" - 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" - 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" - 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)" - 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" - 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" - 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)" -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 -task :remove_package => [:remove_bin, :remove_lib, :remove_conf] -if File.directory?('bin') #bin - desc "Remove #{@proj[:name]} bin only" #remove bin - task :remove_bin => [:remove_bin] -end -if File.directory?('lib') #lib - desc "Remove #{@proj[:name]} lib only" #remove lib - task :remove_lib => [:remove_lib] -end -if File.directory?('conf') #conf - desc "Remove #{@proj[:name]} conf only" #remove conf - task :remove_conf => [:remove_conf] -end -#if File.directory?('data') #data -# desc "Remove #{@proj[:name]} data only" #remove data -# task :remove_data => [:remove_data] -#end -desc "Re-setup #{@proj[: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 -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" - 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" - 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" - 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)" - 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" - task :resetup_man => [:remove_man, :setup_man] - task :reinstall_man => [:remove_man, :setup_man] -end -desc "Setup Note" -task :setup_note => [:help] -desc "System information used by #{@proj[: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)" -task :install => [:default_notice,:project] -task :install_bin => [:setup_bin] -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]} - Create a rant dependency independent file - provide filename default name is "install" - [Warning, will overwrite file of name provided - provide name or "quit" to exit]: } - exit if resp =~/^(?:n|quit|exit)$/ - end - remove='y' #remove='n' - if remove =~/y/ - system("rant-import --force --auto #{resp}; - chmod 755 #{resp} - ") - else #puts "#{resp} not replaced" - end -end - -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') -end -task :setup_bin do #bin - setup_find_create('bin',@dir[:bin]) if File.directory?('bin') -end -task :setup_lib do #lib - setup_find_create('lib',@dir[:lib]) if File.directory?('lib') -end -task :setup_conf do #conf - setup_find_create('conf',@dir[:conf]) if File.directory?('conf') -end -task :setup_share do #share - setup_find_create('data/sisu',@dir[:share]) if File.directory?('data/sisu') -end -task :setup_data do #data - setup_find_create('data',@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 -end -task :setup_vim do #man - setup_find_create('data/vim',@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]}") -end -task :remove_lib do - rm_r "#{@dir[:lib]}/#{@dir[:proj]}" if FileTest.directory?("#{@dir[:lib]}/#{@dir[:proj]}") -end -task :remove_conf do - rm_r "#{@dir[:conf]}/#{@dir[:proj]}" if FileTest.directory?("#{@dir[:conf]}/#{@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]}") -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]}" -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]}") -end -task :post_install_note do - puts <<WOK - - sisu markup samples are now packaged separately in sisu-markup-samples - visit: - http://www.jus.uio.no/sisu - and: - http://www.jus.uio.no/sisu/SiSU/download - -WOK -end -task :system_info do #%% system info - rant_system_info -end -task :system_param do - @env.each {|c| puts c.inspect } -end -task :project_help do #%% help - rant_project_help -end -task :rant_tasks do #%% help - rant_tasks -end +rinstall
\ No newline at end of file |