> 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 refreshed the contents of this pull request, and previous 
commits have been removed. The incremental views will show differences compared 
to the previous content of the PR. The pull request contains one new commit 
since the last revision:

  Update tests and implementation to comply with the CSR (env var names are 
case-insesitive on Windows)

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/23923/files
  - new: https://git.openjdk.org/jdk/pull/23923/files/01270d3c..2b22c14d

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

  Stats: 48 lines in 1 file changed: 8 ins; 14 del; 26 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