pwgen 0.1.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.
- checksums.yaml +4 -4
 - data/.travis.yml +22 -6
 - data/CHANGELOG.md +1 -1
 - data/README.md +22 -2
 - data/exe/pwgen +57 -9
 - data/lib/pwgen.rb +16 -9
 - data/lib/pwgen/version.rb +1 -1
 - data/pwgen.gemspec +3 -1
 - metadata +7 -7
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 4472ad381c4a88ef103a89f5c2de0ec9ab0e1cf986889da83fc969c729a510cc
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: b3bb08649f13c105300fe0a2c7e974b1609a40b20080edb97c2e80584f6d3986
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: f33c81b5c7bd7e0194fcf33354aa8ccbd517261acac318d04c3ff731054bbb2e55692e00020bc7ae28b1dbb6587e41db7b4f8417201002564d74b424a6ea8400
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: c7d28838150b5250048948d286b44b34c6234dfb894070ca4f0ded15e4284d94cbcb160ee502451b773d276ed2349c907f23bb716db111975e18032cfbf59720
         
     | 
    
        data/.travis.yml
    CHANGED
    
    | 
         @@ -2,19 +2,33 @@ sudo: required 
     | 
|
| 
       2 
2 
     | 
    
         
             
            matrix:
         
     | 
| 
       3 
3 
     | 
    
         
             
              include:
         
     | 
| 
       4 
4 
     | 
    
         
             
              - language: ruby
         
     | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
      
 5 
     | 
    
         
            +
                env:
         
     | 
| 
      
 6 
     | 
    
         
            +
                  - NAME="Bundle test"
         
     | 
| 
      
 7 
     | 
    
         
            +
                rvm: 2.3.8
         
     | 
| 
       6 
8 
     | 
    
         
             
                before_install:
         
     | 
| 
       7 
     | 
    
         
            -
                  - gem install bundler -v  
     | 
| 
      
 9 
     | 
    
         
            +
                  - gem install bundler -v 2.0.1
         
     | 
| 
       8 
10 
     | 
    
         
             
              - language: ruby
         
     | 
| 
      
 11 
     | 
    
         
            +
                env:
         
     | 
| 
      
 12 
     | 
    
         
            +
                  - NAME="Bundle test"
         
     | 
| 
       9 
13 
     | 
    
         
             
                rvm: 2.4.4
         
     | 
| 
       10 
14 
     | 
    
         
             
                before_install:
         
     | 
| 
       11 
     | 
    
         
            -
                  - gem install bundler -v  
     | 
| 
      
 15 
     | 
    
         
            +
                  - gem install bundler -v 2.0.1
         
     | 
| 
       12 
16 
     | 
    
         
             
              - language: ruby
         
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
      
 17 
     | 
    
         
            +
                env:
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - NAME="Bundle test"
         
     | 
| 
      
 19 
     | 
    
         
            +
                rvm: 2.5.3
         
     | 
| 
       14 
20 
     | 
    
         
             
                before_install:
         
     | 
| 
       15 
21 
     | 
    
         
             
                  - gem install bundler -v 2.0.1
         
     | 
| 
       16 
22 
     | 
    
         
             
              - language: ruby
         
     | 
| 
       17 
     | 
    
         
            -
                env: 
     | 
| 
      
 23 
     | 
    
         
            +
                env:
         
     | 
| 
      
 24 
     | 
    
         
            +
                  - NAME="Bundle test"
         
     | 
| 
      
 25 
     | 
    
         
            +
                rvm: 2.6.0
         
     | 
| 
      
 26 
     | 
    
         
            +
                before_install:
         
     | 
| 
      
 27 
     | 
    
         
            +
                  - gem install bundler -v 2.0.1
         
     | 
| 
      
 28 
     | 
    
         
            +
              - language: ruby
         
     | 
| 
      
 29 
     | 
    
         
            +
                env:
         
     | 
| 
      
 30 
     | 
    
         
            +
                  - NAME="Rubocop Checks"
         
     | 
| 
      
 31 
     | 
    
         
            +
                  - SKIP_INTERPRETER=true
         
     | 
| 
       18 
32 
     | 
    
         
             
                rvm: 2.4.4
         
     | 
| 
       19 
33 
     | 
    
         
             
                before_install:
         
     | 
| 
       20 
34 
     | 
    
         
             
                  - git clone https://github.com/TravisToolbox/rubocop-travis.git
         
     | 
| 
         @@ -23,7 +37,9 @@ matrix: 
     | 
|
| 
       23 
37 
     | 
    
         
             
                script:
         
     | 
| 
       24 
38 
     | 
    
         
             
                  - ./rubocop-travis/scan.sh
         
     | 
| 
       25 
39 
     | 
    
         
             
              - language: ruby
         
     | 
| 
       26 
     | 
    
         
            -
                 
     | 
| 
      
 40 
     | 
    
         
            +
                env:
         
     | 
| 
      
 41 
     | 
    
         
            +
                  - NAME="Link Checker"
         
     | 
| 
      
 42 
     | 
    
         
            +
                rvm: 2.4.4
         
     | 
| 
       27 
43 
     | 
    
         
             
                before_install:
         
     | 
| 
       28 
44 
     | 
    
         
             
                  - mkdir travis
         
     | 
| 
       29 
45 
     | 
    
         
             
                  - git clone https://github.com/TravisToolbox/awesomebot-travis.git travis/awesomebot
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -60,6 +60,26 @@ There are a number of options that can be password: 
     | 
|
| 
       60 
60 
     | 
    
         | 
| 
       61 
61 
     | 
    
         
             
            You can also pass the options parameter to the 'generate_password' method to override the settings for a specific password creation.
         
     | 
| 
       62 
62 
     | 
    
         | 
| 
      
 63 
     | 
    
         
            +
            ## Executable
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            There is also an executable linked to this gem which allows you to generate passwords within bash scripts etc.
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            ```
         
     | 
| 
      
 68 
     | 
    
         
            +
            Usage: pwgen
         
     | 
| 
      
 69 
     | 
    
         
            +
                -h, --help                       Display this screen
         
     | 
| 
      
 70 
     | 
    
         
            +
                -c, --show-config                Show the configuration
         
     | 
| 
      
 71 
     | 
    
         
            +
                -d, --digits string              Minimum number of digits to use. (default: random)
         
     | 
| 
      
 72 
     | 
    
         
            +
                -l, --length string              The length of the password (default 12)
         
     | 
| 
      
 73 
     | 
    
         
            +
                -s, --symbols string             Minimum number of symbols to use. (default: random)
         
     | 
| 
      
 74 
     | 
    
         
            +
                -C, --skip-confusables           Skip the use of letters which are easily confused e.g. 1 and l in passwords
         
     | 
| 
      
 75 
     | 
    
         
            +
                -D, --skip-digits                Skip the use of digits in passwords
         
     | 
| 
      
 76 
     | 
    
         
            +
                -L, --skip-lower-case            Skip the use of lower case letters in passwords
         
     | 
| 
      
 77 
     | 
    
         
            +
                -P, --skip-phonetic              Skip creation of the phonetic password
         
     | 
| 
      
 78 
     | 
    
         
            +
                -S, --skip-symbols               Skip the use of symbols in passwords
         
     | 
| 
      
 79 
     | 
    
         
            +
                -U, --skip-upper-case            Skip the use of upper case letters in passwords
         
     | 
| 
      
 80 
     | 
    
         
            +
                -W, --skip-url-unsafe            Skip the use of url (Web) unsafe characters in passwords
         
     | 
| 
      
 81 
     | 
    
         
            +
            ```
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
       63 
83 
     | 
    
         
             
            ## Development
         
     | 
| 
       64 
84 
     | 
    
         | 
| 
       65 
85 
     | 
    
         
             
            After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
         
     | 
| 
         @@ -72,7 +92,7 @@ For local testing make sure that you run `bundle exec rspec spec` and then `rake 
     | 
|
| 
       72 
92 
     | 
    
         | 
| 
       73 
93 
     | 
    
         
             
            ## Contributing
         
     | 
| 
       74 
94 
     | 
    
         | 
| 
       75 
     | 
    
         
            -
            Bug reports and pull requests are welcome on GitHub at https://github.com/ 
     | 
| 
      
 95 
     | 
    
         
            +
            Bug reports and pull requests are welcome on GitHub at https://github.com/AntiPhotonltd/password_generator. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
         
     | 
| 
       76 
96 
     | 
    
         | 
| 
       77 
97 
     | 
    
         
             
            ## License
         
     | 
| 
       78 
98 
     | 
    
         | 
| 
         @@ -80,4 +100,4 @@ The gem is available as open source under the terms of the [MIT License](https:/ 
     | 
|
| 
       80 
100 
     | 
    
         | 
| 
       81 
101 
     | 
    
         
             
            ## Code of Conduct
         
     | 
| 
       82 
102 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
            Everyone interacting in the Pwgen project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/ 
     | 
| 
      
 103 
     | 
    
         
            +
            Everyone interacting in the Pwgen project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/AntiPhotonltd/password_generator/blob/master/CODE_OF_CONDUCT.md).
         
     | 
    
        data/exe/pwgen
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/env ruby
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require 'optparse'
         
     | 
| 
       4 
     | 
    
         
            -
            require  
     | 
| 
      
 4 
     | 
    
         
            +
            require 'pwgen'
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            # -------------------------------------------------------------------------------- #
         
     | 
| 
       7 
7 
     | 
    
         
             
            # Generate Password                                                                #
         
     | 
| 
         @@ -10,11 +10,19 @@ require "pwgen" 
     | 
|
| 
       10 
10 
     | 
    
         
             
            # -------------------------------------------------------------------------------- #
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
            def generate_password(options)
         
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                if options[:config]
         
     | 
| 
      
 14 
     | 
    
         
            +
                    Pwgen::Password.configure(options)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    Pwgen::Password.show_configuration
         
     | 
| 
      
 16 
     | 
    
         
            +
                else
         
     | 
| 
      
 17 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 18 
     | 
    
         
            +
                        Pwgen::Password.generate_password(options[:length], options)
         
     | 
| 
      
 19 
     | 
    
         
            +
                    rescue RuntimeError => e
         
     | 
| 
      
 20 
     | 
    
         
            +
                        puts e.message
         
     | 
| 
      
 21 
     | 
    
         
            +
                    else
         
     | 
| 
      
 22 
     | 
    
         
            +
                        puts Pwgen::Password.password
         
     | 
| 
      
 23 
     | 
    
         
            +
                        puts Pwgen::Password.phonetic_password unless options[:skip_phonetic]
         
     | 
| 
      
 24 
     | 
    
         
            +
                    end
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
       18 
26 
     | 
    
         
             
            end
         
     | 
| 
       19 
27 
     | 
    
         | 
| 
       20 
28 
     | 
    
         
             
            # -------------------------------------------------------------------------------- #
         
     | 
| 
         @@ -27,7 +35,7 @@ end 
     | 
|
| 
       27 
35 
     | 
    
         
             
            # -------------------------------------------------------------------------------- #
         
     | 
| 
       28 
36 
     | 
    
         | 
| 
       29 
37 
     | 
    
         
             
            def process_arguments
         
     | 
| 
       30 
     | 
    
         
            -
                options = {}
         
     | 
| 
      
 38 
     | 
    
         
            +
                options = { length: 12 }
         
     | 
| 
       31 
39 
     | 
    
         
             
                # Enforce the presence of
         
     | 
| 
       32 
40 
     | 
    
         
             
                mandatory = %I[length]
         
     | 
| 
       33 
41 
     | 
    
         | 
| 
         @@ -38,9 +46,50 @@ def process_arguments 
     | 
|
| 
       38 
46 
     | 
    
         
             
                        puts opts
         
     | 
| 
       39 
47 
     | 
    
         
             
                        exit(1)
         
     | 
| 
       40 
48 
     | 
    
         
             
                    end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                    opts.on('-c', '--show-config', 'Show the configuration') do |_config|
         
     | 
| 
      
 51 
     | 
    
         
            +
                        options[:config] = true
         
     | 
| 
      
 52 
     | 
    
         
            +
                    end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                    opts.on('-d', '--digits string', 'Minimum number of digits to use. (default: random)') do |digits|
         
     | 
| 
      
 55 
     | 
    
         
            +
                        options[:digits] = digits
         
     | 
| 
      
 56 
     | 
    
         
            +
                    end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                    opts.on('-l', '--length string', 'The length of the password (default 12)') do |length|
         
     | 
| 
       42 
59 
     | 
    
         
             
                        options[:length] = length
         
     | 
| 
       43 
60 
     | 
    
         
             
                    end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                    opts.on('-s', '--symbols string', 'Minimum number of symbols to use. (default: random)') do |symbols|
         
     | 
| 
      
 63 
     | 
    
         
            +
                        options[:symbols] = symbols
         
     | 
| 
      
 64 
     | 
    
         
            +
                    end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                    opts.on('-C', '--skip-confusables', 'Skip the use of letters which are easily confused e.g. 1 and l in passwords') do |_skip_confusables|
         
     | 
| 
      
 67 
     | 
    
         
            +
                        options[:skip_confusables] = true
         
     | 
| 
      
 68 
     | 
    
         
            +
                    end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                    opts.on('-D', '--skip-digits', 'Skip the use of digits in passwords') do |_skip_digits|
         
     | 
| 
      
 71 
     | 
    
         
            +
                        options[:skip_digits] = true
         
     | 
| 
      
 72 
     | 
    
         
            +
                    end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                    opts.on('-L', '--skip-lower-case', 'Skip the use of lower case letters in passwords') do |_skip_lower_case|
         
     | 
| 
      
 75 
     | 
    
         
            +
                        options[:skip_lower_case] = true
         
     | 
| 
      
 76 
     | 
    
         
            +
                    end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                    opts.on('-P', '--skip-phonetic', 'Skip creation of the phonetic password') do |_skip_phonetic|
         
     | 
| 
      
 79 
     | 
    
         
            +
                        options[:skip_phonetic] = true
         
     | 
| 
      
 80 
     | 
    
         
            +
                    end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                    opts.on('-S', '--skip-symbols', 'Skip the use of symbols in passwords') do |_skip_symbols|
         
     | 
| 
      
 83 
     | 
    
         
            +
                        options[:skip_symbols] = true
         
     | 
| 
      
 84 
     | 
    
         
            +
                    end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
                    opts.on('-U', '--skip-upper-case', 'Skip the use of upper case letters in passwords') do |_skip_upper_case|
         
     | 
| 
      
 87 
     | 
    
         
            +
                        options[:skip_upper_case] = true
         
     | 
| 
      
 88 
     | 
    
         
            +
                    end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                    opts.on('-W', '--skip-url-unsafe', 'Skip the use of url (Web) unsafe characters in passwords') do |_skip_url_unsafe|
         
     | 
| 
      
 91 
     | 
    
         
            +
                        options[:skip_url_unsafe] = true
         
     | 
| 
      
 92 
     | 
    
         
            +
                    end
         
     | 
| 
       44 
93 
     | 
    
         
             
                end
         
     | 
| 
       45 
94 
     | 
    
         | 
| 
       46 
95 
     | 
    
         
             
                begin
         
     | 
| 
         @@ -73,4 +122,3 @@ main 
     | 
|
| 
       73 
122 
     | 
    
         
             
            # -------------------------------------------------------------------------------- #
         
     | 
| 
       74 
123 
     | 
    
         
             
            # This is the end - nothing more to see here.                                      #
         
     | 
| 
       75 
124 
     | 
    
         
             
            # -------------------------------------------------------------------------------- #
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
    
        data/lib/pwgen.rb
    CHANGED
    
    | 
         @@ -12,7 +12,7 @@ module Pwgen 
     | 
|
| 
       12 
12 
     | 
    
         
             
                # docs to go here
         
     | 
| 
       13 
13 
     | 
    
         
             
                #
         
     | 
| 
       14 
14 
     | 
    
         
             
                class Password
         
     | 
| 
       15 
     | 
    
         
            -
                     
     | 
| 
      
 15 
     | 
    
         
            +
                    CONFUSABLE_CHARS = ['$', 'S', 's', '5', 'B', 'b', '8', '|', 'I', 'i', 'o', '0', '1', 'l', 'O', '!'].freeze
         
     | 
| 
       16 
16 
     | 
    
         
             
                    URL_UNSAFE = ['$', '&', '+', ',', '/', ':', ';', '=', '?', '@', '<', '>', '#', '%', '{', '}', '|', '^', '~', '[', ']', '\\', '"', '`'].freeze
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                    $lower_case = []
         
     | 
| 
         @@ -44,19 +44,19 @@ module Pwgen 
     | 
|
| 
       44 
44 
     | 
    
         
             
                    def self.configure(options)
         
     | 
| 
       45 
45 
     | 
    
         
             
                        $lower_case = []
         
     | 
| 
       46 
46 
     | 
    
         
             
                        $lower_case = ('a'..'z').to_a unless options[:skip_lower_case]
         
     | 
| 
       47 
     | 
    
         
            -
                        $lower_case -=  
     | 
| 
      
 47 
     | 
    
         
            +
                        $lower_case -= CONFUSABLE_CHARS if options[:skip_confusables]
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         
             
                        $upper_case = []
         
     | 
| 
       50 
50 
     | 
    
         
             
                        $upper_case = ('A'..'Z').to_a unless options[:skip_upper_case]
         
     | 
| 
       51 
     | 
    
         
            -
                        $upper_case -=  
     | 
| 
      
 51 
     | 
    
         
            +
                        $upper_case -= CONFUSABLE_CHARS if options[:skip_confusables]
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
53 
     | 
    
         
             
                        $digits = []
         
     | 
| 
       54 
54 
     | 
    
         
             
                        $digits = ('0'..'9').to_a unless options[:skip_digits]
         
     | 
| 
       55 
     | 
    
         
            -
                        $digits -=  
     | 
| 
      
 55 
     | 
    
         
            +
                        $digits -= CONFUSABLE_CHARS if options[:skip_confusables]
         
     | 
| 
       56 
56 
     | 
    
         | 
| 
       57 
57 
     | 
    
         
             
                        $symbols = []
         
     | 
| 
       58 
     | 
    
         
            -
                        $symbols = ['!', '@', '#', '£', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', '{', '}', '[', ']', ':', ';', '"', '\'', '|', '\\', '~', '`', '<', '>', '?', ',', '.', '/', ' 
     | 
| 
       59 
     | 
    
         
            -
                        $symbols -=  
     | 
| 
      
 58 
     | 
    
         
            +
                        $symbols = ['!', '@', '#', '£', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', '{', '}', '[', ']', ':', ';', '"', '\'', '|', '\\', '~', '`', '<', '>', '?', ',', '.', '/', ' '].freeze unless options[:skip_symbols]
         
     | 
| 
      
 59 
     | 
    
         
            +
                        $symbols -= CONFUSABLE_CHARS if options[:skip_confusables]
         
     | 
| 
       60 
60 
     | 
    
         
             
                        $symbols -= URL_UNSAFE if options[:skip_url_unsafe]
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
       62 
62 
     | 
    
         
             
                        $alpha = []
         
     | 
| 
         @@ -80,15 +80,22 @@ module Pwgen 
     | 
|
| 
       80 
80 
     | 
    
         
             
                        puts "Alpha: #{$alpha}"
         
     | 
| 
       81 
81 
     | 
    
         
             
                        puts "AlphaNumeric: #{$alphanum}"
         
     | 
| 
       82 
82 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
                        puts " 
     | 
| 
      
 83 
     | 
    
         
            +
                        puts "Confusable Chars: #{CONFUSABLE_CHARS}"
         
     | 
| 
       84 
84 
     | 
    
         
             
                        puts "URL Unsafe: #{URL_UNSAFE}"
         
     | 
| 
       85 
85 
     | 
    
         | 
| 
       86 
86 
     | 
    
         
             
                        puts "Full Character Set: #{$full_character_set}"
         
     | 
| 
       87 
87 
     | 
    
         
             
                    end
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
89 
     | 
    
         
             
                    def self.generate_password(length = 12, options = {})
         
     | 
| 
       90 
     | 
    
         
            -
                        raise 'length must be  
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
      
 90 
     | 
    
         
            +
                        raise 'length must be a number!' unless length !~ /\D/
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                        length = length.to_i
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                        raise 'length must be a positive number!' unless length > 0
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                        if options[:digits] || options[:symbols]
         
     | 
| 
      
 97 
     | 
    
         
            +
                            raise 'length is to short to meet digits/symbols requirements!' if length < options[:digits].to_i + options[:symbols].to_i
         
     | 
| 
      
 98 
     | 
    
         
            +
                        end
         
     | 
| 
       92 
99 
     | 
    
         | 
| 
       93 
100 
     | 
    
         
             
                        reset(options)
         
     | 
| 
       94 
101 
     | 
    
         | 
    
        data/lib/pwgen/version.rb
    CHANGED
    
    
    
        data/pwgen.gemspec
    CHANGED
    
    | 
         @@ -21,7 +21,9 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       21 
21 
     | 
    
         
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         
     | 
| 
       22 
22 
     | 
    
         
             
              spec.require_paths = ["lib"]
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
              spec. 
     | 
| 
      
 24 
     | 
    
         
            +
              spec.required_ruby_version = '>= 2.3.0'
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              spec.add_development_dependency "bundler"
         
     | 
| 
       25 
27 
     | 
    
         
             
              spec.add_development_dependency "rake", "~> 10.0"
         
     | 
| 
       26 
28 
     | 
    
         
             
              spec.add_development_dependency "rspec", "~> 3.0"
         
     | 
| 
       27 
29 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,29 +1,29 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: pwgen
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version:  
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Tim Gurney aka Wolf
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2019-01- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-01-29 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
       15 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
     | 
    
         
            -
                - - " 
     | 
| 
      
 17 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :development
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
     | 
    
         
            -
                - - " 
     | 
| 
      
 24 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
28 
     | 
    
         
             
              name: rake
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -173,7 +173,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       173 
173 
     | 
    
         
             
              requirements:
         
     | 
| 
       174 
174 
     | 
    
         
             
              - - ">="
         
     | 
| 
       175 
175 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       176 
     | 
    
         
            -
                  version:  
     | 
| 
      
 176 
     | 
    
         
            +
                  version: 2.3.0
         
     | 
| 
       177 
177 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       178 
178 
     | 
    
         
             
              requirements:
         
     | 
| 
       179 
179 
     | 
    
         
             
              - - ">="
         
     |