added binary to create bash completion

also do not bail out, when configs can't be read, still the
This commit is contained in:
Christian Goll
2021-07-16 14:32:39 +02:00
parent 75c0e66f30
commit b27951b59f
6 changed files with 42 additions and 4 deletions

View File

@@ -15,7 +15,7 @@ GOLANGCI_LINT_VERSION := v1.31.0
# built tags needed for wwbuild binary
WW_BUILD_GO_BUILD_TAGS := containers_image_openpgp containers_image_ostree
all: setup_tools vendor wwctl wwclient
all: setup_tools vendor wwctl wwclient bash_completion
# set the go tools into the tools bin.
setup_tools: $(GO_TOOLS_BIN) $(GOLANGCI_LINT)
@@ -53,6 +53,8 @@ files: all
install -d -m 0755 $(DESTDIR)/etc/warewulf/
install -d -m 0755 $(DESTDIR)/etc/warewulf/ipxe
install -d -m 0755 $(DESTDIR)/var/lib/tftpboot/warewulf/ipxe/
install -d -m 0755 $(DESTDIR)/etc/bash_completion.d/
./bash_completion $(DESTDIR)/etc/bash_completion.d/warewulf
test -f $(DESTDIR)/etc/warewulf/warewulf.conf || install -m 644 etc/warewulf.conf $(DESTDIR)/etc/warewulf/
test -f $(DESTDIR)/etc/warewulf/hosts.tmpl || install -m 644 etc/hosts.tmpl $(DESTDIR)/etc/warewulf/
cp -r etc/dhcp $(DESTDIR)/etc/warewulf/
@@ -84,6 +86,9 @@ wwctl:
wwclient:
cd cmd/wwclient; CGO_ENABLED=0 GOOS=linux go build -mod vendor -a -ldflags '-extldflags -static' -o ../../wwclient
bash_completion:
cd cmd/bash_completion; go build -mod vendor -tags "$(WW_BUILD_GO_BUILD_TAGS)" -o ../../bash_completion
dist: vendor
rm -rf _dist/warewulf-$(VERSION)
mkdir -p _dist/warewulf-$(VERSION)

View File

@@ -0,0 +1,23 @@
// usage: ./bash_completion <FILE>
package main
import (
"fmt"
"os"
"github.com/hpcng/warewulf/internal/app/wwctl"
)
func main() {
fh, err := os.Create(os.Args[1])
if err != nil {
fmt.Println(err)
return
}
defer fh.Close()
if err := wwctl.GenBashCompletion(fh); err != nil {
fmt.Println(err)
return
}
}

View File

@@ -9,3 +9,4 @@ func main() {
root.Execute()
}

View File

@@ -1,6 +1,7 @@
package wwctl
import (
"io"
"github.com/hpcng/warewulf/internal/app/wwctl/configure"
"github.com/hpcng/warewulf/internal/app/wwctl/container"
"github.com/hpcng/warewulf/internal/app/wwctl/kernel"
@@ -59,3 +60,10 @@ func rootPersistentPreRunE(cmd *cobra.Command, args []string) error {
}
return nil
}
// GenBashCompletionFile
func GenBashCompletion(w io.Writer) error {
return rootCmd.GenBashCompletion(w)
}

View File

@@ -101,7 +101,8 @@ func init() {
c, err := os.OpenFile(ConfigFile, os.O_RDWR|os.O_CREATE, 0644)
if err != nil {
wwlog.Printf(wwlog.ERROR, "Could not create new configuration file: %s\n", err)
os.Exit(1)
// just return silently, as init is also called for bash_completion
return
}
fmt.Fprintf(c, "nodeprofiles:\n")

View File

@@ -1,7 +1,6 @@
package warewulfconf
import (
"os"
"github.com/hpcng/warewulf/internal/pkg/util"
"github.com/hpcng/warewulf/internal/pkg/wwlog"
@@ -52,6 +51,7 @@ func init() {
//TODO: Check to make sure nodes.conf is found
if util.IsFile(ConfigFile) == false {
wwlog.Printf(wwlog.ERROR, "Configuration file not found: %s\n", ConfigFile)
os.Exit(1)
// fail silently as this also called by bash_completion
return
}
}