judges 0.0.29 → 0.0.30
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/Rakefile +1 -0
- data/bin/judges +3 -1
- data/features/print.feature +9 -4
- data/judges.gemspec +2 -2
- data/lib/judges/commands/import.rb +1 -0
- data/lib/judges/commands/print.rb +10 -2
- data/test/commands/test_print.rb +15 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2966161948e1ac2ed8c36b5f0e515183a9f8ea02d6ddabf396e7bd5db98ca787
|
4
|
+
data.tar.gz: 227712553b74473211e835d5c1df9afbf03e00d8942639d137fea6d98d40a236
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 120d2cec10fbca12aa6a9107ea348236dd44e999a8499dbef93952cb2fb313ea11bb67c658d0ebb6b6ee4f002383d2f8177d75d06bd8cb01d547032222e6b9aa
|
7
|
+
data.tar.gz: 3cf907ef01704e0e11ffa8313226420536436571ab11ea9a25cf4d8c7cbc98e334cbb7e193ea5994910c36c20dcf29d0ae1d1fee040cefca9c7b5d2c0ec91a33
|
data/Gemfile.lock
CHANGED
@@ -3,7 +3,7 @@ PATH
|
|
3
3
|
specs:
|
4
4
|
judges (0.0.0)
|
5
5
|
backtrace (~> 0.3)
|
6
|
-
factbase (~> 0.0.
|
6
|
+
factbase (~> 0.0.29)
|
7
7
|
gli (~> 2.21)
|
8
8
|
loog (~> 0.2)
|
9
9
|
nokogiri (~> 1.10)
|
@@ -74,7 +74,7 @@ GEM
|
|
74
74
|
docile (1.4.0)
|
75
75
|
drb (2.2.1)
|
76
76
|
erubi (1.12.0)
|
77
|
-
factbase (0.0.
|
77
|
+
factbase (0.0.29)
|
78
78
|
json (~> 2.7)
|
79
79
|
loog (~> 0.2)
|
80
80
|
nokogiri (~> 1.10)
|
data/Rakefile
CHANGED
data/bin/judges
CHANGED
@@ -32,7 +32,7 @@ Encoding.default_internal = Encoding::UTF_8
|
|
32
32
|
class App
|
33
33
|
extend GLI::App
|
34
34
|
|
35
|
-
ver = '0.0.
|
35
|
+
ver = '0.0.30'
|
36
36
|
|
37
37
|
loog = Loog::REGULAR
|
38
38
|
|
@@ -115,6 +115,8 @@ class App
|
|
115
115
|
c.switch([:auto], default_value: false)
|
116
116
|
c.desc 'Only the facts that match the expression are printed'
|
117
117
|
c.flag([:query], default_value: '()')
|
118
|
+
c.desc 'Print even if target file already exists and is older than the factbase'
|
119
|
+
c.switch([:force], default_value: false)
|
118
120
|
c.action do |global, options, args|
|
119
121
|
require_relative '../lib/judges/commands/print'
|
120
122
|
Judges::Print.new(loog).run(options, args)
|
data/features/print.feature
CHANGED
@@ -4,7 +4,6 @@ Feature: Print
|
|
4
4
|
Scenario: Simple print of a small factbase, to YAML
|
5
5
|
Given I make a temp directory
|
6
6
|
Then I run bin/judges with "--verbose eval simple.fb '$fb.insert.foo = 42'"
|
7
|
-
Then I run bin/judges with "update . simple.fb"
|
8
7
|
Then I run bin/judges with "print --format=yaml simple.fb simple.yml"
|
9
8
|
Then Stdout contains "printed"
|
10
9
|
And Exit code is zero
|
@@ -12,7 +11,6 @@ Feature: Print
|
|
12
11
|
Scenario: Simple print of a small factbase, to JSON
|
13
12
|
Given I make a temp directory
|
14
13
|
Then I run bin/judges with "--verbose eval simple.fb '$fb.insert.foo = 42'"
|
15
|
-
Then I run bin/judges with "update . simple.fb"
|
16
14
|
Then I run bin/judges with "print --format=json simple.fb simple.json"
|
17
15
|
Then Stdout contains "printed"
|
18
16
|
And Exit code is zero
|
@@ -20,7 +18,6 @@ Feature: Print
|
|
20
18
|
Scenario: Simple print of a small factbase, to XML
|
21
19
|
Given I make a temp directory
|
22
20
|
Then I run bin/judges with "--verbose eval simple.fb '$fb.insert.foo = 42'"
|
23
|
-
Then I run bin/judges with "update . simple.fb"
|
24
21
|
Then I run bin/judges with "print --format=xml --auto simple.fb"
|
25
22
|
Then Stdout contains "printed"
|
26
23
|
And Exit code is zero
|
@@ -29,7 +26,15 @@ Feature: Print
|
|
29
26
|
Given I make a temp directory
|
30
27
|
Then I run bin/judges with "--verbose eval simple.fb '$fb.insert.foo = 42'"
|
31
28
|
Then I run bin/judges with "--verbose eval simple.fb '$fb.insert.foo = 43'"
|
32
|
-
Then I run bin/judges with "update . simple.fb"
|
33
29
|
Then I run bin/judges with "print '--query=(eq foo 43)' --auto simple.fb"
|
34
30
|
Then Stdout contains "printed"
|
35
31
|
And Exit code is zero
|
32
|
+
|
33
|
+
Scenario: Print twice, without --force
|
34
|
+
Given I make a temp directory
|
35
|
+
Then I run bin/judges with "--verbose eval simple.fb '$fb.insert.foo = 42'"
|
36
|
+
Then I run bin/judges with "print --auto simple.fb"
|
37
|
+
Then Stdout contains "printed"
|
38
|
+
Then I run bin/judges with "print --auto simple.fb"
|
39
|
+
Then Stdout contains "No need to print"
|
40
|
+
And Exit code is zero
|
data/judges.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
27
27
|
s.required_ruby_version = '>=3.2'
|
28
28
|
s.name = 'judges'
|
29
|
-
s.version = '0.0.
|
29
|
+
s.version = '0.0.30'
|
30
30
|
s.license = 'MIT'
|
31
31
|
s.summary = 'Command-Line Tool for a Factbase'
|
32
32
|
s.description = '
|
@@ -42,7 +42,7 @@ Gem::Specification.new do |s|
|
|
42
42
|
s.rdoc_options = ['--charset=UTF-8']
|
43
43
|
s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
44
44
|
s.add_runtime_dependency 'backtrace', '~> 0.3'
|
45
|
-
s.add_runtime_dependency 'factbase', '~>0.0.
|
45
|
+
s.add_runtime_dependency 'factbase', '~>0.0.29'
|
46
46
|
s.add_runtime_dependency 'gli', '~>2.21'
|
47
47
|
s.add_runtime_dependency 'loog', '~>0.2'
|
48
48
|
s.add_runtime_dependency 'nokogiri', '~> 1.10'
|
@@ -40,6 +40,7 @@ class Judges::Import
|
|
40
40
|
raise "File not found #{args[0].to_rel}" unless File.exist?(args[0])
|
41
41
|
start = Time.now
|
42
42
|
yaml = YAML.load_file(args[0], permitted_classes: [Time])
|
43
|
+
@loog.info("YAML loaded from #{args[0].to_rel} (#{yaml.size} facts)")
|
43
44
|
impex = Judges::Impex.new(@loog, args[1])
|
44
45
|
fb = impex.import(strict: false)
|
45
46
|
fb = Factbase::Looged.new(fb, @loog)
|
@@ -36,16 +36,24 @@ class Judges::Print
|
|
36
36
|
|
37
37
|
def run(opts, args)
|
38
38
|
raise 'At lease one argument required' if args.empty?
|
39
|
-
o = args[1]
|
40
39
|
f = args[0]
|
41
40
|
fb = Judges::Impex.new(@loog, f).import
|
42
41
|
fb.query("(not #{opts['query']})").delete! unless opts['query'].nil?
|
42
|
+
o = args[1]
|
43
43
|
if o.nil?
|
44
44
|
raise 'Either provide output file name or use --auto' unless opts[:auto]
|
45
45
|
o = File.join(File.dirname(f), File.basename(f).gsub(/\.[^.]*$/, ''))
|
46
46
|
o = "#{o}.#{opts[:format]}"
|
47
47
|
end
|
48
48
|
FileUtils.mkdir_p(File.dirname(o))
|
49
|
+
if !opts['force'] && File.exist?(o)
|
50
|
+
if File.mtime(f) < File.mtime(o)
|
51
|
+
@loog.info("No need to print to #{o.to_rel}, since it's up to date (#{File.size(o)} bytes)")
|
52
|
+
return
|
53
|
+
end
|
54
|
+
@loog.debug("The factbase #{f.to_rel} is younger than the target #{o.to_rel}, need to print")
|
55
|
+
end
|
56
|
+
start = Time.now
|
49
57
|
output =
|
50
58
|
case opts[:format].downcase
|
51
59
|
when 'yaml'
|
@@ -59,6 +67,6 @@ class Judges::Print
|
|
59
67
|
Factbase::ToXML.new(fb).xml
|
60
68
|
end
|
61
69
|
File.binwrite(o, output)
|
62
|
-
@loog.info("Factbase printed to #{o.to_rel} (#{File.size(o)} bytes)")
|
70
|
+
@loog.info("Factbase printed to #{o.to_rel} (#{File.size(o)} bytes) in #{format('%.02f', Time.now - start)}s")
|
63
71
|
end
|
64
72
|
end
|
data/test/commands/test_print.rb
CHANGED
@@ -44,4 +44,19 @@ class TestPrint < Minitest::Test
|
|
44
44
|
assert_equal(1, YAML.load_file(y)['facts'].size)
|
45
45
|
end
|
46
46
|
end
|
47
|
+
|
48
|
+
def test_print_twice
|
49
|
+
Dir.mktmpdir do |d|
|
50
|
+
f = File.join(d, 'base.fb')
|
51
|
+
fb = Factbase.new
|
52
|
+
fb.insert
|
53
|
+
File.binwrite(f, fb.export)
|
54
|
+
Judges::Print.new(Loog::NULL).run({ format: 'yaml', auto: true }, [f])
|
55
|
+
y = File.join(d, 'base.yaml')
|
56
|
+
assert(File.exist?(y))
|
57
|
+
mtime = File.mtime(y)
|
58
|
+
Judges::Print.new(Loog::NULL).run({ format: 'yaml', auto: true }, [f])
|
59
|
+
assert_equal(mtime, File.mtime(y))
|
60
|
+
end
|
61
|
+
end
|
47
62
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: judges
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.30
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backtrace
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.0.
|
33
|
+
version: 0.0.29
|
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.0.
|
40
|
+
version: 0.0.29
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: gli
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|