mushy 0.5.3 → 0.10.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/lib/mushy/builder/api.rb +33 -11
- data/lib/mushy/date_parts.rb +2 -0
- data/lib/mushy/flow.rb +14 -1
- data/lib/mushy/flux.rb +4 -5
- data/lib/mushy/fluxs/collection.rb +33 -15
- data/lib/mushy/fluxs/file_watch.rb +46 -0
- data/lib/mushy/fluxs/global_variables.rb +39 -0
- data/lib/mushy/fluxs/pdf.rb +6 -3
- data/lib/mushy/fluxs/smtp.rb +43 -37
- data/lib/mushy/fluxs/times.rb +29 -0
- data/lib/mushy/masher.rb +9 -1
- data/lib/mushy/runner.rb +6 -4
- data/lib/site.rb +1 -1
- data/mushy.gemspec +12 -11
- metadata +58 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed2624dde9bf79c8dd70a430474613a591b647ba78c67cb04078da5ddfb64940
|
4
|
+
data.tar.gz: 42ea21e12bdea8fc767aee5e30c4d9c32a82ab83c786ea7bb101fcc3f7b1d154
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b904acfb460d9e6e5515274d7b435700b7e26903dbcdcc69471f0bf521f50c67dd6a0fd4857e95de3836d1cbf40c7facc4968ead6cec4d70b8e47a4ac77d0cb7
|
7
|
+
data.tar.gz: 4b9ceca6ce17b561ec36c84ba31f9772beb0557b02b6da5f703b2699622c3de2b6a272c2a4627bee1a653283c988db4be4dc92a58fed181f6baf51c26cbdc7b0
|
data/lib/mushy/builder/api.rb
CHANGED
@@ -23,15 +23,15 @@ module Mushy
|
|
23
23
|
|
24
24
|
def self.save file, data
|
25
25
|
|
26
|
-
file = "#{file}.
|
26
|
+
file = "#{file}.mushy" unless file.downcase.end_with?('.mushy')
|
27
27
|
|
28
28
|
data = SymbolizedHash.new JSON.parse(data)
|
29
|
-
Mushy::WriteFile.new.process( {}, { name: file, data: data
|
29
|
+
Mushy::WriteFile.new.process( {}, { name: file, data: JSON.pretty_generate(data) })
|
30
30
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def self.start file, event
|
34
|
-
file = "#{file}.
|
34
|
+
file = "#{file}.mushy" unless file.downcase.end_with?('.mushy')
|
35
35
|
flow = File.open(file).read
|
36
36
|
flow = Mushy::Flow.parse flow
|
37
37
|
|
@@ -40,16 +40,25 @@ module Mushy
|
|
40
40
|
pwd = Dir.pwd
|
41
41
|
|
42
42
|
if service_fluxes.any?
|
43
|
-
|
43
|
+
|
44
|
+
things = service_fluxes
|
44
45
|
.map { |s| { flux: s, proc: ->(e) do
|
45
46
|
Dir.chdir pwd
|
46
47
|
Mushy::Runner.new.start e, s, flow
|
47
|
-
end
|
48
|
+
end,
|
49
|
+
run_method: (s.config[:run_strategy] == 'daemon' ? :run_this_as_a_daemon : :run_this_inline),
|
50
|
+
}
|
51
|
+
}.group_by { |x| x[:run_method] }
|
52
|
+
|
53
|
+
calls = (things[:run_this_as_a_daemon] || [])
|
48
54
|
.map { |p| ->() { p[:flux].loop &p[:proc] } }
|
49
55
|
.map { |x| ->() { loop &x } }
|
50
|
-
.map { |x|
|
56
|
+
.map { |x| run_this_as_a_daemon &x }
|
51
57
|
|
52
|
-
|
58
|
+
(things[:run_this_inline] || [])
|
59
|
+
.map { |p| ->() { p[:flux].loop &p[:proc] } }
|
60
|
+
.map { |x| ->() { loop &x } }
|
61
|
+
.map { |x| run_this_inline &x }
|
53
62
|
|
54
63
|
exit
|
55
64
|
end
|
@@ -59,14 +68,17 @@ module Mushy
|
|
59
68
|
Mushy::Runner.new.start event, cli_flux, flow
|
60
69
|
end
|
61
70
|
|
62
|
-
def self.
|
63
|
-
|
71
|
+
def self.run_this_inline &block
|
72
|
+
block.call
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.run_this_as_a_daemon &block
|
64
76
|
Daemons.call(&block).pid.pid
|
65
77
|
end
|
66
78
|
|
67
79
|
def self.get_flow file
|
68
80
|
puts "trying to get: #{file}"
|
69
|
-
file = "#{file}.
|
81
|
+
file = "#{file}.mushy" unless file.downcase.end_with?('.mushy')
|
70
82
|
data = JSON.parse File.open(file).read
|
71
83
|
data['fluxs']
|
72
84
|
.reject { |x| x['parents'] }
|
@@ -104,6 +116,16 @@ module Mushy
|
|
104
116
|
shrink: true,
|
105
117
|
}
|
106
118
|
|
119
|
+
if flux.new.respond_to? :loop
|
120
|
+
details[:config][:run_strategy] = {
|
121
|
+
description: 'Run this using this strategy. (select "daemon" if this should be run in the background)',
|
122
|
+
type: 'select',
|
123
|
+
options: ['', 'inline', 'daemon'],
|
124
|
+
value: '',
|
125
|
+
shrink: true,
|
126
|
+
}
|
127
|
+
end
|
128
|
+
|
107
129
|
details[:config]
|
108
130
|
.select { |_, v| v[:type] == 'keyvalue' }
|
109
131
|
.select { |_, v| v[:editors].nil? }
|
@@ -115,7 +137,7 @@ module Mushy
|
|
115
137
|
end
|
116
138
|
|
117
139
|
details
|
118
|
-
end
|
140
|
+
end.sort_by { |x| x[:name] }
|
119
141
|
}
|
120
142
|
end
|
121
143
|
|
data/lib/mushy/date_parts.rb
CHANGED
data/lib/mushy/flow.rb
CHANGED
@@ -17,15 +17,28 @@ module Mushy
|
|
17
17
|
.flatten
|
18
18
|
end
|
19
19
|
|
20
|
+
def adjust_data data
|
21
|
+
fluxs
|
22
|
+
.select { |x| x.respond_to? :adjust_data }
|
23
|
+
.reduce(data) { |t, i| i.adjust_data t }
|
24
|
+
end
|
25
|
+
|
20
26
|
def self.build_flux record
|
21
27
|
type = record[:type] || record['type'] || record[:flux] || record['flux'] || 'Flux'
|
22
28
|
flux = Object.const_get("Mushy::#{type}").new
|
23
29
|
flux.id = record[:id] || record['id'] || flux.id
|
24
30
|
flux.type = type
|
25
31
|
flux.config = SymbolizedHash.new(record[:config] || record['config'])
|
32
|
+
flux.flow = Mushy::Flow.new
|
26
33
|
flux
|
27
34
|
end
|
28
35
|
|
36
|
+
def build_flux record
|
37
|
+
Mushy::Flow.build_flux(record).tap do |flux|
|
38
|
+
flux.flow = self
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
29
42
|
def self.parse data
|
30
43
|
data = JSON.parse data
|
31
44
|
|
@@ -34,7 +47,7 @@ module Mushy
|
|
34
47
|
|
35
48
|
flow = new
|
36
49
|
|
37
|
-
flow.fluxs = data_fluxs.map { |s| build_flux s }
|
50
|
+
flow.fluxs = data_fluxs.map { |s| flow.build_flux s }
|
38
51
|
|
39
52
|
fluxs_with_parent_ids = flow.fluxs.reduce({}) { |t, i| t[i.id] = []; t }
|
40
53
|
data_fluxs.map { |r| fluxs_with_parent_ids[r['id']] = r['parents'] || [] }
|
data/lib/mushy/flux.rb
CHANGED
@@ -8,6 +8,7 @@ module Mushy
|
|
8
8
|
attr_accessor :subscribed_to
|
9
9
|
attr_accessor :config
|
10
10
|
attr_accessor :masher
|
11
|
+
attr_accessor :flow
|
11
12
|
|
12
13
|
def initialize
|
13
14
|
guard
|
@@ -39,20 +40,18 @@ module Mushy
|
|
39
40
|
|
40
41
|
incoming_event = SymbolizedHash.new(incoming_event) if incoming_event.is_a?(Hash)
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
incoming_split = masher.mash(config, event)[:incoming_split]
|
43
|
+
incoming_split = masher.mash(config, incoming_event)[:incoming_split]
|
45
44
|
config_considering_an_imcoming_split = config
|
46
45
|
.reject { |x, _| incoming_split && x.to_s == 'join' }
|
47
46
|
.reduce({}) { |t, i| t[i[0]] = i[1]; t }
|
48
47
|
|
49
|
-
events = incoming_split ? incoming_event[incoming_split] : [
|
48
|
+
events = incoming_split ? incoming_event[incoming_split] : [incoming_event]
|
50
49
|
|
51
50
|
results = events.map { |e| execute_single_event e, config_considering_an_imcoming_split }
|
52
51
|
|
53
52
|
return results.first unless incoming_split
|
54
53
|
|
55
|
-
results = join_these_results([results].flatten,
|
54
|
+
results = join_these_results([results].flatten, incoming_event, config[:join]) if config[:join]
|
56
55
|
|
57
56
|
results.flatten
|
58
57
|
end
|
@@ -2,8 +2,6 @@ module Mushy
|
|
2
2
|
|
3
3
|
class Collection < Flux
|
4
4
|
|
5
|
-
attr_accessor :collection
|
6
|
-
|
7
5
|
def self.details
|
8
6
|
{
|
9
7
|
name: 'Collection',
|
@@ -11,9 +9,14 @@ module Mushy
|
|
11
9
|
config: {
|
12
10
|
id: {
|
13
11
|
description: 'The path to the unique id in the body of the element.',
|
14
|
-
type: '
|
15
|
-
value: {
|
12
|
+
type: 'text',
|
13
|
+
value: '{{id}}',
|
16
14
|
},
|
15
|
+
collection_name: {
|
16
|
+
description: 'The name of the collection to interact with.',
|
17
|
+
type: 'text',
|
18
|
+
value: 'records',
|
19
|
+
},
|
17
20
|
operation: {
|
18
21
|
description: 'Perform this operation.',
|
19
22
|
type: 'select',
|
@@ -24,31 +27,26 @@ module Mushy
|
|
24
27
|
}
|
25
28
|
end
|
26
29
|
|
27
|
-
def initialize
|
28
|
-
self.collection = {}
|
29
|
-
super
|
30
|
-
end
|
31
|
-
|
32
30
|
def process event, config
|
33
31
|
self.send(config[:operation].to_sym, event, config)
|
34
32
|
end
|
35
33
|
|
36
34
|
def get_the_id event, config
|
37
|
-
|
35
|
+
config[:id]
|
38
36
|
end
|
39
37
|
|
40
38
|
def all event, config
|
41
|
-
|
39
|
+
the_collection(config).values
|
42
40
|
end
|
43
41
|
|
44
42
|
def delete event, config
|
45
|
-
|
43
|
+
the_collection(config).delete get_the_id(event, config)
|
46
44
|
event[config[:operation_performed]] = 'deleted' if config[:operation_performed]
|
47
45
|
event
|
48
46
|
end
|
49
47
|
|
50
48
|
def upsert event, config
|
51
|
-
if
|
49
|
+
if the_collection(config)[get_the_id(event, config)]
|
52
50
|
update event, config
|
53
51
|
else
|
54
52
|
insert event, config
|
@@ -56,18 +54,38 @@ module Mushy
|
|
56
54
|
end
|
57
55
|
|
58
56
|
def update event, config
|
59
|
-
item =
|
57
|
+
item = the_collection(config)[get_the_id(event, config)]
|
60
58
|
event.each { |k, v| item[k] = v } if item
|
61
59
|
event[config[:operation_performed]] = (item ? 'updated' : 'not exist') if config[:operation_performed]
|
62
60
|
event
|
63
61
|
end
|
64
62
|
|
65
63
|
def insert event, config
|
66
|
-
|
64
|
+
the_collection(config)[get_the_id(event, config)] = event
|
67
65
|
event[config[:operation_performed]] = 'inserted' if config[:operation_performed]
|
68
66
|
event
|
69
67
|
end
|
70
68
|
|
69
|
+
def the_collection config
|
70
|
+
Mushy::Collection.guard_the_flow self.flow
|
71
|
+
the_collection_name = config[:collection_name]
|
72
|
+
|
73
|
+
get_the_collection the_collection_name
|
74
|
+
end
|
75
|
+
|
76
|
+
def get_the_collection name
|
77
|
+
found_collection = self.flow.collection_data[name]
|
78
|
+
return found_collection if found_collection
|
79
|
+
self.flow.collection_data[name] = SymbolizedHash.new
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.guard_the_flow flow
|
83
|
+
return if flow.respond_to?(:collection_data)
|
84
|
+
|
85
|
+
flow.instance_eval { class << self; self end }.send(:attr_accessor, :collection_data)
|
86
|
+
flow.collection_data = {}
|
87
|
+
end
|
88
|
+
|
71
89
|
end
|
72
90
|
|
73
91
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'listen'
|
2
|
+
|
3
|
+
module Mushy
|
4
|
+
|
5
|
+
class FileWatch < Flux
|
6
|
+
|
7
|
+
def self.details
|
8
|
+
{
|
9
|
+
name: 'FileWatch',
|
10
|
+
description: 'Watch for file changes.',
|
11
|
+
config: {
|
12
|
+
directory: {
|
13
|
+
description: 'The directory to watch.',
|
14
|
+
type: 'text',
|
15
|
+
value: '',
|
16
|
+
},
|
17
|
+
},
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
def loop &block
|
22
|
+
|
23
|
+
directory = config[:directory].to_s != '' ? config[:directory] : Dir.pwd
|
24
|
+
|
25
|
+
listener = Listen.to(directory) do |modified, added, removed|
|
26
|
+
the_event = {
|
27
|
+
modified: modified,
|
28
|
+
added: added,
|
29
|
+
removed: removed,
|
30
|
+
}
|
31
|
+
block.call the_event
|
32
|
+
end
|
33
|
+
|
34
|
+
listener.start
|
35
|
+
|
36
|
+
sleep
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
def process event, config
|
41
|
+
event
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Mushy
|
2
|
+
|
3
|
+
class GlobalVariables < Flux
|
4
|
+
|
5
|
+
attr_accessor :state
|
6
|
+
|
7
|
+
def self.details
|
8
|
+
{
|
9
|
+
name: 'GlobalVariables',
|
10
|
+
description: 'Add global variables.',
|
11
|
+
config: {
|
12
|
+
values: {
|
13
|
+
description: 'Provide key/value pairs that will be set as global variables.',
|
14
|
+
label: 'Variables',
|
15
|
+
type: 'keyvalue',
|
16
|
+
value: {},
|
17
|
+
},
|
18
|
+
},
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize
|
23
|
+
super
|
24
|
+
self.state = SymbolizedHash.new
|
25
|
+
end
|
26
|
+
|
27
|
+
def adjust_data data
|
28
|
+
state.merge data
|
29
|
+
end
|
30
|
+
|
31
|
+
def process event, config
|
32
|
+
values = config[:values] || SymbolizedHash.new
|
33
|
+
state.merge! values
|
34
|
+
event
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
data/lib/mushy/fluxs/pdf.rb
CHANGED
@@ -4,8 +4,8 @@ module Mushy
|
|
4
4
|
|
5
5
|
def self.details
|
6
6
|
details = Browser.details
|
7
|
-
details[
|
8
|
-
details[
|
7
|
+
details[:name] = 'Pdf'
|
8
|
+
details[:description] = 'Turn a URL into a PDF.'
|
9
9
|
|
10
10
|
details[:config][:path] = {
|
11
11
|
description: 'The path of the PDF file to save.',
|
@@ -37,7 +37,10 @@ module Mushy
|
|
37
37
|
|
38
38
|
the_browser.pdf options
|
39
39
|
|
40
|
-
|
40
|
+
{
|
41
|
+
options: options,
|
42
|
+
file: Mushy::Ls.new.process({}, { path: options[:path] })[0]
|
43
|
+
}
|
41
44
|
|
42
45
|
end
|
43
46
|
|
data/lib/mushy/fluxs/smtp.rb
CHANGED
@@ -1,8 +1,50 @@
|
|
1
1
|
require 'pony'
|
2
2
|
|
3
3
|
module Mushy
|
4
|
+
|
5
|
+
class EmailBase < Flux
|
6
|
+
|
7
|
+
def process event, config
|
8
|
+
options = adjust(cleanup({
|
9
|
+
from: config[:from],
|
10
|
+
to: config[:to],
|
11
|
+
subject: config[:subject],
|
12
|
+
body: config[:body],
|
13
|
+
html_body: config[:html_body],
|
14
|
+
via_options: get_via_options_from(config)
|
15
|
+
}))
|
16
|
+
|
17
|
+
if (config[:attachment_file].to_s != '')
|
18
|
+
options[:attachments] = { config[:attachment_file].split("\/")[-1] => File.read(config[:attachment_file]) }
|
19
|
+
end
|
20
|
+
|
21
|
+
result = Pony.mail options
|
22
|
+
options.tap { |x| x.delete(:via_options) }
|
23
|
+
end
|
24
|
+
|
25
|
+
def adjust options
|
26
|
+
end
|
27
|
+
|
28
|
+
def cleanup options
|
29
|
+
options.tap do |hash|
|
30
|
+
hash.delete_if { |_, v| v.to_s == '' }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def get_via_options_from config
|
35
|
+
{
|
36
|
+
address: config[:address],
|
37
|
+
port: config[:port].to_s,
|
38
|
+
user_name: config[:username],
|
39
|
+
password: config[:password],
|
40
|
+
domain: config[:domain],
|
41
|
+
authentication: :plain,
|
42
|
+
enable_starttls_auto: true,
|
43
|
+
}
|
44
|
+
end
|
45
|
+
end
|
4
46
|
|
5
|
-
class Smtp <
|
47
|
+
class Smtp < EmailBase
|
6
48
|
|
7
49
|
def self.details
|
8
50
|
{
|
@@ -70,46 +112,10 @@ module Mushy
|
|
70
112
|
}
|
71
113
|
end
|
72
114
|
|
73
|
-
def process event, config
|
74
|
-
options = adjust(cleanup({
|
75
|
-
from: config[:from],
|
76
|
-
to: config[:to],
|
77
|
-
subject: config[:subject],
|
78
|
-
body: config[:body],
|
79
|
-
html_body: config[:html_body],
|
80
|
-
via_options: get_via_options_from(config)
|
81
|
-
}))
|
82
|
-
|
83
|
-
if (config[:attachment_file].to_s != '')
|
84
|
-
options[:attachments] = { config[:attachment_file].split("\/")[-1] => File.read(config[:attachment_file]) }
|
85
|
-
end
|
86
|
-
|
87
|
-
result = Pony.mail options
|
88
|
-
options.tap { |x| x.delete(:via_options) }
|
89
|
-
end
|
90
|
-
|
91
115
|
def adjust options
|
92
116
|
options.tap { |x| x[:via] = 'smtp' }
|
93
117
|
end
|
94
118
|
|
95
|
-
def cleanup options
|
96
|
-
options.tap do |hash|
|
97
|
-
hash.delete_if { |_, v| v.to_s == '' }
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
def get_via_options_from config
|
102
|
-
{
|
103
|
-
address: config[:address],
|
104
|
-
port: config[:port].to_s,
|
105
|
-
user_name: config[:username],
|
106
|
-
password: config[:password],
|
107
|
-
domain: config[:domain],
|
108
|
-
authentication: :plain,
|
109
|
-
enable_starttls_auto: true,
|
110
|
-
}
|
111
|
-
end
|
112
|
-
|
113
119
|
end
|
114
120
|
|
115
121
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Mushy
|
2
|
+
|
3
|
+
class Times < Flux
|
4
|
+
|
5
|
+
def self.details
|
6
|
+
{
|
7
|
+
name: 'Times',
|
8
|
+
description: 'Return the event passed to it, X times.',
|
9
|
+
config: {
|
10
|
+
times: {
|
11
|
+
description: 'The number of times this event should be returned.',
|
12
|
+
type: 'integer',
|
13
|
+
value: '1',
|
14
|
+
},
|
15
|
+
}
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
def process event, config
|
20
|
+
config[:times]
|
21
|
+
.to_i
|
22
|
+
.times
|
23
|
+
.each_with_index
|
24
|
+
.map { |x, i| event.dup.tap { |e| e[:index] = i } }
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/lib/mushy/masher.rb
CHANGED
@@ -45,7 +45,15 @@ module Mushy
|
|
45
45
|
segments = key.split '.'
|
46
46
|
|
47
47
|
segments.each do |segment|
|
48
|
-
|
48
|
+
if segment.include?('[') && segment.include?(']')
|
49
|
+
the_splits = segment.split('[')
|
50
|
+
segment = the_splits[0]
|
51
|
+
index = the_splits[1].sub(']', '')
|
52
|
+
data = data.is_a?(Hash) ? (data[segment] || data[segment.to_sym]) : (data ? data.send(segment.to_sym) : nil)
|
53
|
+
data = data[index.to_i]
|
54
|
+
else
|
55
|
+
data = data.is_a?(Hash) ? (data[segment] || data[segment.to_sym]) : (data ? data.send(segment.to_sym) : nil)
|
56
|
+
end
|
49
57
|
end
|
50
58
|
|
51
59
|
data
|
data/lib/mushy/runner.rb
CHANGED
@@ -12,7 +12,7 @@ module Mushy
|
|
12
12
|
run = find_run flux, flow
|
13
13
|
starting_event = build_event event_data, flow.id, run.id, flux.id
|
14
14
|
|
15
|
-
events = run_event_with_flux starting_event, flux
|
15
|
+
events = run_event_with_flux starting_event, flux, flow
|
16
16
|
|
17
17
|
while events.any?
|
18
18
|
events = events.map { |e| runner.run_event_in_flow e, flow }.flatten
|
@@ -23,12 +23,14 @@ module Mushy
|
|
23
23
|
|
24
24
|
def run_event_in_flow event, flow
|
25
25
|
flow.fluxs_for(event)
|
26
|
-
.map { |s| runner.run_event_with_flux event, s }
|
26
|
+
.map { |s| runner.run_event_with_flux event, s, flow }
|
27
27
|
.flatten
|
28
28
|
end
|
29
29
|
|
30
|
-
def run_event_with_flux event, flux
|
31
|
-
|
30
|
+
def run_event_with_flux event, flux, flow
|
31
|
+
data = event.data
|
32
|
+
data = flow.adjust_data data
|
33
|
+
[flux.execute(data)]
|
32
34
|
.flatten
|
33
35
|
.reject { |x| x.nil? }
|
34
36
|
.map { |x| x.is_a?(Hash) ? build_event(x, event.flow_id, event.run_id, flux.id) : x }
|
data/lib/site.rb
CHANGED
data/mushy.gemspec
CHANGED
@@ -4,7 +4,7 @@ require 'mushy/version'
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'mushy'
|
7
|
-
s.version = '0.
|
7
|
+
s.version = '0.10.0'
|
8
8
|
s.date = '2020-11-23'
|
9
9
|
s.summary = 'Process streams of work using common modules.'
|
10
10
|
s.description = 'This tool assists in the creation and processing of workflows.'
|
@@ -16,14 +16,15 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.homepage = 'https://cauthon.com'
|
17
17
|
s.license = 'MIT'
|
18
18
|
|
19
|
-
s.add_development_dependency 'minitest'
|
20
|
-
s.add_runtime_dependency 'sinatra'
|
21
|
-
s.add_runtime_dependency 'symbolized'
|
22
|
-
s.add_runtime_dependency 'thor'
|
23
|
-
s.add_runtime_dependency 'liquid'
|
24
|
-
s.add_runtime_dependency 'ferrum'
|
25
|
-
s.add_runtime_dependency 'nokogiri'
|
26
|
-
s.add_runtime_dependency 'faraday'
|
27
|
-
s.add_runtime_dependency 'pony'
|
28
|
-
s.add_runtime_dependency 'daemons'
|
19
|
+
s.add_development_dependency 'minitest', '~> 5'
|
20
|
+
s.add_runtime_dependency 'sinatra', '~> 2.1'
|
21
|
+
s.add_runtime_dependency 'symbolized', '~> 0.0.1'
|
22
|
+
s.add_runtime_dependency 'thor', '~> 1.1'
|
23
|
+
s.add_runtime_dependency 'liquid', '~> 5'
|
24
|
+
s.add_runtime_dependency 'ferrum','~> 0.11'
|
25
|
+
s.add_runtime_dependency 'nokogiri', '~> 1'
|
26
|
+
s.add_runtime_dependency 'faraday', '~> 1'
|
27
|
+
s.add_runtime_dependency 'pony', '~> 1.13'
|
28
|
+
s.add_runtime_dependency 'daemons', '~> 1'
|
29
|
+
s.add_runtime_dependency 'listen', '~> 3.5'
|
29
30
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mushy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Darren Cauthon
|
@@ -14,142 +14,156 @@ dependencies:
|
|
14
14
|
name: minitest
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5'
|
20
20
|
type: :development
|
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: '
|
26
|
+
version: '5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: sinatra
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '2.1'
|
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: '
|
40
|
+
version: '2.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: symbolized
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 0.0.1
|
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:
|
54
|
+
version: 0.0.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: thor
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '1.1'
|
62
62
|
type: :runtime
|
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: '
|
68
|
+
version: '1.1'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: liquid
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '5'
|
76
76
|
type: :runtime
|
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: '5'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: ferrum
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
89
|
+
version: '0.11'
|
90
90
|
type: :runtime
|
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: '0'
|
96
|
+
version: '0.11'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: nokogiri
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '1'
|
104
104
|
type: :runtime
|
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'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: faraday
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '1'
|
118
118
|
type: :runtime
|
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: '
|
124
|
+
version: '1'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: pony
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
131
|
+
version: '1.13'
|
132
132
|
type: :runtime
|
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: '
|
138
|
+
version: '1.13'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: daemons
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
145
|
+
version: '1'
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - "
|
150
|
+
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
152
|
+
version: '1'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: listen
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '3.5'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '3.5'
|
153
167
|
description: This tool assists in the creation and processing of workflows.
|
154
168
|
email: darren@cauthon.com
|
155
169
|
executables:
|
@@ -175,10 +189,12 @@ files:
|
|
175
189
|
- lib/mushy/fluxs/collection.rb
|
176
190
|
- lib/mushy/fluxs/document.rb
|
177
191
|
- lib/mushy/fluxs/environment.rb
|
192
|
+
- lib/mushy/fluxs/file_watch.rb
|
178
193
|
- lib/mushy/fluxs/filter.rb
|
179
194
|
- lib/mushy/fluxs/format.rb
|
180
195
|
- lib/mushy/fluxs/get.rb
|
181
196
|
- lib/mushy/fluxs/git_log.rb
|
197
|
+
- lib/mushy/fluxs/global_variables.rb
|
182
198
|
- lib/mushy/fluxs/interval.rb
|
183
199
|
- lib/mushy/fluxs/ls.rb
|
184
200
|
- lib/mushy/fluxs/parse_html.rb
|
@@ -189,6 +205,7 @@ files:
|
|
189
205
|
- lib/mushy/fluxs/read_file.rb
|
190
206
|
- lib/mushy/fluxs/screenshot.rb
|
191
207
|
- lib/mushy/fluxs/smtp.rb
|
208
|
+
- lib/mushy/fluxs/times.rb
|
192
209
|
- lib/mushy/fluxs/write_file.rb
|
193
210
|
- lib/mushy/masher.rb
|
194
211
|
- lib/mushy/run.rb
|