package icecast

import (
	"io/ioutil"
	"os"
	"strings"

	"git.autistici.org/ale/autoradio"
)

// Return the Icecast admin password saved in 'adminPwPath'. If it
// does not exist, generate a random one and save it for subsequent
// invocations.
func getAdminPassword(adminPwPath string) (string, error) {
	data, err := ioutil.ReadFile(adminPwPath)
	if err == nil {
		return strings.TrimSpace(string(data)), nil
	}

	if !os.IsNotExist(err) {
		return "", err
	}
	pw := autoradio.GeneratePassword()
	if err := ioutil.WriteFile(adminPwPath, append([]byte(pw), '\n'), 0600); err != nil {
		return "", err
	}
	return pw, nil
}