> 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