Set up data paths within the snaps

This commit is contained in:
Marc Di Luzio 2020-06-25 22:25:42 +01:00
parent 58f9d8baf2
commit 8aeb23e40b
2 changed files with 25 additions and 10 deletions

View file

@ -33,13 +33,13 @@ func printUsage() {
} }
var home = os.Getenv("HOME") var home = os.Getenv("HOME")
var defaultData = path.Join(home, ".local/share/rove.json") var defaultDataPath = path.Join(home, ".local/share/")
const gRPCport = 9090 const gRPCport = 9090
// General usage // General usage
var host = flag.String("host", "", "path to game host server") var host = flag.String("host", "", "path to game host server")
var data = flag.String("data", defaultData, "data file for storage") var data = flag.String("data", defaultDataPath, "data location for storage (or $USER_DATA if set)")
// For register command // For register command
var name = flag.String("name", "", "used with status command for the account name") var name = flag.String("name", "", "used with status command for the account name")
@ -70,23 +70,31 @@ func InnerMain(command string) error {
Accounts: make(map[string]string), Accounts: make(map[string]string),
} }
// Allow overriding the data path
var datapath = *data
var override = os.Getenv("USER_DATA")
if len(override) > 0 {
datapath = override
}
datapath = path.Join(datapath, "rove.json")
// Create the path if needed // Create the path if needed
path := filepath.Dir(*data) path := filepath.Dir(datapath)
_, err := os.Stat(path) _, err := os.Stat(path)
if os.IsNotExist(err) { if os.IsNotExist(err) {
os.MkdirAll(path, os.ModePerm) os.MkdirAll(path, os.ModePerm)
} else { } else {
// Read the file // Read the file
_, err = os.Stat(*data) _, err = os.Stat(datapath)
if !os.IsNotExist(err) { if !os.IsNotExist(err) {
if b, err := ioutil.ReadFile(*data); err != nil { if b, err := ioutil.ReadFile(datapath); err != nil {
return fmt.Errorf("failed to read file %s error: %s", *data, err) return fmt.Errorf("failed to read file %s error: %s", datapath, err)
} else if len(b) == 0 { } else if len(b) == 0 {
return fmt.Errorf("file %s was empty, assumin fresh data", *data) return fmt.Errorf("file %s was empty, assumin fresh data", datapath)
} else if err := json.Unmarshal(b, &config); err != nil { } else if err := json.Unmarshal(b, &config); err != nil {
return fmt.Errorf("failed to unmarshal file %s error: %s", *data, err) return fmt.Errorf("failed to unmarshal file %s error: %s", datapath, err)
} }
} }
@ -219,8 +227,8 @@ func InnerMain(command string) error {
// Save out the persistent file // Save out the persistent file
if b, err := json.MarshalIndent(config, "", "\t"); err != nil { if b, err := json.MarshalIndent(config, "", "\t"); err != nil {
return fmt.Errorf("failed to marshal data error: %s", err) return fmt.Errorf("failed to marshal data error: %s", err)
} else if err := ioutil.WriteFile(*data, b, os.ModePerm); err != nil { } else if err := ioutil.WriteFile(datapath, b, os.ModePerm); err != nil {
return fmt.Errorf("failed to save file %s error: %s", *data, err) return fmt.Errorf("failed to save file %s error: %s", datapath, err)
} }
return nil return nil

View file

@ -16,6 +16,8 @@ apps:
command: bin/rove command: bin/rove
plugs: plugs:
- network - network
environment:
USER_DATA: $SNAP_USER_DATA
rove-server: rove-server:
command: bin/rove-server command: bin/rove-server
plugs: plugs:
@ -23,16 +25,21 @@ apps:
- network-bind - network-bind
environment: environment:
WORDS_FILE : "$SNAP/data/words_alpha.txt" WORDS_FILE : "$SNAP/data/words_alpha.txt"
DATA_PATH : $SNAP_USER_DATA
rove-accountant: rove-accountant:
command: bin/rove-accountant command: bin/rove-accountant
plugs: plugs:
- network - network
- network-bind - network-bind
environment:
DATA_PATH : $SNAP_USER_DATA
rove-rest-server: rove-rest-server:
command: bin/rove-reverse-proxy command: bin/rove-reverse-proxy
plugs: plugs:
- network - network
- network-bind - network-bind
environment:
DATA_PATH : $SNAP_USER_DATA
parts: parts:
go-rove: go-rove: