/upgrade-scripts-for-0.11

Upgrade scripts for 0.11

Primary LanguageGo

Upgrade Scripts for 0.11

Scope

This tool accodomates one change introduced in the 0.11 release: variable name for functions used to be prefixed with &, but are now suffixed with ~:

  • Variable references are changed: $a:&x$a:x~;

  • Assignments are changed: '&x' = { }x~ = { } (quoting is no longer required, since ~ is a valid bareword if it does not appear at the beginning of a word;

  • Use of ~ in compound nodes get a preceding '' so that it will not be parsed as part of a previous variable: $x~foo$x''~foo.

See before.elv and after.elv for an example.

The rune & is now forbidden in variable names. If a variable contains & after rewriting, a warning is printed.

This tool does not address other compatibility breaks.

Invocation

This tool can be invoked in one of two ways:

  • Without arguments, it reads stdin and writes stdout.

  • With filename arguments, it rewrites each given file. For instance, to upgrade all scripts in ~/.elvish:

    upgrade-scripts-for-0.11 ~/.elvish/**.elv

    Ignore warnings about skipping directories if you happen to have directories whose names end in .elv.

It does not accept any flags.

Note that this tool is not idempotent. For instance, upgrading the already upgraded $x~ syntax will make it $x''~.