90 lines
1.9 KiB
Go
90 lines
1.9 KiB
Go
// Copyright (c) 2026 Probo Inc <hello@probo.com>.
|
|
//
|
|
// Permission to use, copy, modify, and/or distribute this software for any
|
|
// purpose with or without fee is hereby granted, provided that the above
|
|
// copyright notice and this permission notice appear in all copies.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
// PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"go.probo.inc/probo/pkg/cli/config"
|
|
"go.probo.inc/probo/pkg/cmd/cmdutil"
|
|
"go.probo.inc/probo/pkg/cmd/iostreams"
|
|
"go.probo.inc/probo/pkg/cmd/root"
|
|
)
|
|
|
|
var (
|
|
version string = "unknown"
|
|
)
|
|
|
|
func main() {
|
|
ios := iostreams.System()
|
|
if isNonInteractiveEnv() {
|
|
ios.ForceNonInteractive = true
|
|
}
|
|
|
|
if isNoColorEnv() {
|
|
ios.ForceNoColor = true
|
|
}
|
|
|
|
ios.ApplyColorProfile()
|
|
|
|
f := &cmdutil.Factory{
|
|
IOStreams: ios,
|
|
Version: version,
|
|
Config: func() (*config.Config, error) {
|
|
return config.Load()
|
|
},
|
|
}
|
|
|
|
cmd := root.NewCmdRoot(f)
|
|
|
|
if err := cmd.Execute(); err != nil {
|
|
fmt.Fprintf(os.Stderr, "Error: %s\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func isNonInteractiveEnv() bool {
|
|
if v := os.Getenv("PROBO_NO_INTERACTIVE"); v == "1" || v == "true" {
|
|
return true
|
|
}
|
|
|
|
if v := os.Getenv("CI"); v == "true" || v == "1" {
|
|
return true
|
|
}
|
|
|
|
if os.Getenv("DEBIAN_FRONTEND") == "noninteractive" {
|
|
return true
|
|
}
|
|
|
|
if os.Getenv("TERM") == "dumb" {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func isNoColorEnv() bool {
|
|
if _, ok := os.LookupEnv("NO_COLOR"); ok {
|
|
return true
|
|
}
|
|
|
|
if os.Getenv("TERM") == "dumb" {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|