74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
// Copyright 2017 Debpkg authors. All rights reserved.
|
|
// Use of this source code is governed by the MIT
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package debpkg
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
"text/template"
|
|
)
|
|
|
|
var vars map[string]string
|
|
|
|
func init() {
|
|
vars = make(map[string]string)
|
|
vars["INSTALLPREFIX"] = DefaultInstallPrefix
|
|
vars["BINDIR"] = DefaultBinDir
|
|
vars["SBINDIR"] = DefaultSbinDir
|
|
vars["SYSCONFDIR"] = DefaultSysConfDir
|
|
vars["DATAROOTDIR"] = DefaultDataRootDir
|
|
}
|
|
|
|
// SetVar sets a variable for use with config file
|
|
func SetVar(key, val string) {
|
|
vars[key] = val
|
|
}
|
|
|
|
// GetVar gets a variable
|
|
func GetVar(v string) string {
|
|
if val, ok := vars[v]; ok {
|
|
return val
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// GetVarWithPrefix gets a variable and appends INSTALLPREFIX when the value doesn't start with "/"
|
|
func GetVarWithPrefix(v string) string {
|
|
val := GetVar(v)
|
|
if val == "" {
|
|
return val
|
|
}
|
|
if strings.HasPrefix(val, debianPathSeparator) {
|
|
return val
|
|
}
|
|
return vars["INSTALLPREFIX"] + debianPathSeparator + val
|
|
}
|
|
|
|
// ExpandVar expands a string with variables
|
|
func ExpandVar(msg string) (string, error) {
|
|
tmpl, err := template.New("msg").Parse(msg)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
env := struct {
|
|
INSTALLPREFIX string
|
|
BINDIR string
|
|
SBINDIR string
|
|
DATAROOTDIR string
|
|
SYSCONFDIR string
|
|
}{
|
|
INSTALLPREFIX: vars["INSTALLPREFIX"],
|
|
BINDIR: GetVarWithPrefix("BINDIR"),
|
|
SBINDIR: GetVarWithPrefix("SBINDIR"),
|
|
DATAROOTDIR: GetVarWithPrefix("DATAROOTDIR"),
|
|
SYSCONFDIR: GetVarWithPrefix("SYSCONFDIR"),
|
|
}
|
|
buf := bytes.NewBuffer(nil)
|
|
if err := tmpl.Execute(buf, env); err != nil {
|
|
return "", err
|
|
}
|
|
return buf.String(), nil
|
|
}
|