#!/usr/bin/env ruby =begin Common Rakefile, Rantfile installer for SiSU softlink Rakefile and Rantfile to this file * 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> Rake is a Ruby build program by Jim Weirich * Rake may be downloaded and installed from: <http://rake.rubyforge.org/> Rant is a Ruby build program by Stefan Lang * Rant may be downloaded and installed from: <http://make.rubyforge.org/> Notes on use: [if rake is preferred and installed] rake -T [if rant is preferred and installed] 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") #% manual settings, edit/update as required (note current default settings are obtained from sisu version yml file) SiSU_version_next_stable = '5.3.5' SiSU_version_next_unstable = '6.0.5' #% rake file SiSU_version_generic_next_stable = '5.3.x' SiSU_version_generic_next_unstable = '6.0.x' SiSU_version_dir_stable = 'v5' SiSU_version_dir_unstable = 'v6' require 'find' require 'fileutils' #require 'ftools' require 'rbconfig.rb' require 'yaml' include FileUtils module Project_details def self.name 'SiSU' end def self.rake_rant "Rakefile/Rantfile for the installation/setup of #{name}" end def self.platform_notice "[#{name} is for Linux/Unix Platforms]" end def self.env RbConfig::CONFIG end def self.host env['host'] end def self.dir def self.proj Project_details.name.downcase end def self.arch env['archdir'] end def self.sitearch env['sitearchdir'] end def self.bin env['bindir'] end def self.lib env['sitelibdir'] end def self.data env['datadir'] end def self.share "#{env['datadir']}/sisu" end def self.conf env['sysconfdir'] end def self.man env['mandir'] end def self.vim "#{env['datadir']}/sisu/vim" end def self.out "#{env['localstatedir']}/#{proj}" end def self.rubylib env['LIBRUBYARG_SHARED'] end def self.pwd Dir.pwd #ENV['PWD'] end self end def self.version stamp={} v="#{dir.pwd}/conf/sisu/version.yml" if File.exist?(v) stamp=YAML::load(File::open(v)) stamp[:version] else '' end end def self.system_info ##{Project_details.platform_notice} puts <<-WOK Host host: #{Project_details.host} arch: #{Project_details.dir.arch} sitearch: #{Project_details.dir.sitearch} Directories for installation bin: #{Project_details.dir.bin} lib (site-ruby): #{Project_details.dir.lib}/#{Project_details.dir.proj}/v* conf [etc]: #{Project_details.dir.conf}/#{Project_details.dir.proj} data (odf, shared images): #{Project_details.dir.share} vim (vim syntax, highlighting, ftplugin): #{Project_details.dir.data}/sisu/vim data (README, version_manifest): #{Project_details.dir.data}/doc/#{Project_details.dir.proj} man (manual pages): #{Project_details.dir.man} output: #{Project_details.dir.out} processing: #{Project_details.dir.out}/processing www: #{Project_details.dir.out}/www rubylib: #{Project_details.dir.rubylib} WOK end def self.gem_env system("gem env") end end module Utils def self.answer?(ask) resp='redo' print ask + " ['yes', 'no' or 'quit']: " resp=File.new('/dev/tty').gets.strip #resp=gets.strip 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 self.default_notice ans= %{#{Project_details.rake_rant} Information on alternative actions is available using: [if rake (or rant) is installed:] "rake help" or "rake -T" (or "rant help" or "rant -T") Default action selected - "install #{Project_details.name}" proceed? } resp=answer?(ans) exit unless resp end def self.chmod_file(place) if place =~/\/bin/; File.chmod(0755,place) else File.chmod(0644,place) end end def self.chmod_util(place) if place =~/\/bin/; chmod(0755,place) else chmod(0644,place) end end def self.system_date `date "+%Y-%m-%d"`.strip end def self.system_date_stamp `date "+%Yw%W/%u"`.strip end def self.program_found?(prog) found=`which #{prog}` #`whereis #{make}` (found =~/bin\/#{prog}\b/) ? :true : :false end end module Install #%% using a directory and its mapping def self.setup_find_create(dir_get,dir_put,exclude_files=['']) #primary, begin Find.find("#{Project_details.dir.pwd}/#{dir_get}") do |f| stub=f.scan(/#{Project_details.dir.pwd}\/#{dir_get}\/(\S+)/).join place="#{dir_put}/#{stub}" action=case when File.file?(f) unless f =~/#{exclude_files.inspect}/ cp(f,place) Utils.chmod_file(place) "-> #{dir_put}/" end when File.directory?(f) FileUtils.mkpath(place) unless FileTest.directory?(place) "./#{dir_get}/" else '?' end puts "#{action}#{stub}" end rescue puts "\n\n<< are you root? required for install >>" end end def self.setup_find_cp_r(dir_get,dir_put) #secondary, using recursive copy Find.find("#{Project_details.dir.pwd}/#{dir_get}") do |f| stub=f.scan(/#{Project_details.dir.pwd}\/#{dir_get}\/(\S+)/).join place="#{dir_put}/#{stub}" case when File.file?(f) cp_r(f,place) Utils.chmod_util(place) when File.directory?(f) mkdir(place) unless FileTest.directory?(place) end end end end module Version_info def self.contents(vi) <<-WOK --- :project: #{vi[:project]} :version: #{vi[:version]} :date_stamp: #{vi[:date_stamp]} :date: "#{vi[:date]}" WOK end module Current def self.yml_file_path(version) "data/sisu/#{version}/v/version.yml" end def self.settings(file) v="#{Dir.pwd}/#{file}" if File.exist?(v) YAML::load(File::open(v)) else '' end end def self.file_stable yml_file_path(SiSU_version_dir_stable) end def self.file_unstable yml_file_path(SiSU_version_dir_unstable) end def self.setting_stable settings(file_stable) end def self.setting_unstable settings(file_unstable) end def self.content_stable Version_info.contents(setting_stable) end def self.content_unstable Version_info.contents(setting_unstable) end end module Next def self.settings(v) { project: "#{Project_details.name}", version: "#{v}", date: "#{Utils.system_date}", date_stamp: "#{Utils.system_date_stamp}", } end def self.setting_stable settings(SiSU_version_next_stable) end def self.setting_unstable settings(SiSU_version_next_unstable) end def self.content_stable Version_info.contents(setting_stable) end def self.content_unstable Version_info.contents(setting_unstable) end end module Update def self.version_info_update_commit(filename,vi_hash_current,vi_content_current,vi_hash_next,vi_content_next) ans=%{update #{Project_details.name.downcase} version info replacing: #{vi_hash_current.sort} with: #{vi_hash_next.sort} #{vi_content_current} becoming: #{vi_content_next} proceed? } resp=Utils.answer?(ans) exit unless resp fn="#{Dir.pwd}/#{filename}" if File.writable?("#{Dir.pwd}/.") file_version=File.new(fn,'w+') file_version << vi_content_next file_version.close else puts %{*WARN* is the file or directory writable? could not create #{filename}} end end def self.update_stable version_info_update_commit(Version_info::Current.file_stable,Version_info::Current.setting_stable,Version_info::Current.content_stable,Version_info::Next.setting_stable,Version_info::Next.content_stable) end def self.update_unstable version_info_update_commit(Version_info::Current.file_unstable,Version_info::Current.setting_unstable,Version_info::Current.content_unstable,Version_info::Next.setting_unstable,Version_info::Next.content_unstable) end def self.changelog_header(vi) <<-WOK %% #{vi[:version]}.orig.tar.xz (#{vi[:date]}:#{vi[:date_stamp].gsub(/20\d\dw/,'')}) http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/sisu_#{vi[:version]} http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=shortlog;h=refs/tags/debian/sisu_#{vi[:version]}-1 http://www.jus.uio.no/sisu/pkg/src/sisu_#{vi[:version]}.orig.tar.xz sisu_#{vi[:version]}.orig.tar.xz sisu_#{vi[:version]}-1.dsc WOK end def self.changelog_header_stable changelog_header(Version_info::Current.setting_stable) end def self.changelog_header_unstable changelog_header(Version_info::Current.setting_unstable) end end self end module Gemspecs def self.info(vi) puts <<-WOK -- name: #{vi[:project].downcase} version: #{vi[:version]} date: #{vi[:date]} summary: #{vi[:project]} WOK end def self.contents(vi,version) <<-WOK Gem::Specification.new do |s| s.name = '#{vi[:project].downcase}' s.version = '#{vi[:version]}' s.date = '#{vi[:date]}' s.summary = '#{vi[:project]}' s.description = '#{Project_details.name} gem' s.authors = ["Ralph Amissah"] s.email = 'ralph.amissah@gmail.com' s.files = Dir['lib/#{Project_details.name.downcase}/#{version}/*.rb'] + Dir['data/#{Project_details.name.downcase}/#{version}/v/version.yml'] + Dir['data/#{Project_details.name.downcase}/image/*'] + Dir['bin/#{Project_details.name.downcase}gem'] + Dir['bin/#{Project_details.name.downcase}'] s.license = 'GPL3' s.executables << '#{Project_details.name.downcase}gem' << '#{Project_details.name.downcase}' end WOK end def self.create(filename,gemspec) fn="#{Dir.pwd}/#{filename}.gemspec" if File.writable?("#{Dir.pwd}/.") file_sisu_gemspec=File.new(fn,'w+') file_sisu_gemspec << gemspec file_sisu_gemspec.close else puts %{*WARN* is the file or directory writable? could not create #{filename}} end end def self.build(fn) system(%{ gem build #{fn}.gemspec }) end def self.install(fn) system(%{ sudo gem install --no-document --verbose #{fn}.gem }) end module Current def self.filename_stable "#{Project_details.name.downcase}-#{Version_info::Current.setting_stable[:version]}" end def self.filename_unstable "#{Project_details.name.downcase}-#{Version_info::Current.setting_unstable[:version]}" end def self.info_stable Gemspecs.info(Version_info::Current.setting_stable) end def self.info_unstable Gemspecs.info(Version_info::Current.setting_unstable) end def self.current_stable Gemspecs.contents(Version_info::Current.setting_stable,SiSU_version_dir_stable) end def self.current_unstable Gemspecs.contents(Version_info::Current.setting_unstable,SiSU_version_dir_unstable) end def self.create_stable Gemspecs.create(filename_stable,current_stable) Gemspecs.create("#{Project_details.name.downcase}-stable",current_stable) end def self.create_unstable Gemspecs.create(filename_unstable,current_unstable) Gemspecs.create("#{Project_details.name.downcase}-unstable",current_unstable) end def self.build_stable Gemspecs.build(filename_stable) end def self.build_unstable Gemspecs.build(filename_unstable) end def self.install_stable Gemspecs.install(filename_stable) end def self.install_unstable Gemspecs.install(filename_unstable) end end module Next def self.filename_stable "#{Project_details.name.downcase}-#{Version_info::Next.setting_stable[:version]}" end def self.filename_unstable "#{Project_details.name.downcase}-#{Version_info::Next.setting_unstable[:version]}" end def self.setting_stable Gemspecs.contents(Version_info::Next.setting_stable,SiSU_version_dir_stable) end def self.setting_unstable Gemspecs.contents(Version_info::Next.setting_unstable,SiSU_version_dir_unstable) end def self.create_stable Gemspecs.create(filename_stable,setting_stable) end def self.create_unstable Gemspecs.create(filename_unstable,setting_unstable) end def self.build_stable Gemspecs.build(filename_stable) end def self.build_unstable Gemspecs.build(filename_unstable) end def self.install_stable Gemspecs.install(filename_stable) end def self.install_unstable Gemspecs.install(filename_unstable) end end end module Help def self.project_help puts <<WOK #{Project_details.name} #{Project_details.rake_rant} #{Project_details.platform_notice} Commands quick start list #{Project_details.name} Rake/Rant Help: (Rakefile or Rantfile) rake (rake -T or rant -T) # a task list, (generated by Rake or Rant) for more complete and up to date help Quick start install and remove project #{Project_details.name}, as root: rake setup # install #{Project_details.name} rake resetup # reinstall #{Project_details.name} rake remove_package # clobber/remove #{Project_details.name}, all versions alternatively to install as a gem: rake gem_create_build_install # create gemspec; build gem, &; install gem, for #{Project_details.name} NOTE: these install options DO NOT setup #{Project_details.name} dependencies for: LaTeX(XeTeX) pdf output; or databases (postgresql or sqlite3) for #{Project_details.name} search should you wish to produce outputs that depend on them (on Debian for example this is the work of the debian installer) WOK end def self.tasks(make='rake') begin system("#{make} -T") rescue puts 'is either rake or rant installed?' end end end #% tasks desc "show rake/rant tasks for sisu install, and sisu gem (create spec, build &) install" task :default => [:note_sources,:tasks,:note_installation] #[:default_notice,:setup_base] desc "Setup/Install #{Project_details.name}" task :setup_project=> [:setup_bin_,:setup_lib_,:setup_conf_,:setup_share_,:setup_data_,:setup_man_,:setup_vim_,:src_note] task :project=> [:setup_project] desc "Setup/Install #{Project_details.name}" task :setup=> [:setup_bin_, :setup_lib_,:setup_conf_,:setup_share_,:setup_data_] #, :help] desc "Setup/Install #{Project_details.name}: bin, lib and conf (no data)" task :setup_base=> [:setup_bin_,:setup_lib_,:setup_conf_,:setup_share_,:setup_man_,:setup_vim_,:note_sources] task :base=> [:setup_base] desc "Setup/Install #{Project_details.name}: bin, lib, conf & data" task :setup_with_data=> [:setup_base,:setup_data] desc "check package version" task :sisuversion => [:sisu_version] #desc "set package version" task :sisuversionset => [:sisu_version_set,:changelog_headers] desc "check gemspec info" task :gem_spec => [:gemspec_info] desc "create sisu v_stable gemspec" task :gem_create_spec_stable => [:gemspecs_stable_create_default_version] task :gem5cs => [:gem_create_spec_stable] task :gem5createspecs => [:gemspecs_stable_create_default_version] desc "create sisu v_unstable gemspec" task :gem_create_spec_unstable => [:gemspecs_unstable_create_default_version] task :gem6cs => [:gem_create_spec_unstable] task :gem6createspecs => [:gemspecs_unstable_create_default_version] desc "create gemspec" task :gem_create_spec => [:gemspecs_create_default_version] task :gemcs => [:gemspecs_create_default_version] task :gemc => [:gemspecs_create_default_version] task :gemspecscreate => [:gemspecs_create_default_version] #--- desc "build gem" task :gem_build => [:gem_build_] task :gemb => [:gem_build] task :gembuild => [:gem_build] desc "build sisu v_stable gem" task :gem_build_stable => [:gem_stable_build] task :gem5b => [:gem_build_stable] task :gem5build => [:gem_build_stable] desc "build sisu v_unstable gem" task :gem_build_unstable => [:gem_unstable_build] task :gem6b => [:gem_build_unstable] task :gem6build => [:gem_build_unstable] #--- desc "create, build & install sisu v_stable gem" task :gem_create_build_install_stable => [:gemspecs_stable_create_default_version,:gem_stable_build,:gem_stable_install] task :gem5cbi => [:gem_create_build_install_stable] desc "create, build & install sisu v_unstable gem" task :gem_create_build_install_unstable => [:gemspecs_unstable_create_default_version,:gem_unstable_build,:gem_unstable_install] task :gem6cbi => [:gem_create_build_install_unstable] desc "create, build & install sisu v_stable & v_unstable gem" task :gem_create_build_install => [:gemspecs_create_default_version,:gem_build_,:gem_install_] task :gemcbi => [:gem_create_build_install] #--- desc "install gem" task :gem_install => [:gem_install_] task :gemi => [:gem_install] task :geminstall => [:gem_install] desc "build & install sisu v_stable gem" task :gem_build_install_stable => [:gem_stable_build,:gem_install_] task :gem5bi => [:gem_build_install_stable] desc "build & install sisu v_unstable gem" task :gem_build_install_unstable => [:gem_unstable_build,:gem_install_] task :gem6bi => [:gem_build_install_unstable] desc "build & install gem" task :gem_build_install => [:gem_build,:gem_install_] task :gembi => [:gem_build_install] #-- manually set next version #desc "create sisu v_stable gemspec, manually set next version" task :gem5csn => [:gemspecs_stable_create_next_version] #desc "create sisu v_unstable gemspec, manually set next version" task :gem6csn => [:gemspecs_unstable_create_next_version] #desc "create gemspec, manually set next version" task :gemcsn => [:gemspecs_create_next_version] task :gemcn => [:gemspecs_create_next_version] #desc "build gem, manually set next version" task :gembn => [:gem_build_next_version] #desc "build sisu v_stable gem, manually set next version" task :gem5bn => [:gem_stable_build_next_version] #desc "build sisu v_unstable gem, manually set next version" task :gem6bn => [:gem_unstable_build_next_version] #desc "install gem, manually set next version" task :gemin => [:gem_install_next_version] #desc "build & install sisu v_stable gem, manually set next version" task :gem5bin => [:gem_stable_build_next_version,:gem_install_next_version] #desc "build & install sisu v_unstable gem, manually set next version" task :gem6bin => [:gem_unstable_build_next_version,:gem_install_next_version] #desc "build & install gem, manually set next version" task :gembin => [:gem_build_next_version,:gem_install_next_version] #desc "create, build & install sisu v_stable gem, manually set next version" task :gem5cbin => [:gemspecs_stable_create_next_version,:gem_stable_build_next_version,:gem_stable_install_next_version] #desc "create, build & install sisu v_unstable gem, manually set next version" task :gem6cbin => [:gemspecs_unstable_create_next_version,:gem_unstable_build_next_version,:gem_unstable_install_next_version] #desc "create, build & install sisu v_stable & v_unstable gem, manually set next version" task :gemcbin => [:gemspecs_create_next_version,:gem_build_next_version,:gem_install_next_version] #--- #desc "check changelog headers" task :changelogheaders => [:changelog_headers] task :dev => [:note_developer] task :developer_note => [:note_developer] if File.directory?('bin') desc "Setup #{Project_details.name} bin only, synonym :bin" task :setup_bin => [:setup_bin_] task :bin => [:setup_bin] end if File.directory?('lib') desc "Setup #{Project_details.name} lib only, synonym :lib" task :setup_lib => [:setup_lib_] task :lib => [:setup_lib] end if File.directory?('conf') desc "Setup #{Project_details.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') desc "Setup #{Project_details.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') #desc "Setup #{Project_details.name} shared data only (odf & shared images)" task :setup_share => [:setup_share_] task :share => [:setup_share] end if File.directory?('man') desc "Setup #{Project_details.name} man pages only, synonyms :man" task :setup_man => [:setup_man_] task :man => [:setup_man] end if File.directory?('data/vim') desc "Setup #{Project_details.name} vim config files only, synonyms :vim" task :setup_vim => [:setup_vim_] task :vim => [:setup_vim] end desc "Remove #{Project_details.name} (all versions)" task :remove_package => [:remove_bin, :remove_lib, :remove_conf] if File.directory?('bin') #desc "Remove #{Project_details.name} bin only" task :remove_bin => [:remove_bin] end if File.directory?('lib') #desc "Remove #{Project_details.name} lib only" task :remove_lib => [:remove_lib] end if File.directory?('conf') #desc "Remove #{Project_details.name} conf only" task :remove_conf => [:remove_conf] end desc "Re-setup #{Project_details.name}, synonym :reinstall" task :resetup => [:remove, :setup] task :reinstall => [:remove, :setup] #desc "Re-setup #{Project_details.name}: bin, lib, conf (ignore data), synonym :reinstall" task :resetup_base => [:remove, :setup_base_] task :reinstall_base => [:remove, :setup_base_] if File.directory?('bin') #desc "Re-setup #{Project_details.name} bin, synonym :reinstall" task :resetup_bin => [:remove_bin, :setup_bin_] task :reinstall_bin => [:remove_bin, :setup_bin_] end if File.directory?('lib') #desc "Re-setup #{Project_details.name} lib, synonym :reinstall_lib" task :resetup_lib => [:remove_lib, :setup_lib_] task :reinstall_lib => [:remove_lib, :setup_lib_] end if File.directory?('conf') #desc "Re-setup #{Project_details.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') #desc "Re-setup #{Project_details.name} shared data, (odf & images)" task :resetup_share => [:remove_share, :setup_share_] task :reinstall_share => [:remove_share, :setup_share_] end if File.directory?('man') #desc "Re-setup #{Project_details.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 #{Project_details.name}" task :system => [:system_info,:project_help,:note_sources] desc "show all system info available - parameters found" task :system_param => [:system_param_] desc "Gem environment information used ruby gems for #{Project_details.name}" task :gem_env => [:gem_env_] desc 'Help' task :help => [:project_help,:system_info,:tasks] #desc "Setup/Install #{Project_details.name} (uses filelist)" task :install => [:default_notice,:project] task :install_bin => [:setup_bin_] #%% setup/install tasks task :rant_independence do #notice resp='' while resp.length < 4 resp='sisu-install' #default name install print %{#{Project_details.rake_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 Utils.default_notice end task :default2 do #secondary setup_find_cp_r('bin',Project_details.dir.bin) if File.directory?('bin') setup_find_cp_r('lib',Project_details.dir.lib) if File.directory?('lib') setup_find_cp_r('conf',Project_details.dir.conf) if File.directory?('conf') setup_find_cp_r('data/sisu',Project_details.dir.share) if File.directory?('data/sisu') # setup_find_cp_r('data',Project_details.dir.data) if File.directory?('data') setup_find_cp_r('data/vim',"#{Project_details.dir.data}/vim") if File.directory?('data/vim') setup_find_cp_r('man',Project_details.dir.man) if File.directory?('man') end task :setup_bin_ do exclude_files=['sisugem'] Install.setup_find_create('bin',Project_details.dir.bin,exclude_files) if File.directory?('bin') end task :setup_lib_ do Install.setup_find_create('lib',Project_details.dir.lib) if File.directory?('lib') end task :setup_conf_ do Install.setup_find_create('conf',Project_details.dir.conf) if File.directory?('conf') end task :setup_share_ do Install.setup_find_create('data/sisu',Project_details.dir.share) if File.directory?('data/sisu') end task :setup_data_ do Install.setup_find_create('data',Project_details.dir.data) if File.directory?('data') end task :setup_man_ do Install.setup_find_create('man',Project_details.dir.man) if File.directory?('man') Install.setup_find_create('man.deb/man',Project_details.dir.man) if File.directory?('man.deb/man') end task :setup_vim_ do Install.setup_find_create('data/vim',Project_details.dir.vim) if File.directory?('data/vim') end task :gemspec_info do Gemspecs.info_stable Gemspecs.info_unstable end task :gemspecs_stable_create_default_version do Gemspecs::Current.create_stable end task :gemspecs_unstable_create_default_version do Gemspecs::Current.create_unstable end task :gemspecs_create_default_version do Gemspecs::Current.create_stable Gemspecs::Current.create_unstable end task :gemspecs_stable_create_next_version do Gemspecs::Next.create_stable end task :gemspecs_unstable_create_next_version do Gemspecs::Next.create_unstable end task :gemspecs_create_next_version do Gemspecs::Next.create_stable Gemspecs::Next.create_unstable end task :gem_stable_build do Gemspecs::Current.build_stable end task :gem_unstable_build do Gemspecs::Current.build_unstable end task :gem_build_ do Gemspecs::Current.build_stable Gemspecs::Current.build_unstable end task :gem_stable_build_next_version do Gemspecs::Next.build_stable end task :gem_unstable_build_next_version do Gemspecs::Next.build_unstable end task :gem_build_next_version do Gemspecs::Next.build_stable Gemspecs::Next.build_unstable end task :gem_stable_install do Gemspecs::Current.install_stable end task :gem_unstable_install do Gemspecs::Current.install_unstable end task :gem_install_ do Gemspecs::Current.install_stable Gemspecs::Current.install_unstable end task :gem_stable_install_next_version do Gemspecs::Next.install_stable end task :gem_unstable_install_next_version do Gemspecs::Next.install_unstable end task :gem_install_next_version do Gemspecs::Next.install_stable Gemspecs::Next.install_unstable end task :changelog_headers do puts '---' puts Version_info::Update.changelog_header_stable puts '---' puts Version_info::Update.changelog_header_unstable end task :sisu_version do puts Version_info::Next.setting_stable puts Version_info::Next.setting_unstable puts '---' puts Version_info::Current.setting_stable[:project] puts Version_info::Current.setting_stable[:version] puts Version_info::Current.setting_stable[:date] puts Version_info::Current.setting_stable[:date_stamp] puts '---' puts Version_info::Current.setting_unstable[:project] puts Version_info::Current.setting_unstable[:version] puts Version_info::Current.setting_unstable[:date] puts Version_info::Current.setting_unstable[:date_stamp] end task :sisu_version_set do Version_info::Update.update_stable Version_info::Update.update_unstable end #%% post install #%% clobber/remove tasks task :remove_bin do rm_r "#{Project_details.dir.bin}/#{Project_details.dir.proj}" if FileTest.file?("#{Project_details.dir.bin}/#{Project_details.dir.proj}") end task :remove_lib do rm_r "#{Project_details.dir.lib}/#{Project_details.dir.proj}" if FileTest.directory?("#{Project_details.dir.lib}/#{Project_details.dir.proj}") end task :remove_conf do rm_r "#{Project_details.dir.conf}/#{Project_details.dir.proj}" if FileTest.directory?("#{Project_details.dir.conf}/#{Project_details.dir.proj}") end task :remove_man do rm_r "#{Project_details.dir.man}/**/#{Project_details.dir.proj}" if FileTest.directory?("#{Project_details.dir.man}/man1/#{Project_details.dir.proj}") end task :remove_version do rm_r "#{Project_details.dir.bin}/#{Project_details.dir.proj}" if FileTest.file?("#{Project_details.dir.bin}/#{Project_details.dir.proj}") rm_r "#{Project_details.dir.lib}/#{Project_details.dir.proj}/#{Project_details.version}" if FileTest.directory?("#{Project_details.dir.lib}/#{Project_details.dir.proj}/#{Project_details.version}") rm_r "#{Project_details.dir.conf}/#{Project_details.dir.proj} if FileTest.directory?("#{Project_details.dir.conf}/#{Project_details.dir.proj}") end task :remove_package do rm_r "#{Project_details.dir.bin}/#{Project_details.dir.proj}" if FileTest.file?("#{Project_details.dir.bin}/#{Project_details.dir.proj}") rm_r "#{Project_details.dir.lib}/#{Project_details.dir.proj}" if FileTest.directory?("#{Project_details.dir.lib}/#{Project_details.dir.proj}") rm_r "#{Project_details.dir.conf}/#{Project_details.dir.proj}" if FileTest.directory?("#{Project_details.dir.conf}/#{Project_details.dir.proj}") end task :note_sources do puts <<-WOK SiSU project: <http://sisudoc.org> <http://www.jus.uio.no/sisu> sisu source code is available at: <http://sources.sisudoc.org> <http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> sisu markup samples are provided/packaged separately as sisu-markup-samples: <http://sources.sisudoc.org/gitweb/?p=doc/sisu-markup-samples.git;a=summary> WOK end task :note_installation do puts <<-WOK alternative 0: distribution install, rather than this Rakefile a distribution install pulls in the many dependencies used by sisu after initial processing to generate and store output, significant amongst these are XeTeX & databases (sqlite3 and postgresql) alternative 1: gem install, you need to: create the gemspec; build the gem (from the gemspec); install the gem which can be done with the single command: rake gem_create_build_install # (to build and install sisu v5 & sisu v6, alias gemcbi) separate gems are made/installed for sisu v5 & sisu v6 contained in source: rake gem_create_build_install_stable # (to build and install sisu v5, alias gem5cbi) rake gem_create_build_install_unstable # (to build and install sisu v6, alias gem6cbi) for individual steps (create, build, install) see rake options, rake -T to specify sisu version for sisu installed via gem sisu _#{Version_info::Current.setting_stable[:version]}_ --version sisu _#{Version_info::Current.setting_unstable[:version]}_ --version to uninstall sisu installed via gem sudo gem uninstall --verbose sisu WOK end task :note_developer do puts <<-WOK changelogheaders sisuversion sisuversionset gemcsn gem5csn gem6csn gembn gem5bn gem6bn gemin gem5in gem6in gembin gem5bin gem6bin gemcbin gem5cbin gem6cbin WOK end #%% help & system info task :system_info do Project_details.system_info end task :system_param_ do Project_details.env.each {|c| puts c.inspect } end task :gem_env_ do Project_details.gem_env end task :project_help do Help.project_help end task :tasks do Help.tasks end