> jpackage app laucnher will expand environment variables in .cfg files.
> 
> Previously jpackage app launcher only replaced `$APPDIR`, `$BINDIR`, and 
> `$ROOTDIR` tokens with the corresponding path values. With this patch, any 
> environment variable can be expanded. The syntax is shell-like 
> `$ENV_VAR_NAME` or `${ENV_VAR_NAME}`. If `$ENV_VAR_NAME` syntax is used, the 
> variable name stops at the first character outside of `[a-zA-Z0-9_]` 
> character range. If `${ENV_VAR_NAME}` syntax is used, the variable name stops 
> at the first `}` character after `${` substring. E.g:
> | String    | Variables | Variable Values | Expanded String | Note |
> | -------- | ------- |------- |------- |------- |
> | <pre>Welcome $USER!</pre>  | <pre>USER</pre> | <pre>USER=John</pre> | 
> <pre>Welcome John!</pre> ||
> | <pre>Welcome $USER!</pre>  | <pre>USER</pre> | <pre>not set</pre> | 
> <pre>Welcome $USER!</pre> | Unset variables are not expanded. |
> | <pre>Welcome $USER2</pre> | <pre>USER2</pre>   | <pre>USER2=John</pre> | 
> <pre>Welcome John!</pre> ||
> | <pre>Welcome ${USER}2!</pre> | <pre>USER</pre>  | <pre>USER=John</pre> | 
> <pre>Welcome John2!</pre> ||
> | <pre>Welcome $USER-2!</pre> | <pre>USER</pre>   | <pre>USER=John</pre> | 
> <pre>Welcome John-2!</pre> ||
> | <pre>Welcome ${USER-2}!</pre> | <pre>USER-2</pre>   | 
> <pre>USER-2=John</pre> | <pre>Welcome John!</pre> | `USER-2` is likely to be 
> an invalid env variable name, but jpackage launcher is not validating names. |
> 
> `$` character combination prevents variable expansion:
> | String    | Variables | Variable Values | Expanded String |
> | -------- | ------- |------- |------- |
> | <pre>Hello \$A! Bye $B</pre>  | B | <pre>B=John</pre> | <pre>Hello $A! Bye 
> John</pre> |
> | <pre>Hello \${A}! Bye $B</pre>  | B | <pre>B=John</pre> | <pre>Hello ${A}! 
> Bye John</pre> |
> 
> `\` character combination escapes ``:
> | String    | Variables | Variable Values | Expanded String |
> | -------- | ------- |------- |------- |
> | <pre>Hello \\\$A! Bye $B</pre>  | A, B | <pre>A=Ana</pre><pre>B=John</pre> 
> | <pre>Hello \\Ana! Bye John</pre> |
> 
> If `` character is not followed by another `` character or `$` character, it 
> is interpreted as a regular character:
> | String    | Expanded string |
> | -------- | ------- |
> |<pre>a\\b\\c</pre>|<pre>a\\b\\c</pre>|
> 
> 
> Expansion is non-recursive:
> | String    | Variables | Variable Values | Expanded String | Note |
> | -------- | ------- |------- |------- |------- |
> | <pre>Hello $A!</pre>  | A | <pre>A=$B</pre><pre>B=John</pre> | <pre>Hello 
> $B</pre> | Variable "B" wi...

Alexey Semenyuk has updated the pull request incrementally with one additional 
commit since the last revision:

  Update help

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/23923/files
  - new: https://git.openjdk.org/jdk/pull/23923/files/a4920a0a..f9dbf5d2

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=23923&range=04
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=23923&range=03-04

  Stats: 23 lines in 1 file changed: 23 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/23923.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23923/head:pull/23923

PR: https://git.openjdk.org/jdk/pull/23923

Reply via email to