mushy 0.0.1

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.
@@ -0,0 +1,54 @@
1
+ require 'sinatra'
2
+
3
+ require_relative 'mushy'
4
+
5
+ get '/' do
6
+ File.read(File.join(File.dirname(__FILE__), 'public', 'index.html'))
7
+ end
8
+
9
+ get '/fluxs' do
10
+ content_type :json
11
+ {
12
+ fluxs: Mushy::Flux.all.select { |x| x.respond_to? :details }.map do |flux|
13
+ details = flux.details
14
+ details[:config][:incoming_split] = { type: 'text', description: 'Split an incoming event into multiple events by this key, an each event will be processed independently.' }
15
+ details[:config][:outgoing_split] = { type: 'text', description: 'Split an outgoing event into multiple events by this key.' }
16
+ details[:config][:merge] = { type: 'text', description: 'A comma-delimited list of fields from the event to carry through. Use * to merge all fields.' }
17
+ details[:config][:group] = { type: 'text', description: 'Group events by a field, which is stored in a key. The format is group_by|group_key.' }
18
+ details[:config][:limit] = { type: 'integer', description: 'Limit the number of events to this number.' }
19
+ details[:config][:join] = { type: 'text', description: 'Join all of the events from this flux into one event, under this name.' }
20
+ details[:config][:sort] = { type: 'text', description: 'Sort by this key.' }
21
+ details[:config][:model] = { type: 'keyvalue', description: 'Reshape the outgoing events.', value: {} }
22
+
23
+ details[:config]
24
+ .select { |_, v| v[:type] == 'keyvalue' }
25
+ .select { |_, v| v[:editors].nil? }
26
+ .each do |_, v|
27
+ v[:editors] = [
28
+ { id: 'new_key', target: 'key', field: { type: 'text', value: '', default: '' } },
29
+ { id: 'new_value', target: 'value', field: { type: 'text', value: '', default: '' } }
30
+ ]
31
+ end
32
+
33
+ details
34
+ end
35
+ }.to_json
36
+ end
37
+
38
+ post '/run' do
39
+ content_type :json
40
+
41
+ data = SymbolizedHash.new JSON.parse(request.body.read)
42
+
43
+ event = SymbolizedHash.new JSON.parse(data[:setup][:event].to_json)
44
+
45
+ config = SymbolizedHash.new data[:config]
46
+
47
+ flux = Mushy::Flow.build_flux( { type: data[:setup][:flux], config: config } )
48
+
49
+ result = flux.execute event
50
+
51
+ result = [result].flatten
52
+
53
+ { result: result }.to_json
54
+ end
@@ -0,0 +1,24 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'mushy/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'mushy'
7
+ s.version = '0.0.1'
8
+ s.date = '2020-11-23'
9
+ s.summary = 'Process streams of work using common modules.'
10
+ s.description = 'Process streams of work using common modules.'
11
+ s.authors = ['Darren Cauthon']
12
+ s.email = 'darren@cauthon.com'
13
+ s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
14
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
15
+ s.require_paths = ["lib"]
16
+ s.homepage = 'https://cauthon.com'
17
+ s.license = 'MIT'
18
+
19
+ s.add_development_dependency 'minitest'
20
+ s.add_runtime_dependency 'liquid'
21
+ s.add_runtime_dependency 'ferrum'
22
+ s.add_runtime_dependency 'nokogiri'
23
+ s.add_runtime_dependency 'faraday'
24
+ end
@@ -0,0 +1,2 @@
1
+ Run the test:
2
+ docker run -it -v //c/Users/darre/Desktop/mushy:/usr/src/mushy ruby:2.5 ruby //usr/src/mushy/test/mushy/masher_test.rb
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mushy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Darren Cauthon
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-11-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: liquid
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: ferrum
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: nokogiri
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: faraday
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Process streams of work using common modules.
84
+ email: darren@cauthon.com
85
+ executables:
86
+ - mushy
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - bin/mushy
91
+ - lib/mushy.rb
92
+ - lib/mushy/event.rb
93
+ - lib/mushy/flow.rb
94
+ - lib/mushy/flux.rb
95
+ - lib/mushy/fluxs/bash.rb
96
+ - lib/mushy/fluxs/browser.rb
97
+ - lib/mushy/fluxs/build_csv.rb
98
+ - lib/mushy/fluxs/collection.rb
99
+ - lib/mushy/fluxs/filter.rb
100
+ - lib/mushy/fluxs/get.rb
101
+ - lib/mushy/fluxs/ls.rb
102
+ - lib/mushy/fluxs/parse_html.rb
103
+ - lib/mushy/fluxs/read_csv.rb
104
+ - lib/mushy/fluxs/write_file.rb
105
+ - lib/mushy/masher.rb
106
+ - lib/mushy/run.rb
107
+ - lib/mushy/runner.rb
108
+ - lib/mushy/version.rb
109
+ - lib/public/index.html
110
+ - lib/site.rb
111
+ - mushy.gemspec
112
+ - note.txt
113
+ homepage: https://cauthon.com
114
+ licenses:
115
+ - MIT
116
+ metadata: {}
117
+ post_install_message:
118
+ rdoc_options: []
119
+ require_paths:
120
+ - lib
121
+ required_ruby_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ required_rubygems_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ requirements: []
132
+ rubyforge_project:
133
+ rubygems_version: 2.7.6.2
134
+ signing_key:
135
+ specification_version: 4
136
+ summary: Process streams of work using common modules.
137
+ test_files: []