Libisi © Logintas AG

Quickstart

Console:

gem install libisi
apt-get install liblog4r-ruby, libruby1.8, libprogressbar-ruby1.8, libcmdparse-ruby

Your script test.rb:

#!/usr/bin/ruby
require "libisi"
init_libisi(:ui => "console")

args = optparse(:arguments => [["USERNAME","Please provide your username"]])

$log.info("Started")
if $ui.question("Hello #{args[0]}, yes or now?", :default => true)
  $log.info("You selected yes")

  $ui.progress_bar("Items",["a","b","z"]) {|v|
    if $ui.progress_bar_enabled?
      # print in progressbar
      $ui.progress_message("Processing item: #{v}")
    else
      # print item to console
      p v
    end
    sleep 1
  }

else
  $log.warn("You selected no!")
end 

exit 0

try:

ruby test.rb -h
ruby test.rb SOMENAME
ruby test.rb --progress SOMENAME
ruby test.rb -v SOMENAME
ruby test.rb -vv SOMENAME

Requirements

To use the base functionality, these packages are required on debian systems:

  • liblog4r-ruby, libruby1.8, libprogressbar-ruby1.8, libcmdparse-ruby

For additionaly functionalities install these packages:

  • libtmail-ruby1.8,libtext-format-ruby1.8

For generating charts:

  • libjfreechart-java

Usage

Initialize

#!/usr/bin/ruby
require 'libisi'
init_libisi(:ui => "console")

Standard commandline options =

Parse the commandline options with:

args = optparse {|o|

  # additional options  
  o.on("-d", "--doit","Do something.") do
    # if you get here the option --doit is given
    # if mutliple -d exist this will be executed
    # multiple times
  end

  o.on("-c","--config <file>") do |config_file|
    # config_file is the given argument
    ...
  end
}

For more information see: cmdparse.rubyforge.org

Logging

For addidtional information on Log4r see

/usr/share/doc/liblog4r-ruby1.8/html/index.html

or libisi.rb source code how this library is used.

Commandline options added to script:

"-q","--quiet"
"-v","--verbose"

Usage

Simple logging mechanism. Try to aviod normal brackets. If you use a block like $log.info“Something” the block will not be evaluated if the log level is not enabled.

$log.warn{"Log"} 
$log.debug("abcd") if $log.debug?
# same as
$log.debug{"abcd"}

Default Logging is only to stdout.

Additional Loggers

Normal logger with levels from INFO to FATAL.

new_logger("archivlog", "/var/log/archive", :level => Logger::INFO)

Logger that only logs Level SKIPPED.

new_logger("only_debug", "/var/log/debugonly", :only => Logger::SKIPPED)

Logger that only logs Level DEBUG with another pattern

new_logger("other_format", "/var/temp/debugging", :only => Logger::DEBUG, :pattern => "%d: %m")

For more information on pattern see:

/usr/share/doc/liblog4r-ruby1.8/html/rdoc/files/log4r/formatter/patternformatter_rb.html

More Loglevels

Log with other level, add option :log_levels to initialization.

init_libisi(:log_levels => [:CONFIG, :DEBUG, :INFO, :NEW_LEVEL, :WARN, :ERROR, :FATAL])

Display Progressbars (console)

Command line options added by script:

"--progress"

If progress is enabled (–progress given on commandline):

$ui.progress_bar_enabled?

Or you can enable/disable progress_bar with

$ui.enable_progress_bar

respectively

$u.enable_progress_bar(false)

Display Progressbar

Only if –progress is given on commandline.

progress_bar("Myprogress", amount_of_objects) {
  ...
  # increment the progressbar by 1
  pinc
  ...
}

Display Status Information

You also can display status information on the bottom of the progressbar by using

pinc("Processing")
# or
pinc("Processing", object.name)

or simply set the message without increment the progress with:

pmsg("Processing", object.name)

Appendix

SVN:

Links:

Release:

  • gem install echoe rubyforge

  • rake manifest

  • rake release

  • rake publish_docs