# pwm

pwm very simply generates reasonably secure passwords. That's it; that's all it
does.

Passwords are chosen from the set of all upper-case letters except I and O, all
lower-case letters except l, and the digits 2 through 9. 0 and O are not used to
avoid confusion with each other. I, l, and 1 are not used for the same reason.

Starting with version 1.1.0, passwords are guaranteed to contain at least one
upper-case letter, one lower-case letter, and one number.

## We Interrupt This README.md

pwm is a stable, mature piece of code. It's one that I haven't modified
significantly in years. Recently, I've become interested in JavaScript and am
focusing my attention on a JS rewrite called
[powm](https://github.com/markcornick/powm). Unless some kind of serious bug
gets found in pwm, I'm unlikely to do any further development on it, or to
accept pull requests. Please note that pwm is, and has always been, in the
public domain, so if it doesn't do something you want it to do, I not only don't
mind if you fork it and make it your own, I urge you to.

In short, I'm closing the book on pwm as far as I'm concerned, but if you want
to write the next chapter, fork away and do great things with my compliments.

_We now return you to README.md already in progress._

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'pwm'
```

And then execute:

```bash
bundle
```

Or install it yourself as:

```bash
gem install pwm
```

## Usage

```ruby
require 'pwm'
Pwm.password(length)
```

The default length is 16. The minimum length is 8. Specifying a length
less than 8 will raise `Pwm::TooShortException`.

You can also call pwm from the command line:

```bash
$ pwm
h6ECtbDZPnRddHV7
$ echo $?
0
$ pwm 8
XdWod8f8
$ echo $?
0
$ pwm 4
length must be >= 8
$ echo $?
1
```

## Development

After checking out the repo, run `bin/setup` to install dependencies. Then, run
`rake spec` to run the tests or `rake spec` to run the Cucumber features. You
can also run `bin/console` for an interactive prompt that will allow you to
experiment.

To install this gem onto your local machine, run `bundle exec rake install`. To
release a new version, update the version number in `version.rb`, and then run
`bundle exec rake release`, which will create a git tag for the version, push
git commits and tags, and push the `.gem` file to
[rubygems.org](https://rubygems.org).

## Contributing

Bug reports and pull requests are welcome on GitHub at
<https://github.com/markcornick/pwm>. This project is intended to be a safe,
welcoming space for collaboration, and contributors are expected to adhere to
the [Contributor Covenant](contributor-covenant.org) code of conduct.

## Author

Mark Cornick <https://github.com/markcornick>

## (Lack of) Copyright

To the extent possible under law, Mark Cornick has waived all copyright
and related or neighboring rights to pwm.