Vendoring is the way to go, but it done in a very awkward way here. I find it is better to just fork the repos you depend on and reference your fork. This makes it very easy to update them from upstream and eliminates any need for third party code in your repo.
Using the command line args is great for programs with small configs, but we find good old INIs and JSON to work better for large complex configs.
I think the deploy step outlined should be running the unit tests with the race detector enabled.