diff --git a/Makefile b/Makefile index fd8f10ad7..41fabbfcc 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,8 @@ ESCPKG := github.com\/lightningnetwork\/lnd MOBILE_PKG := $(PKG)/mobile TOOLS_DIR := tools +PREFIX ?= /usr/local + BTCD_PKG := github.com/btcsuite/btcd GOACC_PKG := github.com/ory/go-acc GOIMPORTS_PKG := github.com/rinchsan/gosimports/cmd/gosimports @@ -122,12 +124,20 @@ build-itest-race: @$(call print, "Building itest binary for ${backend} backend.") CGO_ENABLED=0 $(GOTEST) -v ./itest -tags="$(DEV_TAGS) $(RPC_TAGS) integration $(backend)" -c -o itest/itest.test$(EXEC_SUFFIX) -#? install: Build and install lnd and lncli binaries, place them in $GOPATH/bin -install: +#? install-binaries: Build and install lnd and lncli binaries, place them in $GOPATH/bin +install-binaries: @$(call print, "Installing lnd and lncli.") $(GOINSTALL) -tags="${tags}" -ldflags="$(RELEASE_LDFLAGS)" $(PKG)/cmd/lnd $(GOINSTALL) -tags="${tags}" -ldflags="$(RELEASE_LDFLAGS)" $(PKG)/cmd/lncli +#? manpages: generate and install man pages +manpages: + @$(call print, "Generating man pages lncli.1 and lnd.1.") + ./scripts/gen_man_pages.sh $(DESTDIR) $(PREFIX) + +#? install: Build and install lnd and lncli binaries, place them in $GOPATH/bin, generate and install man pages +install: install-binaries manpages + #? release-install: Build and install lnd and lncli release binaries, place them in $GOPATH/bin release-install: @$(call print, "Installing release lnd and lncli.") diff --git a/cmd/lncli/commands.go b/cmd/lncli/commands.go index 5190cd69f..8f397364f 100644 --- a/cmd/lncli/commands.go +++ b/cmd/lncli/commands.go @@ -18,6 +18,8 @@ import ( "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/wire" + "github.com/jessevdk/go-flags" + "github.com/lightningnetwork/lnd" "github.com/lightningnetwork/lnd/lnrpc" "github.com/lightningnetwork/lnd/routing" "github.com/lightningnetwork/lnd/routing/route" @@ -1410,6 +1412,41 @@ func channelBalance(ctx *cli.Context) error { return nil } +var generateManPageCommand = cli.Command{ + Name: "generatemanpage", + Usage: "Generates a man page for lncli and lnd as " + + "lncli.1 and lnd.1 respectively.", + Hidden: true, + Action: actionDecorator(generateManPage), +} + +func generateManPage(ctx *cli.Context) error { + // Generate the man pages for lncli as lncli.1. + manpages, err := ctx.App.ToMan() + if err != nil { + return err + } + err = os.WriteFile("lncli.1", []byte(manpages), 0644) + if err != nil { + return err + } + + // Generate the man pages for lnd as lnd.1. + config := lnd.DefaultConfig() + fileParser := flags.NewParser(&config, flags.Default) + fileParser.Name = "lnd" + + var buf bytes.Buffer + fileParser.WriteManPage(&buf) + + err = os.WriteFile("lnd.1", buf.Bytes(), 0644) + if err != nil { + return err + } + + return nil +} + var getInfoCommand = cli.Command{ Name: "getinfo", Usage: "Returns basic information related to the active daemon.", diff --git a/cmd/lncli/main.go b/cmd/lncli/main.go index e956dbf91..95f82b234 100644 --- a/cmd/lncli/main.go +++ b/cmd/lncli/main.go @@ -508,6 +508,7 @@ func main() { fishCompletionCommand, listAliasesCommand, estimateRouteFeeCommand, + generateManPageCommand, } // Add any extra commands determined by build flags.