knife-essentials 0.5.2 → 0.5.3
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/lib/chef_fs/command_line.rb +33 -0
 - data/lib/chef_fs/version.rb +1 -1
 - metadata +2 -2
 
    
        data/lib/chef_fs/command_line.rb
    CHANGED
    
    | 
         @@ -110,7 +110,40 @@ module ChefFS 
     | 
|
| 
       110 
110 
     | 
    
         
             
                  return result
         
     | 
| 
       111 
111 
     | 
    
         
             
                end
         
     | 
| 
       112 
112 
     | 
    
         | 
| 
      
 113 
     | 
    
         
            +
                def self.sort_keys(json_object)
         
     | 
| 
      
 114 
     | 
    
         
            +
                  if json_object.is_a?(Array)
         
     | 
| 
      
 115 
     | 
    
         
            +
                    json_object.map { |o| sort_keys(o) }
         
     | 
| 
      
 116 
     | 
    
         
            +
                  elsif json_object.is_a?(Hash)
         
     | 
| 
      
 117 
     | 
    
         
            +
                    new_hash = {}
         
     | 
| 
      
 118 
     | 
    
         
            +
                    json_object.keys.sort.each { |key| new_hash[key] = sort_keys(json_object[key]) }
         
     | 
| 
      
 119 
     | 
    
         
            +
                    new_hash
         
     | 
| 
      
 120 
     | 
    
         
            +
                  else
         
     | 
| 
      
 121 
     | 
    
         
            +
                    json_object
         
     | 
| 
      
 122 
     | 
    
         
            +
                  end
         
     | 
| 
      
 123 
     | 
    
         
            +
                end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                def self.canonicalize_json(json_text)
         
     | 
| 
      
 126 
     | 
    
         
            +
                  parsed_json = JSON.parse(json_text, :create_additions => false)
         
     | 
| 
      
 127 
     | 
    
         
            +
                  parsed_json.delete('requesting_actor_type')
         
     | 
| 
      
 128 
     | 
    
         
            +
                  parsed_json.delete('requesting_user')
         
     | 
| 
      
 129 
     | 
    
         
            +
                  sorted_json = sort_keys(parsed_json)
         
     | 
| 
      
 130 
     | 
    
         
            +
                  JSON.pretty_generate(sorted_json)
         
     | 
| 
      
 131 
     | 
    
         
            +
                end
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
       113 
133 
     | 
    
         
             
                def self.diff_text(old_path, new_path, old_value, new_value)
         
     | 
| 
      
 134 
     | 
    
         
            +
                  # Reformat JSON for a nicer diff.
         
     | 
| 
      
 135 
     | 
    
         
            +
                  if old_path =~ /\.json$/
         
     | 
| 
      
 136 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 137 
     | 
    
         
            +
                      reformatted_old_value = canonicalize_json(old_value)
         
     | 
| 
      
 138 
     | 
    
         
            +
                      reformatted_new_value = canonicalize_json(new_value)
         
     | 
| 
      
 139 
     | 
    
         
            +
                      old_value = reformatted_old_value
         
     | 
| 
      
 140 
     | 
    
         
            +
                      new_value = reformatted_new_value
         
     | 
| 
      
 141 
     | 
    
         
            +
                    rescue
         
     | 
| 
      
 142 
     | 
    
         
            +
                      # If JSON parsing fails, we just won't change any values and fall back
         
     | 
| 
      
 143 
     | 
    
         
            +
                      # to normal diff.
         
     | 
| 
      
 144 
     | 
    
         
            +
                    end
         
     | 
| 
      
 145 
     | 
    
         
            +
                  end
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
       114 
147 
     | 
    
         
             
                  # Copy to tempfiles before diffing
         
     | 
| 
       115 
148 
     | 
    
         
             
                  # TODO don't copy things that are already in files!  Or find an in-memory diff algorithm
         
     | 
| 
       116 
149 
     | 
    
         
             
                  begin
         
     | 
    
        data/lib/chef_fs/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: knife-essentials
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.5. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.5.3
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012-05- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-05-17 00:00:00.000000000Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       14 
14 
     | 
    
         
             
            description: Universal knife verbs that work with your Chef repository
         
     | 
| 
       15 
15 
     | 
    
         
             
            email: jkeiser@opscode.com
         
     |