Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kong introduces extra backslashes in argument defaults #324

Closed
charlesdaniels opened this issue Aug 6, 2022 · 2 comments
Closed

Kong introduces extra backslashes in argument defaults #324

charlesdaniels opened this issue Aug 6, 2022 · 2 comments

Comments

@charlesdaniels
Copy link

Minimal example:

package main

import (
	"fmt"

	"github.com/alecthomas/kong"
)

var CLI struct {
	Ls struct {
		StringArg string `help:"Accepts a string" default:"\t"`
	} `cmd:""`
}

func main() {
	ctx := kong.Parse(&CLI)
	switch ctx.Command() {
	case "ls":
		fmt.Printf("CLI=%#+v\n", CLI)
	default:
		panic(ctx.Command())
	}
}
$ go run main.go ls --help
Usage: main ls

Flags:
  -h, --help                Show context-sensitive help.

      --string-arg="\\t"    Accepts a string
$ go run main.go ls
CLI=struct { Ls struct { StringArg string "help:\"Accepts a string\" default:\"\\t\"" } "cmd:\"\"" }{Ls:struct { StringArg string "help:\"Accepts a string\" default:\"\\t\"" }{StringArg:"\\t"}}

I would expect for the string-arg to end up getting the default value \t (a tab literal), not \\t.

This bit me because I had a --indent argument for one of my projects, with the default indentation being a tab.

@charlesdaniels
Copy link
Author

Just in case the exact file contents are needed for reference:

$ tar cz go.mod go.sum main.go | base64
H4sIAAAAAAAAA+2WW2/bNhiGcxv9CsHDihRaJVHnBOiFbMvxQfExtqugF5Vp6mBJlqyTbQ3976Pc
rnOAZckOaTGAjy9ISeT7vSQ/knZjNorXF68Kj1EkqS6BKvPn5QkA1AsgCaooS4oCxAse8IKoXND8
69r6QpHldkrTF9D+61l47vv/FLz4RYhodLCjJEQsjCMuO1UBRbkxDVigUVSKdoWfItr1c69YnRrZ
IYK5F0d2xgXx1qVLnlVYQP3o4RD+Jm7MZkX0ujGe2f+CDIRv+18Q5NP+V0Sy/78Hz25p2gM3IBh6
sIOSYMp08edJsvIHbfMY9kzt6MlN+QiqcSKv+n6kv6eeVeTc051TC/ed7rJdmdHK45JiqfTEhVos
0Tb2ZMUaLkbDJbPX0ADN0+veU8IpStJaGP/eCbwAeA2njyRJMnin8dCWBA3KOLnqaNr8yMczR4Yx
N3z4sEHqHFTaXYIShpn0R+HaFLyMy5oTR9L+ZbSzIQrBVnF2Hlf1jmMzisTCDcKV4cueK+9nkiij
o1sOHbs9MR8HXdslgq6Hld5lCdrTJT6KWf587lRLs+BSGPpe5kaLmItKMdT3IZcFo6Hkm93NLOsx
UO6KLxA+LXO5ud5wBVjttmXLcPqj/dzLw5E+3WUikwZdywLixlrez69V+ALF/8BqEqHKTte18Np3
nNBf1dp47mtRqd3ctw1+eHucxM3uypxY4/1sPo5bd8up3DSqXsA5IHxY6ZO7l4meGfYHXVUN4o5n
He4HIIHTbTAIds597GYrV3UfhgtLyqZt64GTHmlneYpy6KVcvNoc6jx5vGTdTmBdA6XXYdL9uu3c
6cFCHeX7YtdcVKmh3U6V286B2RuHO+PPZXOU5b5zrA2r7CmnpY3tt6vx8cOknK3VNm9sbiVZlOXc
DBfiYmS0kh3gE7PFaNlLJM/MTpXSlpnDHYr9YjGNN4w7CybqWuzoZr7T9dse6EwGMJjaYa0cJ4HL
+lsOeggGbAn+2CRAAQKvAQ2Igowf14KMBI2XePksVitW/NWir1db3e4Fu0Tzivt92J+0HnD3Texw
cDWUFkvZqvizWEc7CtlSpEsRhzplsHNYRNxtpVfGcmd2ixLmvWswmF173jCKlqN4WfAf7q3+TG3p
T+qc2RpIxTFQK7XZMsa7QjGYliJZTgngRA0qNe09lP48GjKGa+AU+9En+T8jsv0t68avGuO5//+S
yn+7/3Hq1ve/BHhy/38PEhsGtovoOg8oyo+SOM3pK+qy4UR5g8Ll09d5g3pLUSWevJbZo/F5UsCc
/pW6NLOzh8tZnvpbV0/d+iWu0Z88FCY3DR1ClOQZbX9936DXyLGLML9pfMwbn6jLz/QnGK1vGrj+
maKcYgtPHq/e1rIwP9A37+naBTu20wxdvcEm3lKX2d7HpxqNv7OtOIrs7fprBztDdCPMGjfYEx4a
O8ZBc+eqgbu9//knpvy4bfxCf9H43QhumdhbH149UsMNPmNHP3rdCAQCgUAgEAgEAoFAIBAIBAKB
QCAQnuI3LMJnPgAoAAA=
$ shasum *
8ebc55284fb5b7660471f2102f918d3abb8ad346  go.mod
42513fd7be1e6a93c5bb89ef8ea3c897d40be9cd  go.sum
9e8aa857792d753f8ed88cb8248b54dc09f8d406  main.go

@alecthomas
Copy link
Owner

This should be fixed, thanks @FlorianLoch !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants