x add `opts required: [:api_key, [:user, :password]]` x add opt '--foo', requires: :other x add opt '--foo', alias: :other x add opt '--foo', format: /.+/ x add opt '--foo', deprecated: true x add opt '--foo', alias: :other, deprecated: :other x add opt '--foo', max: 10, type: :integer x add opt '--foo', enum: ['one', 'two'] x consider automatically adding `[no-]` to booleans x make it so that Cl::Cmd parses the args, not Runner. only that way sub cmd specific opts can sit on the sub command x cleanup and move matchers x add lookup and interpolation to assert x revisit using MSGS and CMDS everywhere x add something like :keep for automatically moving things out of the way before cleanup x make specs validate that cmds have run in the correct order x revisit what's up with `needs_key` x revisit what's up with `git_http_user_agent false` x revisit the run stages in Provider x implement folds x port on-demand installation of sub gems x make MSGS etc class methods, so they can inherit from base classes (for Heroku) x move sub cmd opts etc to sub classes for Heroku x look into using FakeFS, MemFS sucks x make a list of strategies/tools providers use x revisit which providers need an ssh key, git, etc. x should have run in order matcher does not work x write bin/readme x test Cl against all Ruby versions >= 2.0 x test Ctx x go through all providers, remove fakefs, use chdir 'tmp/dpl' x make sure all provider fs write operations go through ctx x what is `options[:no_deploy]` for? (it's for testing. added it back as `--stages`) x make sure dasherized options are accepted and normalized x add opt internal: true to Cl x write comments on the most important classes, so we can generate some api docs x install gems with sudo if Process::UID.eid is 0 x document Provider.env x add retry to Ctx#script x try installing all gems at once x run apt-get update before apt-get install, once x make sure failed dependency installation fails the command x fix dependency installation for various providers x look into making `--app` and `--key_name` attr readers, rather than options x make it so that options are being overwritten if specified by both base and sub classes x test that `bin/dpl --stage install` runs as expected for various providers x on Travis CI add a stage that tests `bin/dpl --stage install` for various providers on various ruby versions x try using bundler/inline for gem dependencies x write a proper readme for Cl x add yard docs to Cl x autogenerate examples x update .github/CONTRIBUTING.md x consider adding `note: 'some comment` to Cl opts (e.g. see Lambda tracing mode) x bundle/inline seems to pick up an existing Gemfile.lock (which might be incompatible) x figure out how to deal with python tooling on non-python images etc (just die for now) x unit test netlfiy x move ./.dpl to ~/.dpl (clutters the working dir) x add a DSL for adding paths to PATH, e.g. gcs x make sure all error messages are actually being displayed x remove the fold for finishing the deployment, it's confusing. Maybe do not fold the deployment itself? or somehow keep the last fold open if there is an error? x BitBalloon is now Netlify Drop https://app.netlify.com/drop. time to rename it? x make `--skip_cleanup` the default x make sure all main shell scripts use assert: true, echo: true x make sure all asserts have an err msg (can we test this?), or add a generic error message x add secure: true, in order to tell Cl to filter log output for a given option x refactor Provider by splitting out a Cmd class for shell commands x document Cmd methods x revisit README and CONTRIBUTING x Make sure failed deployments always fail the build starting with dpl 2.0 x PR sf-datapipeline x add a DSL for moving files out of the way, and moving them back later, e.g. gcs /etc/boto.cfg x start a CHANGELOG.md? - EY docs do not explain where to obtain the api key Future improvements - https://www.freecodecamp.org/news/how-to-deploy-your-cloud-foundry-app-with-almost-zero-fear-using-travis-ci-926697fff8f6/