Commit 197ae829487d05e3be7203825d7c4d54ab291ee8

Thomas de Grivel 2023-02-23T18:22:36

fix logging

diff --git a/bin/rbpkg b/bin/rbpkg
index 2557c13..973b14b 100755
--- a/bin/rbpkg
+++ b/bin/rbpkg
@@ -2,7 +2,29 @@
 load "#{File.dirname(File.dirname(__FILE__))}/lib/rbpkg/log.rb"
 load "#{File.dirname(File.dirname(__FILE__))}/lib/rbpkg.rb"
 
-Rbpkg.init("rbpkg")
+$ARGS = ARGV
+
+def shift
+  usage if $ARGS == []
+  arg = $ARGS[0]
+  $ARGS = $ARGS[1..] || []
+  arg
+end
+
+verbose = 2   # print command output
+case $ARGS[0]
+when "-v"
+  verbose = 3 # print all messages
+  shift
+when "-q"
+  verbose = 1 # print commands
+  shift
+when "-qq"
+  verbose = 0 # print nothing
+  shift
+end
+
+Rbpkg.init("rbpkg", verbose)
 
 def usage()
   STDERR.puts """Usage: #{File.basename($0)} COMMAND REPO ...
@@ -37,15 +59,6 @@ Misc commands :
   exit 1
 end
 
-$ARGS = ARGV
-
-def shift
-  usage if $ARGS == []
-  arg = $ARGS[0]
-  $ARGS = $ARGS[1..] || []
-  arg
-end
-
 def rbpkg
   case shift
   when "-h"
diff --git a/bin/rbpkg_ci b/bin/rbpkg_ci
new file mode 100644
index 0000000..99a17c3
--- /dev/null
+++ b/bin/rbpkg_ci
@@ -0,0 +1,47 @@
+#!/usr/bin/env ruby
+load "#{File.dirname(File.dirname(__FILE__))}/lib/rbpkg/log.rb"
+load "#{File.dirname(File.dirname(__FILE__))}/lib/rbpkg/ci.rb"
+
+$ARGS = ARGV
+
+def shift
+  usage if $ARGS == []
+  arg = $ARGS[0]
+  $ARGS = $ARGS[1..] || []
+  arg
+end
+
+verbose = 2   # print command output
+case $ARGS[0]
+when "-v"
+  verbose = 3 # print all messages
+  shift
+when "-q"
+  verbose = 1 # print commands
+  shift
+when "-qq"
+  verbose = 0 # print nothing
+  shift
+end
+
+Rbpkg.init("rbpkg_ci", verbose)
+
+def usage()
+  STDERR.puts "Usage: #{File.basename($0)} REPO ..."
+  exit 1
+end
+
+def rbpkg_ci
+  case $ARGS[0]
+  when "-h"
+    usage
+  when "--help"
+    usage
+  end
+  Rbpkg.CI.tag
+  $ARGS.each do |name|
+    Rbpkg.Repos.repo(name).ci
+  end
+end
+
+rbpkg_ci
diff --git a/lib/rbpkg.rb b/lib/rbpkg.rb
index e16a422..86ade04 100644
--- a/lib/rbpkg.rb
+++ b/lib/rbpkg.rb
@@ -2,7 +2,6 @@ require 'time'
 load "#{File.dirname(__FILE__)}/rbpkg/repos.rb"
 
 module Rbpkg
-
   def self.build(repos)
     repos.each do |name|
       Repos.repo(name).build()
@@ -122,7 +121,8 @@ module Rbpkg
     end
   end
 
-  def self.init(name)
+  def self.init(name, verbose_level)
+    @@verbose_level = verbose_level
     [dir,
      lock_dir,
      log_dir
@@ -180,10 +180,6 @@ module Rbpkg
     "#{dir}/var/log/shpkg"
   end
 
-  def self.log_path(name)
-    "#{log_dir}/#{name}_#{date}_#{$$}.log"
-  end
-
   @@ncpu = nil
   def self.ncpu
     @@ncpu || @@ncpu = self.ncpu_fetch
@@ -327,7 +323,7 @@ def cmd!(string)
   true
 end
 
-def sh_quote (str)
+def sh_quote(str)
   if str.scan("\n") == []
     if str.match?(/^[-+\/=.,:^_0-9A-Za-z]*$/)
       str
diff --git a/lib/rbpkg/log.rb b/lib/rbpkg/log.rb
index 471556a..e7947ae 100644
--- a/lib/rbpkg/log.rb
+++ b/lib/rbpkg/log.rb
@@ -4,22 +4,30 @@ module Rbpkg
     @@logs = []
 
     def self.add(name)
-      @@logs << name unless logs.has?(name)
+      raise "already logging to #{name.inspect}" if @@logs.include?(name)
+      raise "log file exists: #{name.inspect}" if File.exist?(path(name))
+      @@logs << name
     end
 
     def self.init(name)
-      @@logs = [name]
+      @@logs = []
+      add(name)
+    end
+
+    def self.path(name)
+      "#{Rbpkg.log_dir}/#{name}_#{Rbpkg.date}_#{$$}.log"
     end
 
     def self.puts(string)
       @@logs.each do |name|
-        File.open(Rbpkg.log_path(name), "a") do |output|
+        File.open(path(name), "a") do |output|
           output.puts string
         end
       end
     end
 
     def self.remove(name)
+      raise "not logging to #{name.inspect}" unless @@logs.include?(name)
       @@logs = @@logs.without(name)
     end
   end