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
|