Merge pull request #85 from mslacken/bash_completion
This looks and works great. Thanks!
This commit is contained in:
15
Makefile
15
Makefile
@@ -19,7 +19,7 @@ export GOPROXY
|
||||
# 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 man_page
|
||||
|
||||
# set the go tools into the tools bin.
|
||||
setup_tools: $(GO_TOOLS_BIN) $(GOLANGCI_LINT)
|
||||
@@ -57,6 +57,11 @@ 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/
|
||||
install -d -m 0755 $(DESTDIR)/usr/share/man/man1
|
||||
./bash_completion $(DESTDIR)/etc/bash_completion.d/warewulf
|
||||
./man_page $(DESTDIR)/usr/share/man/man1
|
||||
gzip $(DESTDIR)/usr/share/man/man1/wwctl*1
|
||||
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/
|
||||
@@ -89,6 +94,12 @@ 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
|
||||
|
||||
man_page:
|
||||
cd cmd/man_page; go build -mod vendor -tags "$(WW_BUILD_GO_BUILD_TAGS)" -o ../../man_page
|
||||
|
||||
dist: vendor
|
||||
rm -rf _dist/warewulf-$(VERSION)
|
||||
mkdir -p _dist/warewulf-$(VERSION)
|
||||
@@ -102,6 +113,8 @@ clean:
|
||||
rm -f wwctl
|
||||
rm -rf _dist
|
||||
rm -f warewulf-$(VERSION).tar.gz
|
||||
rm -f bash_completion
|
||||
rm -f man_page
|
||||
|
||||
install: files
|
||||
|
||||
|
||||
23
cmd/bash_completion/bash_completion.go
Normal file
23
cmd/bash_completion/bash_completion.go
Normal 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
|
||||
}
|
||||
}
|
||||
16
cmd/man_page/man_page.go
Normal file
16
cmd/man_page/man_page.go
Normal file
@@ -0,0 +1,16 @@
|
||||
// usage: ./bash_completion <FILE>
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"github.com/hpcng/warewulf/internal/app/wwctl"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
if err := wwctl.GenManTree(os.Args[1]); err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -9,3 +9,4 @@ func main() {
|
||||
|
||||
root.Execute()
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
@@ -12,6 +13,7 @@ import (
|
||||
"github.com/hpcng/warewulf/internal/app/wwctl/server"
|
||||
"github.com/hpcng/warewulf/internal/pkg/wwlog"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/cobra/doc"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -59,3 +61,16 @@ func rootPersistentPreRunE(cmd *cobra.Command, args []string) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GenBashCompletionFile
|
||||
func GenBashCompletion(w io.Writer) error {
|
||||
return rootCmd.GenBashCompletion(w)
|
||||
}
|
||||
|
||||
func GenManTree(fileName string) error{
|
||||
header := &doc.GenManHeader{
|
||||
Title: "MINE",
|
||||
Section: "1",
|
||||
}
|
||||
return doc.GenManTree(rootCmd,header,fileName)
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user