From 7248e7c48415e638813975fd9fc8fb409f27c00a Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 29 Aug 2014 19:28:23 -0400 Subject: qi, start using ruby-thor (for rake like tasks) --- setup/qi_libs_base.rb | 345 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 345 insertions(+) create mode 100644 setup/qi_libs_base.rb (limited to 'setup/qi_libs_base.rb') diff --git a/setup/qi_libs_base.rb b/setup/qi_libs_base.rb new file mode 100644 index 00000000..cd411d63 --- /dev/null +++ b/setup/qi_libs_base.rb @@ -0,0 +1,345 @@ +module Project_details + require_relative 'sisu_version' + include SiSUversion + def self.name + 'SiSU' + end + def self.thor + "ruby-thor files 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 +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' then true + elsif resp == 'no' then false + elsif resp =~/^quit|exit$/ then exit + else puts "[please type: 'yes', 'no' or 'quit']" + answer?(ask) + end + end + def self.default_notice # local help not implemented description incorrect + ans= %{#{Project_details.thor} + Information on alternative actions is available using: + [if ruby-thor is installed:] + "#{$called_as} help") + 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 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) + if 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 + 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=log;h=refs/tags/sisu_#{vi[:version]} +http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;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 Package + def self.sequence + puts <<-WOK + --update-version # update package version + --tag # git tags upstream version + --merge # git merge upstream tag into debian/sid + --dch # dch create and edit + --dch-commit # dch commit + --build # git-buildpackage + --git_push # git push changes + --dput # dput package + --reprepro_update # reprepro update + --reprepro_push # reprepro rsync changes + WOK + end + def self.tag_upstream_and_merge_into_debian_sid + system(%{ + git tag -a sisu_#{SiSU_VERSION} -m"SiSU #{SiSU_VERSION}" && + git checkout debian/sid && + git merge sisu_#{SiSU_VERSION} + }) + + end + def self.tag_upstream + system(%{ + git tag -a sisu_#{SiSU_VERSION} -m"SiSU #{SiSU_VERSION}" + }) + end + def self.merge_into_debian_sid + system(%{ + git checkout debian/sid && + git merge sisu_#{SiSU_VERSION} + }) + end + def self.debian_changelog_create + if File.directory?('./debian') + system(%{ + git-dch -R -N #{SiSU_VERSION}-1 --full + }) + else puts 'not in git branch: debian/sid ?' + end + end + def self.debian_changelog_commit + system(%{ + git commit -a -m"debian/changelog (#{SiSU_VERSION}-1)" + }) + end + def self.debian_package_build + system(%{ + git-buildpackage --git-upstream-tag=sisu_%(version)s --git-debian-tag=debian/sisu_%(version)s --git-tag --git-keyid=#{Dev::GPGpubKey} + }) + end + def self.debian_package_dput + #system(%{ + # dput -s sisu_#{SiSU_VERSION}-1_amd64.changes + #}) + system(%{ + dput sisu_#{SiSU_VERSION}-1_amd64.changes + }) + end + def self.debian_package_push + system(%{ + git push --all && + git push --tags + }) + end + def self.reqprepro_update + dir_repo=Pathname.new( + "#{Dir.home}/grotto/repo/deb.repo/debian/rep" + ) + dir_build=Pathname.new( + "#{Dir.home}/grotto/repo/git.repo/code/builds/sisu_#{SiSU_VERSION}-1_amd64.changes" + ) + system(%{ + cd #{dir_repo.dirname} && + reprepro -Vb . include unstable #{dir_build} + cd - + }) + end + def self.reprepro_push + dir_repo=Pathname.new( + "#{Dir.home}/grotto/repo/deb.repo/debian/rep" + ) + system(%{ + cd #{dir_repo} && + rsync -av --delete-after {dists,pool} sisudoc:/srv/www/sisu/archive/. && + rsync -av --delete-after {dists,pool} ralpha@uio:./sisu/archive/. + }) + end +end -- cgit v1.2.3