encrypt_env 1.3.3 → 1.3.6
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/encrypt_env +70 -55
- data/lib/encrypt_env/version.rb +1 -1
- data/lib/encrypt_env.rb +101 -14
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 58a9ebf47dac3a056a4ec7d890463591f8ed9f0a749597cf8aa388b2359cc7bd
         | 
| 4 | 
            +
              data.tar.gz: 607a5c85ae34aa79a60983919f7d1c972769417bbd0ab59d9e2e1cfc19a791b7
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ad618c7bd4b93b11f0eda7ad786d363b41bd4d1c9498426931f04e5859e3e4f6f9d6e7aabbd3f15d90ccb3a23e8cfdfe614e68fc63a4e013d5c2e54434212aac
         | 
| 7 | 
            +
              data.tar.gz: 41c5be08c7ee2c47b147564abeb12b83906f876f23efe50e22b0717e124cf3a30a78da1b9025859ded45a77771df6434324192d052d4dd83274e72a5efd5ab3f
         | 
    
        data/bin/encrypt_env
    CHANGED
    
    | @@ -3,71 +3,86 @@ | |
| 3 3 | 
             
            # frozen_string_literal: true
         | 
| 4 4 |  | 
| 5 5 | 
             
            require 'encrypt_env'
         | 
| 6 | 
            +
            require 'optparse'
         | 
| 6 7 | 
             
            require_relative '../lib/encrypt_env/version'
         | 
| 7 8 |  | 
| 9 | 
            +
            options = {}
         | 
| 10 | 
            +
            parsers = OptionParser.new do |parser|
         | 
| 11 | 
            +
              parser.on('-e', '--environment ENVIRONMENT', 'environment')
         | 
| 12 | 
            +
              parser.on('-s', '--set VALUE', 'value')
         | 
| 13 | 
            +
              parser.on('-t', '--type TYPE', 'type of variable')
         | 
| 14 | 
            +
              parser.on('-a', '--all', 'show all')
         | 
| 15 | 
            +
              parser.on('-v', '--version', 'version') do
         | 
| 16 | 
            +
                puts Version::VERSION
         | 
| 17 | 
            +
                exit
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
              parser.on('-h', '--help', 'help') do
         | 
| 20 | 
            +
                puts <<~HELP
         | 
| 21 | 
            +
                  Usage:
         | 
| 22 | 
            +
                    encrypt_env setup                                  # To setup for the firt time
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                    encrypt_env show                                   # To show environment variables of current environment
         | 
| 25 | 
            +
                    encrypt_env show -a                                # To show all environment variables
         | 
| 26 | 
            +
                    encrypt_env show -e [environment]                  # To show specific environment variables
         | 
| 27 | 
            +
                    encrypt_env show [variable_name] -e [environment]  # To show value of specific variable
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    encrypt_env edit                                   # To edit environment variables of current environment
         | 
| 30 | 
            +
                    encrypt_env edit -e [environment]                  # To edit specific environment variables
         | 
| 31 | 
            +
                    encrypt_env edit [variable_name] -e [environment]  # To edit value of specific variable
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    encrypt_env create variable_name                   # To create environment variable in current environment
         | 
| 34 | 
            +
                    encrypt_env create variable_name -e [environment]  # To create environment variable in specific environment
         | 
| 35 | 
            +
                    # To create environment variable in specific environment with value and type
         | 
| 36 | 
            +
                    encrypt_env create variable_name -s [value] -e [environment]
         | 
| 37 | 
            +
                    encrypt_env create variable_name -s [value] -e [environment] -t [type]
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                    encrypt_env delete variable_name                   # To delete environment variable in current environment
         | 
| 40 | 
            +
                    encrypt_env delete variable_name -e [environment]  # To delete environment variable in specific environment
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  Or: Visit "https://github.com/nnhutan/encrypt_env" for more information
         | 
| 43 | 
            +
                HELP
         | 
| 44 | 
            +
                exit
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
            end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            parsers.parse!(into: options)
         | 
| 49 | 
            +
             | 
| 8 50 | 
             
            argv = ARGV
         | 
| 9 51 | 
             
            action = argv.shift
         | 
| 52 | 
            +
            variable_name = argv.shift
         | 
| 10 53 |  | 
| 11 | 
            -
             | 
| 54 | 
            +
            case action
         | 
| 55 | 
            +
            when 'setup'
         | 
| 12 56 | 
             
              EncryptEnv.setup
         | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
              if  | 
| 16 | 
            -
                EncryptEnv.show( | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 57 | 
            +
             | 
| 58 | 
            +
            when 'show', 'edit'
         | 
| 59 | 
            +
              if action == 'show' && options[:all]
         | 
| 60 | 
            +
                EncryptEnv.show('all')
         | 
| 61 | 
            +
                exit
         | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
              EncryptEnv.send(action, options[:environment], variable_name)
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            when 'create'
         | 
| 66 | 
            +
              unless variable_name
         | 
| 67 | 
            +
                puts "Please provide 'variable's name'!"
         | 
| 68 | 
            +
                exit
         | 
| 19 69 | 
             
              end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
              exit 0
         | 
| 24 | 
            -
            elsif action == 'edit'
         | 
| 25 | 
            -
              if argv[0]
         | 
| 26 | 
            -
                EncryptEnv.edit(argv[0])
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              if options[:set]
         | 
| 72 | 
            +
                EncryptEnv.create_with_value(variable_name, options[:set], options[:environment], options[:type])
         | 
| 27 73 | 
             
              else
         | 
| 28 | 
            -
                EncryptEnv. | 
| 74 | 
            +
                EncryptEnv.send(action, variable_name, options[:environment])
         | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            when 'delete'
         | 
| 78 | 
            +
              unless variable_name
         | 
| 79 | 
            +
                puts "Please provide 'variable's name'!"
         | 
| 80 | 
            +
                exit
         | 
| 29 81 | 
             
              end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
              key = argv[0]
         | 
| 33 | 
            -
              env = argv[1]
         | 
| 34 | 
            -
              EncryptEnv.valueof(key, env)
         | 
| 35 | 
            -
              exit 0
         | 
| 36 | 
            -
            elsif action == 'new'
         | 
| 37 | 
            -
              key = argv[0]
         | 
| 38 | 
            -
              env = argv[1]
         | 
| 39 | 
            -
              EncryptEnv.update_variable(key, env, true)
         | 
| 40 | 
            -
              exit 0
         | 
| 41 | 
            -
            elsif action == 'update'
         | 
| 42 | 
            -
              key = argv[0]
         | 
| 43 | 
            -
              env = argv[1]
         | 
| 44 | 
            -
              EncryptEnv.update_variable(key, env, false)
         | 
| 45 | 
            -
              exit 0
         | 
| 46 | 
            -
            elsif action == 'delete'
         | 
| 47 | 
            -
              key = argv[0]
         | 
| 48 | 
            -
              env = argv[1]
         | 
| 49 | 
            -
              EncryptEnv.delete_variable(key, env)
         | 
| 50 | 
            -
              exit 0
         | 
| 51 | 
            -
            elsif ['-v', '--version', 'version'].include?(action)
         | 
| 52 | 
            -
              puts Version::VERSION
         | 
| 53 | 
            -
              exit 0
         | 
| 54 | 
            -
            elsif ['help', '--help', '-h'].include?(action)
         | 
| 55 | 
            -
              puts <<~HELP
         | 
| 56 | 
            -
                Usage:
         | 
| 57 | 
            -
                  encrypt_env setup                                  # To setup for the firt time
         | 
| 58 | 
            -
                  encrypt_env show all                               # To show all environment variables
         | 
| 59 | 
            -
                  encrypt_env show / encrypt_env show [environment]  # To show environment variables
         | 
| 60 | 
            -
                  encrypt_env edit / encrypt_env edit [environment]  # To edit environment variables
         | 
| 61 | 
            -
                  encrypt_env add variable_name [environment]        # To add environment variable
         | 
| 62 | 
            -
                  encrypt_env get variable_name [environment]        # To show value of specific variable
         | 
| 63 | 
            -
                  encrypt_env update variable_name [environment]     # To edit value of specific variable
         | 
| 64 | 
            -
                  encrypt_env delete variable_name [environment]     # To delete specific variable
         | 
| 65 | 
            -
                Or: Visit "https://github.com/nnhutan/encrypt_env" for more information
         | 
| 66 | 
            -
              HELP
         | 
| 67 | 
            -
             | 
| 68 | 
            -
              exit 0
         | 
| 82 | 
            +
             | 
| 83 | 
            +
              EncryptEnv.send(action, variable_name, options[:environment])
         | 
| 69 84 | 
             
            else
         | 
| 70 85 | 
             
              puts "Unknown action: #{action}"
         | 
| 71 86 | 
             
              puts "Use 'encrypt_env -h' for more help"
         | 
| 72 | 
            -
              exit | 
| 87 | 
            +
              exit
         | 
| 73 88 | 
             
            end
         | 
    
        data/lib/encrypt_env/version.rb
    CHANGED
    
    
    
        data/lib/encrypt_env.rb
    CHANGED
    
    | @@ -153,19 +153,23 @@ class EncryptEnv | |
| 153 153 | 
             
              def self.secrets_all
         | 
| 154 154 | 
             
                return all_decrypted_object if @opt == 2
         | 
| 155 155 |  | 
| 156 | 
            -
                decrypt
         | 
| 156 | 
            +
                decrypt unless @decrypted
         | 
| 157 157 | 
             
                @decrypted
         | 
| 158 158 | 
             
              end
         | 
| 159 159 |  | 
| 160 160 | 
             
              def self.secrets(env = nil)
         | 
| 161 161 | 
             
                load_curr_opt unless @opt
         | 
| 162 | 
            -
                 | 
| 162 | 
            +
                if env == 'all'
         | 
| 163 | 
            +
                  result = secrets_all
         | 
| 164 | 
            +
                  @decrypted = nil
         | 
| 165 | 
            +
                  return result
         | 
| 166 | 
            +
                end
         | 
| 163 167 |  | 
| 164 168 | 
             
                if @opt == 1
         | 
| 165 | 
            -
                  decrypt
         | 
| 169 | 
            +
                  decrypt unless @decrypted
         | 
| 166 170 | 
             
                  @decrypted[env || current_env]
         | 
| 167 171 | 
             
                else
         | 
| 168 | 
            -
                  decrypt(env || current_env)
         | 
| 172 | 
            +
                  decrypt(env || current_env) unless @decrypted
         | 
| 169 173 | 
             
                  @decrypted
         | 
| 170 174 | 
             
                end
         | 
| 171 175 | 
             
              rescue StandardError => e
         | 
| @@ -197,7 +201,9 @@ class EncryptEnv | |
| 197 201 | 
             
                system("echo 'Set up complete!'")
         | 
| 198 202 | 
             
              end
         | 
| 199 203 |  | 
| 200 | 
            -
              def self.edit(env = nil)
         | 
| 204 | 
            +
              def self.edit(env = nil, variable_name = nil)
         | 
| 205 | 
            +
                variable_name && (return create(variable_name, env, true))
         | 
| 206 | 
            +
             | 
| 201 207 | 
             
                load_curr_opt unless @opt
         | 
| 202 208 | 
             
                env ||= current_env if @opt == 2
         | 
| 203 209 | 
             
                return unless decrypt(env)
         | 
| @@ -214,7 +220,9 @@ class EncryptEnv | |
| 214 220 | 
             
                puts e.message
         | 
| 215 221 | 
             
              end
         | 
| 216 222 |  | 
| 217 | 
            -
              def self.show(env = nil)
         | 
| 223 | 
            +
              def self.show(env = nil, variable_name = nil)
         | 
| 224 | 
            +
                variable_name && (return valueof(variable_name, env))
         | 
| 225 | 
            +
             | 
| 218 226 | 
             
                require 'awesome_print'
         | 
| 219 227 | 
             
                require 'date'
         | 
| 220 228 | 
             
                value = secrets(env)
         | 
| @@ -233,7 +241,7 @@ class EncryptEnv | |
| 233 241 | 
             
                puts value[key]
         | 
| 234 242 | 
             
              end
         | 
| 235 243 |  | 
| 236 | 
            -
              def self. | 
| 244 | 
            +
              def self.delete(key, env = nil)
         | 
| 237 245 | 
             
                load_curr_opt unless @opt
         | 
| 238 246 | 
             
                if @opt == 1
         | 
| 239 247 | 
             
                  puts 'Only for option 2!'
         | 
| @@ -253,12 +261,81 @@ class EncryptEnv | |
| 253 261 | 
             
                  return
         | 
| 254 262 | 
             
                end
         | 
| 255 263 |  | 
| 264 | 
            +
                tmp_value = value[key]
         | 
| 256 265 | 
             
                value.delete(key)
         | 
| 257 266 | 
             
                encrypt(value.to_hash.to_yaml, env || current_env)
         | 
| 258 | 
            -
                puts "Delete '#{key}' successfully!"
         | 
| 267 | 
            +
                puts "Delete '#{key}' with value '#{tmp_value}' successfully!"
         | 
| 268 | 
            +
              end
         | 
| 269 | 
            +
             | 
| 270 | 
            +
              private_class_method def self.define_type_new_variable
         | 
| 271 | 
            +
                types = {
         | 
| 272 | 
            +
                  '1' => 'integer',
         | 
| 273 | 
            +
                  '2' => 'float',
         | 
| 274 | 
            +
                  '3' => 'string',
         | 
| 275 | 
            +
                  '4' => 'boolean'
         | 
| 276 | 
            +
                }
         | 
| 277 | 
            +
                puts 'What is the type of variable? (1/2/3/4)'
         | 
| 278 | 
            +
                puts "1.\t integer"
         | 
| 279 | 
            +
                puts "2.\t float"
         | 
| 280 | 
            +
                puts "3.\t string"
         | 
| 281 | 
            +
                puts "4.\t boolean"
         | 
| 282 | 
            +
                puts "Or enter 'q' to cancle!"
         | 
| 283 | 
            +
             | 
| 284 | 
            +
                loop do
         | 
| 285 | 
            +
                  type = $stdin.gets.chomp
         | 
| 286 | 
            +
                  return types[type] if %w[1 2 3 4].include?(type)
         | 
| 287 | 
            +
             | 
| 288 | 
            +
                  exit if type == 'q'
         | 
| 289 | 
            +
             | 
| 290 | 
            +
                  puts 'Just "1", "2", "3", "4" or "q" to cancel!'
         | 
| 291 | 
            +
                end
         | 
| 292 | 
            +
              end
         | 
| 293 | 
            +
             | 
| 294 | 
            +
              private_class_method def self.type_coercion(value, type)
         | 
| 295 | 
            +
                type = define_type_new_variable if type.nil?
         | 
| 296 | 
            +
             | 
| 297 | 
            +
                unless %w[integer float string boolean].include?(type)
         | 
| 298 | 
            +
                  puts "Variable's type must be 'interger', 'float', 'string' or 'boolean'!"
         | 
| 299 | 
            +
                  exit
         | 
| 300 | 
            +
                end
         | 
| 301 | 
            +
             | 
| 302 | 
            +
                case type
         | 
| 303 | 
            +
                when 'integer'
         | 
| 304 | 
            +
                  value.to_i
         | 
| 305 | 
            +
                when 'float'
         | 
| 306 | 
            +
                  value.to_f
         | 
| 307 | 
            +
                when 'string'
         | 
| 308 | 
            +
                  value
         | 
| 309 | 
            +
                when 'boolean'
         | 
| 310 | 
            +
                  (value == 'true')
         | 
| 311 | 
            +
                end
         | 
| 312 | 
            +
              end
         | 
| 313 | 
            +
             | 
| 314 | 
            +
              def self.create_with_value(key, new_value, env = nil, type = nil)
         | 
| 315 | 
            +
                load_curr_opt unless @opt
         | 
| 316 | 
            +
                if @opt == 1
         | 
| 317 | 
            +
                  puts 'Only for option 2!'
         | 
| 318 | 
            +
                  return
         | 
| 319 | 
            +
                end
         | 
| 320 | 
            +
             | 
| 321 | 
            +
                new_value = type_coercion(new_value, type)
         | 
| 322 | 
            +
             | 
| 323 | 
            +
                tail_msg = env ? " in '#{env}' environment" : nil
         | 
| 324 | 
            +
             | 
| 325 | 
            +
                value = secrets(env)
         | 
| 326 | 
            +
             | 
| 327 | 
            +
                if value.key?(key)
         | 
| 328 | 
            +
                  puts "Key existed#{tail_msg}!"
         | 
| 329 | 
            +
                  return
         | 
| 330 | 
            +
                end
         | 
| 331 | 
            +
             | 
| 332 | 
            +
                value[key] = new_value
         | 
| 333 | 
            +
                encrypt(value.to_hash.to_yaml, env || current_env)
         | 
| 334 | 
            +
                @decrypted = nil
         | 
| 335 | 
            +
                puts "#{key}\t=>\t#{value[key]}"
         | 
| 259 336 | 
             
              end
         | 
| 260 337 |  | 
| 261 | 
            -
              def self. | 
| 338 | 
            +
              def self.create(key, env = nil, is_edit = false)
         | 
| 262 339 | 
             
                load_curr_opt unless @opt
         | 
| 263 340 | 
             
                if @opt == 1
         | 
| 264 341 | 
             
                  puts 'Only for option 2!'
         | 
| @@ -267,20 +344,21 @@ class EncryptEnv | |
| 267 344 | 
             
                tail_msg = env ? " in '#{env}' environment" : nil
         | 
| 268 345 |  | 
| 269 346 | 
             
                value = secrets(env)
         | 
| 270 | 
            -
             | 
| 347 | 
            +
             | 
| 348 | 
            +
                if !is_edit && value.key?(key)
         | 
| 271 349 | 
             
                  puts "Key existed#{tail_msg}!"
         | 
| 272 350 | 
             
                  return
         | 
| 273 351 | 
             
                end
         | 
| 274 352 |  | 
| 275 | 
            -
                if !value.key?(key) &&  | 
| 276 | 
            -
                  puts "'#{key}' does not exist#{tail_msg}. You want to  | 
| 353 | 
            +
                if !value.key?(key) && is_edit
         | 
| 354 | 
            +
                  puts "'#{key}' does not exist#{tail_msg}. You want to create '#{key}' as the new key? (y/n)"
         | 
| 277 355 | 
             
                  a = $stdin.gets.chomp
         | 
| 278 356 | 
             
                  return unless a == 'y'
         | 
| 279 357 |  | 
| 280 | 
            -
                   | 
| 358 | 
            +
                  is_edit = false
         | 
| 281 359 | 
             
                end
         | 
| 282 360 |  | 
| 283 | 
            -
                action =  | 
| 361 | 
            +
                action = is_edit && 'edit' || 'create'
         | 
| 284 362 | 
             
                file_name = env ? "#{action}_#{key}_#{env}" : "#{action}_#{key}"
         | 
| 285 363 |  | 
| 286 364 | 
             
                Tempfile.create(file_name) do |f|
         | 
| @@ -298,6 +376,15 @@ class EncryptEnv | |
| 298 376 |  | 
| 299 377 | 
             
                puts "#{key}\t=>\t#{value[key]}"
         | 
| 300 378 | 
             
              end
         | 
| 379 | 
            +
             | 
| 380 | 
            +
              # def self.get
         | 
| 381 | 
            +
              #   self
         | 
| 382 | 
            +
              # end
         | 
| 383 | 
            +
             | 
| 384 | 
            +
              def self.method_missing(key, *_args)
         | 
| 385 | 
            +
                secrets unless @decrypted
         | 
| 386 | 
            +
                @decrypted[key]
         | 
| 387 | 
            +
              end
         | 
| 301 388 | 
             
            end
         | 
| 302 389 | 
             
            # rubocop:enable Metrics/ClassLength
         | 
| 303 390 | 
             
            # rubocop:enable Metrics/MethodLength
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: encrypt_env
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.3. | 
| 4 | 
            +
              version: 1.3.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Nhu Tan
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022-08- | 
| 11 | 
            +
            date: 2022-08-16 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: awesome_print
         |