diff --git a/desktopcollector/go.mod b/desktopcollector/go.mod index 7a1fe4e..9ac3f23 100644 --- a/desktopcollector/go.mod +++ b/desktopcollector/go.mod @@ -4,6 +4,7 @@ go 1.23.0 require ( github.com/CtrlSpice/otel-desktop-viewer/desktopexporter v0.0.0-20241007201340-685513a8f94c + github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c github.com/spf13/cobra v1.8.1 go.opentelemetry.io/collector/component v0.107.0 go.opentelemetry.io/collector/confmap v0.107.0 @@ -56,7 +57,6 @@ require ( github.com/mostynb/go-grpc-compression v1.2.3 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pierrec/lz4/v4 v4.1.21 // indirect - github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/prometheus/client_golang v1.19.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect diff --git a/desktopcollector/main.go b/desktopcollector/main.go index 7758a1c..6eb332f 100644 --- a/desktopcollector/main.go +++ b/desktopcollector/main.go @@ -1,14 +1,14 @@ -// Code generated by "go.opentelemetry.io/collector/cmd/builder". DO NOT EDIT. - // I have edited the code generated by "go.opentelemetry.io/collector/cmd/builder". Pray I don't edit it any further. - // Program otel-desktop-viewer is an OpenTelemetry Collector binary. + package main import ( "log" "strconv" + "time" + "github.com/pkg/browser" "github.com/spf13/cobra" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/confmap" @@ -54,6 +54,7 @@ func runInteractive(params otelcol.CollectorSettings) error { func newCommand(set otelcol.CollectorSettings) *cobra.Command { var httpPortFlag, grpcPortFlag, browserPortFlag int var hostFlag, dbFlag string + var openBrowserFlag bool rootCmd := &cobra.Command{ Use: set.BuildInfo.Command, @@ -84,9 +85,17 @@ func newCommand(set otelcol.CollectorSettings) *cobra.Command { rootCmd.Flags().IntVar(&httpPortFlag, "http", 4318, "The port number on which we listen for OTLP http payloads") rootCmd.Flags().IntVar(&grpcPortFlag, "grpc", 4317, "The port number on which we listen for OTLP grpc payloads") - rootCmd.Flags().IntVar(&browserPortFlag, "browser", 8000, "The port number where we expose our data") + rootCmd.Flags().BoolVar(&openBrowserFlag, "openBrowser", true, "Open the browser automatically on launch") + rootCmd.Flags().IntVar(&browserPortFlag, "browserPort", 8000, "The port number where we expose our data") rootCmd.Flags().StringVar(&hostFlag, "host", "localhost", "The host where we expose our all endpoints (OTLP receivers and browser)") rootCmd.Flags().StringVar(&dbFlag, "db", "", "The path of your database file. Omitting this flag opens DuckDB in in-memory mode, with no data persisted to disk.") + + if !openBrowserFlag { + go func() { + // Wait a bit for the server to come up to avoid a 404 as a first experience + time.Sleep(250 * time.Millisecond) + browser.OpenURL("http://" + hostFlag + `:` + strconv.Itoa(browserPortFlag) + "/") + }() + } return rootCmd } -