diff --git a/.gitignore b/.gitignore index b5f5247..7b5bab1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ bin/ -gospt +bin/* +/gospt diff --git a/Makefile b/Makefile index d4db0c0..56c2230 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,8 @@ -build: +build: gospt + +gospt: $(shell find . -name '*.go') mkdir -p bin - go build -o ./bin/gospt . + go build -o gospt . completions: mkdir -p completions @@ -16,6 +18,7 @@ tidy: clean: rm -rf bin + rm -rf gospt rm -rf completions uninstall: @@ -23,7 +26,7 @@ uninstall: rm /usr/share/zsh/site-functions/_gospt install: - cp bin/gospt /usr/bin + cp gospt /usr/bin cp completions/_gospt /usr/share/zsh/site-functions/_gospt cp completions/gospt /usr/share/bash-completion/completions/gospt cp completions/gospt.fish /usr/share/fish/vendor_completions.d/gospt.fish diff --git a/src/auth/auth.go b/src/auth/auth.go index 07ce019..310d2c0 100644 --- a/src/auth/auth.go +++ b/src/auth/auth.go @@ -3,7 +3,7 @@ package auth import ( "encoding/json" "fmt" - "io/ioutil" + "io" "log" "net/http" "os" @@ -27,7 +27,6 @@ var ( func GetClient(ctx *gctx.Context) (*spotify.Client, error) { if config.Values.ClientId == "" || config.Values.ClientSecret == "" || config.Values.Port == "" { - configDir, _ := os.UserConfigDir() fmt.Println("PLEASE WRITE YOUR CONFIG FILE IN", filepath.Join(configDir, "gospt/client.yml")) fmt.Println("GO HERE TO AND MAKE AN APPLICATION: https://developer.spotify.com/dashboard/applications") fmt.Print("\nclient_id: \"idgoesherelikethis\"\nclient_secret: \"secretgoesherelikethis\"\nport:\"8888\"\n\n") @@ -63,7 +62,7 @@ func GetClient(ctx *gctx.Context) (*spotify.Client, error) { return nil, err } defer authFile.Close() - authValue, err := ioutil.ReadAll(authFile) + authValue, err := io.ReadAll(authFile) if err != nil { return nil, err } @@ -82,7 +81,7 @@ func GetClient(ctx *gctx.Context) (*spotify.Client, error) { if err != nil { panic(err.Error()) } - err = ioutil.WriteFile(filepath.Join(configDir, "gospt/auth.json"), out, 0o644) + err = os.WriteFile(filepath.Join(configDir, "gospt/auth.json"), out, 0o644) if err != nil { panic("FAILED TO SAVE AUTH") } @@ -91,7 +90,7 @@ func GetClient(ctx *gctx.Context) (*spotify.Client, error) { if err != nil { panic(err.Error()) } - err = ioutil.WriteFile(filepath.Join(configDir, "gospt/auth.json"), out, 0o644) + err = os.WriteFile(filepath.Join(configDir, "gospt/auth.json"), out, 0o644) if err != nil { panic("FAILED TO SAVE AUTH") } @@ -138,7 +137,7 @@ func completeAuth(w http.ResponseWriter, r *http.Request) { if err != nil { panic(err.Error()) } - err = ioutil.WriteFile(filepath.Join(configDir, "gospt/auth.json"), out, 0o644) + err = os.WriteFile(filepath.Join(configDir, "gospt/auth.json"), out, 0o644) if err != nil { panic("FAILED TO SAVE AUTH") } diff --git a/src/commands/commands.go b/src/commands/commands.go index 555e682..b54e857 100644 --- a/src/commands/commands.go +++ b/src/commands/commands.go @@ -2,8 +2,9 @@ package commands import ( "encoding/json" + "errors" "fmt" - "io/ioutil" + "io" "math" "math/rand" "net/url" @@ -728,7 +729,7 @@ func SetDevice(ctx *gctx.Context, client *spotify.Client, device spotify.PlayerD return err } configDir, _ := os.UserConfigDir() - err = ioutil.WriteFile(filepath.Join(configDir, "gospt/device.json"), out, 0o644) + err = os.WriteFile(filepath.Join(configDir, "gospt/device.json"), out, 0o644) if err != nil { return err } @@ -915,7 +916,7 @@ func activateDevice(ctx *gctx.Context, client *spotify.Client) error { return err } defer deviceFile.Close() - deviceValue, err := ioutil.ReadAll(deviceFile) + deviceValue, err := io.ReadAll(deviceFile) if err != nil { return err } @@ -936,35 +937,36 @@ func activateDevice(ctx *gctx.Context, client *spotify.Client) error { func GetRadioPlaylist(ctx *gctx.Context, client *spotify.Client) (*spotify.FullPlaylist, error) { configDir, _ := os.UserConfigDir() - if _, err := os.Stat(filepath.Join(configDir, "gospt/radio.json")); err == nil { - playlistFile, err := os.Open(filepath.Join(configDir, "gospt/radio.json")) - if err != nil { - return nil, err - } - defer playlistFile.Close() - playlistValue, err := ioutil.ReadAll(playlistFile) - if err != nil { - return nil, err - } - var playlist *spotify.FullPlaylist - err = json.Unmarshal(playlistValue, &playlist) - if err != nil { - return nil, err - } - return playlist, nil + playlistFile, err := os.ReadFile(filepath.Join(configDir, "gospt/radio.json")) + if errors.Is(err, os.ErrNotExist) { + return CreateRadioPlaylist(ctx, client) } - // private flag doesnt work - playlist, err := client.CreatePlaylistForUser(ctx, ctx.UserId, "autoradio", "Automanaged radio playlist", false, false) if err != nil { return nil, err } - out, err := json.MarshalIndent(playlist, "", " ") - if err != nil { - return nil, err - } - err = ioutil.WriteFile(filepath.Join(configDir, "gospt/radio.json"), out, 0o644) + var playlist *spotify.FullPlaylist + err = json.Unmarshal(playlistFile, &playlist) if err != nil { return nil, err } return playlist, nil } + +func CreateRadioPlaylist(ctx *gctx.Context, client *spotify.Client) (*spotify.FullPlaylist, error) { + // private flag doesnt work + configDir, _ := os.UserConfigDir() + playlist, err := client.CreatePlaylistForUser(ctx, ctx.UserId, "autoradio", "Automanaged radio playlist", false, false) + if err != nil { + return nil, err + } + raw, err := json.MarshalIndent(playlist, "", " ") + if err != nil { + return nil, err + } + err = os.WriteFile(filepath.Join(configDir, "gospt/radio.json"), raw, 0o644) + if err != nil { + return nil, err + } + + return playlist, nil +}