@@ -12,6 +12,11 @@ import (
1212
1313 "github.com/cli/cli/command"
1414 "github.com/cli/cli/internal/config"
15+ "github.com/cli/cli/internal/ghinstance"
16+ "github.com/cli/cli/internal/run"
17+ "github.com/cli/cli/pkg/cmd/alias/expand"
18+ "github.com/cli/cli/pkg/cmd/factory"
19+ "github.com/cli/cli/pkg/cmd/root"
1520 "github.com/cli/cli/pkg/cmdutil"
1621 "github.com/cli/cli/update"
1722 "github.com/cli/cli/utils"
@@ -31,25 +36,48 @@ func main() {
3136
3237 hasDebug := os .Getenv ("DEBUG" ) != ""
3338
34- stderr := utils .NewColorable (os .Stderr )
39+ if hostFromEnv := os .Getenv ("GH_HOST" ); hostFromEnv != "" {
40+ ghinstance .OverrideDefault (hostFromEnv )
41+ }
42+
43+ cmdFactory := factory .New (command .Version )
44+ stderr := cmdFactory .IOStreams .ErrOut
45+ rootCmd := root .NewCmdRoot (cmdFactory , command .Version , command .BuildDate )
3546
3647 expandedArgs := []string {}
3748 if len (os .Args ) > 0 {
3849 expandedArgs = os .Args [1 :]
3950 }
4051
41- cmd , _ , err := command . RootCmd .Traverse (expandedArgs )
42- if err != nil || cmd == command . RootCmd {
52+ cmd , _ , err := rootCmd .Traverse (expandedArgs )
53+ if err != nil || cmd == rootCmd {
4354 originalArgs := expandedArgs
4455 isShell := false
45- expandedArgs , isShell , err = command .ExpandAlias (os .Args )
56+
57+ cfg , err := cmdFactory .Config ()
58+ if err != nil {
59+ fmt .Fprintf (stderr , "failed to read configuration: %s\n " , err )
60+ os .Exit (2 )
61+ }
62+
63+ expandedArgs , isShell , err = expand .ExpandAlias (cfg , os .Args , nil )
4664 if err != nil {
4765 fmt .Fprintf (stderr , "failed to process aliases: %s\n " , err )
4866 os .Exit (2 )
4967 }
5068
69+ if hasDebug {
70+ fmt .Fprintf (stderr , "%v -> %v\n " , originalArgs , expandedArgs )
71+ }
72+
5173 if isShell {
52- err = command .ExecuteShellAlias (expandedArgs )
74+ externalCmd := exec .Command (expandedArgs [0 ], expandedArgs [1 :]... )
75+ externalCmd .Stderr = os .Stderr
76+ externalCmd .Stdout = os .Stdout
77+ externalCmd .Stdin = os .Stdin
78+ preparedCmd := run .PrepareCmd (externalCmd )
79+
80+ err = preparedCmd .Run ()
5381 if err != nil {
5482 if ee , ok := err .(* exec.ExitError ); ok {
5583 os .Exit (ee .ExitCode ())
@@ -61,19 +89,15 @@ func main() {
6189
6290 os .Exit (0 )
6391 }
64-
65- if hasDebug {
66- fmt .Fprintf (stderr , "%v -> %v\n " , originalArgs , expandedArgs )
67- }
6892 }
6993
70- command . RootCmd .SetArgs (expandedArgs )
94+ rootCmd .SetArgs (expandedArgs )
7195
72- if cmd , err := command . RootCmd .ExecuteC (); err != nil {
73- printError (os . Stderr , err , cmd , hasDebug )
96+ if cmd , err := rootCmd .ExecuteC (); err != nil {
97+ printError (stderr , err , cmd , hasDebug )
7498 os .Exit (1 )
7599 }
76- if command .HasFailed () {
100+ if root .HasFailed () {
77101 os .Exit (1 )
78102 }
79103
@@ -85,7 +109,6 @@ func main() {
85109 ansi .Color (newRelease .Version , "cyan" ),
86110 ansi .Color (newRelease .URL , "yellow" ))
87111
88- stderr := utils .NewColorable (os .Stderr )
89112 fmt .Fprintf (stderr , "\n \n %s\n \n " , msg )
90113 }
91114}
0 commit comments