commands: Make commands.Execute return a Response object

We have no global `Hugo` object no more (yay!), and there are some external tools that depends on that value.

These tools need to use get that value from `Response.Result`.

Note that `commands.Execute` now also takes the arguments as a string slice. This should also make it easier to use, not having to modify `os.Args`.

This commit also wraps up this particular issue. Phew!

Test coverage in /commands before: 14.4%
Now:  53.5%

Still work to do, now it is at least possible.

Closes #4598
This commit is contained in:
Bjørn Erik Pedersen 2018-04-11 20:17:28 +02:00
parent e7010c1b62
commit 96689a5c31
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
4 changed files with 75 additions and 22 deletions

15
main.go
View file

@ -19,22 +19,19 @@ import (
"os"
"github.com/gohugoio/hugo/commands"
jww "github.com/spf13/jwalterweatherman"
)
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
commands.Execute()
resp := commands.Execute(os.Args[1:])
if jww.LogCountForLevelsGreaterThanorEqualTo(jww.LevelError) > 0 {
if resp.Err != nil {
if resp.IsUserError() {
resp.Cmd.Println("")
resp.Cmd.Println(resp.Cmd.UsageString())
}
os.Exit(-1)
}
// TODO(bep) cli refactor
/*if commands.Hugo != nil {
if commands.Hugo.Log.LogCountForLevelsGreaterThanorEqualTo(jww.LevelError) > 0 {
os.Exit(-1)
}
}*/
}