thinreports-template-cli 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +40 -41
- data/Rakefile +1 -1
- data/exe/thinreports-template-cli +2 -3
- data/lib/thinreports/template-cli/cli.rb +44 -0
- data/lib/thinreports/template-cli/datetime.rb +31 -0
- data/lib/thinreports/template-cli/thinreports.rb +29 -0
- data/lib/thinreports/template-cli/version.rb +5 -0
- data/lib/thinreports/template-cli/views.rb +103 -0
- data/lib/thinreports/template-cli.rb +2 -0
- data/thinreports-template-cli.gemspec +14 -17
- metadata +42 -39
- data/lib/thinreports/template/cli/commands.rb +0 -37
- data/lib/thinreports/template/cli/executor.rb +0 -52
- data/lib/thinreports/template/cli/version.rb +0 -3
- data/lib/thinreports/template/cli.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c01446ac5f5aca364c004e034ed55fd81dcf15c5
|
4
|
+
data.tar.gz: 4776236fe60edc99f03dd792270c69d29bc7004b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b07b21e31de9a97fa89f190faeb3cbe49330f3168d145b847b26864e4b1c49eeea2a20028341cd77e8f3fa62b54027f5769faf33edb649facd6dfc43d5e88b20
|
7
|
+
data.tar.gz: 70448ce9bf1fa3152fe4b7c9ac6992e353103a4a422d87540392359ca5c28725e5790378eecd9144196fa0032eb9680e19a5b56083e18ed8d05a11d38f66667c
|
data/README.md
CHANGED
@@ -1,64 +1,63 @@
|
|
1
|
-
|
1
|
+
[![Version](https://img.shields.io/gem/v/thinreports-template-cli.svg)](https://rubygems.org/gems/thinreports-template-cli)
|
2
2
|
|
3
|
-
|
3
|
+
# Thinreports Templete CLI
|
4
4
|
|
5
|
-
|
5
|
+
## Installation
|
6
6
|
|
7
|
-
```
|
8
|
-
gem
|
7
|
+
```sh
|
8
|
+
$ gem install thinreports-template-cli
|
9
9
|
```
|
10
10
|
|
11
|
-
|
11
|
+
## Usage
|
12
12
|
|
13
|
-
|
13
|
+
Thinreports Templete CLI is able to receive parameters of text blocks in a TLF (thinreports layout format) file as options of the command line program.
|
14
14
|
|
15
|
-
|
15
|
+
The command supports the following formats:
|
16
16
|
|
17
|
-
|
17
|
+
* table
|
18
|
+
* csv
|
19
|
+
* json
|
20
|
+
* pdf
|
18
21
|
|
19
|
-
|
22
|
+
```sh
|
23
|
+
$ thinreports-template-cli sample.tlf --help
|
24
|
+
thinreports-template-cli tlf [options]
|
20
25
|
|
21
|
-
|
22
|
-
|
23
|
-
Commands:
|
24
|
-
thinreports-template-cli config --layout=LAYOUT # Create config file for .tlf
|
25
|
-
thinreports-template-cli generate --layout=LAYOUT # Generate a PDF file from .tlf to stdout
|
26
|
-
thinreports-template-cli help [COMMAND] # Describe available commands or one specific command
|
27
|
-
thinreports-template-cli info --layout=LAYOUT # Display information for .tlf
|
28
|
-
```
|
26
|
+
Basic Options
|
27
|
+
--format=table|csv|json|pdf
|
29
28
|
|
30
|
-
|
31
|
-
|
29
|
+
Thinreports Layout File Options
|
30
|
+
--date=[DATE] This is a sample date.
|
31
|
+
--subject=[SUBJECT] This is a sample subject.
|
32
|
+
--name=[NAME] This is a sample name.
|
33
|
+
--number=[NUMBER] This is a sample number.
|
34
|
+
--date_jp=[DATE_JP] This is a sample date for Japanese era name.
|
32
35
|
```
|
33
36
|
|
34
|
-
|
35
|
-
$ thinreports-template-cli config --layout=~/template.tlf > config.yml
|
36
|
-
$ cat ~/config.yml
|
37
|
-
---
|
38
|
-
name: Taro Tottori
|
39
|
-
item: Toripy Plush Toy
|
40
|
-
price: 2980
|
41
|
-
```
|
37
|
+
### Datetime Support
|
42
38
|
|
43
|
-
|
44
|
-
|
45
|
-
|
39
|
+
* A option value for a text block of a datetime format is parsed by [DateTime#parse](https://ruby-doc.org/stdlib/libdoc/date/rdoc/DateTime.html#method-c-parse).
|
40
|
+
* A text block of a datetime format is rendered by the strftime format of [DateTime#strftime](https://ruby-doc.org/stdlib/libdoc/date/rdoc/DateTime.html#method-i-strftime) and [era_ja](https://rubygems.org/gems/era_ja).
|
41
|
+
* If a text block of a datetime format does not have a command line option or a default value of a TLF file, this text block will be rendered with [Datetime#now](https://ruby-doc.org/stdlib/libdoc/date/rdoc/DateTime.html#method-c-now).
|
46
42
|
|
47
|
-
|
48
|
-
$ thinreports-template-cli generate --layout=~/template.tlf --config=~/config.yml | lpr -P ApeosPort_V_C3375__aa_bb_cc_
|
49
|
-
```
|
50
|
-
|
51
|
-
## Development
|
43
|
+
## Examples
|
52
44
|
|
53
|
-
|
45
|
+
Output to a PDF file.
|
54
46
|
|
55
|
-
|
56
|
-
|
57
|
-
|
47
|
+
```bash
|
48
|
+
$ thinreports-template-cli sample.tlf --name="Your name" --date=2017-04-01" --format=pdf > sample.pdf
|
49
|
+
```
|
58
50
|
|
59
|
-
|
51
|
+
Output to a printer via the lpr command.
|
60
52
|
|
53
|
+
```bash
|
54
|
+
$ thinreports-template-cli sample.tlf --name="Your name" --date=2017-04-01" --format=pdf | lpr -P ApeosPort_V_C3375__aa_bb_cc_
|
55
|
+
```
|
61
56
|
|
62
57
|
## License
|
63
58
|
|
64
59
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
60
|
+
|
61
|
+
## Author
|
62
|
+
|
63
|
+
Masayuki Higashino
|
data/Rakefile
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'thinreports'
|
3
|
+
require 'thinreports/template-cli/version'
|
4
|
+
require 'thinreports/template-cli/thinreports'
|
5
|
+
require 'thinreports/template-cli/views'
|
6
|
+
|
7
|
+
module Thinreports
|
8
|
+
module TemplateCLI
|
9
|
+
class CLI
|
10
|
+
|
11
|
+
def self.start(argv)
|
12
|
+
|
13
|
+
layout = nil
|
14
|
+
format = nil
|
15
|
+
params = {}
|
16
|
+
|
17
|
+
options = OptionParser.new
|
18
|
+
options.version = Thinreports::TemplateCLI::VERSION
|
19
|
+
options.banner = "#{options.program_name} tlf [options]"
|
20
|
+
options.separator('')
|
21
|
+
options.separator('Basic Options')
|
22
|
+
options.on('--format=table|csv|json|pdf') { |value|
|
23
|
+
format = value
|
24
|
+
}
|
25
|
+
|
26
|
+
layout = argv.find{ |arg| FileTest.file?(arg) }
|
27
|
+
if layout
|
28
|
+
report = Thinreports::Report.new(layout:layout)
|
29
|
+
options.separator('')
|
30
|
+
options.separator('Thinreports Layout File Options')
|
31
|
+
report.textblocks.each do |shape|
|
32
|
+
options.on("--#{shape.id}=[#{shape.id.upcase}]", shape.attributes['description']) { |value|
|
33
|
+
params[shape.id] = value
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
options.parse!(argv)
|
39
|
+
puts Views.new(layout, format, params).render
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'era_ja'
|
3
|
+
|
4
|
+
module Thinreports
|
5
|
+
module TemplateCLI
|
6
|
+
class DateTime
|
7
|
+
|
8
|
+
private_class_method :new
|
9
|
+
def initialize(datetime)
|
10
|
+
@datetime = datetime
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.now
|
14
|
+
new(::DateTime.now)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.parse(*args)
|
18
|
+
new(::DateTime.parse(*args))
|
19
|
+
end
|
20
|
+
|
21
|
+
def strftime(format)
|
22
|
+
@datetime.to_era(format)
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_s
|
26
|
+
@datetime.to_s
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'thinreports'
|
2
|
+
|
3
|
+
class Thinreports::Report::Base
|
4
|
+
|
5
|
+
def textblocks
|
6
|
+
default_layout.format.shapes.values.select{ |s|
|
7
|
+
s.type == Thinreports::Core::Shape::TextBlock::TYPE_NAME
|
8
|
+
}
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
class Thinreports::Core::Shape::TextBlock::Format
|
14
|
+
|
15
|
+
def format_value
|
16
|
+
value = ''
|
17
|
+
if format_datetime_format
|
18
|
+
value << format_datetime_format
|
19
|
+
end
|
20
|
+
if format_number_delimiter
|
21
|
+
value << "delimiter=[#{format_number_delimiter}]"
|
22
|
+
end
|
23
|
+
if format_number_precision
|
24
|
+
value << "/precision=[#{format_number_precision}]"
|
25
|
+
end
|
26
|
+
return value
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'tty-table'
|
2
|
+
require 'csv'
|
3
|
+
require 'json'
|
4
|
+
require 'thinreports'
|
5
|
+
require 'thinreports/template-cli/datetime'
|
6
|
+
|
7
|
+
module Thinreports
|
8
|
+
module TemplateCLI
|
9
|
+
class Views
|
10
|
+
|
11
|
+
def initialize(layout, format, params)
|
12
|
+
@layout = layout
|
13
|
+
@format = format
|
14
|
+
@params = params
|
15
|
+
end
|
16
|
+
|
17
|
+
def render
|
18
|
+
case @format
|
19
|
+
when 'table'; to_table
|
20
|
+
when 'csv' ; to_csv
|
21
|
+
when 'json' ; to_json
|
22
|
+
when 'pdf' ; to_pdf
|
23
|
+
else to_table
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def to_table
|
30
|
+
table = TTY::Table.new(header:header, rows:rows)
|
31
|
+
TTY::Table::Renderer::ASCII.new(table).render
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_csv
|
35
|
+
CSV.generate do |csv|
|
36
|
+
csv << header
|
37
|
+
rows.each do |row|
|
38
|
+
csv << row.values
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def to_json
|
44
|
+
rows.to_json
|
45
|
+
end
|
46
|
+
|
47
|
+
def to_pdf
|
48
|
+
report.generate
|
49
|
+
end
|
50
|
+
|
51
|
+
def header
|
52
|
+
@header ||= %w(id ref_id display multiple default_value option_value real_value fmt_base fmt_type fmt_value desc)
|
53
|
+
end
|
54
|
+
|
55
|
+
def rows
|
56
|
+
unless @rows
|
57
|
+
@rows = []
|
58
|
+
report.textblocks&.each do |shape|
|
59
|
+
@rows << {
|
60
|
+
'id' => shape.id,
|
61
|
+
'ref_id' => shape.ref_id,
|
62
|
+
'display' => shape.display?,
|
63
|
+
'multiple' => shape.multiple?,
|
64
|
+
'default_value' => shape.value,
|
65
|
+
'option_value' => @params[shape.id].to_s,
|
66
|
+
'real_value' => report.page.manager.shapes[shape.id.to_sym]&.internal&.real_value,
|
67
|
+
'fmt_base' => shape.format_base,
|
68
|
+
'fmt_type' => shape.format_type,
|
69
|
+
'fmt_value' => shape.format_value,
|
70
|
+
'desc' => shape.attributes['description']
|
71
|
+
}
|
72
|
+
end
|
73
|
+
end
|
74
|
+
return @rows
|
75
|
+
end
|
76
|
+
|
77
|
+
def report
|
78
|
+
unless @report
|
79
|
+
@report = Thinreports::Report.new(layout:@layout)
|
80
|
+
@report.start_new_page
|
81
|
+
@report.default_layout.format.shapes.values.each do |shape|
|
82
|
+
case shape.type
|
83
|
+
when Thinreports::Core::Shape::TextBlock::TYPE_NAME
|
84
|
+
if shape.has_format?
|
85
|
+
case shape.format_type
|
86
|
+
when 'datetime'
|
87
|
+
if @params[shape.id]
|
88
|
+
@params[shape.id] = DateTime.parse(@params[shape.id])
|
89
|
+
else
|
90
|
+
@params[shape.id] = shape.value.empty? ? DateTime.now : DateTime.parse(shape.value)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
@report.page.values(@params)
|
97
|
+
end
|
98
|
+
return @report
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -1,31 +1,28 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
lib = File.expand_path('../lib', __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'thinreports/template
|
3
|
+
require 'thinreports/template-cli/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
6
|
spec.name = 'thinreports-template-cli'
|
8
|
-
spec.version = Thinreports::
|
9
|
-
spec.authors = ['
|
7
|
+
spec.version = Thinreports::TemplateCLI::VERSION
|
8
|
+
spec.authors = ['Masayuki Higashino']
|
10
9
|
spec.email = ['msyk@hgsn.info']
|
11
|
-
|
12
|
-
spec.
|
13
|
-
spec.description = %q{A command line tool to generate a PDF file from YAML config file and .tlf}
|
10
|
+
spec.summary = %q{A command line tool to generate a PDF file from TLF with command line options and YAML config file.}
|
11
|
+
spec.description = spec.summary
|
14
12
|
spec.homepage = 'https://github.com/mh61503891/thinreports-template-cli'
|
15
13
|
spec.license = 'MIT'
|
16
|
-
|
17
14
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
15
|
spec.bindir = 'exe'
|
19
16
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
17
|
spec.require_paths = ['lib']
|
21
|
-
|
22
|
-
spec.add_dependency 'thinreports', '0.
|
23
|
-
spec.add_dependency '
|
24
|
-
spec.add_dependency '
|
25
|
-
spec.
|
26
|
-
spec.add_development_dependency '
|
27
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
18
|
+
spec.required_ruby_version = '>= 2.3.0'
|
19
|
+
spec.add_dependency 'thinreports', '0.10.0'
|
20
|
+
spec.add_dependency 'era_ja', '0.5.2'
|
21
|
+
spec.add_dependency 'tty-table', '0.8.0'
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.15'
|
23
|
+
spec.add_development_dependency 'rake', '~> 12.0'
|
28
24
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
29
|
-
spec.add_development_dependency '
|
30
|
-
spec.add_development_dependency '
|
25
|
+
spec.add_development_dependency 'minitest-reporters', '~> 1.0'
|
26
|
+
spec.add_development_dependency 'awesome_print', '~> 1.0'
|
27
|
+
spec.add_development_dependency 'pry', '~> 0.10'
|
31
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thinreports-template-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Masayuki Higashino
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thinreports
|
@@ -16,128 +16,128 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.10.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.10.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: era_ja
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.5.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.5.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: tty-table
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.8.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.8.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
62
|
-
type: :
|
61
|
+
version: '1.15'
|
62
|
+
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: '1.15'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '12.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '12.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: minitest
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '5.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '5.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name: minitest
|
98
|
+
name: minitest-reporters
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '1.0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '1.0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: awesome_print
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.
|
117
|
+
version: '1.0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.
|
124
|
+
version: '1.0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: pry
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.10
|
131
|
+
version: '0.10'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.10
|
139
|
-
description: A command line tool to generate a PDF file from
|
140
|
-
.
|
138
|
+
version: '0.10'
|
139
|
+
description: A command line tool to generate a PDF file from TLF with command line
|
140
|
+
options and YAML config file.
|
141
141
|
email:
|
142
142
|
- msyk@hgsn.info
|
143
143
|
executables:
|
@@ -154,10 +154,12 @@ files:
|
|
154
154
|
- bin/console
|
155
155
|
- bin/setup
|
156
156
|
- exe/thinreports-template-cli
|
157
|
-
- lib/thinreports/template
|
158
|
-
- lib/thinreports/template/cli
|
159
|
-
- lib/thinreports/template
|
160
|
-
- lib/thinreports/template
|
157
|
+
- lib/thinreports/template-cli.rb
|
158
|
+
- lib/thinreports/template-cli/cli.rb
|
159
|
+
- lib/thinreports/template-cli/datetime.rb
|
160
|
+
- lib/thinreports/template-cli/thinreports.rb
|
161
|
+
- lib/thinreports/template-cli/version.rb
|
162
|
+
- lib/thinreports/template-cli/views.rb
|
161
163
|
- thinreports-template-cli.gemspec
|
162
164
|
homepage: https://github.com/mh61503891/thinreports-template-cli
|
163
165
|
licenses:
|
@@ -171,7 +173,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
171
173
|
requirements:
|
172
174
|
- - ">="
|
173
175
|
- !ruby/object:Gem::Version
|
174
|
-
version:
|
176
|
+
version: 2.3.0
|
175
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
178
|
requirements:
|
177
179
|
- - ">="
|
@@ -179,8 +181,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
181
|
version: '0'
|
180
182
|
requirements: []
|
181
183
|
rubyforge_project:
|
182
|
-
rubygems_version: 2.
|
184
|
+
rubygems_version: 2.5.2
|
183
185
|
signing_key:
|
184
186
|
specification_version: 4
|
185
|
-
summary: A command line tool to generate a PDF file from
|
187
|
+
summary: A command line tool to generate a PDF file from TLF with command line options
|
188
|
+
and YAML config file.
|
186
189
|
test_files: []
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'thor'
|
2
|
-
require 'thinreports/template/cli/executor'
|
3
|
-
|
4
|
-
module Thinreports; module Template; module CLI; class Commands < Thor
|
5
|
-
|
6
|
-
desc 'generate', 'Generate a PDF file from .tlf to stdout'
|
7
|
-
option :layout, required:true
|
8
|
-
option :config
|
9
|
-
def generate
|
10
|
-
print Thinreports::Template::CLI::Executor.new(get_report, get_config).generate
|
11
|
-
end
|
12
|
-
|
13
|
-
desc 'info', 'Display information for .tlf'
|
14
|
-
option :layout, required:true
|
15
|
-
option :config
|
16
|
-
def info
|
17
|
-
print Thinreports::Template::CLI::Executor.new(get_report, get_config).info
|
18
|
-
end
|
19
|
-
|
20
|
-
desc 'config', 'Create config file for .tlf'
|
21
|
-
option :layout, required:true
|
22
|
-
def config
|
23
|
-
print Thinreports::Template::CLI::Executor.new(get_report).config
|
24
|
-
end
|
25
|
-
|
26
|
-
no_commands {
|
27
|
-
|
28
|
-
def get_report
|
29
|
-
return Thinreports::Report.new(layout:File.expand_path(options.layout))
|
30
|
-
end
|
31
|
-
|
32
|
-
def get_config
|
33
|
-
options.config && YAML.load_file(File.expand_path(options.config)) || {}
|
34
|
-
end
|
35
|
-
|
36
|
-
}
|
37
|
-
end; end; end; end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'thinreports'
|
2
|
-
require 'yaml'
|
3
|
-
require 'wareki'
|
4
|
-
require 'kosi'
|
5
|
-
|
6
|
-
module Thinreports; module Template; module CLI; class Executor
|
7
|
-
|
8
|
-
def initialize(report, config=nil)
|
9
|
-
@report = report
|
10
|
-
@config = config
|
11
|
-
end
|
12
|
-
|
13
|
-
def generate
|
14
|
-
@report.start_new_page
|
15
|
-
@report.default_layout.format.shapes.values.each do |shape|
|
16
|
-
case shape.type
|
17
|
-
when Thinreports::Core::Shape::TextBlock::TYPE_NAME
|
18
|
-
if shape.has_format? && shape.format_type == 'datetime'
|
19
|
-
@config[shape.id] ||= Date.today
|
20
|
-
end
|
21
|
-
else
|
22
|
-
end
|
23
|
-
end
|
24
|
-
@report.page.values(@config)
|
25
|
-
@report.generate
|
26
|
-
end
|
27
|
-
|
28
|
-
def info
|
29
|
-
kosi = Kosi::Table.new({
|
30
|
-
align: Kosi::Align::TYPE::LEFT,
|
31
|
-
header: %w(b:id b:type b:display? bf:value tb:has_format? tb:format_type)
|
32
|
-
})
|
33
|
-
return kosi.render(@report.default_layout.format.shapes.values.map { |s|
|
34
|
-
record = [s.id, s.type, s.display?, s.value]
|
35
|
-
case s.type
|
36
|
-
when Thinreports::Core::Shape::TextBlock::TYPE_NAME
|
37
|
-
record += [s.has_format?, s.format_type]
|
38
|
-
else
|
39
|
-
record += [nil, nil]
|
40
|
-
end
|
41
|
-
})
|
42
|
-
end
|
43
|
-
|
44
|
-
def config
|
45
|
-
@config = {}
|
46
|
-
@report.default_layout.format.shapes.values.map do |shape|
|
47
|
-
@config[shape.id] = shape.value
|
48
|
-
end
|
49
|
-
YAML.dump(@config)
|
50
|
-
end
|
51
|
-
|
52
|
-
end; end; end; end
|