39 lines
766 B
Go
39 lines
766 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"github.com/wild-cloud/wild-cli/internal/output"
|
|
)
|
|
|
|
func main() {
|
|
// Set up context with cancellation for graceful shutdown
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
defer cancel()
|
|
|
|
// Handle interrupt signals gracefully
|
|
sigChan := make(chan os.Signal, 1)
|
|
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
|
go func() {
|
|
<-sigChan
|
|
cancel()
|
|
os.Exit(1)
|
|
}()
|
|
|
|
// Initialize output logger
|
|
logger := output.NewLogger()
|
|
defer func() {
|
|
_ = logger.Sync() // Ignore sync errors on program exit
|
|
}()
|
|
|
|
// Execute root command
|
|
cmd := newRootCommand()
|
|
if err := cmd.ExecuteContext(ctx); err != nil {
|
|
logger.Error("Command execution failed", "error", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|