guard 0.10.0 → 1.0.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.
- data/CHANGELOG.md +19 -1
 - data/README.md +1 -1
 - data/lib/guard.rb +3 -3
 - data/lib/guard/cli.rb +17 -2
 - data/lib/guard/dsl.rb +1 -2
 - data/lib/guard/dsl_describer.rb +1 -1
 - data/lib/guard/interactor.rb +2 -0
 - data/lib/guard/interactors/readline.rb +2 -2
 - data/lib/guard/listener.rb +20 -14
 - data/lib/guard/ui.rb +12 -0
 - data/lib/guard/version.rb +1 -1
 - data/lib/guard/watcher.rb +22 -8
 - data/lib/vendor/darwin/ext/extconf.rb +4 -1
 - metadata +29 -26
 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,6 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ## 1.0.0 - 19 January, 2012
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            ### Improvements
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            - Add Gemnasium dependency status image to README. ([@laserlemon][])
         
     | 
| 
      
 6 
     | 
    
         
            +
            - Update vendor/darwin. ([@thibaudgg][])
         
     | 
| 
      
 7 
     | 
    
         
            +
            - [#223](https://github.com/guard/guard/issues/223): Warn if Guard isn't launched with `bundle exec`. (Proposed by [@thibaudgg][], done by [@netzpirat][])
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ### Bug fixes
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            - [#226](https://github.com/guard/guard/issues/226): Use a direct file descriptor with stty. ([@netzpirat][])
         
     | 
| 
      
 12 
     | 
    
         
            +
            - [#218](https://github.com/guard/guard/issues/174): Watching directory with `-A` option only reports a deleted file the first time around. ([@rymai][])
         
     | 
| 
      
 13 
     | 
    
         
            +
            - [#174](https://github.com/guard/guard/issues/174): Not creating timestamps for new files with `-A` option. ([@rymai][])
         
     | 
| 
      
 14 
     | 
    
         
            +
            - [#216](https://github.com/guard/guard/issues/216): Fix exit-status codes for Guard. ([@Maher4Ever][])
         
     | 
| 
      
 15 
     | 
    
         
            +
            - [#213 & 214](https://github.com/guard/guard/issues/214): Fixes the "ERROR: No guards found in Guardfile" message wrongly displayed when running `guard list`. ([@pirukire][])
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       1 
17 
     | 
    
         
             
            ## 0.10.0 - 1 January, 2012
         
     | 
| 
       2 
18 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            ###  
     | 
| 
      
 19 
     | 
    
         
            +
            ### Improvements
         
     | 
| 
       4 
20 
     | 
    
         | 
| 
       5 
21 
     | 
    
         
             
            - Improved Readline constraints. ([@netzpirat][])
         
     | 
| 
       6 
22 
     | 
    
         
             
            - Stop & start all guards on Guardfile reevaluation. ([@thibaudgg][])
         
     | 
| 
         @@ -397,6 +413,7 @@ 
     | 
|
| 
       397 
413 
     | 
    
         
             
            [@johnbintz]: https://github.com/johnbintz
         
     | 
| 
       398 
414 
     | 
    
         
             
            [@jrsacks]: https://github.com/jrsacks
         
     | 
| 
       399 
415 
     | 
    
         
             
            [@koshigoe]: https://github.com/koshigoe
         
     | 
| 
      
 416 
     | 
    
         
            +
            [@laserlemon]: https://github.com/laserlemon
         
     | 
| 
       400 
417 
     | 
    
         
             
            [@limeyd]: https://github.com/limeyd
         
     | 
| 
       401 
418 
     | 
    
         
             
            [@madtrick]: https://github.com/madtrick
         
     | 
| 
       402 
419 
     | 
    
         
             
            [@Maher4Ever]: https://github.com/Maher4Ever
         
     | 
| 
         @@ -410,6 +427,7 @@ 
     | 
|
| 
       410 
427 
     | 
    
         
             
            [@niklas]: https://github.com/niklas
         
     | 
| 
       411 
428 
     | 
    
         
             
            [@oliamb]: https://github.com/oliamb
         
     | 
| 
       412 
429 
     | 
    
         
             
            [@pcreux]: https://github.com/pcreux
         
     | 
| 
      
 430 
     | 
    
         
            +
            [@pirukire]: https://github.com/pirukire
         
     | 
| 
       413 
431 
     | 
    
         
             
            [@rmm5t]: https://github.com/rmm5t
         
     | 
| 
       414 
432 
     | 
    
         
             
            [@rymai]: https://github.com/rymai
         
     | 
| 
       415 
433 
     | 
    
         
             
            [@scottdavis]: https://github.com/scottdavis
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -832,7 +832,7 @@ When you file an issue, please try to follow to these simple rules if applicable 
     | 
|
| 
       832 
832 
     | 
    
         
             
            * Add your `Guardfile` and `Gemfile` to the issue.
         
     | 
| 
       833 
833 
     | 
    
         
             
            * Make sure that the issue is reproducible with your description.
         
     | 
| 
       834 
834 
     | 
    
         | 
| 
       835 
     | 
    
         
            -
            Development
         
     | 
| 
      
 835 
     | 
    
         
            +
            Development [](https://gemnasium.com/guard/guard) 
         
     | 
| 
       836 
836 
     | 
    
         
             
            -----------
         
     | 
| 
       837 
837 
     | 
    
         | 
| 
       838 
838 
     | 
    
         
             
            * Documentation hosted at [RubyDoc](http://rubydoc.info/github/guard/guard/master/frames).
         
     | 
    
        data/lib/guard.rb
    CHANGED
    
    | 
         @@ -46,13 +46,13 @@ module Guard 
     | 
|
| 
       46 
46 
     | 
    
         
             
                    elsif File.exist?(File.join(HOME_TEMPLATES, guard_name))
         
     | 
| 
       47 
47 
     | 
    
         
             
                      content  = File.read('Guardfile')
         
     | 
| 
       48 
48 
     | 
    
         
             
                      template = File.read(File.join(HOME_TEMPLATES, guard_name))
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
       50 
50 
     | 
    
         
             
                      File.open('Guardfile', 'wb') do |f|
         
     | 
| 
       51 
51 
     | 
    
         
             
                        f.puts(content)
         
     | 
| 
       52 
52 
     | 
    
         
             
                        f.puts("")
         
     | 
| 
       53 
53 
     | 
    
         
             
                        f.puts(template)
         
     | 
| 
       54 
54 
     | 
    
         
             
                      end
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
       56 
56 
     | 
    
         
             
                      ::Guard::UI.info "#{ guard_name } template added to Guardfile, feel free to edit it"
         
     | 
| 
       57 
57 
     | 
    
         
             
                    else
         
     | 
| 
       58 
58 
     | 
    
         
             
                      const_name  = guard_name.downcase.gsub('-', '')
         
     | 
| 
         @@ -180,6 +180,7 @@ module Guard 
     | 
|
| 
       180 
180 
     | 
    
         
             
                  setup(options)
         
     | 
| 
       181 
181 
     | 
    
         | 
| 
       182 
182 
     | 
    
         
             
                  Dsl.evaluate_guardfile(options)
         
     | 
| 
      
 183 
     | 
    
         
            +
                  UI.error 'No guards found in Guardfile, please add at least one.' if ::Guard.guards.empty?
         
     | 
| 
       183 
184 
     | 
    
         | 
| 
       184 
185 
     | 
    
         
             
                  options[:notify] && ENV['GUARD_NOTIFY'] != 'false' ? Notifier.turn_on : Notifier.turn_off
         
     | 
| 
       185 
186 
     | 
    
         | 
| 
         @@ -213,7 +214,6 @@ module Guard 
     | 
|
| 
       213 
214 
     | 
    
         | 
| 
       214 
215 
     | 
    
         
             
                  interactor.stop if interactor
         
     | 
| 
       215 
216 
     | 
    
         
             
                  listener.stop
         
     | 
| 
       216 
     | 
    
         
            -
                  abort
         
     | 
| 
       217 
217 
     | 
    
         
             
                end
         
     | 
| 
       218 
218 
     | 
    
         | 
| 
       219 
219 
     | 
    
         
             
                # Reload all Guards currently enabled.
         
     | 
    
        data/lib/guard/cli.rb
    CHANGED
    
    | 
         @@ -71,9 +71,11 @@ module Guard 
     | 
|
| 
       71 
71 
     | 
    
         
             
                # @see Guard.start
         
     | 
| 
       72 
72 
     | 
    
         
             
                #
         
     | 
| 
       73 
73 
     | 
    
         
             
                def start
         
     | 
| 
      
 74 
     | 
    
         
            +
                  verify_bundler_presence
         
     | 
| 
       74 
75 
     | 
    
         
             
                  ::Guard.start(options)
         
     | 
| 
       75 
76 
     | 
    
         
             
                rescue Interrupt
         
     | 
| 
       76 
77 
     | 
    
         
             
                  ::Guard.stop
         
     | 
| 
      
 78 
     | 
    
         
            +
                  abort
         
     | 
| 
       77 
79 
     | 
    
         
             
                end
         
     | 
| 
       78 
80 
     | 
    
         | 
| 
       79 
81 
     | 
    
         
             
                desc 'list', 'Lists guards that can be used with init'
         
     | 
| 
         @@ -84,6 +86,7 @@ module Guard 
     | 
|
| 
       84 
86 
     | 
    
         
             
                # @see Guard::DslDescriber.list
         
     | 
| 
       85 
87 
     | 
    
         
             
                #
         
     | 
| 
       86 
88 
     | 
    
         
             
                def list
         
     | 
| 
      
 89 
     | 
    
         
            +
                  verify_bundler_presence
         
     | 
| 
       87 
90 
     | 
    
         
             
                  ::Guard::DslDescriber.list(options)
         
     | 
| 
       88 
91 
     | 
    
         
             
                end
         
     | 
| 
       89 
92 
     | 
    
         | 
| 
         @@ -95,7 +98,8 @@ module Guard 
     | 
|
| 
       95 
98 
     | 
    
         
             
                # @see Guard::VERSION
         
     | 
| 
       96 
99 
     | 
    
         
             
                #
         
     | 
| 
       97 
100 
     | 
    
         
             
                def version
         
     | 
| 
       98 
     | 
    
         
            -
                   
     | 
| 
      
 101 
     | 
    
         
            +
                  verify_bundler_presence
         
     | 
| 
      
 102 
     | 
    
         
            +
                  ::Guard::UI.info "Guard version #{ ::Guard::VERSION }"
         
     | 
| 
       99 
103 
     | 
    
         
             
                end
         
     | 
| 
       100 
104 
     | 
    
         | 
| 
       101 
105 
     | 
    
         
             
                desc 'init [GUARD]', 'Generates a Guardfile at the current working directory, or insert the given GUARD to an existing Guardfile'
         
     | 
| 
         @@ -108,6 +112,7 @@ module Guard 
     | 
|
| 
       108 
112 
     | 
    
         
             
                # @param [String] guard_name the name of the Guard to initialize
         
     | 
| 
       109 
113 
     | 
    
         
             
                #
         
     | 
| 
       110 
114 
     | 
    
         
             
                def init(guard_name = nil)
         
     | 
| 
      
 115 
     | 
    
         
            +
                  verify_bundler_presence
         
     | 
| 
       111 
116 
     | 
    
         
             
                  ::Guard.initialize_template(guard_name)
         
     | 
| 
       112 
117 
     | 
    
         
             
                end
         
     | 
| 
       113 
118 
     | 
    
         | 
| 
         @@ -115,13 +120,23 @@ module Guard 
     | 
|
| 
       115 
120 
     | 
    
         
             
                map %w(-T) => :show
         
     | 
| 
       116 
121 
     | 
    
         | 
| 
       117 
122 
     | 
    
         
             
                # Shows all Guards and their options that are defined in
         
     | 
| 
       118 
     | 
    
         
            -
                # the `Guardfile 
     | 
| 
      
 123 
     | 
    
         
            +
                # the `Guardfile`
         
     | 
| 
       119 
124 
     | 
    
         
             
                #
         
     | 
| 
       120 
125 
     | 
    
         
             
                # @see Guard::DslDescriber.show
         
     | 
| 
       121 
126 
     | 
    
         
             
                #
         
     | 
| 
       122 
127 
     | 
    
         
             
                def show
         
     | 
| 
      
 128 
     | 
    
         
            +
                  verify_bundler_presence
         
     | 
| 
       123 
129 
     | 
    
         
             
                  ::Guard::DslDescriber.show(options)
         
     | 
| 
       124 
130 
     | 
    
         
             
                end
         
     | 
| 
       125 
131 
     | 
    
         | 
| 
      
 132 
     | 
    
         
            +
                private
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
                # Verifies if Guard is run with `bundle exec` and
         
     | 
| 
      
 135 
     | 
    
         
            +
                # shows a hint to do so if not.
         
     | 
| 
      
 136 
     | 
    
         
            +
                #
         
     | 
| 
      
 137 
     | 
    
         
            +
                def verify_bundler_presence
         
     | 
| 
      
 138 
     | 
    
         
            +
                  ::Guard::UI.warning "You are using Guard outside of Bundler, this is dangerous and could not work. Using `bundle exec guard` is safer." unless ENV['BUNDLE_GEMFILE']
         
     | 
| 
      
 139 
     | 
    
         
            +
                end
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
       126 
141 
     | 
    
         
             
              end
         
     | 
| 
       127 
142 
     | 
    
         
             
            end
         
     | 
    
        data/lib/guard/dsl.rb
    CHANGED
    
    | 
         @@ -100,8 +100,6 @@ module Guard 
     | 
|
| 
       100 
100 
     | 
    
         | 
| 
       101 
101 
     | 
    
         
             
                    fetch_guardfile_contents
         
     | 
| 
       102 
102 
     | 
    
         
             
                    instance_eval_guardfile(guardfile_contents_with_user_config)
         
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
                    UI.error 'No guards found in Guardfile, please add at least one.' if !::Guard.guards.nil? && ::Guard.guards.empty?
         
     | 
| 
       105 
103 
     | 
    
         
             
                  end
         
     | 
| 
       106 
104 
     | 
    
         | 
| 
       107 
105 
     | 
    
         
             
                  # Re-evaluate the `Guardfile` to update the current Guard configuration.
         
     | 
| 
         @@ -117,6 +115,7 @@ module Guard 
     | 
|
| 
       117 
115 
     | 
    
         
             
                      ::Guard::Notifier.clear_notifications
         
     | 
| 
       118 
116 
     | 
    
         
             
                      @@options.delete(:guardfile_contents)
         
     | 
| 
       119 
117 
     | 
    
         
             
                      Dsl.evaluate_guardfile(@@options)
         
     | 
| 
      
 118 
     | 
    
         
            +
                      UI.error 'No guards found in Guardfile, please add at least one.' if ::Guard.guards.empty?
         
     | 
| 
       120 
119 
     | 
    
         
             
                      msg = 'Guardfile has been re-evaluated.'
         
     | 
| 
       121 
120 
     | 
    
         
             
                      UI.info(msg)
         
     | 
| 
       122 
121 
     | 
    
         
             
                      Notifier.notify(msg)
         
     | 
    
        data/lib/guard/dsl_describer.rb
    CHANGED
    
    | 
         @@ -48,7 +48,7 @@ module Guard 
     | 
|
| 
       48 
48 
     | 
    
         
             
                    evaluate_guardfile(options)
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
       50 
50 
     | 
    
         
             
                    installed_guards = guardfile_structure.inject([]) do |installed, group|
         
     | 
| 
       51 
     | 
    
         
            -
                      group[:guards].each { |guard| installed << guard[:name] } if group[:guards]
         
     | 
| 
      
 51 
     | 
    
         
            +
                      group[:guards].each { |guard| installed << guard[:name].to_s } if group[:guards]
         
     | 
| 
       52 
52 
     | 
    
         
             
                      installed
         
     | 
| 
       53 
53 
     | 
    
         
             
                    end
         
     | 
| 
       54 
54 
     | 
    
         | 
    
        data/lib/guard/interactor.rb
    CHANGED
    
    | 
         @@ -96,6 +96,7 @@ module Guard 
     | 
|
| 
       96 
96 
     | 
    
         
             
                # Kill interactor thread if not current
         
     | 
| 
       97 
97 
     | 
    
         
             
                #
         
     | 
| 
       98 
98 
     | 
    
         
             
                def stop
         
     | 
| 
      
 99 
     | 
    
         
            +
                  return if ENV['GUARD_ENV'] == 'test'
         
     | 
| 
       99 
100 
     | 
    
         
             
                  unless Thread.current == @thread
         
     | 
| 
       100 
101 
     | 
    
         
             
                    @thread.kill
         
     | 
| 
       101 
102 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -122,6 +123,7 @@ module Guard 
     | 
|
| 
       122 
123 
     | 
    
         
             
                    help
         
     | 
| 
       123 
124 
     | 
    
         
             
                  when :stop
         
     | 
| 
       124 
125 
     | 
    
         
             
                    ::Guard.stop
         
     | 
| 
      
 126 
     | 
    
         
            +
                    exit
         
     | 
| 
       125 
127 
     | 
    
         
             
                  when :pause
         
     | 
| 
       126 
128 
     | 
    
         
             
                    ::Guard.pause
         
     | 
| 
       127 
129 
     | 
    
         
             
                  when :reload
         
     | 
| 
         @@ -98,13 +98,13 @@ module Guard 
     | 
|
| 
       98 
98 
     | 
    
         
             
                # when stopping.
         
     | 
| 
       99 
99 
     | 
    
         
             
                #
         
     | 
| 
       100 
100 
     | 
    
         
             
                def store_terminal_settings
         
     | 
| 
       101 
     | 
    
         
            -
                  @stty_save = `stty -g`.chomp
         
     | 
| 
      
 101 
     | 
    
         
            +
                  @stty_save = `stty -g 2>/dev/null`.chomp
         
     | 
| 
       102 
102 
     | 
    
         
             
                end
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
       104 
104 
     | 
    
         
             
                # Restore terminal settings
         
     | 
| 
       105 
105 
     | 
    
         
             
                #
         
     | 
| 
       106 
106 
     | 
    
         
             
                def restore_terminal_settings
         
     | 
| 
       107 
     | 
    
         
            -
                  system('stty', @stty_save)
         
     | 
| 
      
 107 
     | 
    
         
            +
                  system('stty', @stty_save, '2>/dev/null')
         
     | 
| 
       108 
108 
     | 
    
         
             
                end
         
     | 
| 
       109 
109 
     | 
    
         
             
              end
         
     | 
| 
       110 
110 
     | 
    
         
             
            end
         
     | 
    
        data/lib/guard/listener.rb
    CHANGED
    
    | 
         @@ -98,7 +98,7 @@ module Guard 
     | 
|
| 
       98 
98 
     | 
    
         
             
                #
         
     | 
| 
       99 
99 
     | 
    
         
             
                def start
         
     | 
| 
       100 
100 
     | 
    
         
             
                  watch(@directory)
         
     | 
| 
       101 
     | 
    
         
            -
                  timestamp_files
         
     | 
| 
      
 101 
     | 
    
         
            +
                  timestamp_files if watch_all_modifications?
         
     | 
| 
       102 
102 
     | 
    
         
             
                end
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
       104 
104 
     | 
    
         
             
                # Stop listening for events.
         
     | 
| 
         @@ -154,6 +154,7 @@ module Guard 
     | 
|
| 
       154 
154 
     | 
    
         
             
                def modified_files(dirs, options = {})
         
     | 
| 
       155 
155 
     | 
    
         
             
                  last_event = @last_event
         
     | 
| 
       156 
156 
     | 
    
         
             
                  files = []
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
       157 
158 
     | 
    
         
             
                  if watch_all_modifications?
         
     | 
| 
       158 
159 
     | 
    
         
             
                    deleted_files = @file_timestamp_hash.collect do |path, ts|
         
     | 
| 
       159 
160 
     | 
    
         
             
                      unless File.exists?(path)
         
     | 
| 
         @@ -165,7 +166,10 @@ module Guard 
     | 
|
| 
       165 
166 
     | 
    
         
             
                    files.concat(deleted_files.compact)
         
     | 
| 
       166 
167 
     | 
    
         
             
                  end
         
     | 
| 
       167 
168 
     | 
    
         
             
                  update_last_event
         
     | 
| 
       168 
     | 
    
         
            -
                   
     | 
| 
      
 169 
     | 
    
         
            +
                  updated_files = potentially_modified_files(dirs, options).select do |path|
         
     | 
| 
      
 170 
     | 
    
         
            +
                    file_modified?(path, last_event)
         
     | 
| 
      
 171 
     | 
    
         
            +
                  end
         
     | 
| 
      
 172 
     | 
    
         
            +
                  files.concat(updated_files)
         
     | 
| 
       169 
173 
     | 
    
         | 
| 
       170 
174 
     | 
    
         
             
                  relativize_paths(files)
         
     | 
| 
       171 
175 
     | 
    
         
             
                end
         
     | 
| 
         @@ -195,7 +199,7 @@ module Guard 
     | 
|
| 
       195 
199 
     | 
    
         
             
                def relativize_paths(paths)
         
     | 
| 
       196 
200 
     | 
    
         
             
                  return paths unless relativize_paths?
         
     | 
| 
       197 
201 
     | 
    
         
             
                  paths.map do |path|
         
     | 
| 
       198 
     | 
    
         
            -
             
     | 
| 
      
 202 
     | 
    
         
            +
                    path.gsub(%r{^(!)?#{ @directory }/},'\1')
         
     | 
| 
       199 
203 
     | 
    
         
             
                  end
         
     | 
| 
       200 
204 
     | 
    
         
             
                end
         
     | 
| 
       201 
205 
     | 
    
         | 
| 
         @@ -219,7 +223,7 @@ module Guard 
     | 
|
| 
       219 
223 
     | 
    
         
             
                # Populate initial timestamp file hash to watch for deleted or moved files.
         
     | 
| 
       220 
224 
     | 
    
         
             
                #
         
     | 
| 
       221 
225 
     | 
    
         
             
                def timestamp_files
         
     | 
| 
       222 
     | 
    
         
            -
                  all_files.each {|path| set_file_timestamp_hash(path 
     | 
| 
      
 226 
     | 
    
         
            +
                  all_files.each { |path| set_file_timestamp_hash(path) }
         
     | 
| 
       223 
227 
     | 
    
         
             
                end
         
     | 
| 
       224 
228 
     | 
    
         | 
| 
       225 
229 
     | 
    
         
             
                # Removes the ignored paths from the directory list.
         
     | 
| 
         @@ -273,10 +277,12 @@ module Guard 
     | 
|
| 
       273 
277 
     | 
    
         
             
                def file_modified?(path, last_event)
         
     | 
| 
       274 
278 
     | 
    
         
             
                  ctime = File.ctime(path).to_i
         
     | 
| 
       275 
279 
     | 
    
         
             
                  mtime = File.mtime(path).to_i
         
     | 
| 
      
 280 
     | 
    
         
            +
             
     | 
| 
       276 
281 
     | 
    
         
             
                  if [mtime, ctime].max == last_event.to_i
         
     | 
| 
       277 
     | 
    
         
            -
                    file_content_modified?(path 
     | 
| 
      
 282 
     | 
    
         
            +
                    file_content_modified?(path)
         
     | 
| 
       278 
283 
     | 
    
         
             
                  elsif mtime > last_event.to_i
         
     | 
| 
       279 
     | 
    
         
            -
                    set_sha1_checksums_hash(path 
     | 
| 
      
 284 
     | 
    
         
            +
                    set_sha1_checksums_hash(path)
         
     | 
| 
      
 285 
     | 
    
         
            +
                    set_file_timestamp_hash(path) if watch_all_modifications?
         
     | 
| 
       280 
286 
     | 
    
         
             
                    true
         
     | 
| 
       281 
287 
     | 
    
         
             
                  elsif watch_all_modifications?
         
     | 
| 
       282 
288 
     | 
    
         
             
                    ts = file_timestamp(path)
         
     | 
| 
         @@ -295,11 +301,11 @@ module Guard 
     | 
|
| 
       295 
301 
     | 
    
         
             
                # comparing the SHA1 checksum.
         
     | 
| 
       296 
302 
     | 
    
         
             
                #
         
     | 
| 
       297 
303 
     | 
    
         
             
                # @param [String] path the file path
         
     | 
| 
       298 
     | 
    
         
            -
                # @param [String] sha1_checksum the checksum of the file
         
     | 
| 
       299 
304 
     | 
    
         
             
                #
         
     | 
| 
       300 
     | 
    
         
            -
                def file_content_modified?(path 
     | 
| 
       301 
     | 
    
         
            -
                   
     | 
| 
       302 
     | 
    
         
            -
             
     | 
| 
      
 305 
     | 
    
         
            +
                def file_content_modified?(path)
         
     | 
| 
      
 306 
     | 
    
         
            +
                  checksum = sha1_checksum(path)
         
     | 
| 
      
 307 
     | 
    
         
            +
                  if @sha1_checksums_hash[path] != checksum
         
     | 
| 
      
 308 
     | 
    
         
            +
                    set_sha1_checksums_hash(path, checksum)
         
     | 
| 
       303 
309 
     | 
    
         
             
                    true
         
     | 
| 
       304 
310 
     | 
    
         
             
                  else
         
     | 
| 
       305 
311 
     | 
    
         
             
                    false
         
     | 
| 
         @@ -311,8 +317,8 @@ module Guard 
     | 
|
| 
       311 
317 
     | 
    
         
             
                # @param [String] path the file path
         
     | 
| 
       312 
318 
     | 
    
         
             
                # @param [Integer] file_timestamp the files modified timestamp
         
     | 
| 
       313 
319 
     | 
    
         
             
                #
         
     | 
| 
       314 
     | 
    
         
            -
                def set_file_timestamp_hash(path,  
     | 
| 
       315 
     | 
    
         
            -
             
     | 
| 
      
 320 
     | 
    
         
            +
                def set_file_timestamp_hash(path, timestamp = nil)
         
     | 
| 
      
 321 
     | 
    
         
            +
                  @file_timestamp_hash[path] = timestamp ? timestamp : file_timestamp(path)
         
     | 
| 
       316 
322 
     | 
    
         
             
                end
         
     | 
| 
       317 
323 
     | 
    
         | 
| 
       318 
324 
     | 
    
         
             
                # Set the current checksum of a file.
         
     | 
| 
         @@ -320,8 +326,8 @@ module Guard 
     | 
|
| 
       320 
326 
     | 
    
         
             
                # @param [String] path the file path
         
     | 
| 
       321 
327 
     | 
    
         
             
                # @param [String] sha1_checksum the checksum of the file
         
     | 
| 
       322 
328 
     | 
    
         
             
                #
         
     | 
| 
       323 
     | 
    
         
            -
                def set_sha1_checksums_hash(path,  
     | 
| 
       324 
     | 
    
         
            -
                  @sha1_checksums_hash[path] = sha1_checksum
         
     | 
| 
      
 329 
     | 
    
         
            +
                def set_sha1_checksums_hash(path, checksum = nil)
         
     | 
| 
      
 330 
     | 
    
         
            +
                  @sha1_checksums_hash[path] = checksum ? checksum : sha1_checksum(path)
         
     | 
| 
       325 
331 
     | 
    
         
             
                end
         
     | 
| 
       326 
332 
     | 
    
         | 
| 
       327 
333 
     | 
    
         
             
                # Gets a files modified timestamp
         
     | 
    
        data/lib/guard/ui.rb
    CHANGED
    
    | 
         @@ -24,6 +24,18 @@ module Guard 
     | 
|
| 
       24 
24 
     | 
    
         
             
                    end
         
     | 
| 
       25 
25 
     | 
    
         
             
                  end
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
      
 27 
     | 
    
         
            +
                  # Show a yellow warning message that is prefixed with WARNING.
         
     | 
| 
      
 28 
     | 
    
         
            +
                  #
         
     | 
| 
      
 29 
     | 
    
         
            +
                  # @param [String] message the message to show
         
     | 
| 
      
 30 
     | 
    
         
            +
                  # @option options [Boolean] reset whether to clean the output before
         
     | 
| 
      
 31 
     | 
    
         
            +
                  #
         
     | 
| 
      
 32 
     | 
    
         
            +
                  def warning(message, options = { })
         
     | 
| 
      
 33 
     | 
    
         
            +
                    unless ENV['GUARD_ENV'] == 'test'
         
     | 
| 
      
 34 
     | 
    
         
            +
                      reset_line if options[:reset]
         
     | 
| 
      
 35 
     | 
    
         
            +
                      STDERR.puts color('WARNING: ', :yellow) + message
         
     | 
| 
      
 36 
     | 
    
         
            +
                    end
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
       27 
39 
     | 
    
         
             
                  # Show a red error message that is prefixed with ERROR.
         
     | 
| 
       28 
40 
     | 
    
         
             
                  #
         
     | 
| 
       29 
41 
     | 
    
         
             
                  # @param [String] message the message to show
         
     | 
    
        data/lib/guard/version.rb
    CHANGED
    
    
    
        data/lib/guard/watcher.rb
    CHANGED
    
    | 
         @@ -43,11 +43,11 @@ module Guard 
     | 
|
| 
       43 
43 
     | 
    
         
             
                def self.match_files(guard, files)
         
     | 
| 
       44 
44 
     | 
    
         
             
                  guard.watchers.inject([]) do |paths, watcher|
         
     | 
| 
       45 
45 
     | 
    
         
             
                    files.each do |file|
         
     | 
| 
       46 
     | 
    
         
            -
                      if matches = watcher. 
     | 
| 
      
 46 
     | 
    
         
            +
                      if matches = watcher.match(file)
         
     | 
| 
       47 
47 
     | 
    
         
             
                        if watcher.action
         
     | 
| 
       48 
48 
     | 
    
         
             
                          result = watcher.call_action(matches)
         
     | 
| 
       49 
49 
     | 
    
         
             
                          if guard.options[:any_return]
         
     | 
| 
       50 
     | 
    
         
            -
                            paths << result 
     | 
| 
      
 50 
     | 
    
         
            +
                            paths << result
         
     | 
| 
       51 
51 
     | 
    
         
             
                          elsif result.respond_to?(:empty?) && !result.empty?
         
     | 
| 
       52 
52 
     | 
    
         
             
                            paths << Array(result)
         
     | 
| 
       53 
53 
     | 
    
         
             
                          end
         
     | 
| 
         @@ -56,7 +56,7 @@ module Guard 
     | 
|
| 
       56 
56 
     | 
    
         
             
                        end
         
     | 
| 
       57 
57 
     | 
    
         
             
                      end
         
     | 
| 
       58 
58 
     | 
    
         
             
                    end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
       60 
60 
     | 
    
         
             
                    guard.options[:any_return] ? paths : paths.flatten.map { |p| p.to_s }
         
     | 
| 
       61 
61 
     | 
    
         
             
                  end
         
     | 
| 
       62 
62 
     | 
    
         
             
                end
         
     | 
| 
         @@ -70,21 +70,35 @@ module Guard 
     | 
|
| 
       70 
70 
     | 
    
         
             
                def self.match_files?(guards, files)
         
     | 
| 
       71 
71 
     | 
    
         
             
                  guards.any? do |guard|
         
     | 
| 
       72 
72 
     | 
    
         
             
                    guard.watchers.any? do |watcher|
         
     | 
| 
       73 
     | 
    
         
            -
                      files.any? { |file| watcher. 
     | 
| 
      
 73 
     | 
    
         
            +
                      files.any? { |file| watcher.match(file) }
         
     | 
| 
       74 
74 
     | 
    
         
             
                    end
         
     | 
| 
       75 
75 
     | 
    
         
             
                  end
         
     | 
| 
       76 
76 
     | 
    
         
             
                end
         
     | 
| 
       77 
77 
     | 
    
         | 
| 
      
 78 
     | 
    
         
            +
                # @deprecated Use .match instead
         
     | 
| 
      
 79 
     | 
    
         
            +
                #
         
     | 
| 
      
 80 
     | 
    
         
            +
                def match_file?(file)
         
     | 
| 
      
 81 
     | 
    
         
            +
                  UI.info "Guard::Watcher.match_file? is deprecated, please use Guard::Watcher.match instead."
         
     | 
| 
      
 82 
     | 
    
         
            +
                  match(file)
         
     | 
| 
      
 83 
     | 
    
         
            +
                end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
       78 
85 
     | 
    
         
             
                # Test the watchers pattern against a file.
         
     | 
| 
       79 
86 
     | 
    
         
             
                #
         
     | 
| 
       80 
87 
     | 
    
         
             
                # @param [String] file the file to test
         
     | 
| 
       81 
     | 
    
         
            -
                # @return [ 
     | 
| 
      
 88 
     | 
    
         
            +
                # @return [Array<String>] an array of matches (or containing a single path if the pattern is a string)
         
     | 
| 
       82 
89 
     | 
    
         
             
                #
         
     | 
| 
       83 
     | 
    
         
            -
                def  
     | 
| 
      
 90 
     | 
    
         
            +
                def match(file)
         
     | 
| 
      
 91 
     | 
    
         
            +
                  f = file
         
     | 
| 
      
 92 
     | 
    
         
            +
                  deleted = file.start_with?('!')
         
     | 
| 
      
 93 
     | 
    
         
            +
                  f = deleted ? f[1..-1] : f
         
     | 
| 
       84 
94 
     | 
    
         
             
                  if @pattern.is_a?(Regexp)
         
     | 
| 
       85 
     | 
    
         
            -
                     
     | 
| 
      
 95 
     | 
    
         
            +
                    if m = f.match(@pattern)
         
     | 
| 
      
 96 
     | 
    
         
            +
                      m = m.to_a
         
     | 
| 
      
 97 
     | 
    
         
            +
                      m[0] = file
         
     | 
| 
      
 98 
     | 
    
         
            +
                      m
         
     | 
| 
      
 99 
     | 
    
         
            +
                    end
         
     | 
| 
       86 
100 
     | 
    
         
             
                  else
         
     | 
| 
       87 
     | 
    
         
            -
                     
     | 
| 
      
 101 
     | 
    
         
            +
                    f == @pattern ? [file] : nil
         
     | 
| 
       88 
102 
     | 
    
         
             
                  end
         
     | 
| 
       89 
103 
     | 
    
         
             
                end
         
     | 
| 
       90 
104 
     | 
    
         | 
| 
         @@ -21,12 +21,15 @@ else 
     | 
|
| 
       21 
21 
     | 
    
         
             
              raise "Only Darwin systems greater than 8 (Mac OS X 10.5+) are supported" unless sdk_version
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
              core_flags = %W{
         
     | 
| 
       24 
     | 
    
         
            -
                -isysroot #{xcode_path}/SDKs/MacOSX#{sdk_version}.sdk
         
     | 
| 
      
 24 
     | 
    
         
            +
                -isysroot "#{xcode_path}/SDKs/MacOSX#{sdk_version}.sdk"
         
     | 
| 
       25 
25 
     | 
    
         
             
                -mmacosx-version-min=#{sdk_version} -mdynamic-no-pic -std=gnu99
         
     | 
| 
       26 
26 
     | 
    
         
             
              }
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
              cflags = core_flags + %w{-Os -pipe}
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
      
 30 
     | 
    
         
            +
              arch_sig = `uname -m`
         
     | 
| 
      
 31 
     | 
    
         
            +
              cflags << '-arch i386'  if arch_sig =~ /i386$/i
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       30 
33 
     | 
    
         
             
              wflags = %w{
         
     | 
| 
       31 
34 
     | 
    
         
             
                -Wmissing-prototypes -Wreturn-type -Wmissing-braces -Wparentheses -Wswitch
         
     | 
| 
       32 
35 
     | 
    
         
             
                -Wunused-function -Wunused-label -Wunused-parameter -Wunused-variable
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: guard
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,11 +9,11 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012-01- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-01-19 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: thor
         
     | 
| 
       16 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: &70098870288860 !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       18 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
19 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -21,10 +21,10 @@ dependencies: 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    version: 0.14.6
         
     | 
| 
       22 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       23 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: *70098870288860
         
     | 
| 
       25 
25 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       26 
26 
     | 
    
         
             
              name: ffi
         
     | 
| 
       27 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 27 
     | 
    
         
            +
              requirement: &70098870331220 !ruby/object:Gem::Requirement
         
     | 
| 
       28 
28 
     | 
    
         
             
                none: false
         
     | 
| 
       29 
29 
     | 
    
         
             
                requirements:
         
     | 
| 
       30 
30 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -32,10 +32,10 @@ dependencies: 
     | 
|
| 
       32 
32 
     | 
    
         
             
                    version: 0.5.0
         
     | 
| 
       33 
33 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       34 
34 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 35 
     | 
    
         
            +
              version_requirements: *70098870331220
         
     | 
| 
       36 
36 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       37 
37 
     | 
    
         
             
              name: bundler
         
     | 
| 
       38 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 38 
     | 
    
         
            +
              requirement: &70098870377140 !ruby/object:Gem::Requirement
         
     | 
| 
       39 
39 
     | 
    
         
             
                none: false
         
     | 
| 
       40 
40 
     | 
    
         
             
                requirements:
         
     | 
| 
       41 
41 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -43,62 +43,62 @@ dependencies: 
     | 
|
| 
       43 
43 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       44 
44 
     | 
    
         
             
              type: :development
         
     | 
| 
       45 
45 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       46 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 46 
     | 
    
         
            +
              version_requirements: *70098870377140
         
     | 
| 
       47 
47 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       48 
48 
     | 
    
         
             
              name: rspec
         
     | 
| 
       49 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 49 
     | 
    
         
            +
              requirement: &70098870399680 !ruby/object:Gem::Requirement
         
     | 
| 
       50 
50 
     | 
    
         
             
                none: false
         
     | 
| 
       51 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
52 
     | 
    
         
             
                - - ~>
         
     | 
| 
       53 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
     | 
    
         
            -
                    version: 2. 
     | 
| 
      
 54 
     | 
    
         
            +
                    version: 2.8.0
         
     | 
| 
       55 
55 
     | 
    
         
             
              type: :development
         
     | 
| 
       56 
56 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       57 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 57 
     | 
    
         
            +
              version_requirements: *70098870399680
         
     | 
| 
       58 
58 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       59 
59 
     | 
    
         
             
              name: guard-rspec
         
     | 
| 
       60 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 60 
     | 
    
         
            +
              requirement: &70098870396740 !ruby/object:Gem::Requirement
         
     | 
| 
       61 
61 
     | 
    
         
             
                none: false
         
     | 
| 
       62 
62 
     | 
    
         
             
                requirements:
         
     | 
| 
       63 
63 
     | 
    
         
             
                - - ~>
         
     | 
| 
       64 
64 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       65 
     | 
    
         
            -
                    version: 0. 
     | 
| 
      
 65 
     | 
    
         
            +
                    version: 0.6.0
         
     | 
| 
       66 
66 
     | 
    
         
             
              type: :development
         
     | 
| 
       67 
67 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       68 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 68 
     | 
    
         
            +
              version_requirements: *70098870396740
         
     | 
| 
       69 
69 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       70 
70 
     | 
    
         
             
              name: yard
         
     | 
| 
       71 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 71 
     | 
    
         
            +
              requirement: &70098870407720 !ruby/object:Gem::Requirement
         
     | 
| 
       72 
72 
     | 
    
         
             
                none: false
         
     | 
| 
       73 
73 
     | 
    
         
             
                requirements:
         
     | 
| 
       74 
     | 
    
         
            -
                - -  
     | 
| 
      
 74 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       75 
75 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       76 
     | 
    
         
            -
                    version: 0 
     | 
| 
      
 76 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       77 
77 
     | 
    
         
             
              type: :development
         
     | 
| 
       78 
78 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       79 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 79 
     | 
    
         
            +
              version_requirements: *70098870407720
         
     | 
| 
       80 
80 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       81 
81 
     | 
    
         
             
              name: redcarpet
         
     | 
| 
       82 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 82 
     | 
    
         
            +
              requirement: &70098870444360 !ruby/object:Gem::Requirement
         
     | 
| 
       83 
83 
     | 
    
         
             
                none: false
         
     | 
| 
       84 
84 
     | 
    
         
             
                requirements:
         
     | 
| 
       85 
     | 
    
         
            -
                - -  
     | 
| 
      
 85 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       86 
86 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       87 
     | 
    
         
            -
                    version:  
     | 
| 
      
 87 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       88 
88 
     | 
    
         
             
              type: :development
         
     | 
| 
       89 
89 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       90 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 90 
     | 
    
         
            +
              version_requirements: *70098870444360
         
     | 
| 
       91 
91 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       92 
92 
     | 
    
         
             
              name: pry
         
     | 
| 
       93 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 93 
     | 
    
         
            +
              requirement: &70098870442760 !ruby/object:Gem::Requirement
         
     | 
| 
       94 
94 
     | 
    
         
             
                none: false
         
     | 
| 
       95 
95 
     | 
    
         
             
                requirements:
         
     | 
| 
       96 
     | 
    
         
            -
                - -  
     | 
| 
      
 96 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
       97 
97 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       98 
     | 
    
         
            -
                    version: 0 
     | 
| 
      
 98 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       99 
99 
     | 
    
         
             
              type: :development
         
     | 
| 
       100 
100 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       101 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 101 
     | 
    
         
            +
              version_requirements: *70098870442760
         
     | 
| 
       102 
102 
     | 
    
         
             
            description: Guard is a command line tool to easily handle events on file system modifications.
         
     | 
| 
       103 
103 
     | 
    
         
             
            email:
         
     | 
| 
       104 
104 
     | 
    
         
             
            - thibaud@thibaud.me
         
     | 
| 
         @@ -195,6 +195,9 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       195 
195 
     | 
    
         
             
              - - ! '>='
         
     | 
| 
       196 
196 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       197 
197 
     | 
    
         
             
                  version: '0'
         
     | 
| 
      
 198 
     | 
    
         
            +
                  segments:
         
     | 
| 
      
 199 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 200 
     | 
    
         
            +
                  hash: 3509592351307849355
         
     | 
| 
       198 
201 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       199 
202 
     | 
    
         
             
              none: false
         
     | 
| 
       200 
203 
     | 
    
         
             
              requirements:
         
     |