Skip to content

Commit 3dbc08c

Browse files
authored
Merge pull request #1592 from afbjorklund/man-prefix
Remove the output directory from the manpages
2 parents e7aa4ff + 703d69f commit 3dbc08c

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ _output/share/lima/lima-guestagent.Linux-riscv64:
116116
.PHONY: manpages
117117
manpages: _output/bin/limactl$(exe)
118118
@mkdir -p _output/share/man/man1
119-
$< generate-man _output/share/man/man1
119+
$< generate-man _output/share/man/man1 \
120+
--output _output --prefix $(PREFIX)
120121

121122
.PHONY: diagrams
122123
diagrams: docs/lima-sequence-diagram.png

cmd/limactl/genman.go

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package main
22

33
import (
4+
"bytes"
5+
"io/fs"
46
"os"
57
"path/filepath"
68

@@ -18,10 +20,28 @@ func newGenManCommand() *cobra.Command {
1820
RunE: genmanAction,
1921
Hidden: true,
2022
}
23+
genmanCommand.Flags().String("output", "", "Output directory")
24+
genmanCommand.Flags().String("prefix", "", "Install prefix")
2125
return genmanCommand
2226
}
2327

2428
func genmanAction(cmd *cobra.Command, args []string) error {
29+
output, err := cmd.Flags().GetString("output")
30+
if err != nil {
31+
return err
32+
}
33+
output, err = filepath.Abs(output)
34+
if err != nil {
35+
return err
36+
}
37+
prefix, err := cmd.Flags().GetString("prefix")
38+
if err != nil {
39+
return err
40+
}
41+
homeDir, err := os.UserHomeDir()
42+
if err != nil {
43+
return err
44+
}
2545
dir := args[0]
2646
logrus.Infof("Generating man %q", dir)
2747
// lima(1)
@@ -49,5 +69,38 @@ and $LIMA_WORKDIR.
4969
Title: "LIMACTL",
5070
Section: "1",
5171
}
52-
return doc.GenManTree(cmd.Root(), header, dir)
72+
if err := doc.GenManTree(cmd.Root(), header, dir); err != nil {
73+
return err
74+
}
75+
if output != "" && prefix != "" {
76+
replaceAll(dir, output, prefix)
77+
}
78+
replaceAll(dir, homeDir, "~")
79+
return nil
80+
}
81+
82+
// replaceAll replaces all occurrences of new with old, for all files in dir
83+
func replaceAll(dir string, old, new string) error {
84+
logrus.Infof("Replacing %q with %q", old, new)
85+
return filepath.Walk(dir, func(path string, info fs.FileInfo, err error) error {
86+
if err != nil {
87+
return err
88+
}
89+
if path == dir {
90+
return nil
91+
}
92+
if info.IsDir() {
93+
return filepath.SkipDir
94+
}
95+
in, err := os.ReadFile(path)
96+
if err != nil {
97+
return err
98+
}
99+
out := bytes.Replace(in, []byte(old), []byte(new), -1)
100+
err = os.WriteFile(path, out, 0644)
101+
if err != nil {
102+
return err
103+
}
104+
return nil
105+
})
53106
}

0 commit comments

Comments
 (0)