dynamic bin directory, and dynamic variables to postinstall.sh
This commit is contained in:
		@@ -40,6 +40,8 @@ type ConfigTOML struct {
 | 
			
		||||
		AutoDeleteCacheDir bool   `toml:"dayToDeleteCacheDir"`
 | 
			
		||||
		DaysToDelete       int    `toml:"daysToDelete"`
 | 
			
		||||
		DataDir            string `toml:"dataDir"`
 | 
			
		||||
		BinDir             string `toml:"binDir"`
 | 
			
		||||
		LastDataDir        string `toml:"lastDataDir"`
 | 
			
		||||
	} `toml:"Config"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -103,26 +105,21 @@ func main() {
 | 
			
		||||
	if os.IsNotExist(err) {
 | 
			
		||||
		fmt.Println("can't find config.toml, generating a default one")
 | 
			
		||||
 | 
			
		||||
		cfg.Config.HttpPort = 9123
 | 
			
		||||
		cfg.Config.AutoDeleteCacheDir = false
 | 
			
		||||
		cfg.Config.CacheDir = "/var/cache/packets"
 | 
			
		||||
		cfg.Config.DataDir = "/opt/packets"
 | 
			
		||||
		cfg.Config.DaysToDelete = -1
 | 
			
		||||
 | 
			
		||||
		os.MkdirAll(PacketsDir, 0644)
 | 
			
		||||
		file, err := os.Create(filepath.Join(PacketsDir, "config.toml"))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
 | 
			
		||||
			log.Fatal(err)
 | 
			
		||||
		}
 | 
			
		||||
		defer file.Close()
 | 
			
		||||
 | 
			
		||||
		cfg := internal.DefaultConfigTOML()
 | 
			
		||||
 | 
			
		||||
		encoder := toml.NewEncoder(file)
 | 
			
		||||
 | 
			
		||||
		if err := encoder.Encode(cfg); err != nil {
 | 
			
		||||
 | 
			
		||||
			log.Fatal(err)
 | 
			
		||||
		}
 | 
			
		||||
		file.WriteString("\n\n# BE CAREFULL CHANGING BIN_DIR, BECAUSE THE BINARIES DON'T MOVE AUTOMATICALLY\n#NEVER CHANGE lastDataDir")
 | 
			
		||||
		fmt.Println("Operation Sucess!")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -483,6 +480,11 @@ func Install(packagepath string, serial uint) error {
 | 
			
		||||
 | 
			
		||||
	fmt.Println("\nMaking post install configuration...")
 | 
			
		||||
	cmd := exec.Command(script)
 | 
			
		||||
 | 
			
		||||
	cmd.Env = append(os.Environ(),
 | 
			
		||||
		fmt.Sprintf("PACKETS_PACKAGE_DIR=%s", cfg.Config.DataDir),
 | 
			
		||||
		fmt.Sprintf("PACKETS_PACKAGE_BIN_DIR=%s", cfg.Config.BinDir),
 | 
			
		||||
	)
 | 
			
		||||
	cmd.Stdout = os.Stdout
 | 
			
		||||
	cmd.Stderr = os.Stderr
 | 
			
		||||
 | 
			
		||||
@@ -1184,7 +1186,7 @@ func Upgrade(packagepath string, og_realname string, serial uint) error {
 | 
			
		||||
 | 
			
		||||
	cmd.Env = append(os.Environ(),
 | 
			
		||||
		fmt.Sprintf("PACKETS_PACKAGE_DIR=%s", cfg.Config.DataDir),
 | 
			
		||||
	// TODO 	"ADD_TO_PATH=,
 | 
			
		||||
		fmt.Sprintf("PACKETS_PACKAGE_BIN_DIR=%s", cfg.Config.BinDir),
 | 
			
		||||
	)
 | 
			
		||||
	cmd.Stdout = os.Stdout
 | 
			
		||||
	cmd.Stderr = os.Stderr
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,18 @@ import (
 | 
			
		||||
	"github.com/ulikunitz/xz"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type ConfigTOML struct {
 | 
			
		||||
	Config struct {
 | 
			
		||||
		HttpPort           int    `toml:"httpPort"`
 | 
			
		||||
		CacheDir           string `toml:"cacheDir"`
 | 
			
		||||
		AutoDeleteCacheDir bool   `toml:"dayToDeleteCacheDir"`
 | 
			
		||||
		DaysToDelete       int    `toml:"daysToDelete"`
 | 
			
		||||
		DataDir            string `toml:"dataDir"`
 | 
			
		||||
		BinDir             string `toml:"binDir"`
 | 
			
		||||
		LastDataDir        string `toml:"lastDataDir"`
 | 
			
		||||
	} `toml:"Config"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Manifest struct {
 | 
			
		||||
	Name         string   `json:"name"`
 | 
			
		||||
	Version      string   `json:"version"`
 | 
			
		||||
@@ -68,3 +80,32 @@ func ManifestReadXZ(path string) (*Manifest, error) {
 | 
			
		||||
	}
 | 
			
		||||
	return nil, fmt.Errorf("can't find manifest.json")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DefaultConfigTOML() *ConfigTOML {
 | 
			
		||||
 | 
			
		||||
	var cfg ConfigTOML
 | 
			
		||||
	out, _ := exec.Command("uname", "-s").Output()
 | 
			
		||||
 | 
			
		||||
	if uname := strings.TrimSpace(string(out)); uname == "OpenTTY" {
 | 
			
		||||
		cfg.Config.HttpPort = 9123
 | 
			
		||||
		cfg.Config.AutoDeleteCacheDir = false
 | 
			
		||||
		cfg.Config.CacheDir = "/mnt/... " // TODO
 | 
			
		||||
		cfg.Config.DataDir = "/mnt/... "  // TODO
 | 
			
		||||
		cfg.Config.DaysToDelete = -1
 | 
			
		||||
		cfg.Config.BinDir = "/home/...."     // TODO
 | 
			
		||||
		cfg.Config.LastDataDir = "/mnt/... " // TODO
 | 
			
		||||
		return &cfg
 | 
			
		||||
	} else {
 | 
			
		||||
 | 
			
		||||
		cfg.Config.HttpPort = 9123
 | 
			
		||||
		cfg.Config.AutoDeleteCacheDir = false
 | 
			
		||||
		cfg.Config.CacheDir = "/var/cache/packets"
 | 
			
		||||
		cfg.Config.DataDir = "/opt/packets"
 | 
			
		||||
		cfg.Config.DaysToDelete = -1
 | 
			
		||||
		cfg.Config.BinDir = "/usr/bin"
 | 
			
		||||
		cfg.Config.LastDataDir = "/opt/packets"
 | 
			
		||||
 | 
			
		||||
		return &cfg
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user