diff --git a/.vscode/settings.json b/.vscode/settings.json index 2b4fbce..d1afcdf 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,7 @@ { "cSpell.words": [ "daulog", + "Debugf", "inconsolata" ] } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index ebd15d2..9d73a54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +- Automatically open your web browser to the `dau` web interface + (can be disabled in configuration) + ## [v0.12.1] - 2020-05-01 - Show if a new version is available in the web interface diff --git a/config/config.go b/config/config.go index 93f72f3..c7c2dc2 100644 --- a/config/config.go +++ b/config/config.go @@ -38,8 +38,16 @@ type ConfigV2 struct { Watchers []Watcher } +type ConfigV3 struct { + WatchInterval int + Version int + Port int + OpenBrowserOnStart bool + Watchers []Watcher +} + type ConfigService struct { - Config *ConfigV2 + Config *ConfigV3 Changed chan bool ConfigFilename string } @@ -66,11 +74,12 @@ func (c *ConfigService) LoadOrInit() error { } } -func DefaultConfig() *ConfigV2 { - c := ConfigV2{} - c.Version = 2 +func DefaultConfig() *ConfigV3 { + c := ConfigV3{} + c.Version = 3 c.WatchInterval = 10 c.Port = 9090 + c.OpenBrowserOnStart = true w := Watcher{ WebHookURL: "https://webhook.url.here", Path: "/your/screenshot/dir/here", @@ -122,6 +131,13 @@ func (c *ConfigService) Load() error { c.Config.Watchers = []Watcher{onlyWatcher} } + if c.Config.Version == 2 { + // need to migrate this + daulog.Info("Migrating config to V3") + c.Config.Version = 3 + c.Config.OpenBrowserOnStart = true + } + return nil } diff --git a/config/config_test.go b/config/config_test.go index e98a37a..43994e1 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -22,8 +22,8 @@ func TestNoConfig(t *testing.T) { t.Errorf("unexpected failure from load: %s", err) } - if c.Config.Version != 2 { - t.Error("not version 2 starting config") + if c.Config.Version != 3 { + t.Error("not version 3 starting config") } if fileSize(c.ConfigFilename) < 40 { @@ -45,7 +45,7 @@ func TestEmptyFileConfig(t *testing.T) { } -func TestMigrateFromV1toV2(t *testing.T) { +func TestMigrateFromV1toV3(t *testing.T) { c := ConfigService{} c.ConfigFilename = v1Config() @@ -53,8 +53,12 @@ func TestMigrateFromV1toV2(t *testing.T) { if err != nil { t.Error("unexpected error from LoadOrInit()") } - if c.Config.Version != 2 { - t.Errorf("Version %d not 2", c.Config.Version) + if c.Config.Version != 3 { + t.Errorf("Version %d not 3", c.Config.Version) + } + + if c.Config.OpenBrowserOnStart != true { + t.Errorf("Open browser on start not true") } if len(c.Config.Watchers) != 1 { diff --git a/dau.go b/dau.go index 50141f7..04ee2c9 100644 --- a/dau.go +++ b/dau.go @@ -21,6 +21,8 @@ import ( daulog "github.com/tardisx/discord-auto-upload/log" "github.com/tardisx/discord-auto-upload/upload" + "github.com/skratchdot/open-golang/open" + // "github.com/tardisx/discord-auto-upload/upload" "github.com/tardisx/discord-auto-upload/version" "github.com/tardisx/discord-auto-upload/web" @@ -51,6 +53,11 @@ func main() { web := web.WebService{Config: config, Uploader: up} web.StartWebServer() + if config.Config.OpenBrowserOnStart { + address := fmt.Sprintf("http://localhost:%d", config.Config.Port) + open.Start(address) + } + go func() { version.GetOnlineVersion() if version.UpdateAvailable() { diff --git a/go.mod b/go.mod index f285ca3..c7513ff 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/mitchellh/go-homedir v1.1.0 + github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 golang.org/x/image v0.0.0-20210504121937-7319ad40d33e golang.org/x/mod v0.4.2 ) diff --git a/go.sum b/go.sum index d2e5d2f..002ef7c 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= +github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/image v0.0.0-20210504121937-7319ad40d33e h1:PzJMNfFQx+QO9hrC1GwZ4BoPGeNGhfeQEgcQFArEjPk= diff --git a/web/data/config.html b/web/data/config.html index 64590eb..64cf610 100644 --- a/web/data/config.html +++ b/web/data/config.html @@ -21,7 +21,7 @@
The Watch Interval is how often new files will be discovered by your - watchers (configured below).
+ watchers (watchers are configured below).