From 4db4dcc886b85bf9db43d66025452fb33c94a9dd Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph@amissah.com>
Date: Wed, 26 Nov 2014 09:12:11 -0500
Subject: c&d: project dir structure, libs moved under new branch names

* libs & version files under new branch names: current & develop
* previously under branch version numbers (v5|v6)
* version .yml files moved
* associated adjustments made as required, notably to:
  bin/sisu se* qi* (file headers); breakage potential, testing
  required
* [on dir names, want release to (alphabetically) precede
  next/development, considered (cur|dev)
  (current|(dev|development|progress|next)) (stable|unstable),
  alpha sorting fail (release|(next|develop))]
---
 setup/qi_libs.rb      | 257 ++++++++++++++++++++++++++++++++++++++++----------
 setup/qi_libs_base.rb |   2 +-
 setup/rbuild_libs.rb  |  27 +++---
 setup/sisu_version.rb |   6 +-
 4 files changed, 226 insertions(+), 66 deletions(-)

(limited to 'setup')

diff --git a/setup/qi_libs.rb b/setup/qi_libs.rb
index 331ed72e..80ccc8d8 100644
--- a/setup/qi_libs.rb
+++ b/setup/qi_libs.rb
@@ -138,7 +138,7 @@ module Utils
 end
 module Install
                                                            #%% using a directory and its mapping
-  def self.setup_find_create(dir_get,dir_put,exclude_files=[''])               #primary,
+  def self.setup_find_create(dir_get,dir_put,exclude_files=[''],act)               #primary,
     begin
       Find.find("#{Project_details.dir.pwd}/#{dir_get}") do |f|
         stub=f.scan(/#{Project_details.dir.pwd}\/#{dir_get}\/(\S+)/).join
@@ -146,13 +146,17 @@ module Install
         action=case
         when File.file?(f)
           unless f =~/#{exclude_files.inspect}/
-            cp(f,place)
-            Utils.chmod_file(place)
+            unless act==:dryrun
+              cp(f,place)
+              Utils.chmod_file(place)
+            end
             "->  #{dir_put}/"
           end
         when File.directory?(f)
-          FileUtils.mkpath(place) \
-            unless FileTest.directory?(place)
+          if not FileTest.directory?(place) \
+          and not act==:dryrun
+            FileUtils.mkpath(place)
+          end
           "./#{dir_get}/"
         else '?'
         end
@@ -162,18 +166,27 @@ module Install
       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
+  def self.setup_find_cp_r(dir_get,dir_put,act)                                    #secondary, using recursive copy
     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}"
         case
         when File.file?(f)
-          cp_r(f,place)
-          Utils.chmod_util(place)
+          unless act==:dryrun
+            cp_r(f,place)
+            Utils.chmod_util(place)
+          else
+            puts "--> #{place}"
+          end
         when File.directory?(f)
-          mkdir(place) \
-            unless FileTest.directory?(place)
+          unless FileTest.directory?(place)
+            unless act==:dryrun
+              mkdir(place)
+            else
+              puts "mkdir -p #{place}"
+            end
+          end
         end
       end
     rescue
@@ -182,18 +195,21 @@ module Install
   end
 end
 module Version_info
-  def self.contents(vi)
+  def self.contents(vi,rel=:release)
+    release=if rel ==:pre_release then '_pre_rel'
+    else                               ''
+    end
     <<-WOK
 ---
 :project: #{vi[:project]}
-:version: #{vi[:version]}
+:version: #{vi[:version]}#{release}
 :date_stamp: #{vi[:date_stamp]}
 :date: "#{vi[:date]}"
     WOK
   end
   module Current
     def self.yml_file_path(version)
-      "data/sisu/#{version}/v/version.yml"
+      "data/sisu/version/#{version}.yml"
     end
     def self.settings(file)
       v="#{Dir.pwd}/#{file}"
@@ -202,6 +218,12 @@ module Version_info
       else ''
       end
     end
+    def self.changelog_file_stable
+      'data/doc/sisu/CHANGELOG_v5'
+    end
+    def self.changelog_file_unstable
+      'data/doc/sisu/CHANGELOG_v6'
+    end
     def self.file_stable
       yml_file_path(SiSU_version_dir_stable)
     end
@@ -209,10 +231,16 @@ module Version_info
       yml_file_path(SiSU_version_dir_unstable)
     end
     def self.setting_stable
-      settings(file_stable)
+      hsh=settings(file_stable)
+      hsh[:version_number]=/([0-9]+\.[0-9]+\.[0-9]+)/.
+        match(hsh[:version])[1]
+      hsh
     end
     def self.setting_unstable
-      settings(file_unstable)
+      hsh=settings(file_unstable)
+      hsh[:version_number]=/([0-9]+\.[0-9]+\.[0-9]+)/.
+        match(hsh[:version])[1]
+      hsh
     end
     def self.content_stable
       Version_info.contents(setting_stable)
@@ -236,11 +264,11 @@ module Version_info
     def self.setting_unstable
       settings(SiSU_version_next_unstable)
     end
-    def self.content_stable
-      Version_info.contents(setting_stable)
+    def self.content_stable(rel)
+      Version_info.contents(setting_stable,rel)
     end
-    def self.content_unstable
-      Version_info.contents(setting_unstable)
+    def self.content_unstable(rel)
+      Version_info.contents(setting_unstable,rel)
     end
   end
   module Update
@@ -250,7 +278,8 @@ module Version_info
 with:
   #{vi_hash_next.sort}
 
-#{vi_content_current} becoming:
+#{vi_content_current}
+becoming:
 #{vi_content_next}
 proceed? }
       resp=Utils.answer?(ans)
@@ -265,39 +294,168 @@ proceed? }
         end
       end
     end
-    def self.update_stable
+    def self.update_stable(rel=:release)
       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
+        Version_info::Next.content_stable(rel),
       )
     end
-    def self.update_unstable
+    def self.update_unstable(rel=:release)
       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
+        Version_info::Next.content_unstable(rel),
       )
     end
     def self.changelog_header(vi)
+      vn=/([0-9]+\.[0-9]+\.[0-9]+)/.match(vi[:version])[1]
       <<-WOK
-** #{vi[:version]}.orig.tar.xz (#{vi[:date]}:#{vi[:date_stamp].gsub(/20\d\dw/,'')})
-http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/sisu_#{vi[:version]}
-http://git.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
+** #{vn}.orig.tar.xz (#{vi[:date]}:#{vi[:date_stamp].gsub(/20\d\dw/,'')})
+http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/sisu_#{vn}
+http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_#{vn}-1
+http://www.jus.uio.no/sisu/pkg/src/sisu_#{vn}.orig.tar.xz
+  sisu_#{vn}.orig.tar.xz
+  sisu_#{vn}-1.dsc
       WOK
     end
+    def self.changelog_header_release(filename,ch,vi)
+      ans=%{update #{Project_details.name.downcase} changelog header, open version:
+
+  #{ch}
+proceed? }
+      resp=Utils.answer?(ans)
+      if resp
+        fn="#{Dir.pwd}/#{filename}"
+        if File.writable?(fn)
+          changelog_arr_current = IO.readlines(fn)
+          changelog_arr_next=[]
+          changelog_arr_current.each do |line|
+            changelog_arr_next <<=if line =~/^\*\* [0-9]+\.[0-9]+\.[0-9]+(?:_pre_rel)?\.orig\.tar\.xz \(Open commit window: [0-9]{4}-[0-9]{2}-[0-9]{2}; Pre-Release\)\)$/
+              "** #{vi[:version]}.orig.tar.xz " \
+              + "(#{vi[:date]}:#{vi[:date_stamp].gsub(/20\d\dw/,'')})\n"
+            else line
+            end
+          end
+          if changelog_arr_current.length == changelog_arr_next.length
+            changelog_file=File.new(fn,'w+')
+            changelog_arr_next.flatten.each do |line|
+              changelog_file << line
+            end
+            changelog_file.close
+          else puts "expected changelog arrays to have same length, in: #{changelog_arr_current.length}, out: #{changelog_arr_next.length}"
+          end
+        else
+          puts %{*WARN* is the file or directory writable? could not create #{filename}}
+        end
+      end
+    end
+    def self.changelog_header_stable_filename
+      Version_info::Current.changelog_file_stable
+    end
+    def self.changelog_header_unstable_filename
+      Version_info::Current.changelog_file_unstable
+    end
     def self.changelog_header_stable
-      changelog_header(Version_info::Current.setting_stable)
+      ch=changelog_header(Version_info::Current.setting_stable)
+      changelog_header_release(
+        changelog_header_stable_filename,
+        ch,
+        Version_info::Current.setting_stable
+      )
     end
     def self.changelog_header_unstable
-      changelog_header(Version_info::Current.setting_unstable)
+      ch=changelog_header(Version_info::Current.setting_unstable)
+      changelog_header_release(
+        changelog_header_unstable_filename,
+        ch,
+        Version_info::Current.setting_unstable
+      )
+    end
+    def self.changelog_header_pre_release(vi)
+      vn=/([0-9]+\.[0-9]+\.[0-9]+)/.match(vi[:version])[1]
+      <<-WOK
+** #{vn}.orig.tar.xz (Open commit window: #{vi[:date]}; Pre-Release))
+http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/sisu_#{vn}
+http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_#{vn}-1
+http://www.jus.uio.no/sisu/pkg/src/sisu_#{vn}.orig.tar.xz
+  sisu_#{vn}.orig.tar.xz
+  sisu_#{vn}-1.dsc
+      WOK
+    end
+    def self.changelog_header_pre_release_write(filename,ch)
+      ans=%{update #{Project_details.name.downcase} changelog header, open version:
+
+  #{ch}
+proceed? }
+      resp=Utils.answer?(ans)
+      if resp
+        fn="#{Dir.pwd}/#{filename}"
+        if File.writable?(fn)
+          changelog_arr_current = IO.readlines(fn)
+          changelog_arr_next=[]
+          changelog_arr_current.each do |line|
+            changelog_arr_next <<=if line =~/^--- HEAD ---$/
+              line << ("\n" + ch)
+            else line
+            end
+          end
+          if changelog_arr_current.length == changelog_arr_next.length
+            changelog_file=File.new(fn,'w+')
+            changelog_arr_next.flatten.each do |line|
+              changelog_file << line
+            end
+            changelog_file.close
+          else puts "expected changelog arrays to have same length, in: #{changelog_arr_current.length}, out: #{changelog_arr_next.length}"
+          end
+        else
+          puts %{*WARN* is the file or directory writable? could not create #{filename}}
+        end
+      end
+    end
+    def self.changelog_header_stable_pre_release
+      ch=changelog_header_pre_release(Version_info::Current.setting_stable)
+      changelog_header_pre_release_write(changelog_header_stable_filename,ch)
+    end
+    def self.changelog_header_unstable_pre_release
+      ch=changelog_header_pre_release(Version_info::Current.setting_unstable)
+      changelog_header_pre_release_write(changelog_header_unstable_filename,ch)
+    end
+    def self.commit_changelog(rel=:release,msg)
+      system(%{
+        git commit -a -m"#{msg}"
+        git commit --amend
+      })
+    end
+    def self.tag_upstream
+      system(%{
+        git tag -a sisu_#{SiSU_version_next_stable} -m"SiSU #{SiSU_version_next_stable}"
+      })
+    end
+    def self.changelog_header_commit(rel=:release)
+      msg=(rel == :pre_release) \
+      ? "version & changelog, open commit window"
+      : "version & changelog, tag for release"
+      ans=%{commit #{msg}:\n\nproceed? }
+      resp=Utils.answer?(ans)
+      if resp
+        commit_changelog(rel,msg)
+      end
+    end
+    def self.changelog_header_commit_tag_upstream(rel=:release)
+      msg=(rel == :pre_release) \
+      ? "version & changelog, open commit window"
+      : "version & changelog, tag for release"
+      ans=%{commit #{msg}:\n\nproceed? }
+      resp=Utils.answer?(ans)
+      if resp
+        commit_changelog(rel,msg)
+        tag_upstream
+      end
     end
   end
   self
@@ -359,7 +517,7 @@ module Gemspecs
     puts <<-WOK
 --
 name:       #{vi[:project].downcase}
-version:    #{vi[:version]}
+version:    #{vi[:version_number]}
 date:       #{vi[:date]}
 summary:    #{vi[:project]}
     WOK
@@ -368,14 +526,14 @@ summary:    #{vi[:project]}
     <<-WOK
 Gem::Specification.new do |s|
   s.name           = '#{vi[:project].downcase}'
-  s.version        = '#{vi[:version]}'
+  s.version        = '#{vi[:version_number]}'
   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}/version/#{version}.yml'] +
                      Dir['data/#{Project_details.name.downcase}/image/*'] +
                      Dir['bin/#{Project_details.name.downcase}gem'] +
                      Dir['bin/#{Project_details.name.downcase}']
@@ -406,12 +564,12 @@ end
     def self.filename_stable
       Project_details.name.downcase \
       + '-' \
-      + Version_info::Current.setting_stable[:version]
+      + Version_info::Current.setting_stable[:version_number]
     end
     def self.filename_unstable
       Project_details.name.downcase \
       + '-' \
-      + Version_info::Current.setting_unstable[:version]
+      + Version_info::Current.setting_unstable[:version_number]
     end
     def self.info_stable
       Gemspecs.info(Version_info::Current.setting_stable)
@@ -462,12 +620,12 @@ end
     def self.filename_stable
       Project_details.name.downcase \
       + '-' \
-      + Version_info::Next.setting_stable[:version]
+      + Version_info::Next.setting_stable[:version_number]
     end
     def self.filename_unstable
       Project_details.name.downcase \
       + '-' \
-      + Version_info::Next.setting_unstable[:version]
+      + Version_info::Next.setting_unstable[:version_number]
     end
     def self.setting_stable
       Gemspecs.contents(
@@ -504,18 +662,17 @@ end
 module Package
   def self.sequence
     puts <<-WOK
-  --update-version  # update package version
+  --open-version                # update package version
+  --version-and-tag-for-release # git tags upstream version
   # not included:
-  # --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
+  # --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
 end
-
diff --git a/setup/qi_libs_base.rb b/setup/qi_libs_base.rb
index 982625e0..126811c8 100644
--- a/setup/qi_libs_base.rb
+++ b/setup/qi_libs_base.rb
@@ -142,7 +142,7 @@ module Version_info
   end
   module Current
     def self.yml_file_path(version)
-      "data/sisu/#{version}/v/version.yml"
+      "data/sisu/version/#{version}.yml"
     end
     def self.settings(file)
       v="#{Dir.pwd}/#{file}"
diff --git a/setup/rbuild_libs.rb b/setup/rbuild_libs.rb
index 9dc55bf7..b999704b 100644
--- a/setup/rbuild_libs.rb
+++ b/setup/rbuild_libs.rb
@@ -192,7 +192,7 @@ module Version_info
   end
   module Current
     def self.yml_file_path(version)
-      "data/sisu/#{version}/v/version.yml"
+      "data/sisu/version/#{version}.yml"
     end
     def self.settings(file)
       v="#{Dir.pwd}/#{file}"
@@ -208,10 +208,16 @@ module Version_info
       yml_file_path(SiSU_version_dir_unstable)
     end
     def self.setting_stable
-      settings(file_stable)
+      hsh=settings(file_stable)
+      hsh[:version_number]=/([0-9]+\.[0-9]+\.[0-9]+)/.
+        match(hsh[:version])[1]
+      hsh
     end
     def self.setting_unstable
-      settings(file_unstable)
+      hsh=settings(file_unstable)
+      hsh[:version_number]=/([0-9]+\.[0-9]+\.[0-9]+)/.
+        match(hsh[:version])[1]
+      hsh
     end
     def self.content_stable
       Version_info.contents(setting_stable)
@@ -373,7 +379,7 @@ module Gemspecs
     puts <<-WOK
 --
 name:       #{vi[:project].downcase}
-version:    #{vi[:version]}
+version:    #{vi[:version_number]}
 date:       #{vi[:date]}
 summary:    #{vi[:project]}
     WOK
@@ -382,14 +388,14 @@ summary:    #{vi[:project]}
     <<-WOK
 Gem::Specification.new do |s|
   s.name           = '#{vi[:project].downcase}'
-  s.version        = '#{vi[:version]}'
+  s.version        = '#{vi[:version_number]}'
   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}/#{version}/version.yml'] +
                      Dir['data/#{Project_details.name.downcase}/image/*'] +
                      Dir['bin/#{Project_details.name.downcase}gem'] +
                      Dir['bin/#{Project_details.name.downcase}']
@@ -420,12 +426,12 @@ end
     def self.filename_stable
       Project_details.name.downcase \
       + '-' \
-      + Version_info::Current.setting_stable[:version]
+      + Version_info::Current.setting_stable[:version_number]
     end
     def self.filename_unstable
       Project_details.name.downcase \
       + '-' \
-      + Version_info::Current.setting_unstable[:version]
+      + Version_info::Current.setting_unstable[:version_number]
     end
     def self.info_stable
       Gemspecs.info(Version_info::Current.setting_stable)
@@ -476,12 +482,12 @@ end
     def self.filename_stable
       Project_details.name.downcase \
       + '-' \
-      + Version_info::Next.setting_stable[:version]
+      + Version_info::Next.setting_stable[:version_number]
     end
     def self.filename_unstable
       Project_details.name.downcase \
       + '-' \
-      + Version_info::Next.setting_unstable[:version]
+      + Version_info::Next.setting_unstable[:version_number]
     end
     def self.setting_stable
       Gemspecs.contents(
@@ -515,4 +521,3 @@ end
     end
   end
 end
-
diff --git a/setup/sisu_version.rb b/setup/sisu_version.rb
index 572a8819..38216303 100644
--- a/setup/sisu_version.rb
+++ b/setup/sisu_version.rb
@@ -3,10 +3,8 @@ module SiSUversion
   SiSU_version_next_stable           = '5.8.0'  #% set version stable current
   SiSU_version_next_unstable         = '6.4.0'  #% set version unstable dev
   #% qi quick install file
-  SiSU_version_generic_next_stable   = '5.4.x'
-  SiSU_version_generic_next_unstable = '6.0.x'
-  SiSU_version_dir_stable            = 'v5'
-  SiSU_version_dir_unstable          = 'v6'
+  SiSU_version_dir_stable            = 'current'
+  SiSU_version_dir_unstable          = 'develop'
 end
 module Dev
   GPGpubKey                          = '1BB4B289'
-- 
cgit v1.2.3