ruby-dagger 0.1.1 → 0.2.0
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/.gitignore +1 -0
- data/.rubocop.yml +3 -0
- data/Gemfile +2 -0
- data/Rakefile +3 -1
- data/bin/console +1 -0
- data/lib/dagger.rb +4 -2
- data/lib/dagger/context.rb +2 -0
- data/lib/dagger/default.rb +58 -22
- data/lib/dagger/generator.rb +18 -4
- data/lib/dagger/generator/regexp.rb +2 -0
- data/lib/dagger/generator/require.rb +2 -0
- data/lib/dagger/generator/require_name.rb +3 -2
- data/lib/dagger/generator/string.rb +3 -13
- data/lib/dagger/graph.rb +11 -6
- data/lib/dagger/version.rb +10 -0
- data/lib/dagger/vertex.rb +84 -24
- data/ruby-dagger.gemspec +8 -10
- metadata +36 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f9f8d4432457feb3dc6ba9ec83c29f75f2acf0844fd7c9b6ab123d3555f6d91
|
4
|
+
data.tar.gz: 2bffbf05b225e888c28f36d3cb25c4277b616d35d6bcdec7bc40c5f7e266fd2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1ec64aeaddec996a0235df76ebc797ab2ec0c04cef3aa1cc4482054a5d7248a4100d8e4420aeecbff6a3a589bf6664d96e75c3e974bc4cd7e14632f9cad49f8
|
7
|
+
data.tar.gz: c30423f432e38dd25dbb525c2458b6508b746f4b53057b6ef27b8eca8fe4ca6ee996c2131e3cf1d8f8faa1633fb7f410c71d1366a27a1d13f795fefaf81090dc
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'bundler/setup'
|
2
4
|
require 'bundler/gem_tasks'
|
3
5
|
|
@@ -11,4 +13,4 @@ desc 'Run RSpec'
|
|
11
13
|
require 'rspec/core/rake_task'
|
12
14
|
RSpec::Core::RakeTask.new(:spec)
|
13
15
|
|
14
|
-
task default: %i[rubocop
|
16
|
+
task default: %i[spec rubocop]
|
data/bin/console
CHANGED
data/lib/dagger.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'json'
|
2
4
|
require 'yaml'
|
3
5
|
require 'dagger/graph'
|
@@ -5,8 +7,8 @@ require 'dagger/graph'
|
|
5
7
|
# Manage a DAG, stored in a posix file structure
|
6
8
|
#
|
7
9
|
module Dagger
|
8
|
-
def self.load(dir)
|
9
|
-
Graph.load(dir)
|
10
|
+
def self.load(dir, **kwargs)
|
11
|
+
Graph.load(dir, **kwargs)
|
10
12
|
end
|
11
13
|
end
|
12
14
|
|
data/lib/dagger/context.rb
CHANGED
data/lib/dagger/default.rb
CHANGED
@@ -1,20 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'set'
|
4
|
+
require 'key_tree/refinements'
|
2
5
|
require_relative 'context'
|
3
6
|
require_relative 'generator'
|
4
7
|
|
5
8
|
module Dagger
|
6
9
|
# Default value generator for a dictionary
|
7
10
|
class Default
|
8
|
-
|
11
|
+
using KeyTree::Refinements
|
12
|
+
|
13
|
+
def self.proc(*args)
|
14
|
+
new(*args).default_proc
|
15
|
+
end
|
16
|
+
|
17
|
+
# Initialize a default value generator for a +vertex+
|
9
18
|
#
|
10
19
|
# :call-seq:
|
11
|
-
# new(
|
20
|
+
# new(graph, vertex) => Dagger::Default
|
12
21
|
# new(*, cached: false)
|
13
22
|
# new(*, rule_prefix: '_default')
|
14
|
-
def initialize(
|
15
|
-
|
23
|
+
def initialize(vertex,
|
24
|
+
cached: false,
|
25
|
+
fallback: nil,
|
26
|
+
rule_prefix: '_default')
|
27
|
+
@vertex = vertex
|
16
28
|
@cached = cached
|
17
|
-
@
|
29
|
+
@fallback = fallback
|
30
|
+
@rule_prefix = rule_prefix.to_key_path
|
18
31
|
@default_proc = ->(tree, key) { generate(tree, key) }
|
19
32
|
@locks = Set[]
|
20
33
|
end
|
@@ -32,21 +45,41 @@ module Dagger
|
|
32
45
|
|
33
46
|
# Generate a default value for a +key+, possibly caching the
|
34
47
|
# result in the +tree+.
|
35
|
-
# Raises a +KeyError+ f the default value cannot be generated.
|
36
48
|
#
|
37
49
|
# :call-seq:
|
38
50
|
# generate(tree, key) => value || KeyError
|
51
|
+
#
|
52
|
+
# Raises a +KeyError+ if the default value cannot be generated.
|
53
|
+
# Raises a +RuntimeError+ in case of a deadlock for +key+.
|
39
54
|
def generate(tree, key)
|
40
|
-
key =
|
41
|
-
|
55
|
+
key = key.to_key_path
|
56
|
+
with_locked_key(key) { |locked_key| cached_value(tree, locked_key) }
|
57
|
+
end
|
42
58
|
|
43
|
-
|
44
|
-
|
59
|
+
private
|
60
|
+
|
61
|
+
# Process a +block+ with mutex for +key+
|
62
|
+
#
|
63
|
+
# :call-seq:
|
64
|
+
# with_locked_key(key &->(locked_key)) => result
|
65
|
+
def with_locked_key(key)
|
66
|
+
raise %(deadlock detected: "#{key}") unless @locks.add?(key)
|
67
|
+
yield(key)
|
45
68
|
ensure
|
46
69
|
@locks.delete(key)
|
47
70
|
end
|
48
71
|
|
49
|
-
|
72
|
+
# Return the default value for +key+, caching it in +tree+ if enabled.
|
73
|
+
#
|
74
|
+
# :call-seq:
|
75
|
+
# cached_value(tree, key) => value || KeyError
|
76
|
+
def cached_value(tree, key)
|
77
|
+
result = process(key)
|
78
|
+
return result unless result.nil?
|
79
|
+
result = @fallback&.[](key)
|
80
|
+
ensure
|
81
|
+
tree[key] = result if cached? && !result.nil?
|
82
|
+
end
|
50
83
|
|
51
84
|
# Process value generation rules for +context+, raising a +KeyError+
|
52
85
|
# if a value could not be generated. Catches :result thows from rule
|
@@ -56,21 +89,23 @@ module Dagger
|
|
56
89
|
# yield => value || KeyError
|
57
90
|
def process(key)
|
58
91
|
catch do |ball|
|
59
|
-
default_rules(key)
|
60
|
-
context = Context.new(
|
61
|
-
|
92
|
+
default_rules(key)&.each do |rule|
|
93
|
+
context = Context.new(dictionary: @vertex,
|
94
|
+
result: ball,
|
95
|
+
vertex: @vertex)
|
62
96
|
process_rule_chain(rule, context)
|
63
97
|
end
|
64
|
-
|
98
|
+
nil
|
65
99
|
end
|
66
100
|
end
|
67
101
|
|
68
102
|
# Return the default value generation rules for a +key+.
|
69
103
|
#
|
70
104
|
# :call-seq:
|
71
|
-
# default_rules(key) => Array of Hash
|
105
|
+
# default_rules(key) => Array of Hash
|
72
106
|
def default_rules(key)
|
73
|
-
@
|
107
|
+
result = @vertex.fetch(@rule_prefix + key, nil)
|
108
|
+
result
|
74
109
|
end
|
75
110
|
|
76
111
|
# Process the methods in a rule chain
|
@@ -78,12 +113,13 @@ module Dagger
|
|
78
113
|
# :call-seq:
|
79
114
|
# process_rule_chain(rule_chain, context)
|
80
115
|
def process_rule_chain(rule_chain, context)
|
81
|
-
|
82
|
-
|
83
|
-
|
116
|
+
catch do |ball|
|
117
|
+
context.stop = ball
|
118
|
+
rule_chain.each do |key, arg|
|
119
|
+
klass = Dagger::Generate.const_get(camelize(key))
|
120
|
+
klass[context, arg, &->(value) { throw context.result, value }]
|
121
|
+
end
|
84
122
|
end
|
85
|
-
rescue StopIteration
|
86
|
-
nil
|
87
123
|
end
|
88
124
|
|
89
125
|
# Convert snake_case to CamelCase
|
data/lib/dagger/generator.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'forwardable'
|
2
4
|
|
3
5
|
module Dagger
|
@@ -40,16 +42,14 @@ module Dagger
|
|
40
42
|
|
41
43
|
private
|
42
44
|
|
43
|
-
delegate %i[dictionary] => :@context
|
45
|
+
delegate %i[dictionary vertex] => :@context
|
44
46
|
|
45
47
|
# Stop processing the current rule chain
|
46
48
|
#
|
47
49
|
# :call-seq:
|
48
50
|
# stop
|
49
|
-
#
|
50
|
-
# Raises +StopIteration+
|
51
51
|
def stop
|
52
|
-
|
52
|
+
throw @context.stop
|
53
53
|
end
|
54
54
|
|
55
55
|
# Update context attributes with new values
|
@@ -67,6 +67,20 @@ module Dagger
|
|
67
67
|
def enumerable(value)
|
68
68
|
value.respond_to?(:each) ? value : [value]
|
69
69
|
end
|
70
|
+
|
71
|
+
# Format a +string+ with values from a +dictionary+
|
72
|
+
#
|
73
|
+
# :call-seq:
|
74
|
+
# format(string)
|
75
|
+
def format_string(string)
|
76
|
+
hash = Hash.new do |_, key|
|
77
|
+
result = @context.dictionary[key]
|
78
|
+
next result unless result.nil?
|
79
|
+
return nil
|
80
|
+
end
|
81
|
+
|
82
|
+
format(string, hash)
|
83
|
+
end
|
70
84
|
end
|
71
85
|
end
|
72
86
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../generator'
|
2
4
|
|
3
5
|
module Dagger
|
@@ -9,9 +11,8 @@ module Dagger
|
|
9
11
|
# - ...
|
10
12
|
class RequireName < Dagger::Generator
|
11
13
|
def process(regexps)
|
12
|
-
string = dictionary['_meta.name']
|
13
14
|
stop unless enumerable(regexps).any? do |regexp|
|
14
|
-
::Regexp.new(regexp).match?(
|
15
|
+
::Regexp.new(regexp).match?(vertex.name)
|
15
16
|
end
|
16
17
|
end
|
17
18
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative '../generator'
|
2
4
|
|
3
5
|
module Dagger
|
@@ -12,22 +14,10 @@ module Dagger
|
|
12
14
|
class String < Dagger::Generator
|
13
15
|
def process(strings)
|
14
16
|
enumerable(strings).each do |fmtstr|
|
15
|
-
result = format_string(fmtstr
|
17
|
+
result = format_string(fmtstr)
|
16
18
|
yield result unless result.nil?
|
17
19
|
end
|
18
20
|
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
# Format a +string+ with values from a +dictionary+
|
23
|
-
#
|
24
|
-
# :call-seq:
|
25
|
-
# format_string(string, dictionary)
|
26
|
-
def format_string(string, dictionary)
|
27
|
-
Kernel.format(string, Hash.new { |_, key| dictionary[key] })
|
28
|
-
rescue KeyError
|
29
|
-
nil
|
30
|
-
end
|
31
21
|
end
|
32
22
|
end
|
33
23
|
end
|
data/lib/dagger/graph.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'tangle'
|
2
4
|
require 'tangle/mixin/directory'
|
3
5
|
require_relative 'vertex'
|
@@ -5,17 +7,16 @@ require_relative 'vertex'
|
|
5
7
|
module Dagger
|
6
8
|
# Specialization of Tangle::DAG
|
7
9
|
class Graph < Tangle::DAG
|
8
|
-
|
9
|
-
|
10
|
-
def self.load(dir)
|
10
|
+
def self.load(dir, cached: false)
|
11
|
+
@cached = cached
|
11
12
|
dir_options = {
|
12
13
|
root: File.realpath(dir),
|
13
14
|
loaders: %i[symlink_loader directory_loader keytree_loader]
|
14
15
|
}
|
15
|
-
new(directory: dir_options)
|
16
|
+
new(directory: dir_options, currify: true)
|
16
17
|
end
|
17
18
|
|
18
|
-
def initialize(
|
19
|
+
def initialize(mixins: [Tangle::Mixin::Directory], **)
|
19
20
|
@deferred_edges = []
|
20
21
|
super
|
21
22
|
@deferred_edges.each do |args|
|
@@ -28,6 +29,10 @@ module Dagger
|
|
28
29
|
vertices.select { |vertex| yield(self, vertex) }
|
29
30
|
end
|
30
31
|
|
32
|
+
def cached?
|
33
|
+
!(!@cached)
|
34
|
+
end
|
35
|
+
|
31
36
|
protected
|
32
37
|
|
33
38
|
def symlink_loader(path:, parent:, lstat:, **)
|
@@ -42,7 +47,7 @@ module Dagger
|
|
42
47
|
return unless lstat.directory?
|
43
48
|
|
44
49
|
path = local_path(path)
|
45
|
-
vertex = Vertex.new(path)
|
50
|
+
vertex = Vertex.new(path, cached: cached?)
|
46
51
|
add_vertex(vertex)
|
47
52
|
return true if parent.nil?
|
48
53
|
parent = local_path(parent)
|
data/lib/dagger/vertex.rb
CHANGED
@@ -1,59 +1,119 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'key_tree'
|
4
|
+
require 'key_tree/refinements'
|
2
5
|
require_relative 'default'
|
3
6
|
|
4
7
|
module Dagger
|
5
8
|
# Vertex class for Dagger, representing a filesystem directory
|
9
|
+
#
|
10
|
+
# dir/
|
11
|
+
# file.yaml => keytree
|
12
|
+
# prefix@file.yaml => prefix.keytree
|
13
|
+
#
|
14
|
+
# +forest+ = [ +meta+ = {},
|
15
|
+
# +local+ [ { file_keys }, ... ],
|
16
|
+
# [ { Default } ],
|
17
|
+
# +inherited+ = [ [ parent ], ... ]
|
18
|
+
# ]
|
19
|
+
#
|
6
20
|
class Vertex
|
7
|
-
|
8
|
-
initialize_forest
|
21
|
+
using KeyTree::Refinements
|
9
22
|
|
10
|
-
|
11
|
-
|
12
|
-
meta['_meta.
|
23
|
+
def initialize(name, cached: false)
|
24
|
+
@forest = initialize_forest(cached)
|
25
|
+
@meta['_meta.name'] = name
|
26
|
+
@meta['_meta.basename'] = File.basename(name)
|
27
|
+
@meta['_meta.dirname'] = File.dirname(name)
|
13
28
|
end
|
14
29
|
|
15
|
-
|
30
|
+
def to_key_forest
|
31
|
+
@forest
|
32
|
+
end
|
33
|
+
alias to_key_wood to_key_forest
|
16
34
|
|
17
35
|
def name
|
18
|
-
|
36
|
+
@forest['_meta.name']
|
19
37
|
end
|
38
|
+
alias to_s name
|
20
39
|
|
21
40
|
def [](key)
|
22
|
-
key =
|
23
|
-
|
24
|
-
|
41
|
+
key = key.to_key_path
|
42
|
+
@inherited[key.drop(1)] if key.prefix?('^')
|
43
|
+
@forest[key]
|
25
44
|
end
|
26
45
|
|
27
|
-
def fetch(key)
|
28
|
-
|
46
|
+
def fetch(key, *default, &block)
|
47
|
+
key = key.to_key_path
|
48
|
+
@inherited.fetch(key.drop(1), *default, &block) if key.prefix?('^')
|
49
|
+
@forest.fetch(key, *default, &block)
|
29
50
|
end
|
30
51
|
|
31
52
|
def <<(keytree)
|
32
|
-
local << keytree
|
53
|
+
@local << keytree
|
33
54
|
end
|
34
55
|
|
35
56
|
def edge_added(edge)
|
36
57
|
return unless edge.head?(self)
|
37
|
-
inherited << edge.tail.
|
58
|
+
@inherited << edge.tail.to_key_wood
|
38
59
|
end
|
39
60
|
|
40
61
|
def edge_removed(edge)
|
41
62
|
return unless edge.head?(self)
|
42
|
-
inherited.reject! { |tree| tree.equal?(edge.tail.
|
63
|
+
@inherited.reject! { |tree| tree.equal?(edge.tail.to_key_wood) }
|
43
64
|
end
|
44
65
|
|
45
|
-
|
66
|
+
def added_to_graph(graph)
|
67
|
+
raise %(belongs another graph) if @graph&.!= graph
|
68
|
+
@graph = graph
|
69
|
+
end
|
70
|
+
|
71
|
+
def removed_from_graph(graph)
|
72
|
+
raise %(not part of graph) if @graph&.!= graph
|
73
|
+
@graph = nil
|
74
|
+
end
|
75
|
+
|
76
|
+
def flatten(cleanup: true)
|
77
|
+
forest = initialize_forest(true)
|
78
|
+
|
79
|
+
forest.key_paths.select { |key| key.prefix?('_default') }.each do |key|
|
80
|
+
forest[key.drop(1)]
|
81
|
+
end
|
82
|
+
|
83
|
+
flattened = forest.flatten
|
84
|
+
return flattened unless cleanup
|
85
|
+
flattened.to_h.delete_if { |key| key.to_s.start_with?('_') }
|
86
|
+
flattened
|
87
|
+
end
|
88
|
+
|
89
|
+
def to_h
|
90
|
+
flatten(cleanup: true).to_h
|
91
|
+
end
|
92
|
+
|
93
|
+
def to_yaml
|
94
|
+
flatten(cleanup: true).to_yaml
|
95
|
+
end
|
96
|
+
|
97
|
+
def to_json
|
98
|
+
flatten(cleanup: true).to_json
|
99
|
+
end
|
46
100
|
|
47
101
|
private
|
48
102
|
|
49
|
-
def initialize_forest
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
103
|
+
def initialize_forest(cached)
|
104
|
+
forest = KeyTree::Forest.new
|
105
|
+
forest << @meta ||= KeyTree::Tree.new
|
106
|
+
forest << @local ||= KeyTree::Forest.new
|
107
|
+
forest << default = KeyTree::Forest.new
|
108
|
+
forest << @inherited ||= KeyTree::Forest.new
|
109
|
+
default << initialize_default_tree(cached)
|
110
|
+
forest
|
111
|
+
end
|
112
|
+
|
113
|
+
def initialize_default_tree(cached)
|
114
|
+
default_args = cached ? { cached: true, fallback: @inherited } : {}
|
115
|
+
default_proc = Default.proc(self, default_args)
|
116
|
+
KeyTree::Tree.new(&default_proc)
|
57
117
|
end
|
58
118
|
end
|
59
119
|
end
|
data/ruby-dagger.gemspec
CHANGED
@@ -1,17 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
3
|
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
|
5
|
-
|
6
|
-
require 'git-version-bump'
|
7
|
-
GIT_VERSION = GVB.version.freeze
|
8
|
-
rescue LoadError
|
9
|
-
GIT_VERSION = '0.0.0.UNDEF'.freeze
|
10
|
-
end
|
6
|
+
require 'dagger/version'
|
11
7
|
|
12
8
|
Gem::Specification.new do |spec|
|
13
9
|
spec.name = 'ruby-dagger'
|
14
|
-
spec.version =
|
10
|
+
spec.version = Dagger::VERSION
|
15
11
|
spec.authors = ['Calle Englund']
|
16
12
|
spec.email = ['calle@discord.bofh.se']
|
17
13
|
|
@@ -27,14 +23,16 @@ Gem::Specification.new do |spec|
|
|
27
23
|
spec.require_paths = ['lib']
|
28
24
|
|
29
25
|
spec.platform = Gem::Platform::RUBY
|
30
|
-
spec.required_ruby_version = '~> 2.
|
26
|
+
spec.required_ruby_version = '~> 2.3'
|
31
27
|
|
32
|
-
spec.add_dependency 'key_tree', '~> 0.
|
33
|
-
spec.add_dependency 'tangle', '~> 0.
|
28
|
+
spec.add_dependency 'key_tree', '~> 0.6'
|
29
|
+
spec.add_dependency 'tangle', '~> 0.10'
|
34
30
|
|
35
31
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
36
32
|
spec.add_development_dependency 'git-version-bump', '~> 0.15'
|
37
33
|
spec.add_development_dependency 'rake', '~> 10.0'
|
38
34
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
39
35
|
spec.add_development_dependency 'rubocop', '~> 0.52'
|
36
|
+
spec.add_development_dependency 'ruby-prof', '~> 0.17'
|
37
|
+
spec.add_development_dependency 'simplecov', '~> 0.16'
|
40
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-dagger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Calle Englund
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: key_tree
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.6'
|
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.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: tangle
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.10'
|
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.10'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +108,34 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0.52'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: ruby-prof
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.17'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0.17'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: simplecov
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0.16'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0.16'
|
111
139
|
description:
|
112
140
|
email:
|
113
141
|
- calle@discord.bofh.se
|
@@ -135,6 +163,7 @@ files:
|
|
135
163
|
- lib/dagger/generator/require_name.rb
|
136
164
|
- lib/dagger/generator/string.rb
|
137
165
|
- lib/dagger/graph.rb
|
166
|
+
- lib/dagger/version.rb
|
138
167
|
- lib/dagger/vertex.rb
|
139
168
|
- ruby-dagger.gemspec
|
140
169
|
homepage: https://github.com/notcalle/ruby-dagger
|
@@ -149,7 +178,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
178
|
requirements:
|
150
179
|
- - "~>"
|
151
180
|
- !ruby/object:Gem::Version
|
152
|
-
version: '2.
|
181
|
+
version: '2.3'
|
153
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
183
|
requirements:
|
155
184
|
- - ">="
|