mushy 0.4.1 → 0.6.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/bin/mushy +2 -1
 - data/lib/mushy/builder/api.rb +38 -7
 - data/lib/mushy/date_parts.rb +2 -0
 - data/lib/mushy/flux.rb +12 -1
 - data/lib/mushy/fluxs/bash.rb +1 -0
 - data/lib/mushy/fluxs/browser.rb +3 -0
 - data/lib/mushy/fluxs/document.rb +27 -0
 - data/lib/mushy/fluxs/file_watch.rb +46 -0
 - data/lib/mushy/fluxs/ls.rb +63 -11
 - data/lib/mushy/fluxs/pwd.rb +3 -1
 - data/lib/mushy/fluxs/screenshot.rb +5 -2
 - data/lib/mushy/fluxs/times.rb +29 -0
 - data/lib/mushy/fluxs/write_file.rb +3 -1
 - data/mushy.gemspec +2 -1
 - metadata +18 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: dcfab01a12d0d1a59c024265891b2851943755a0cdb9468768dd71c3fbcc1c63
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: ed387d7e22cc0368e1d309326dd646cb284256b030ced1da44106a6dad3f1979
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: d633be32aec24e036a0c8b6ffc185b743f95d78a9b986304dabaff72a642fdfe09a48ca86d3753b1e1dfb722347cccf33392fb651befbae28177e9dcc9889808
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 0d54c907f8ec088f928fc0cd4ca88c72203e6080e0ccb5bc96b23b31dca329fa673b84168017effdc19a33dd8f5598100039675b34db20adfb7ee5c282cc7cd7
         
     | 
    
        data/bin/mushy
    CHANGED
    
    
    
        data/lib/mushy/builder/api.rb
    CHANGED
    
    | 
         @@ -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,8 +68,11 @@ 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 
     | 
    
         | 
| 
         @@ -93,8 +105,27 @@ 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 
     | 
    
         | 
| 
      
 111 
     | 
    
         
            +
                                     details[:config][:error_strategy] = {
         
     | 
| 
      
 112 
     | 
    
         
            +
                                       description: 'Error strategy. (return to return an event with "exception" returning the error, or ignore to ignore the exception)',
         
     | 
| 
      
 113 
     | 
    
         
            +
                                       type:        'select',
         
     | 
| 
      
 114 
     | 
    
         
            +
                                       options:     ['', 'return', 'ignore'],
         
     | 
| 
      
 115 
     | 
    
         
            +
                                       value:       '',
         
     | 
| 
      
 116 
     | 
    
         
            +
                                       shrink:      true,
         
     | 
| 
      
 117 
     | 
    
         
            +
                                     }
         
     | 
| 
      
 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 
     | 
    
         
            +
             
     | 
| 
       98 
129 
     | 
    
         
             
                                     details[:config]
         
     | 
| 
       99 
130 
     | 
    
         
             
                                            .select { |_, v| v[:type] == 'keyvalue' }
         
     | 
| 
       100 
131 
     | 
    
         
             
                                            .select { |_, v| v[:editors].nil? }
         
     | 
| 
         @@ -106,7 +137,7 @@ module Mushy 
     | 
|
| 
       106 
137 
     | 
    
         
             
                                              end
         
     | 
| 
       107 
138 
     | 
    
         | 
| 
       108 
139 
     | 
    
         
             
                                     details
         
     | 
| 
       109 
     | 
    
         
            -
                             end
         
     | 
| 
      
 140 
     | 
    
         
            +
                             end.sort_by { |x| x[:name] }
         
     | 
| 
       110 
141 
     | 
    
         
             
                    }
         
     | 
| 
       111 
142 
     | 
    
         
             
                  end
         
     | 
| 
       112 
143 
     | 
    
         | 
    
        data/lib/mushy/date_parts.rb
    CHANGED
    
    
    
        data/lib/mushy/flux.rb
    CHANGED
    
    | 
         @@ -77,6 +77,10 @@ module Mushy 
     | 
|
| 
       77 
77 
     | 
    
         | 
| 
       78 
78 
     | 
    
         
             
                  returned_one_result ? results.first : results
         
     | 
| 
       79 
79 
     | 
    
         | 
| 
      
 80 
     | 
    
         
            +
                rescue Exception => e
         
     | 
| 
      
 81 
     | 
    
         
            +
                  raise e if config[:error_strategy].to_s == ''
         
     | 
| 
      
 82 
     | 
    
         
            +
                  return [] if config[:error_strategy] == 'ignore'
         
     | 
| 
      
 83 
     | 
    
         
            +
                  { exception: e.message }
         
     | 
| 
       80 
84 
     | 
    
         
             
                end
         
     | 
| 
       81 
85 
     | 
    
         | 
| 
       82 
86 
     | 
    
         
             
                def standardize_these results
         
     | 
| 
         @@ -87,7 +91,7 @@ module Mushy 
     | 
|
| 
       87 
91 
     | 
    
         
             
                end
         
     | 
| 
       88 
92 
     | 
    
         | 
| 
       89 
93 
     | 
    
         
             
                def shape_these results, event, config
         
     | 
| 
       90 
     | 
    
         
            -
                  supported_shaping = [:merge, :outgoing_split, :group, :model, :join, :sort, :limit]
         
     | 
| 
      
 94 
     | 
    
         
            +
                  supported_shaping = [:merge, :outgoing_split, :group, :model, :ignore, :join, :sort, :limit]
         
     | 
| 
       91 
95 
     | 
    
         | 
| 
       92 
96 
     | 
    
         
             
                  shaping = supported_shaping
         
     | 
| 
       93 
97 
     | 
    
         
             
                  if (config[:shaping])
         
     | 
| 
         @@ -132,6 +136,13 @@ module Mushy 
     | 
|
| 
       132 
136 
     | 
    
         
             
                  results.map { |x| masher.mash by, x }
         
     | 
| 
       133 
137 
     | 
    
         
             
                end
         
     | 
| 
       134 
138 
     | 
    
         | 
| 
      
 139 
     | 
    
         
            +
                def ignore_these_results results, event, by
         
     | 
| 
      
 140 
     | 
    
         
            +
                  return results if by.to_s == ''
         
     | 
| 
      
 141 
     | 
    
         
            +
                  ignore_fields = by.split ','
         
     | 
| 
      
 142 
     | 
    
         
            +
                  results.each { |r| ignore_fields.each { |f| r.delete f } }
         
     | 
| 
      
 143 
     | 
    
         
            +
                  results
         
     | 
| 
      
 144 
     | 
    
         
            +
                end
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
       135 
146 
     | 
    
         
             
                def merge_these_results results, event, by
         
     | 
| 
       136 
147 
     | 
    
         
             
                  keys_to_merge = convert_this_to_an_array by
         
     | 
| 
       137 
148 
     | 
    
         
             
                  keys_to_merge = event.keys.map { |x| x.to_s } if (keys_to_merge[0] == '*')
         
     | 
    
        data/lib/mushy/fluxs/bash.rb
    CHANGED
    
    
    
        data/lib/mushy/fluxs/browser.rb
    CHANGED
    
    | 
         @@ -90,7 +90,9 @@ module Mushy 
     | 
|
| 
       90 
90 
     | 
    
         | 
| 
       91 
91 
     | 
    
         
             
                  browser.headers.add get_the_headers_from(event, config)
         
     | 
| 
       92 
92 
     | 
    
         | 
| 
      
 93 
     | 
    
         
            +
                  the_start = Time.now
         
     | 
| 
       93 
94 
     | 
    
         
             
                  browser.goto config[:url]
         
     | 
| 
      
 95 
     | 
    
         
            +
                  time = Time.now - the_start
         
     | 
| 
       94 
96 
     | 
    
         | 
| 
       95 
97 
     | 
    
         
             
                  browser.execute(config[:execute]) if config[:execute]
         
     | 
| 
       96 
98 
     | 
    
         | 
| 
         @@ -102,6 +104,7 @@ module Mushy 
     | 
|
| 
       102 
104 
     | 
    
         
             
                    title: browser.frames[0].title,
         
     | 
| 
       103 
105 
     | 
    
         
             
                    cookies: browser.cookies.all.map { |k, v| v.instance_variable_get('@attributes') },
         
     | 
| 
       104 
106 
     | 
    
         
             
                    headers: browser.headers.get,
         
     | 
| 
      
 107 
     | 
    
         
            +
                    time: time,
         
     | 
| 
       105 
108 
     | 
    
         
             
                    body: browser.body
         
     | 
| 
       106 
109 
     | 
    
         
             
                  }
         
     | 
| 
       107 
110 
     | 
    
         | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Mushy
         
     | 
| 
      
 2 
     | 
    
         
            +
              
         
     | 
| 
      
 3 
     | 
    
         
            +
              class Document < Flux
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                def self.details
         
     | 
| 
      
 6 
     | 
    
         
            +
                  {
         
     | 
| 
      
 7 
     | 
    
         
            +
                    name: 'Document',
         
     | 
| 
      
 8 
     | 
    
         
            +
                    description: 'Create a multi-line document.',
         
     | 
| 
      
 9 
     | 
    
         
            +
                    config: {
         
     | 
| 
      
 10 
     | 
    
         
            +
                      document: {
         
     | 
| 
      
 11 
     | 
    
         
            +
                                  description: 'The multi-line document you wish to create.',
         
     | 
| 
      
 12 
     | 
    
         
            +
                                  type:        'textarea',
         
     | 
| 
      
 13 
     | 
    
         
            +
                                  value:       '',
         
     | 
| 
      
 14 
     | 
    
         
            +
                                },
         
     | 
| 
      
 15 
     | 
    
         
            +
                    },
         
     | 
| 
      
 16 
     | 
    
         
            +
                  }
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                def process event, config
         
     | 
| 
      
 20 
     | 
    
         
            +
                  {
         
     | 
| 
      
 21 
     | 
    
         
            +
                    document: config[:document],
         
     | 
| 
      
 22 
     | 
    
         
            +
                  }
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            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
         
     | 
    
        data/lib/mushy/fluxs/ls.rb
    CHANGED
    
    | 
         @@ -14,31 +14,62 @@ module Mushy 
     | 
|
| 
       14 
14 
     | 
    
         
             
                                               shrink:      true,
         
     | 
| 
       15 
15 
     | 
    
         
             
                                               value:       '',
         
     | 
| 
       16 
16 
     | 
    
         
             
                                             }
         
     | 
| 
      
 17 
     | 
    
         
            +
                    c[:config][:path] = {
         
     | 
| 
      
 18 
     | 
    
         
            +
                                            description: 'Path, used to search for specific files.',
         
     | 
| 
      
 19 
     | 
    
         
            +
                                            type:        'text',
         
     | 
| 
      
 20 
     | 
    
         
            +
                                            shrink:      true,
         
     | 
| 
      
 21 
     | 
    
         
            +
                                            value:       '',
         
     | 
| 
      
 22 
     | 
    
         
            +
                                          }
         
     | 
| 
       17 
23 
     | 
    
         
             
                  end
         
     | 
| 
       18 
24 
     | 
    
         
             
                end
         
     | 
| 
       19 
25 
     | 
    
         | 
| 
       20 
26 
     | 
    
         
             
                def process event, config
         
     | 
| 
      
 27 
     | 
    
         
            +
                  arguments = build_the_arguments_from config
         
     | 
| 
       21 
28 
     | 
    
         | 
| 
      
 29 
     | 
    
         
            +
                  config[:command] = build_the_command_from arguments
         
     | 
| 
      
 30 
     | 
    
         
            +
                  result = super event, config
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                  things = turn_the_ls_output_to_events result, config, event
         
     | 
| 
      
 33 
     | 
    
         
            +
                  things
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                def build_the_command_from arguments
         
     | 
| 
      
 37 
     | 
    
         
            +
                  "ls #{arguments.join(' ')}"
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                def build_the_arguments_from config
         
     | 
| 
       22 
41 
     | 
    
         
             
                  arguments = ['-A', '-l', '--full-time', '-i']
         
     | 
| 
       23 
42 
     | 
    
         
             
                  arguments << '-R' if config[:recursive].to_s == 'true'
         
     | 
| 
       24 
     | 
    
         
            -
                  config[: 
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                   
     | 
| 
      
 43 
     | 
    
         
            +
                  arguments << '-d' if config[:directory_only].to_s == 'true'
         
     | 
| 
      
 44 
     | 
    
         
            +
                  arguments << "'#{config[:path]}'" if config[:path].to_s != ''
         
     | 
| 
      
 45 
     | 
    
         
            +
                  arguments
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
       27 
47 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 48 
     | 
    
         
            +
                def turn_the_ls_output_to_events result, config, event
         
     | 
| 
       29 
49 
     | 
    
         | 
| 
       30 
50 
     | 
    
         
             
                  lines = result[:text].split("\n")
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                  needs_special_work_for_path = config[:directory_only].to_s != 'true' &&
         
     | 
| 
      
 53 
     | 
    
         
            +
                                                config[:path].to_s != '' &&
         
     | 
| 
      
 54 
     | 
    
         
            +
                                                lines[0] &&
         
     | 
| 
      
 55 
     | 
    
         
            +
                                                lines[0].start_with?('total ')
         
     | 
| 
       32 
56 
     | 
    
         | 
| 
       33 
57 
     | 
    
         
             
                  origin = config[:directory] || Dir.pwd
         
     | 
| 
       34 
     | 
    
         
            -
                  directory = origin
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
      
 58 
     | 
    
         
            +
                  directory = needs_special_work_for_path ? '||DIRECTORY||' : origin
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                  things = lines.map do |x|
         
     | 
| 
       36 
61 
     | 
    
         
             
                    segments = x.split ' '
         
     | 
| 
       37 
62 
     | 
    
         
             
                    result = if segments.count > 5
         
     | 
| 
       38 
63 
     | 
    
         
             
                               pull_file segments, directory
         
     | 
| 
       39 
64 
     | 
    
         
             
                             elsif segments.count == 1
         
     | 
| 
       40 
65 
     | 
    
         
             
                               dir_segments = segments[0].split("\/")
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                               if dir_segments[0] == '.'
         
     | 
| 
      
 68 
     | 
    
         
            +
                                 dir_segments[0] = origin
         
     | 
| 
      
 69 
     | 
    
         
            +
                               else
         
     | 
| 
      
 70 
     | 
    
         
            +
                                 dir_segments.unshift origin
         
     | 
| 
      
 71 
     | 
    
         
            +
                               end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
       42 
73 
     | 
    
         
             
                               dir_segments[-1] = dir_segments[-1].sub ':', ''
         
     | 
| 
       43 
74 
     | 
    
         
             
                               directory = dir_segments.join("\/")
         
     | 
| 
       44 
75 
     | 
    
         
             
                               nil
         
     | 
| 
         @@ -47,6 +78,19 @@ module Mushy 
     | 
|
| 
       47 
78 
     | 
    
         
             
                             end
         
     | 
| 
       48 
79 
     | 
    
         
             
                  end.select { |x| x }
         
     | 
| 
       49 
80 
     | 
    
         | 
| 
      
 81 
     | 
    
         
            +
                  if needs_special_work_for_path
         
     | 
| 
      
 82 
     | 
    
         
            +
                    config[:directory_only] = true
         
     | 
| 
      
 83 
     | 
    
         
            +
                    special_name = process(event, config)[0][:name]
         
     | 
| 
      
 84 
     | 
    
         
            +
                    things.each do |x|
         
     | 
| 
      
 85 
     | 
    
         
            +
                      [:directory, :path].each do |key|
         
     | 
| 
      
 86 
     | 
    
         
            +
                        if x[key].include?('||DIRECTORY||')
         
     | 
| 
      
 87 
     | 
    
         
            +
                          x[key].sub!('||DIRECTORY||', File.join(Dir.pwd, special_name))
         
     | 
| 
      
 88 
     | 
    
         
            +
                        end
         
     | 
| 
      
 89 
     | 
    
         
            +
                      end
         
     | 
| 
      
 90 
     | 
    
         
            +
                    end
         
     | 
| 
      
 91 
     | 
    
         
            +
                  end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                  things
         
     | 
| 
       50 
94 
     | 
    
         
             
                end
         
     | 
| 
       51 
95 
     | 
    
         | 
| 
       52 
96 
     | 
    
         
             
                def pull_file segments, directory
         
     | 
| 
         @@ -63,7 +107,7 @@ module Mushy 
     | 
|
| 
       63 
107 
     | 
    
         
             
                    r[:date] = Time.parse r[:date]
         
     | 
| 
       64 
108 
     | 
    
         
             
                  end
         
     | 
| 
       65 
109 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
                  result[:name] = segments. 
     | 
| 
      
 110 
     | 
    
         
            +
                  result[:name] = segments.join ' '
         
     | 
| 
       67 
111 
     | 
    
         | 
| 
       68 
112 
     | 
    
         
             
                  result.tap do |r|
         
     | 
| 
       69 
113 
     | 
    
         
             
                    help_segments = r[:help].split ''
         
     | 
| 
         @@ -76,10 +120,18 @@ module Mushy 
     | 
|
| 
       76 
120 
     | 
    
         | 
| 
       77 
121 
     | 
    
         
             
                  [:hard_links, :size].each { |x| result[x] = result[x].to_i }
         
     | 
| 
       78 
122 
     | 
    
         | 
| 
       79 
     | 
    
         
            -
                  result[: 
     | 
| 
      
 123 
     | 
    
         
            +
                  result[:date] = Mushy::DateParts.parse result[:date]
         
     | 
| 
       80 
124 
     | 
    
         | 
| 
       81 
125 
     | 
    
         
             
                  result[:directory] = directory
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                  if result[:type] == 'd' && result[:directory] == result[:name]
         
     | 
| 
      
 128 
     | 
    
         
            +
                    result[:path] = result[:directory]
         
     | 
| 
      
 129 
     | 
    
         
            +
                    name_segments = result[:name].split "\/"
         
     | 
| 
      
 130 
     | 
    
         
            +
                    result[:name] = name_segments.pop
         
     | 
| 
      
 131 
     | 
    
         
            +
                    result[:directory] = name_segments.join "\/"
         
     | 
| 
      
 132 
     | 
    
         
            +
                  else
         
     | 
| 
      
 133 
     | 
    
         
            +
                    result[:path] = File.join result[:directory], result[:name]
         
     | 
| 
      
 134 
     | 
    
         
            +
                  end
         
     | 
| 
       83 
135 
     | 
    
         | 
| 
       84 
136 
     | 
    
         
             
                  result
         
     | 
| 
       85 
137 
     | 
    
         
             
                end
         
     | 
    
        data/lib/mushy/fluxs/pwd.rb
    CHANGED
    
    
| 
         @@ -32,7 +32,7 @@ module Mushy 
     | 
|
| 
       32 
32 
     | 
    
         
             
                  the_result  = input[:result]
         
     | 
| 
       33 
33 
     | 
    
         
             
                  the_config  = input[:config]
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
                  file = Mushy::WriteFile.get_file_from  
     | 
| 
      
 35 
     | 
    
         
            +
                  file = Mushy::WriteFile.get_file_from the_config
         
     | 
| 
       36 
36 
     | 
    
         
             
                  options = {
         
     | 
| 
       37 
37 
     | 
    
         
             
                      path:    file,
         
     | 
| 
       38 
38 
     | 
    
         
             
                      full:    ['true', ''].include?(the_config[:full].to_s),
         
     | 
| 
         @@ -41,7 +41,10 @@ module Mushy 
     | 
|
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
                  the_browser.screenshot options
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
                  options 
     | 
| 
      
 44 
     | 
    
         
            +
                  the_result[:options] = options
         
     | 
| 
      
 45 
     | 
    
         
            +
                  the_result[:file] = Mushy::Ls.new.process({}, { path: file })[0]
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                  the_result
         
     | 
| 
       45 
48 
     | 
    
         | 
| 
       46 
49 
     | 
    
         
             
                end
         
     | 
| 
       47 
50 
     | 
    
         | 
| 
         @@ -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/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.6.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.'
         
     | 
| 
         @@ -26,4 +26,5 @@ Gem::Specification.new do |s| 
     | 
|
| 
       26 
26 
     | 
    
         
             
              s.add_runtime_dependency 'faraday'
         
     | 
| 
       27 
27 
     | 
    
         
             
              s.add_runtime_dependency 'pony'
         
     | 
| 
       28 
28 
     | 
    
         
             
              s.add_runtime_dependency 'daemons'
         
     | 
| 
      
 29 
     | 
    
         
            +
              s.add_runtime_dependency 'listen'
         
     | 
| 
       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.6.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Darren Cauthon
         
     | 
| 
         @@ -150,6 +150,20 @@ dependencies: 
     | 
|
| 
       150 
150 
     | 
    
         
             
                - - ">="
         
     | 
| 
       151 
151 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       152 
152 
     | 
    
         
             
                    version: '0'
         
     | 
| 
      
 153 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 154 
     | 
    
         
            +
              name: listen
         
     | 
| 
      
 155 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 156 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 157 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 158 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 159 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 160 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 161 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 162 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 163 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 164 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 165 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 166 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       153 
167 
     | 
    
         
             
            description: This tool assists in the creation and processing of workflows.
         
     | 
| 
       154 
168 
     | 
    
         
             
            email: darren@cauthon.com
         
     | 
| 
       155 
169 
     | 
    
         
             
            executables:
         
     | 
| 
         @@ -173,7 +187,9 @@ files: 
     | 
|
| 
       173 
187 
     | 
    
         
             
            - lib/mushy/fluxs/build_csv.rb
         
     | 
| 
       174 
188 
     | 
    
         
             
            - lib/mushy/fluxs/cli.rb
         
     | 
| 
       175 
189 
     | 
    
         
             
            - lib/mushy/fluxs/collection.rb
         
     | 
| 
      
 190 
     | 
    
         
            +
            - lib/mushy/fluxs/document.rb
         
     | 
| 
       176 
191 
     | 
    
         
             
            - lib/mushy/fluxs/environment.rb
         
     | 
| 
      
 192 
     | 
    
         
            +
            - lib/mushy/fluxs/file_watch.rb
         
     | 
| 
       177 
193 
     | 
    
         
             
            - lib/mushy/fluxs/filter.rb
         
     | 
| 
       178 
194 
     | 
    
         
             
            - lib/mushy/fluxs/format.rb
         
     | 
| 
       179 
195 
     | 
    
         
             
            - lib/mushy/fluxs/get.rb
         
     | 
| 
         @@ -188,6 +204,7 @@ files: 
     | 
|
| 
       188 
204 
     | 
    
         
             
            - lib/mushy/fluxs/read_file.rb
         
     | 
| 
       189 
205 
     | 
    
         
             
            - lib/mushy/fluxs/screenshot.rb
         
     | 
| 
       190 
206 
     | 
    
         
             
            - lib/mushy/fluxs/smtp.rb
         
     | 
| 
      
 207 
     | 
    
         
            +
            - lib/mushy/fluxs/times.rb
         
     | 
| 
       191 
208 
     | 
    
         
             
            - lib/mushy/fluxs/write_file.rb
         
     | 
| 
       192 
209 
     | 
    
         
             
            - lib/mushy/masher.rb
         
     | 
| 
       193 
210 
     | 
    
         
             
            - lib/mushy/run.rb
         
     |