phinze/homebrew-cask — pull request #2389 by rolandwalker (2014-01-11 17:45:44+00:00)
Title: bugfix: make uninstall :script accept a hash

The indentation in `CONTRIBUTING.md` implies that `:script` accepts a hash.
But that is not the case. Instead `:script` accesses the entire hash defined
by `uninstall`. Unrelated uninstall keys such as `:quit` leak through to
`@command.run!` when attempting to exec `:script`. Result: contrary to docs,
`:script` cannot be combined with other uninstall keys.

This PR makes uninstall `:script` accept a hash. When `:args` or `:input` are not
needed, `:script` can still accept a plain string, so many Casks require no
alteration.

In addition
- adds key `:executable`, required when using hash argument to `:script`
- keys to `:script` are validated and sanitized before being passed to
`@command.run!`
- adds `:quit` to `with-installable.rb` test to protect against regression
on leaky keys

This also fixes a conflict introduced in #2019, because `:args` and `:input`
were keys in the `uninstall` hash space.