Simplify the code tremendously by using 'go list' instead of go/build, and remove the use of go/types to determine types (since we only care about a couple canonical types).
* add support for choose which go binary to run
* make the compiler configurable
* add a cli flag and update docs
* use go version as part of the binary hash
* add go version to what we display in mage -version
This change adds `sanitizeSynopsis()` function to perform basic
sanitization on the synopsis. If synopsis begins with the function name, it
removes the function to avoid repeating words.
* * Removed stale type declarations in parse.
* Updated parse and mg to make better use of types package.
* Added function to types package to test for valid function.
* Added function to to types package to wrap a valid FuncType as the
* most greedy of FuncType
* renamed IsFuncType and refactored to return error instead of bool. Made the return value of FuncTypeWrap more clear.
* removed unused type func declarations
* Helpers galore
This commit adds helper functions that should be commonly needed
by many magefiles. It includes command execution handlers as well
as error handlers.
This commit also removes the only two non-stdlib dependencies in
the codebase. Since mage will likely be vendored into a repo,
it would be nice to avoid cluttering the vendor directory with
dependencies that are only for the build script.
fixes#13
The bug was that non-stdlib imports were failing to be found by the parser.
The problem is that the default importer only imports from compiled files. But we specifically want to import from source files. For go 1.9 this is easy, go/importer has an importer.For that takes "source". However, previous to go 1.9, this doesn't exist. To keep the code working in previous versions, we just grab the code from 1.9's srcimporter and include it in the build, and then conditionally compile in that code if we're not running on go 1.9 or greater (if we are running on go 1.9, we can use the stdlib version, which is better because it'll get fixes etc automatically).
Also added a bunch of tests to ensure that this code won't break again without a test failing.