sugar_utils 0.4.4 → 0.5.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/.travis.yml +0 -3
 - data/CHANGELOG.md +5 -0
 - data/lib/sugar_utils/file.rb +29 -13
 - data/lib/sugar_utils/version.rb +1 -1
 - data/spec/sugar_utils/file_spec.rb +12 -2
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 8f9d52c1492ed959f2b33c945732bf36188e6fc1
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: b68e7a45954e73eeac4cfe214c5aec54e4602fd2
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: cdf2c594969a6c7c0b5279032c18a40b4ce4b6c2b27e86cd814e4f7aa15ded81d661d63890795c5414e27907eb2a4d95c903a22ce3f76803b2f63b41e55bd60b
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 5434657b56c88ee11296ff25d9ee00e43207050da6345f6df4e34717edcb8fbe7bb7dcc492c1cad326cd85efd9fae02f37fe4fd71a7dfffe7162ed9930b5b96e
         
     | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            ## [Unreleased]
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
            ## [0.5.0] - 2018-05-01
         
     | 
| 
      
 10 
     | 
    
         
            +
            ### Changed
         
     | 
| 
      
 11 
     | 
    
         
            +
            - bring back :perm as option to set the permissions in SugarUtils::File.write and SugarUtils::File.touch methods
         
     | 
| 
      
 12 
     | 
    
         
            +
            - :mode option in SugarUtils::File.write is now to be used for setting the file mode (e.g. read/write, append, etc). It can still be used for setting the permissions if it is an integer value for backwards compatibility purposes, but this usage has been deprecated.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
       9 
14 
     | 
    
         
             
            ## [0.4.4] - 2018-01-31
         
     | 
| 
       10 
15 
     | 
    
         
             
            ### Changed
         
     | 
| 
       11 
16 
     | 
    
         
             
            - fixed a bug in SugarUtils::File.read_json which it would raise an exception
         
     | 
    
        data/lib/sugar_utils/file.rb
    CHANGED
    
    | 
         @@ -105,23 +105,26 @@ module SugarUtils 
     | 
|
| 
       105 
105 
     | 
    
         
             
                # @param [Hash] options
         
     | 
| 
       106 
106 
     | 
    
         
             
                # @option options [String, Integer] :owner
         
     | 
| 
       107 
107 
     | 
    
         
             
                # @option options [String, Integer] :group
         
     | 
| 
       108 
     | 
    
         
            -
                # @option options [Integer] :mode
         
     | 
| 
       109 
     | 
    
         
            -
                # @option options [Integer] :perm 
     | 
| 
      
 108 
     | 
    
         
            +
                # @option options [Integer] :mode @deprecated
         
     | 
| 
      
 109 
     | 
    
         
            +
                # @option options [Integer] :perm
         
     | 
| 
       110 
110 
     | 
    
         
             
                # @option options [Integer] :mtime
         
     | 
| 
       111 
111 
     | 
    
         
             
                #
         
     | 
| 
       112 
112 
     | 
    
         
             
                # @return [void]
         
     | 
| 
       113 
113 
     | 
    
         
             
                def self.touch(filename, options = {})
         
     | 
| 
       114 
114 
     | 
    
         
             
                  owner         = options[:owner]
         
     | 
| 
       115 
115 
     | 
    
         
             
                  group         = options[:group]
         
     | 
| 
       116 
     | 
    
         
            -
                   
     | 
| 
      
 116 
     | 
    
         
            +
                  perm          = options[:perm]
         
     | 
| 
       117 
117 
     | 
    
         
             
                  touch_options = options.select { |k| %i[mtime].include?(k) }
         
     | 
| 
       118 
118 
     | 
    
         | 
| 
       119 
     | 
    
         
            -
                   
     | 
| 
      
 119 
     | 
    
         
            +
                  if options[:mode].is_a?(Integer)
         
     | 
| 
      
 120 
     | 
    
         
            +
                    perm = options[:mode]
         
     | 
| 
      
 121 
     | 
    
         
            +
                    deprecate_option(:touch, :mode, :perm, 2018, 7)
         
     | 
| 
      
 122 
     | 
    
         
            +
                  end
         
     | 
| 
       120 
123 
     | 
    
         | 
| 
       121 
124 
     | 
    
         
             
                  FileUtils.mkdir_p(::File.dirname(filename))
         
     | 
| 
       122 
125 
     | 
    
         
             
                  FileUtils.touch(filename, touch_options)
         
     | 
| 
       123 
126 
     | 
    
         
             
                  FileUtils.chown(owner, group, filename)
         
     | 
| 
       124 
     | 
    
         
            -
                  FileUtils.chmod( 
     | 
| 
      
 127 
     | 
    
         
            +
                  FileUtils.chmod(perm, filename) if perm
         
     | 
| 
       125 
128 
     | 
    
         
             
                end
         
     | 
| 
       126 
129 
     | 
    
         | 
| 
       127 
130 
     | 
    
         
             
                # @param [String] filename
         
     | 
| 
         @@ -131,8 +134,8 @@ module SugarUtils 
     | 
|
| 
       131 
134 
     | 
    
         
             
                # @option options [Boolean] :flush (false)
         
     | 
| 
       132 
135 
     | 
    
         
             
                # @option options [String, Integer] :owner
         
     | 
| 
       133 
136 
     | 
    
         
             
                # @option options [String, Integer] :group
         
     | 
| 
       134 
     | 
    
         
            -
                # @option options [ 
     | 
| 
       135 
     | 
    
         
            -
                # @option options [Integer] :perm (0o644) 
     | 
| 
      
 137 
     | 
    
         
            +
                # @option options [String] :mode (w+)
         
     | 
| 
      
 138 
     | 
    
         
            +
                # @option options [Integer] :perm (0o644)
         
     | 
| 
       136 
139 
     | 
    
         
             
                #
         
     | 
| 
       137 
140 
     | 
    
         
             
                # @raise [SugarUtils::File::Error]
         
     | 
| 
       138 
141 
     | 
    
         
             
                #
         
     | 
| 
         @@ -141,15 +144,21 @@ module SugarUtils 
     | 
|
| 
       141 
144 
     | 
    
         
             
                  flush = options[:flush] || false
         
     | 
| 
       142 
145 
     | 
    
         
             
                  owner = options[:owner]
         
     | 
| 
       143 
146 
     | 
    
         
             
                  group = options[:group]
         
     | 
| 
       144 
     | 
    
         
            -
                   
     | 
| 
      
 147 
     | 
    
         
            +
                  perm  = options[:perm] || 0o644
         
     | 
| 
      
 148 
     | 
    
         
            +
                  mode  = 'w+'
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
                  if options[:mode].is_a?(Integer)
         
     | 
| 
      
 151 
     | 
    
         
            +
                    perm = options[:mode]
         
     | 
| 
       145 
152 
     | 
    
         | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
      
 153 
     | 
    
         
            +
                    deprecate_option(:write, :mode, ' with an integer value; use perm instead', 2018, 7)
         
     | 
| 
      
 154 
     | 
    
         
            +
                  elsif !options[:mode].nil?
         
     | 
| 
      
 155 
     | 
    
         
            +
                    mode = options[:mode]
         
     | 
| 
      
 156 
     | 
    
         
            +
                  end
         
     | 
| 
       147 
157 
     | 
    
         | 
| 
       148 
158 
     | 
    
         
             
                  FileUtils.mkdir_p(::File.dirname(filename))
         
     | 
| 
       149 
     | 
    
         
            -
                  ::File.open(filename,  
     | 
| 
      
 159 
     | 
    
         
            +
                  ::File.open(filename, mode, perm) do |file|
         
     | 
| 
       150 
160 
     | 
    
         
             
                    flock_exclusive(file, options)
         
     | 
| 
       151 
161 
     | 
    
         | 
| 
       152 
     | 
    
         
            -
                    file.truncate(0) # Ensure file is empty before proceeding.
         
     | 
| 
       153 
162 
     | 
    
         
             
                    file.puts(data.to_s)
         
     | 
| 
       154 
163 
     | 
    
         | 
| 
       155 
164 
     | 
    
         
             
                    # Flush and fsync to be 100% sure we write this data out now because we
         
     | 
| 
         @@ -162,7 +171,7 @@ module SugarUtils 
     | 
|
| 
       162 
171 
     | 
    
         
             
                    end
         
     | 
| 
       163 
172 
     | 
    
         | 
| 
       164 
173 
     | 
    
         
             
                    # Ensure that the permissions are correct if the file already existed.
         
     | 
| 
       165 
     | 
    
         
            -
                    file.chmod( 
     | 
| 
      
 174 
     | 
    
         
            +
                    file.chmod(perm)
         
     | 
| 
       166 
175 
     | 
    
         
             
                  end
         
     | 
| 
       167 
176 
     | 
    
         
             
                  FileUtils.chown(owner, group, filename)
         
     | 
| 
       168 
177 
     | 
    
         
             
                rescue Timeout::Error
         
     | 
| 
         @@ -205,7 +214,14 @@ module SugarUtils 
     | 
|
| 
       205 
214 
     | 
    
         | 
| 
       206 
215 
     | 
    
         
             
                  msg = [
         
     | 
| 
       207 
216 
     | 
    
         
             
                    "NOTE: #{target}#{method} option :#{option_name} is deprecated",
         
     | 
| 
       208 
     | 
    
         
            -
                     
     | 
| 
      
 217 
     | 
    
         
            +
                    case option_repl
         
     | 
| 
      
 218 
     | 
    
         
            +
                    when :none
         
     | 
| 
      
 219 
     | 
    
         
            +
                      ' with no replacement' 
         
     | 
| 
      
 220 
     | 
    
         
            +
                    when String
         
     | 
| 
      
 221 
     | 
    
         
            +
                      option_repl
         
     | 
| 
      
 222 
     | 
    
         
            +
                    else
         
     | 
| 
      
 223 
     | 
    
         
            +
                      "; use :#{option_repl} instead"
         
     | 
| 
      
 224 
     | 
    
         
            +
                    end,
         
     | 
| 
       209 
225 
     | 
    
         
             
                    format('. It will be removed on or after %4d-%02d-01.', year, month),
         
     | 
| 
       210 
226 
     | 
    
         
             
                    "\n#{target}#{method} called from #{location_of_external_caller}"
         
     | 
| 
       211 
227 
     | 
    
         
             
                  ]
         
     | 
    
        data/lib/sugar_utils/version.rb
    CHANGED
    
    
| 
         @@ -171,7 +171,7 @@ describe SugarUtils::File do 
     | 
|
| 
       171 
171 
     | 
    
         
             
                    end
         
     | 
| 
       172 
172 
     | 
    
         | 
| 
       173 
173 
     | 
    
         
             
                    context 'with deprecated options' do
         
     | 
| 
       174 
     | 
    
         
            -
                      let(:options) { {  
     | 
| 
      
 174 
     | 
    
         
            +
                      let(:options) { { mode: 0o600 } }
         
     | 
| 
       175 
175 
     | 
    
         
             
                      before { subject }
         
     | 
| 
       176 
176 
     | 
    
         
             
                      specify { expect(filename).to have_content(data) }
         
     | 
| 
       177 
177 
     | 
    
         
             
                      specify { expect(filename).to have_file_permission(0o100600) }
         
     | 
| 
         @@ -179,7 +179,7 @@ describe SugarUtils::File do 
     | 
|
| 
       179 
179 
     | 
    
         | 
| 
       180 
180 
     | 
    
         
             
                    context 'without deprecated options' do
         
     | 
| 
       181 
181 
     | 
    
         
             
                      let(:options) do
         
     | 
| 
       182 
     | 
    
         
            -
                        { flush: true, owner: 'nobody', group: 'nogroup', mode: 0o600 }
         
     | 
| 
      
 182 
     | 
    
         
            +
                        { flush: true, owner: 'nobody', group: 'nogroup', mode: 'w', perm: 0o600 }
         
     | 
| 
       183 
183 
     | 
    
         
             
                      end
         
     | 
| 
       184 
184 
     | 
    
         
             
                      before do
         
     | 
| 
       185 
185 
     | 
    
         
             
                        expect_any_instance_of(File).to receive(:flush)
         
     | 
| 
         @@ -201,6 +201,16 @@ describe SugarUtils::File do 
     | 
|
| 
       201 
201 
     | 
    
         
             
                    before { write(filename, 'foobar', 0o777) }
         
     | 
| 
       202 
202 
     | 
    
         
             
                    context 'not locked' do
         
     | 
| 
       203 
203 
     | 
    
         
             
                      it_behaves_like 'file is written'
         
     | 
| 
      
 204 
     | 
    
         
            +
             
     | 
| 
      
 205 
     | 
    
         
            +
                      context 'with append mode' do
         
     | 
| 
      
 206 
     | 
    
         
            +
                        let(:options) { { mode: 'a+' } }
         
     | 
| 
      
 207 
     | 
    
         
            +
                        before do
         
     | 
| 
      
 208 
     | 
    
         
            +
                          expect(described_class).to receive(:flock_exclusive)
         
     | 
| 
      
 209 
     | 
    
         
            +
                            .with(kind_of(File), options)
         
     | 
| 
      
 210 
     | 
    
         
            +
                          subject
         
     | 
| 
      
 211 
     | 
    
         
            +
                        end
         
     | 
| 
      
 212 
     | 
    
         
            +
                        specify { expect(filename).to have_content("foobar#{data}") }
         
     | 
| 
      
 213 
     | 
    
         
            +
                      end
         
     | 
| 
       204 
214 
     | 
    
         
             
                    end
         
     | 
| 
       205 
215 
     | 
    
         
             
                  end
         
     | 
| 
       206 
216 
     | 
    
         
             
                end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sugar_utils
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.5.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Andrew Sullivan Cant
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2018-01 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2018-05-01 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: multi_json
         
     |