inat-get 0.9.0.18 → 0.9.2
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.
- checksums.yaml +4 -4
- data/lib/inat-get/app/application.rb +7 -1
- data/lib/inat-get/app/core/api.rb +1 -1
- data/lib/inat-get/app/core/task.rb +16 -1
- data/lib/inat-get/app/setup.rb +8 -0
- data/lib/inat-get/data/dsl/dataset.rb +1 -1
- data/lib/inat-get/data/dsl/reports/base.rb +60 -0
- data/lib/inat-get/data/dsl/reports/erb.rb +42 -0
- data/lib/inat-get/data/dsl/reports.rb +3 -0
- data/lib/inat-get/info.rb +2 -2
- metadata +4 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d982769c0da51e8d5c408de8299ce6ee2674b2013b816dff73cb61f2f9a1bd06
|
|
4
|
+
data.tar.gz: 163e3dd44f9e65cc9bfdb41c622bc0da686c344cd2df94ab36da69d808faa8c0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 855bda803c41a0d860ea243cd4debbd38bfa9af57cca2e03d11610a9353713eccf2c9fd6bd29982e0cb486f2f25339ad432b797dcc835c324ebb99a25ef0e997
|
|
7
|
+
data.tar.gz: 79a1ace30214d7c1761956c40ee787350c89317e40608faed77f3d79f5486184cf5ff2bfde3e904dad68558a775ec51537b1918ebbb892b412fcf6d8c81274e4
|
|
@@ -34,7 +34,13 @@ class INatGet::App::Main
|
|
|
34
34
|
api = nil
|
|
35
35
|
api = INatGet::App::Server::API::create api_socket, console: console if !@config[:offline]
|
|
36
36
|
|
|
37
|
-
tasks = @config[:tasks].map
|
|
37
|
+
tasks = @config[:tasks].map do |path|
|
|
38
|
+
if path.end_with?('.erb')
|
|
39
|
+
INatGet::App::Task::ERB::new path, @config, console: console, api: api
|
|
40
|
+
else
|
|
41
|
+
INatGet::App::Task::new path, @config, console: console, api: api
|
|
42
|
+
end
|
|
43
|
+
end
|
|
38
44
|
Process::warmup
|
|
39
45
|
INatGet::App::Worker::enqueue @config, *tasks, console: console, api: api
|
|
40
46
|
console.quit
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'erb'
|
|
4
|
+
|
|
3
5
|
require 'sequel'
|
|
4
6
|
Sequel.extension :core_extensions
|
|
5
7
|
Sequel.datetime_class = Time
|
|
@@ -8,6 +10,7 @@ Sequel.application_timezone = :local
|
|
|
8
10
|
|
|
9
11
|
require_relative '../../info'
|
|
10
12
|
require_relative '../../data/dsl/dsl'
|
|
13
|
+
require_relative '../../data/dsl/reports'
|
|
11
14
|
require_relative 'console_logger'
|
|
12
15
|
|
|
13
16
|
class INatGet::App::Task
|
|
@@ -67,7 +70,7 @@ class INatGet::App::Task
|
|
|
67
70
|
Sequel::Model.strict_param_setting = false
|
|
68
71
|
Sequel::Model.raise_on_save_failure = true
|
|
69
72
|
Sequel::Model.db = @db
|
|
70
|
-
|
|
73
|
+
Sequel::Model.db.loggers << ::Logger::new("sequel.log", level: :info)
|
|
71
74
|
require_relative '../../data/models'
|
|
72
75
|
require_relative '../../data/managers'
|
|
73
76
|
# # ... etc
|
|
@@ -80,3 +83,15 @@ class INatGet::App::Task
|
|
|
80
83
|
end
|
|
81
84
|
|
|
82
85
|
end
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class INatGet::App::Task::ERB < INatGet::App::Task
|
|
89
|
+
|
|
90
|
+
TRIM_MODE = ''
|
|
91
|
+
|
|
92
|
+
def execute
|
|
93
|
+
report = INatGet::Data::DSL::Report::ERB::new file: @path, trim_mode: TRIM_MODE
|
|
94
|
+
report.save
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
end
|
data/lib/inat-get/app/setup.rb
CHANGED
|
@@ -277,6 +277,14 @@ module INatGet::App::Setup
|
|
|
277
277
|
"#{ file }.inat"
|
|
278
278
|
elsif File.exist?("#{ file }.rb")
|
|
279
279
|
"#{ file }.rb"
|
|
280
|
+
elsif File.exist?("#{ file }.erb")
|
|
281
|
+
"#{ file }.erb"
|
|
282
|
+
elsif File.exist?("#{ file }.md.erb")
|
|
283
|
+
"#{ file }.md.erb"
|
|
284
|
+
elsif File.exist?("#{ file }.html.erb")
|
|
285
|
+
"#{ file }.html.erb"
|
|
286
|
+
elsif File.exist?("#{ file }.htm.erb")
|
|
287
|
+
"#{ file }.htm.erb"
|
|
280
288
|
else
|
|
281
289
|
$stderr.puts "❌ \e[1mTask file not found:\e[0m #{ file }\e[1m. Stopped!\e[0m"
|
|
282
290
|
exit Errno::ENOENT::Errno
|
|
@@ -213,7 +213,7 @@ class INatGet::Data::DSL::Dataset
|
|
|
213
213
|
|
|
214
214
|
case reflection[:type]
|
|
215
215
|
when :many_to_one
|
|
216
|
-
ids = query.distinct.select_map(reflection[:key])
|
|
216
|
+
ids = query.select(reflection[:key]).distinct.select_map(reflection[:key])
|
|
217
217
|
target.where(id: ids)
|
|
218
218
|
when :one_to_many, :many_to_many
|
|
219
219
|
# Для всех типов "много" используем ассоциативный датасет
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../../../info.rb'
|
|
4
|
+
require_relative '../dsl'
|
|
5
|
+
|
|
6
|
+
class INatGet::Data::DSL::Report
|
|
7
|
+
|
|
8
|
+
include INatGet::Data::DSL
|
|
9
|
+
|
|
10
|
+
def initialize mode: nil, suffix: nil, **data
|
|
11
|
+
@mode = mode
|
|
12
|
+
@data = data
|
|
13
|
+
@suffix = suffix
|
|
14
|
+
yield self if block_given?
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# @return [String]
|
|
18
|
+
def basename suffix = nil
|
|
19
|
+
suffix ||= @suffix
|
|
20
|
+
if suffix
|
|
21
|
+
self.name + ' -- ' + suffix
|
|
22
|
+
else
|
|
23
|
+
self.name
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @return [String]
|
|
28
|
+
def ext mode: nil
|
|
29
|
+
(mode || @mode)&.to_s
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @return [String]
|
|
33
|
+
def filename suffix: nil, mode: nil
|
|
34
|
+
if self.ext(mode: mode)
|
|
35
|
+
self.basename(suffix) + '.' + self.ext(mode: mode)
|
|
36
|
+
else
|
|
37
|
+
self.basename(suffix)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @return [String]
|
|
42
|
+
def render mode: nil
|
|
43
|
+
raise NotImplementedError, "Not implemented method 'render' for abstract Report", caller_locations
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# @return [void]
|
|
47
|
+
def save filename = nil, suffix: nil, mode: nil
|
|
48
|
+
filename ||= self.filename(suffix: suffix, mode: mode)
|
|
49
|
+
File.write filename, self.render(mode: mode)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def [] key
|
|
53
|
+
@data[key]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def []= key, value
|
|
57
|
+
@data[key] = value
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'erb'
|
|
4
|
+
|
|
5
|
+
require_relative 'base'
|
|
6
|
+
|
|
7
|
+
class INatGet::Data::DSL::Report::ERB < INatGet::Data::DSL::Report
|
|
8
|
+
|
|
9
|
+
def initialize code = nil, file: nil, ext: nil, trim_mode: nil, suffix: nil, **data, &block
|
|
10
|
+
@code = code
|
|
11
|
+
@code ||= File.read(file) if file
|
|
12
|
+
raise ArgumentError, "Source not specified", caller_locations unless @code
|
|
13
|
+
@ext = ext
|
|
14
|
+
@ext ||= File.extname(File.basename(file, '.erb')) if file
|
|
15
|
+
@erb = ::ERB::new @code, trim_mode: trim_mode
|
|
16
|
+
@erb.filename = file || '(erb)'
|
|
17
|
+
suffix ||= File.basename(File.basename(file, '.erb'), '.*') if file
|
|
18
|
+
super(mode: nil, suffix: suffix, **data, &block)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @return [Hash]
|
|
22
|
+
attr_reader :data
|
|
23
|
+
|
|
24
|
+
# @return [String]
|
|
25
|
+
def ext mode: nil
|
|
26
|
+
@ext
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# @return [String]
|
|
30
|
+
def render
|
|
31
|
+
@erb.result binding
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
module INatGet::Data::DSL
|
|
37
|
+
|
|
38
|
+
def erb_report code = nil, file: nil, ext: nil, trim_mode: nil, suffix: nil, **data, &block
|
|
39
|
+
INatGet::Data::DSL::Report::ERB::new(code, file: file, ext: ext, trim_mode: trim_mode, suffix: suffix, **data, &block)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
data/lib/inat-get/info.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: inat-get
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ivan Shikhalev
|
|
@@ -296,6 +296,9 @@ files:
|
|
|
296
296
|
- lib/inat-get/data/dsl/dataset.rb
|
|
297
297
|
- lib/inat-get/data/dsl/dsl.rb
|
|
298
298
|
- lib/inat-get/data/dsl/list.rb
|
|
299
|
+
- lib/inat-get/data/dsl/reports.rb
|
|
300
|
+
- lib/inat-get/data/dsl/reports/base.rb
|
|
301
|
+
- lib/inat-get/data/dsl/reports/erb.rb
|
|
299
302
|
- lib/inat-get/data/helpers/base.rb
|
|
300
303
|
- lib/inat-get/data/helpers/defs.rb
|
|
301
304
|
- lib/inat-get/data/helpers/defs/accuracy.rb
|