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.
- checksums.yaml +7 -0
- data/bin/mushy +3 -0
- data/lib/mushy.rb +15 -0
- data/lib/mushy/event.rb +15 -0
- data/lib/mushy/flow.rb +47 -0
- data/lib/mushy/flux.rb +165 -0
- data/lib/mushy/fluxs/bash.rb +41 -0
- data/lib/mushy/fluxs/browser.rb +106 -0
- data/lib/mushy/fluxs/build_csv.rb +53 -0
- data/lib/mushy/fluxs/collection.rb +73 -0
- data/lib/mushy/fluxs/filter.rb +37 -0
- data/lib/mushy/fluxs/get.rb +30 -0
- data/lib/mushy/fluxs/ls.rb +38 -0
- data/lib/mushy/fluxs/parse_html.rb +52 -0
- data/lib/mushy/fluxs/read_csv.rb +27 -0
- data/lib/mushy/fluxs/write_file.rb +39 -0
- data/lib/mushy/masher.rb +56 -0
- data/lib/mushy/run.rb +8 -0
- data/lib/mushy/runner.rb +56 -0
- data/lib/mushy/version.rb +3 -0
- data/lib/public/index.html +256 -0
- data/lib/site.rb +54 -0
- data/mushy.gemspec +24 -0
- data/note.txt +2 -0
- metadata +137 -0
data/lib/site.rb
ADDED
@@ -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
|
data/mushy.gemspec
ADDED
@@ -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
|
data/note.txt
ADDED
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: []
|