Make FileContentFlag a struct to keep track of the path.

This commit is contained in:
Alec Thomas
2018-09-22 17:09:28 +10:00
parent 1048bd0448
commit 0f67a38060
2 changed files with 8 additions and 3 deletions
+6 -2
View File
@@ -465,7 +465,10 @@ func JoinEscaped(s []string, sep rune) string {
}
// FileContentFlag is a flag value that loads a file's contents into its value.
type FileContentFlag []byte
type FileContentFlag struct {
Path string
Data []byte
}
func (f *FileContentFlag) Decode(ctx *DecodeContext) error { // nolint: golint
filename := ctx.Scan.PopValue("filename")
@@ -473,6 +476,7 @@ func (f *FileContentFlag) Decode(ctx *DecodeContext) error { // nolint: golint
if err != nil {
return fmt.Errorf("failed to open %q: %s", filename, err)
}
*f = FileContentFlag(data)
f.Path = filename
f.Data = data
return nil
}
+2 -1
View File
@@ -164,5 +164,6 @@ func TestFileContentFlag(t *testing.T) {
f.Close()
_, err = mustNew(t, &cli).Parse([]string{"--file", f.Name()})
require.NoError(t, err)
require.Equal(t, []byte("hello world"), []byte(cli.File))
require.Equal(t, []byte("hello world"), cli.File.Data)
require.Equal(t, f.Name(), cli.File.Path)
}