aboutsummaryrefslogtreecommitdiffhomepage
path: root/Rantfile
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2007-07-27 21:08:44 +0100
committerRalph Amissah <ralph@amissah.com>2007-07-27 21:08:44 +0100
commit01777d7a480f427254f4003205101c60129e865a (patch)
treeeed030ea0e00f7b5ed6b833dbd1814474ea906aa /Rantfile
parentrant installer adjustments (diff)
maintain rinstall as a common rant (Rantfile), rake (Rakefile)
Diffstat (limited to 'Rantfile')
l---------[-rw-r--r--]Rantfile444
1 files changed, 1 insertions, 443 deletions
diff --git a/Rantfile b/Rantfile
index d1238822..0bae78d7 100644..120000
--- a/Rantfile
+++ b/Rantfile
@@ -1,443 +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://search.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 'ftools'
-require 'rbconfig.rb'
-require 'yaml'
-include FileUtils
-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']: "
- 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= %{#{@p.rant}
- Information on alternative actions is available using:
- "rant help" or "rant -T"
- Default action selected - "install and to setup #{@p.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("#{@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)
- 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("#{@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)
- 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
- #{@p.platform_notice}
-
- Host
- host: #{@p.host}
- arch: #{@p.dir_arch}
- sitearch: #{@p.dir_sitearch}
-
- Directories for installation
- 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: #{@p.dir_rubylib}
-
-WOK
-end
-def rant_project_help
- puts <<WOK
-
-#{@p.name}
- #{@p.rant}
- #{@p.platform_notice}
-
-Commands quick start list
-
- #{@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 #{@p.name}
- as root:
- rant # install #{@p.name}
-
- rant setup # install #{@p.name} (without additonal configuration and generating of test file)
-
- rant reinstall # reinstall #{@p.name}
-
- 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
-
- 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 #{@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 #{@p.name}"
-task :setup=> [:setup_bin, :setup_lib,:setup_conf,:setup_share,:setup_data] #, :help]
-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 #{@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 #{@p.name} bin only, synonym :bin"
- task :setup_bin => [:setup_bin]
- task :bin => [:setup_bin]
-end
-if File.directory?('lib') #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 #{@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 #{@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 #{@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 #{@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 #{@p.name} vim config files only, synonyms :vim"
- task :setup_vim => [:setup_vim]
- task :vim => [:setup_vim]
-end
-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 #{@p.name} (all versions)" #remove project
-task :remove_package => [:remove_bin, :remove_lib, :remove_conf]
-if File.directory?('bin') #bin
- desc "Remove #{@p.name} bin only" #remove bin
- task :remove_bin => [:remove_bin]
-end
-if File.directory?('lib') #lib
- desc "Remove #{@p.name} lib only" #remove lib
- task :remove_lib => [:remove_lib]
-end
-if File.directory?('conf') #conf
- desc "Remove #{@p.name} conf only" #remove conf
- task :remove_conf => [:remove_conf]
-end
-#if File.directory?('data') #data
-# desc "Remove #{@p.name} data only" #remove data
-# task :remove_data => [:remove_data]
-#end
-desc "Re-setup #{@p.name}, synonym :reinstall" #resetup reinstall
-task :resetup => [:remove, :setup]
-task :reinstall => [:remove, :setup]
-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 #{@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 #{@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 #{@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 #{@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 #{@p.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 #{@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]
-#desc "Setup/Install #{@p.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 %{#{@p.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',@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',@p.dir_bin) if File.directory?('bin')
-end
-task :setup_lib do #lib
- setup_find_create('lib',@p.dir_lib) if File.directory?('lib')
-end
-task :setup_conf do #conf
- setup_find_create('conf',@p.dir_conf) if File.directory?('conf')
-end
-task :setup_share do #share
- setup_find_create('data/sisu',@p.dir_share) if File.directory?('data/sisu')
-end
-task :setup_data do #data
- setup_find_create('data',@p.dir_data) if File.directory?('data')
-end
-task :setup_man do #man
- 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',@p.dir_vim) if File.directory?('data/vim') #man pages
-end
- #%% post install
- #%% clobber/remove tasks
-task :remove_bin do
- rm_r "#{@p.dir_bin}/#{@p.dir_proj}" if FileTest.file?("#{@p.dir_bin}/#{@p.dir_proj}")
-end
-task :remove_lib do
- rm_r "#{@p.dir_lib}/#{@p.dir_proj}" if FileTest.directory?("#{@p.dir_lib}/#{@p.dir_proj}")
-end
-task :remove_conf do
- rm_r "#{@p.dir_conf}/#{@p.dir_proj}" if FileTest.directory?("#{@p.dir_conf}/#{@p.dir_proj}")
-end
-task :remove_man do
- 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 "#{@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 "#{@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
-
- 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