olsen 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +2 -2
- data/README +17 -1
- data/bin/olsen +65 -10
- data/lib/olsen.rb +35 -37
- data/lib/olsen/version.rb +1 -1
- data/test/tc_initframework.rb +39 -0
- metadata +5 -5
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README
    CHANGED
    
    | @@ -1 +1,17 @@ | |
| 1 | 
            -
            Olsen | 
| 1 | 
            +
            =Olsen
         | 
| 2 | 
            +
            ==A simple reporter.
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            ===Overview
         | 
| 5 | 
            +
            Olsen is a framework that wraps the Sadie gem and provides a facility for producing reports which make use of data managed in a Sadie-style primer chassis.
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ===Usage
         | 
| 8 | 
            +
            1. create/choose a directory to put the olsen framework in (or use /var/olsen, the default...ensure writable)
         | 
| 9 | 
            +
            2. call olsen -init [ -framework-dir /my/dir ]
         | 
| 10 | 
            +
            3. define jobs in jobs folder and filters, outputs, and inbound data primers in primers folder
         | 
| 11 | 
            +
            4. call olsen -process <job>
         | 
| 12 | 
            +
            5. find output product in output folder
         | 
| 13 | 
            +
            6. Rejoice!
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ===Todo
         | 
| 16 | 
            +
            * enable a 'olsen -init -with-examples' that will create a functioning olsen framework with example ini files, sqlite databases and queries, pdf outputs, formatting filters, etc.
         | 
| 17 | 
            +
            * provide docs on job and pdf ini-file format
         | 
    
        data/bin/olsen
    CHANGED
    
    | @@ -1,14 +1,69 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
            $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
         | 
| 2 3 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
                
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                
         | 
| 10 | 
            -
                 | 
| 11 | 
            -
             | 
| 12 | 
            -
                
         | 
| 4 | 
            +
            require 'olsen'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            # define usage writer
         | 
| 7 | 
            +
            def write_usage( msg=nil )
         | 
| 8 | 
            +
                if defined? msg
         | 
| 9 | 
            +
                    puts "\n===  ERR: #{msg} ===\n\n"
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
                usage_text = <<TXT
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                # to init framework with examples
         | 
| 14 | 
            +
                olsen -init -framework-dir <dir>  # defaults to /var/olsen
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                # to process jobs
         | 
| 17 | 
            +
                olsen -process [-framework-dir <dir>] <job1> <job2> ... <jobn>
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            TXT
         | 
| 20 | 
            +
                puts "USAGE:\n#{usage_text}"
         | 
| 21 | 
            +
            end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            # validate args
         | 
| 24 | 
            +
            if ARGV.length < 1
         | 
| 25 | 
            +
                write_usage "not enough arguments"
         | 
| 26 | 
            +
                exit
         | 
| 13 27 | 
             
            end
         | 
| 14 28 |  | 
| 29 | 
            +
            mainarg                 = ARGV.first
         | 
| 30 | 
            +
            secarg                  = ARGV[1]
         | 
| 31 | 
            +
            framework_dirpath       = "/var/olsen"
         | 
| 32 | 
            +
            restargs                = ARGV[1..(ARGV.length-1)]
         | 
| 33 | 
            +
            if secarg == "-framework-dir"
         | 
| 34 | 
            +
                if ARGV.length < 3
         | 
| 35 | 
            +
                    write_usage "no framework dir given"
         | 
| 36 | 
            +
                    exit
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
                framework_dirpath   = ARGV[2]
         | 
| 39 | 
            +
                if mainarg == "-process"
         | 
| 40 | 
            +
                    if ARGV.length < 4
         | 
| 41 | 
            +
                        write_usage "no jobs listed"
         | 
| 42 | 
            +
                        exit
         | 
| 43 | 
            +
                    end
         | 
| 44 | 
            +
                    restargs        = ARGV[3..(ARGV.length-1)]
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
            end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            Olsen.setFrameworkDir framework_dirpath
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            if ARGV.length > 0
         | 
| 51 | 
            +
                case mainarg
         | 
| 52 | 
            +
                when "-process"
         | 
| 53 | 
            +
                    # process each input file
         | 
| 54 | 
            +
                    restargs.each do |infile|
         | 
| 55 | 
            +
                        puts "processing: #{infile}"
         | 
| 56 | 
            +
                        Olsen.process infile
         | 
| 57 | 
            +
                    end
         | 
| 58 | 
            +
                when "-init"
         | 
| 59 | 
            +
                    if ! File.writable? framework_dirpath
         | 
| 60 | 
            +
                        write_usage "directory not writable (#{framework_dirpath})"
         | 
| 61 | 
            +
                    end
         | 
| 62 | 
            +
                    Olsen.initFramework
         | 
| 63 | 
            +
                else
         | 
| 64 | 
            +
                    write_usage
         | 
| 65 | 
            +
                    exit
         | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
            end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
             | 
    
        data/lib/olsen.rb
    CHANGED
    
    | @@ -12,7 +12,6 @@ def O( key, params=nil ) | |
| 12 12 | 
             
                if defined? params
         | 
| 13 13 | 
             
                    if params.respond_to? "has_key?"
         | 
| 14 14 | 
             
                        if params.has_key? :filter
         | 
| 15 | 
            -
            #                 puts "got filter!!!"
         | 
| 16 15 | 
             
                            filter = params[:filter]
         | 
| 17 16 | 
             
                            if filter.respond_to? "each"
         | 
| 18 17 | 
             
                                ret = Olsen::filter instance.get( key ), filter
         | 
| @@ -24,7 +23,6 @@ def O( key, params=nil ) | |
| 24 23 | 
             
                        end
         | 
| 25 24 | 
             
                    end
         | 
| 26 25 | 
             
                end
         | 
| 27 | 
            -
            #     puts "O(#{key}): NO PARAMS?"
         | 
| 28 26 | 
             
                instance.get( key )
         | 
| 29 27 |  | 
| 30 28 | 
             
            end
         | 
| @@ -33,8 +31,6 @@ class Olsen | |
| 33 31 |  | 
| 34 32 | 
             
                def self.filter( value, filters )
         | 
| 35 33 |  | 
| 36 | 
            -
            #         puts "filters: #{filters}"
         | 
| 37 | 
            -
                    
         | 
| 38 34 | 
             
                    # validate filters
         | 
| 39 35 | 
             
                    defined? filters \
         | 
| 40 36 | 
             
                        or return value
         | 
| @@ -43,13 +39,9 @@ class Olsen | |
| 43 39 |  | 
| 44 40 | 
             
                    instance = Sadie::getCurrentSadieInstance
         | 
| 45 41 |  | 
| 46 | 
            -
                    #pp(instance)
         | 
| 47 | 
            -
                    
         | 
| 48 42 | 
             
                    fhnd = "filter.#{filters[0]}"
         | 
| 49 43 | 
             
                    f = instance.get fhnd
         | 
| 50 44 |  | 
| 51 | 
            -
            #         puts "f(#{fhnd}): #{f}"
         | 
| 52 | 
            -
                    
         | 
| 53 45 | 
             
                    if filters.length > 1
         | 
| 54 46 | 
             
                        rem = filters[1..(filters.length-1)]
         | 
| 55 47 | 
             
                        ret = f.call value
         | 
| @@ -61,14 +53,24 @@ class Olsen | |
| 61 53 | 
             
                    end
         | 
| 62 54 | 
             
                end
         | 
| 63 55 |  | 
| 56 | 
            +
                def self.initFramework
         | 
| 57 | 
            +
                    if ! defined? @@framework_dirpath
         | 
| 58 | 
            +
                        puts "framework dirpath not set...aborting."
         | 
| 59 | 
            +
                        return nil
         | 
| 60 | 
            +
                    end        
         | 
| 61 | 
            +
                    puts "initializing olsen framework in #{@@framework_dirpath}"
         | 
| 62 | 
            +
                    [ "output", "jobs", "primers" ].each do |dir|
         | 
| 63 | 
            +
                        Dir.mkdir File.join( @@framework_dirpath, dir )
         | 
| 64 | 
            +
                    end
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
                
         | 
| 67 | 
            +
                def self.setFrameworkDir( dirpath )
         | 
| 68 | 
            +
                    @@framework_dirpath = dirpath
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
                
         | 
| 64 71 | 
             
                def self.registerFilter( name, &block )
         | 
| 65 72 | 
             
                    instance = Sadie::getCurrentSadieInstance
         | 
| 66 73 | 
             
                    instance.set "filter.#{name}", block
         | 
| 67 | 
            -
            #         if ! defined? @@filters
         | 
| 68 | 
            -
            #             @@filters = { name => block }
         | 
| 69 | 
            -
            #         else
         | 
| 70 | 
            -
            #             @@filters[name] = block
         | 
| 71 | 
            -
            #         end
         | 
| 72 74 | 
             
                end
         | 
| 73 75 |  | 
| 74 76 | 
             
                def self.initSadie( params )
         | 
| @@ -99,10 +101,19 @@ class Olsen | |
| 99 101 | 
             
                    end
         | 
| 100 102 |  | 
| 101 103 | 
             
                    # init sadie
         | 
| 102 | 
            -
            #         puts "init storage!"
         | 
| 103 104 | 
             
                    storage = Sadie::getSadieInstance( sadieparams )
         | 
| 104 105 |  | 
| 105 | 
            -
                    
         | 
| 106 | 
            +
                    # add olsen plugin handlers
         | 
| 107 | 
            +
                    plugins_dirpath = File.join(
         | 
| 108 | 
            +
                        ENV['GEM_HOME'],
         | 
| 109 | 
            +
                        "gems/olsen-#{Olsen::VERSION}",
         | 
| 110 | 
            +
                        "lib/olsen/primer_plugins"
         | 
| 111 | 
            +
                    )
         | 
| 112 | 
            +
                    if ! File.exists? plugins_dirpath   # for dev
         | 
| 113 | 
            +
                        plugins_dirpath = "lib/olsen/primer_plugins"
         | 
| 114 | 
            +
                    end        
         | 
| 115 | 
            +
                    storage.addPrimerPluginsDirPath plugins_dirpath
         | 
| 116 | 
            +
                    storage.initializePrimers
         | 
| 106 117 | 
             
                end
         | 
| 107 118 |  | 
| 108 119 | 
             
                def self.process( job, storage )
         | 
| @@ -112,9 +123,16 @@ class Olsen | |
| 112 123 | 
             
                        return nil
         | 
| 113 124 | 
             
                    end
         | 
| 114 125 |  | 
| 126 | 
            +
                    # turn files into hashes
         | 
| 115 127 | 
             
                    if ! job.respond_to? "each"
         | 
| 116 128 | 
             
                        if File.exists? job
         | 
| 117 129 | 
             
                            job = Sadie::iniFileToHash( job )
         | 
| 130 | 
            +
                        elsif defined? @@framework_dirpath
         | 
| 131 | 
            +
                            jobdirpath = File.join( @@framework_dirpath, "jobs" )
         | 
| 132 | 
            +
                            jobfile = File.join jobdirpath, "#{job}.job" 
         | 
| 133 | 
            +
                            if File.exists? jobfile
         | 
| 134 | 
            +
                                job = Sadie::iniFileToHash( jobfile )
         | 
| 135 | 
            +
                            end
         | 
| 118 136 | 
             
                        else
         | 
| 119 137 | 
             
                            puts "job param was non-hash and was not a path to valid job file"
         | 
| 120 138 | 
             
                            return nil
         | 
| @@ -126,29 +144,9 @@ class Olsen | |
| 126 144 | 
             
                        puts "job has no output definition"
         | 
| 127 145 | 
             
                        return nil
         | 
| 128 146 | 
             
                    end
         | 
| 129 | 
            -
             | 
| 130 | 
            -
            #         sadieparams = {
         | 
| 131 | 
            -
            #             "sadie.primer_plugins_dirpath" => "lib/olsen/primer_plugins",
         | 
| 132 | 
            -
            #             "sadie.primers_dirpath" => "primers"
         | 
| 133 | 
            -
            #         }
         | 
| 134 | 
            -
                    
         | 
| 135 | 
            -
                    # set keys from job
         | 
| 136 | 
            -
            #         [ "sadie", "parameters","olsen" ].each do |ptype|
         | 
| 137 | 
            -
            #             if job.has_key? ptype 
         | 
| 138 | 
            -
            #                 job[ptype].each do |key,value|
         | 
| 139 | 
            -
            #                     if ptype.eql? "sadie"
         | 
| 140 | 
            -
            #                         sadieparams["sadie.#{key}"] = value
         | 
| 141 | 
            -
            #                     else
         | 
| 142 | 
            -
            #                         sadieparams["#{key}"] = value
         | 
| 143 | 
            -
            #                     end
         | 
| 144 | 
            -
            #                 end
         | 
| 145 | 
            -
            #             end
         | 
| 146 | 
            -
            #         end
         | 
| 147 | 
            -
                    
         | 
| 148 | 
            -
             | 
| 149 | 
            -
                    
         | 
| 150 | 
            -
                    
         | 
| 147 | 
            +
                            
         | 
| 151 148 | 
             
                    # call output triggers
         | 
| 149 | 
            +
                    storage = Sadie::getCurrentSadieInstance
         | 
| 152 150 | 
             
                    job["output"].each do |x,type|
         | 
| 153 151 | 
             
                        outputkey = "output.#{type}"
         | 
| 154 152 | 
             
                        puts "processing output trigger: #{outputkey}"
         | 
    
        data/lib/olsen/version.rb
    CHANGED
    
    
| @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
         | 
| 2 | 
            +
            $:.unshift ENV["GEM_HOME"]
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            require "test/unit"
         | 
| 5 | 
            +
            require "sadie"
         | 
| 6 | 
            +
            require "olsen"
         | 
| 7 | 
            +
            require "tmpdir"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            class TestInitFramework < Test::Unit::TestCase
         | 
| 10 | 
            +
                def test_simple
         | 
| 11 | 
            +
                    #ofdir = "test/olsen_framework_test"
         | 
| 12 | 
            +
                    
         | 
| 13 | 
            +
                    Dir.mktmpdir("olsen_testdir") do | dir |
         | 
| 14 | 
            +
                    
         | 
| 15 | 
            +
                        # create temp output and sessdirs
         | 
| 16 | 
            +
                        outputdir = File.join( dir, "output" )
         | 
| 17 | 
            +
                        Dir.mkdir outputdir
         | 
| 18 | 
            +
                        sessdir = File.join( dir, "session" )
         | 
| 19 | 
            +
                        Dir.mkdir sessdir
         | 
| 20 | 
            +
                        
         | 
| 21 | 
            +
                        s = Olsen::initSadie( "sadie.primers_dirpath" => "#{ofdir}/primers",
         | 
| 22 | 
            +
                                              "sadie.sessions_dirpath" => sessdir,
         | 
| 23 | 
            +
                                              "olsen.output_dirpath" => outputdir  )
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                        # --------------- test pdf ---------------
         | 
| 26 | 
            +
                        # process some olsenry
         | 
| 27 | 
            +
                        output = nil
         | 
| 28 | 
            +
                        Olsen::process( File.join( ofdir, "jobs/outputtest_pdf.job" ),s  ) do |sadie|
         | 
| 29 | 
            +
                        
         | 
| 30 | 
            +
                        
         | 
| 31 | 
            +
                            # test
         | 
| 32 | 
            +
                            output_path = sadie.get( "output.outputtest_pdf.pdf" )
         | 
| 33 | 
            +
                            output = File.exists? output_path
         | 
| 34 | 
            +
                        end
         | 
| 35 | 
            +
                        assert_equal( output, true   )
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: olsen
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.6
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,11 +9,11 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012-04- | 
| 12 | 
            +
            date: 2012-04-18 00:00:00.000000000Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: sadie
         | 
| 16 | 
            -
              requirement: & | 
| 16 | 
            +
              requirement: &11535020 !ruby/object:Gem::Requirement
         | 
| 17 17 | 
             
                none: false
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 19 | 
             
                - - ! '>='
         | 
| @@ -21,7 +21,7 @@ dependencies: | |
| 21 21 | 
             
                    version: '0'
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: * | 
| 24 | 
            +
              version_requirements: *11535020
         | 
| 25 25 | 
             
            description: Olsen is a reporting tool intended to be used with Sadie.
         | 
| 26 26 | 
             
            email:
         | 
| 27 27 | 
             
            - fred@landmetrics.com
         | 
| @@ -46,7 +46,6 @@ files: | |
| 46 46 | 
             
            - lib/olsen/primer_plugins/Filter.plugin.rb
         | 
| 47 47 | 
             
            - lib/olsen/primer_plugins/PDFINI.plugin.rb
         | 
| 48 48 | 
             
            - lib/olsen/version.rb
         | 
| 49 | 
            -
            - olsen-0.0.2.gem
         | 
| 50 49 | 
             
            - olsen.gemspec
         | 
| 51 50 | 
             
            - test/olsen_framework_test/jobs/outputtest_filter.job
         | 
| 52 51 | 
             
            - test/olsen_framework_test/jobs/outputtest_ltx.job
         | 
| @@ -67,6 +66,7 @@ files: | |
| 67 66 | 
             
            - test/olsen_framework_test/primers/output/outputtext_tex.tex.erb
         | 
| 68 67 | 
             
            - test/olsen_framework_test/primers/testdata.ini
         | 
| 69 68 | 
             
            - test/tc_framework_outputtest.rb
         | 
| 69 | 
            +
            - test/tc_initframework.rb
         | 
| 70 70 | 
             
            - test/tc_outputpdf.rb
         | 
| 71 71 | 
             
            - test/tc_outputsimple.rb
         | 
| 72 72 | 
             
            homepage: http://www.landmetrics.com/Olsen
         |