diff --git a/docs/v2/manual.md b/docs/v2/manual.md index 2244f0c..71f5699 100644 --- a/docs/v2/manual.md +++ b/docs/v2/manual.md @@ -1424,166 +1424,6 @@ In this example the flag could be used like this : Side note: quotes may be necessary around the date depending on your layout (if you have spaces for instance) -### Converting from v1 to v2 - -v2 has a number of breaking changes but converting is straightforward: -make the changes documented below then resolve any compiler errors. -Typically this is sufficient. - -If you find any issues not covered by this document, please post a -comment on [Issue 921](https://github.com/urfave/cli/issues/921) or -consider sending a PR. - -#### Flags before args - -In v2 flags must come before args. This is more POSIX-compliant. You -may need to update scripts, user documentation, etc. - -This will work: - -``` -cli hello --shout rick -``` - -This will not: - -``` -cli hello rick --shout -``` - -#### Import string changed - -* OLD: `import "github.com/urfave/cli"` -* NEW: `import "github.com/urfave/cli/v2"` - -Check each file for this and make the change. - -Shell command to find them all: `fgrep -rl github.com/urfave/cli *` - -#### Flag aliases are done differently. - -Change `Name: "foo, f` to "Name: "foo", Aliases: []string{"f"}` - -OLD: - -``` -cli.StringFlag{ - Name: "config, cfg" -} -``` - -NEW: - -``` -cli.StringFlag{ - Name: "config", - Aliases: []string{"cfg"}, -} -``` - -Sadly v2 doesn't warn you if a comma is in the name. - -#### Commands are now lists of pointers - -Occurrences of `[]Command` have been changed to `[]*Command`. - -What this means to you: - -Look for `[]cli.Command{}` and change it to `[]*cli.Command{}` - -Example: - -* OLD: `var commands = []cli.Command{}` -* NEW: `var commands = []*cli.Command{}` - -Compiler messages you might see: - -` -commands/commands.go:56:30: cannot convert commands (type []cli.Command) to type cli.CommandsByName -commands/commands.go:57:15: cannot use commands (type []cli.Command) as type []*cli.Command in assignment -` - -#### Lists of commands should be pointers - -If you are building up a list of commands, the individual items should -now be pointers. - -* OLD: `cli.Command{` -* NEW: `&cli.Command{` - -Compiler messages you might see: - -` -./commands.go:32:34: cannot use cli.Command literal (type cli.Command) as type *cli.Command in argument to -` - -#### cli.Flag changed - -`cli.Flag` is now a list of pointers. - -What this means to you: - -If you make a list of flags, add a `&` in front of each -item. cli.BoolFlag, cli.StringFlag, etc. - -* OLD: -` - app.Flags = []cli.Flag{ - cli.BoolFlag{ -` - -* NEW: -``` - app.Flags = []cli.Flag{ - &cli.BoolFlag{ -``` - -Compiler messages you might see: - -``` - cli.StringFlag does not implement cli.Flag (Apply method has pointer receiver) -``` - -#### Appending Commands - -Appending to a list of commands needs to be changed since the list is -now pointers. - -* OLD: `commands = append(commands, *c)` -* NEW: `commands = append(commands, c)` - -Compiler messages you might see: - -` -commands/commands.go:28:19: cannot use c (type *cli.Command) as type cli.Command in append -` - -#### Actions returns errors - -A command's `Action:` now returns an `error`. - -* OLD: `Action: func(c *cli.Context) {` -* NEW: `Action: func(c *cli.Context) error {` - -Compiler messages you might see: - -``` -./commands.go:35:2: cannot use func literal (type func(*cli.Context)) as type cli.ActionFunc in field value -``` - -#### Everything else - -Compile the code and worth through any errors it finds. Most should -relate to issues listed above. - -Once it compiles, test the command. Make sure `-h` displays help -properly, then try various flags and subcommands. - -If you find anything not covered by this document please let us know -by submitting a comment on -[Issue 921](https://github.com/urfave/cli/issues/921) -so that others can benefit. - ### Full API Example **Notice**: This is a contrived (functioning) example meant strictly for API