completed the config port
This commit is contained in:
		
							parent
							
								
									51b5d63eec
								
							
						
					
					
						commit
						237155552a
					
				
							
								
								
									
										22
									
								
								commander.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								commander.go
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										62
									
								
								config.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								config.go
									
									
									
									
									
										Normal file
									
								
							@ -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)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.mod
									
									
									
									
									
								
							@ -1,3 +1,5 @@
 | 
			
		||||
module gostations
 | 
			
		||||
module github.com/gmgauthier/gostations
 | 
			
		||||
 | 
			
		||||
go 1.16
 | 
			
		||||
 | 
			
		||||
require github.com/alyu/configparser v0.0.0-20191103060215-744e9a66e7bc
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.sum
									
									
									
									
									
								
							@ -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=
 | 
			
		||||
							
								
								
									
										5
									
								
								radiostations.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								radiostations.ini
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
[DEFAULT]
 | 
			
		||||
radio_browser.api=all.api.radio-browser.info
 | 
			
		||||
player.command=mpv
 | 
			
		||||
player.options=--no-video
 | 
			
		||||
menu_items.max=9999
 | 
			
		||||
							
								
								
									
										12
									
								
								stations.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								stations.go
									
									
									
									
									
										Normal file
									
								
							@ -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
	
	Block a user