parent
51b5d63eec
commit
237155552a
6 changed files with 106 additions and 1 deletions
@ -0,0 +1,22 @@ |
||||
package main |
||||
|
||||
import ( |
||||
"os/exec" |
||||
"strings" |
||||
) |
||||
|
||||
func isInstalled(name string) bool { |
||||
cmd := exec.Command("/bin/sh", "-c", "command -v " + name) |
||||
if err := cmd.Run(); err != nil { |
||||
return false |
||||
} |
||||
return true |
||||
} |
||||
|
||||
func execute(cmdstr string) (string, error) { |
||||
cmdargs := strings.Split(cmdstr, " ") // string arrayified
|
||||
cmd := cmdargs[0] // command
|
||||
cmdargs = append(cmdargs[:0], cmdargs[1:]...) // argument array sans cmd
|
||||
out, err := exec.Command(cmd, cmdargs...).CombinedOutput() |
||||
return string(out[:]), err |
||||
} |
@ -0,0 +1,62 @@ |
||||
package main |
||||
|
||||
import ( |
||||
"errors" |
||||
"fmt" |
||||
"log" |
||||
"os" |
||||
"strconv" |
||||
|
||||
"github.com/alyu/configparser" |
||||
) |
||||
|
||||
func str2int(strnum string) int { |
||||
i, err := strconv.Atoi(strnum) |
||||
if err != nil { |
||||
fmt.Println(err) |
||||
os.Exit(2) |
||||
} |
||||
return i |
||||
} |
||||
|
||||
func Config(option string) (string, error) { |
||||
configparser.Delimiter = "=" |
||||
configFile := "radiostations.ini" |
||||
runtimeSection := "DEFAULT" |
||||
|
||||
config, err := configparser.Read(configFile) |
||||
if err != nil { |
||||
log.Fatal(err) |
||||
} |
||||
|
||||
section, err := config.Section(runtimeSection) |
||||
if err != nil { |
||||
log.Fatal(err) |
||||
} |
||||
|
||||
optval := section.Options()[option] |
||||
if optval == "" { |
||||
return "", errors.New("no value for option '%s'") |
||||
} |
||||
return optval, nil |
||||
} |
||||
|
||||
func api() string { |
||||
url, _ := Config("radio_browser.api") |
||||
return url |
||||
} |
||||
|
||||
func player() string { |
||||
player, _ := Config("player.command") |
||||
return player |
||||
} |
||||
|
||||
func options() string { |
||||
options, _ := Config("player.options") |
||||
return options |
||||
} |
||||
|
||||
func maxitems() int { |
||||
items, _ := Config("menu_items.max") |
||||
return str2int(items) |
||||
} |
@ -1,3 +1,5 @@ |
||||
module gostations |
||||
module github.com/gmgauthier/gostations |
||||
|
||||
go 1.16 |
||||
|
||||
require github.com/alyu/configparser v0.0.0-20191103060215-744e9a66e7bc |
||||
|
@ -0,0 +1,2 @@ |
||||
github.com/alyu/configparser v0.0.0-20191103060215-744e9a66e7bc h1:eN2FUvn4J1A31pICABioDYukoh1Tmlei6L3ImZUin/I= |
||||
github.com/alyu/configparser v0.0.0-20191103060215-744e9a66e7bc/go.mod h1:BYq/NZTroWuzkvsTPJgRBqSHGxKMHCz06gtlfY/W5RU= |
@ -0,0 +1,5 @@ |
||||
[DEFAULT] |
||||
radio_browser.api=all.api.radio-browser.info |
||||
player.command=mpv |
||||
player.options=--no-video |
||||
menu_items.max=9999 |
@ -0,0 +1,12 @@ |
||||
package main |
||||
|
||||
import "fmt" |
||||
|
||||
func main(){ |
||||
fmt.Println(api()) |
||||
fmt.Println(player()) |
||||
fmt.Println(options()) |
||||
fmt.Println(maxitems()) |
||||
|
||||
|
||||
} |
Loading…
Reference in new issue