AFAIK it's the difference between double and single quotes in the pipeline script.
So, for example: echo "hello $USER" might print 'hello jenkins' but echo 'hello $USER' might print 'hello apache', as the $USER variable will be resolved at runtime on the node, vs. runtime on the Jenkins server.
No, it should be isLiteral: false. Although it's not going to be in the preview, when JSON -> Jenkinsfile is called, it should result in that argument being double quoted vs. single quoted. I dunno if that's an issue or not, but I should be able to load that, get the JSON with isLiteral: false and then turn around and post it back with a similarly double-quoted result.
No, it should be _isLiteral: false_. Although it's setting _isLiteral: false_ is not going to be in the editor preview, it probably will be eventually, and when JSON -> Jenkinsfile is called, it should result in that argument being double quoted vs. single quoted. I dunno if that's an issue or not, but I should be able to load that, get the JSON with _isLiteral: false_ and then turn around and post it back with a similarly double-quoted result.
So in this case, it should be isLiteral: true - parseArgument looks to see whether the expression is a constant or GString. "hello" is a constant, 'echo $HELLO' is a constant, "echo $HELLO" is a GString. If it's a GString, isLiteral is set to false, otherwise it's set to true.
Important point here - we have no way of telling the difference between 'hello' and "hello" - but then, it doesn't matter because they're not actually different. They're both just Strings. What matters is that we can distinguish between 'hello $WORLD' and "hello $WORLD", and that we do.
Yeah, the only difference between single-quote and double-quote strings in Groovy is parse-time handling - i.e., whether to parse it as a String or a GString. So woot.