added flag and funcions to set default paths in the config file

This commit is contained in:
2021-05-09 04:27:32 +04:00
parent b36799f650
commit a1fd29ec45
3 changed files with 69 additions and 10 deletions

View File

@@ -3,6 +3,7 @@ package cmd
import (
"fmt"
"git.sr.ht/~akilan1999/p2p-rendering-computation/client"
"git.sr.ht/~akilan1999/p2p-rendering-computation/config"
"git.sr.ht/~akilan1999/p2p-rendering-computation/p2p"
"git.sr.ht/~akilan1999/p2p-rendering-computation/server"
"github.com/urfave/cli/v2"
@@ -17,7 +18,6 @@ var CliAction = func(ctx *cli.Context) error {
//Listing servers and also updates IP tables (Default 3 hops)
if UpdateServerList {
err := client.UpdateIpTableListClient()
if err != nil {
fmt.Print(err)
@@ -67,6 +67,14 @@ var CliAction = func(ctx *cli.Context) error {
client.PrettyPrint(specs)
}
//Sets default paths to the config file
if SetDefaultConfig {
err := config.SetDefaults()
if err != nil {
fmt.Print(err)
}
}
return nil
}

View File

@@ -15,6 +15,7 @@ var (
GPU bool
UpdateServerList bool
ServerList bool
SetDefaultConfig bool
)
var AppConfigFlags = []cli.Flag{
@@ -74,4 +75,10 @@ var AppConfigFlags = []cli.Flag{
EnvVars: []string{"SPECS"},
Destination: &Specs,
},
&cli.BoolFlag{
Name: "SetDefaultConfig",
Usage: "Sets a default configuration file",
EnvVars: []string{"SET_DEFAULT_CONFIG"},
Destination: &SetDefaultConfig,
},
}

View File

@@ -1,22 +1,21 @@
package config
import(
import (
"github.com/spf13/viper"
"os"
)
var (
defaultPath string
defaults = map[string]interface{}{
"IPTable": "/etc/p2p-rendering/ip_table.json",
"DockerFile": "/home/akilan/Documents/p2prendering/p2p-redering-computation/server/docker/containers/docker-ubuntu-sshd/",
"SpeedTestFile":"/etc/p2p-rendering/50.bin",
}
"IPTable": "/etc/p2p-rendering/ip_table.json",
"DockerFile": "/home/akilan/Documents/p2prendering/p2p-redering-computation/server/docker/containers/docker-ubuntu-sshd/",
"SpeedTestFile":"/etc/p2p-rendering/50.bin",
}
configName = "config.json"
configType = "json"
configFile = "config.json"
configPaths = []string {
"/etc/p2p-rendering",
".",
}
configPaths []string
)
type Config struct {
@@ -25,6 +24,51 @@ type Config struct {
SpeedTestFile string
}
// Exists reports whether the named file or directory exists.
func fileExists(name string) bool {
if _, err := os.Stat(name); err != nil {
if os.IsNotExist(err) {
return false
}
}
return true
}
// SetDefaults This function to be called only during a
// make install
func SetDefaults() error {
//Getting Current Directory
curDir, err := os.Getwd()
if err != nil {
return err
}
//Setting current directory to default path
defaultPath = curDir + "/"
//Setting default paths for the config file
defaults["IPTable"] = defaultPath + "p2p/ip_table.json"
defaults["DockerFile"] = defaultPath + "server/docker/containers/docker-ubuntu-sshd/"
defaults["SpeedTestFile"] = defaultPath + "p2p/50.bin"
//Paths to search for config file
configPaths = append(configPaths, defaultPath)
if fileExists(defaultPath + "config.json") {
err := os.Remove(defaultPath + "config.json")
if err != nil {
return err
}
}
//Calling configuration file
_, err = ConfigInit()
if err != nil {
return err
}
return nil
}
func ConfigInit()(*Config,error) {
//Sets default configuration to viper
for k,v := range defaults {