(v0.1.1) Automated packaging of release by Packagr
This commit is contained in:
+71
@@ -0,0 +1,71 @@
|
||||
package pcidb
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
|
||||
homedir "github.com/mitchellh/go-homedir"
|
||||
)
|
||||
|
||||
// Concrete merged set of configuration switches that get passed to pcidb
|
||||
// internal functions
|
||||
type context struct {
|
||||
chroot string
|
||||
cacheOnly bool
|
||||
cachePath string
|
||||
disableNetworkFetch bool
|
||||
searchPaths []string
|
||||
}
|
||||
|
||||
func contextFromOptions(merged *WithOption) *context {
|
||||
ctx := &context{
|
||||
chroot: *merged.Chroot,
|
||||
cacheOnly: *merged.CacheOnly,
|
||||
cachePath: getCachePath(),
|
||||
disableNetworkFetch: *merged.DisableNetworkFetch,
|
||||
searchPaths: make([]string, 0),
|
||||
}
|
||||
ctx.setSearchPaths()
|
||||
return ctx
|
||||
}
|
||||
|
||||
func getCachePath() string {
|
||||
hdir, err := homedir.Dir()
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed getting homedir.Dir(): %v", err)
|
||||
return ""
|
||||
}
|
||||
fp, err := homedir.Expand(filepath.Join(hdir, ".cache", "pci.ids"))
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Failed expanding local cache path: %v", err)
|
||||
return ""
|
||||
}
|
||||
return fp
|
||||
}
|
||||
|
||||
// Depending on the operating system, sets the context's searchPaths to a set
|
||||
// of local filepaths to search for a pci.ids database file
|
||||
func (ctx *context) setSearchPaths() {
|
||||
// A set of filepaths we will first try to search for the pci-ids DB file
|
||||
// on the local machine. If we fail to find one, we'll try pulling the
|
||||
// latest pci-ids file from the network
|
||||
ctx.searchPaths = append(ctx.searchPaths, ctx.cachePath)
|
||||
if ctx.cacheOnly {
|
||||
return
|
||||
}
|
||||
|
||||
rootPath := ctx.chroot
|
||||
|
||||
if runtime.GOOS != "windows" {
|
||||
ctx.searchPaths = append(
|
||||
ctx.searchPaths,
|
||||
filepath.Join(rootPath, "usr", "share", "hwdata", "pci.ids"),
|
||||
)
|
||||
ctx.searchPaths = append(
|
||||
ctx.searchPaths,
|
||||
filepath.Join(rootPath, "usr", "share", "misc", "pci.ids"),
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user