package main import ( "fmt" "os" "github.com/NVIDIA/nvidia-container-toolkit/internal/config" ) var logger = NewLogger() func main() { err := run(os.Args) if err != nil { logger.Errorf("%v", err) os.Exit(1) } } // run is an entry point that allows for idiomatic handling of errors // when calling from the main function. func run(argv []string) (rerr error) { logger.Debugf("Running %v", argv) cfg, err := config.GetConfig() if err != nil { return fmt.Errorf("error loading config: %v", err) } err = logger.LogToFile(cfg.NVIDIAContainerRuntimeConfig.DebugFilePath) if err != nil { return fmt.Errorf("error opening debug log file: %v", err) } defer func() { // We capture and log a returning error before closing the log file. if rerr != nil { logger.Errorf("%v", rerr) } logger.CloseFile() }() runtime, err := newNVIDIAContainerRuntime(logger.Logger, cfg, argv) if err != nil { return fmt.Errorf("failed to create NVIDIA Container Runtime: %v", err) } return runtime.Exec(argv) }