mushy 0.5.2 → 0.9.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 +34 -11
- data/lib/mushy/date_parts.rb +2 -0
- data/lib/mushy/flow.rb +6 -0
- data/lib/mushy/flux.rb +11 -6
- data/lib/mushy/fluxs/file_watch.rb +46 -0
- data/lib/mushy/fluxs/global_variables.rb +39 -0
- data/lib/mushy/fluxs/ls.rb +2 -2
- 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: 3310d89eada814ea6146a796ad78267d592b81b2cf7bdc002e765dfb9eb35e20
|
|
4
|
+
data.tar.gz: 7e2aa3b6a63d8e0f4d9c7291e1c1eecb7103374fa87302c5c4ad4ff1498f05a0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ff438b38489fc1d26111448873640973e25a9ffb02b4e498bff78919eb4d21bf3a954729c2296f673df218b324c07cc9d9635a0d24081f9b0bef1aa12cd04895
|
|
7
|
+
data.tar.gz: c5d9e71047c5bbced7129b429144ff9b5b110083e84c5efe8681920b6c0d20948f1445162708e2ba658b9d86ac8a2abb1734a4cd73b4a08e2ec5bd65212f4832
|
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'] }
|
|
@@ -93,6 +105,7 @@ module Mushy
|
|
|
93
105
|
details[:config][:limit] = { type: 'integer', shrink: true, description: 'Limit the number of events to this number.', default: '' }
|
|
94
106
|
details[:config][:join] = { type: 'text', shrink: true, description: 'Join all of the events from this flux into one event, under this name.', default: '' }
|
|
95
107
|
details[:config][:sort] = { type: 'text', shrink: true, description: 'Sort by this key.', default: '' }
|
|
108
|
+
details[:config][:ignore] = { type: 'text', shrink: true, description: 'Ignore these keys.', value: '', default: '' }
|
|
96
109
|
details[:config][:model] = { type: 'keyvalue', shrink: true, description: 'Reshape the outgoing events.', value: {}, default: {} }
|
|
97
110
|
|
|
98
111
|
details[:config][:error_strategy] = {
|
|
@@ -103,6 +116,16 @@ module Mushy
|
|
|
103
116
|
shrink: true,
|
|
104
117
|
}
|
|
105
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
|
+
|
|
106
129
|
details[:config]
|
|
107
130
|
.select { |_, v| v[:type] == 'keyvalue' }
|
|
108
131
|
.select { |_, v| v[:editors].nil? }
|
|
@@ -114,7 +137,7 @@ module Mushy
|
|
|
114
137
|
end
|
|
115
138
|
|
|
116
139
|
details
|
|
117
|
-
end
|
|
140
|
+
end.sort_by { |x| x[:name] }
|
|
118
141
|
}
|
|
119
142
|
end
|
|
120
143
|
|
data/lib/mushy/date_parts.rb
CHANGED
data/lib/mushy/flow.rb
CHANGED
|
@@ -17,6 +17,12 @@ 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
|
data/lib/mushy/flux.rb
CHANGED
|
@@ -39,20 +39,18 @@ module Mushy
|
|
|
39
39
|
|
|
40
40
|
incoming_event = SymbolizedHash.new(incoming_event) if incoming_event.is_a?(Hash)
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
incoming_split = masher.mash(config, event)[:incoming_split]
|
|
42
|
+
incoming_split = masher.mash(config, incoming_event)[:incoming_split]
|
|
45
43
|
config_considering_an_imcoming_split = config
|
|
46
44
|
.reject { |x, _| incoming_split && x.to_s == 'join' }
|
|
47
45
|
.reduce({}) { |t, i| t[i[0]] = i[1]; t }
|
|
48
46
|
|
|
49
|
-
events = incoming_split ? incoming_event[incoming_split] : [
|
|
47
|
+
events = incoming_split ? incoming_event[incoming_split] : [incoming_event]
|
|
50
48
|
|
|
51
49
|
results = events.map { |e| execute_single_event e, config_considering_an_imcoming_split }
|
|
52
50
|
|
|
53
51
|
return results.first unless incoming_split
|
|
54
52
|
|
|
55
|
-
results = join_these_results([results].flatten,
|
|
53
|
+
results = join_these_results([results].flatten, incoming_event, config[:join]) if config[:join]
|
|
56
54
|
|
|
57
55
|
results.flatten
|
|
58
56
|
end
|
|
@@ -91,7 +89,7 @@ module Mushy
|
|
|
91
89
|
end
|
|
92
90
|
|
|
93
91
|
def shape_these results, event, config
|
|
94
|
-
supported_shaping = [:merge, :outgoing_split, :group, :model, :join, :sort, :limit]
|
|
92
|
+
supported_shaping = [:merge, :outgoing_split, :group, :model, :ignore, :join, :sort, :limit]
|
|
95
93
|
|
|
96
94
|
shaping = supported_shaping
|
|
97
95
|
if (config[:shaping])
|
|
@@ -136,6 +134,13 @@ module Mushy
|
|
|
136
134
|
results.map { |x| masher.mash by, x }
|
|
137
135
|
end
|
|
138
136
|
|
|
137
|
+
def ignore_these_results results, event, by
|
|
138
|
+
return results if by.to_s == ''
|
|
139
|
+
ignore_fields = by.split ','
|
|
140
|
+
results.each { |r| ignore_fields.each { |f| r.delete f } }
|
|
141
|
+
results
|
|
142
|
+
end
|
|
143
|
+
|
|
139
144
|
def merge_these_results results, event, by
|
|
140
145
|
keys_to_merge = convert_this_to_an_array by
|
|
141
146
|
keys_to_merge = event.keys.map { |x| x.to_s } if (keys_to_merge[0] == '*')
|
|
@@ -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/ls.rb
CHANGED
|
@@ -41,7 +41,7 @@ module Mushy
|
|
|
41
41
|
arguments = ['-A', '-l', '--full-time', '-i']
|
|
42
42
|
arguments << '-R' if config[:recursive].to_s == 'true'
|
|
43
43
|
arguments << '-d' if config[:directory_only].to_s == 'true'
|
|
44
|
-
arguments << config[:path] if config[:path].to_s != ''
|
|
44
|
+
arguments << "'#{config[:path]}'" if config[:path].to_s != ''
|
|
45
45
|
arguments
|
|
46
46
|
end
|
|
47
47
|
|
|
@@ -107,7 +107,7 @@ module Mushy
|
|
|
107
107
|
r[:date] = Time.parse r[:date]
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
result[:name] = segments.
|
|
110
|
+
result[:name] = segments.join ' '
|
|
111
111
|
|
|
112
112
|
result.tap do |r|
|
|
113
113
|
help_segments = r[:help].split ''
|
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.9.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.9.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
|