[wildfly-dev] [jboss-as7-dev] cli variables

Alexey Loubyansky alexey.loubyansky at redhat.com
Thu Dec 5 06:37:09 EST 2013


On 12/05/2013 09:19 AM, Dimitris Andreadis wrote:
> +1 on Hynek's comments, especially the echo $var

I've changed echo to assume $.

> I'm not sure also if those should be equivalent:
>
> set var=
> unset var
>
> to cover the case where you need var to be an empty string, rather than completely unset. I
> think it works as you propose on Windoze shells, but not on Unix shells?

I was not sure about it myself actually, which is why I mentioned it. It 
might make sense make the difference.

Alexey

>
> On 02/12/2013 15:26, Hynek Mlnarik wrote:
>> Hi,
>>
>> thanks for the effort, this feature will be very helpful indeed!
>>
>> Overall I like your approach, yet in case of "echo" command I'd prefer mandatory use of $
>> character before variable name, i.e. to use:
>>
>> [standalone at localhost:9990 /] echo $prod_db
>>
>> instead of proposed:
>>
>> [standalone at localhost:9990 /] echo prod_db
>>
>> In other words, to apply the same substitution rules to "echo" parameters as to the rest of
>> use cases where variable value is read. This would also be more consistent with shell
>> standards, hence will be easily grabbed by administrators.
>>
>> Further, do you plan recursive substitution evaluation? E.g. something like this:
>>
>> [standalone at localhost:9990 /] set
>> prod_db_pgsqlDS=/subsystem=datasources/data-source=ExampleDSPgSQL
>>
>> [standalone at localhost:9990 /] set
>> prod_db_mysqlDS=/subsystem=datasources/data-source=ExampleDSMySQL
>>
>> [standalone at localhost:9990 /] set ds=pgsqlDS
>>
>> [standalone at localhost:9990 /] echo ${prod_db_$ds}
>>
>> /subsystem=datasources/data-source=ExampleDSPgSQL
>>
>> --Hynek
>>
>> On Mon December 2 2013 15:06:52 Alexey Loubyansky wrote:
>>
>>   > There is this issue to provide CLI preferences
>>
>>   > https://issues.jboss.org/browse/WFLY-1063. Here I'd like to address
>>
>>   > mainly this part
>>
>>   >
>>
>>   > "prod-db = /subsystem=jadada/database=jadada/
>>
>>   > so you could call prod-db:read-resource"
>>
>>   >
>>
>>   > I'd like to get some opinion on the way it's gonna be implemented (and
>>
>>   > what I've done so far on a local branch).
>>
>>   >
>>
>>   > So, to address that I introduced variables. A variable starts with a $,
>>
>>   > e.g. $prod_db. (Using simply prod_db is not a good idea since it might
>>
>>   > conflict with actual parts of the paths, names, etc)
>>
>>   >
>>
>>   > Variables can be introduced with
>>
>>   >
>>
>>   > [disconnected /] set prod_db=/subsystem=datasources/data-source=ExampleDS
>>
>>   >
>>
>>   > Read with
>>
>>   >
>>
>>   > [standalone at localhost:9990 /] echo prod_db
>>
>>   > /subsystem=datasources/data-source=ExampleDS
>>
>>   >
>>
>>   > And unset with
>>
>>   >
>>
>>   > [standalone at localhost:9990 /] unset prod_db
>>
>>   >
>>
>>   > 'echo' without parameters will list all the variables and their values,
>>
>>   > 'set prod_db=' will have the same effect as 'unset prod_db',
>>
>>   > set/echo/unset will work with and w/o '$' prefix, tab-completion works
>>
>>   > everywhere.
>>
>>   >
>>
>>   > The variables may appear in:
>>
>>   >
>>
>>   > - operation request addresses, e.g. $prod_db/statistics=jdbc:read-resource;
>>
>>   > - operation names, e.g. $prod_db:$op(include-runtime=true);
>>
>>   > - operation parameter names and values, e.g.
>>
>>   > $prod_db:$op($param=$param_value);
>>
>>   > - the same for commands.
>>
>>   >
>>
>>   > Tab-completion helps complete the names as long as you type in '$' and
>>
>>   > then the rest of the line after the variable as usual.
>>
>>   >
>>
>>   > Variables added during the session are not persisted anywhere. But I've
>>
>>   > added .jbossclirc file. This file can be located in the current
>>
>>   > directory, wildfly home bin directory or specified with a system
>>
>>   > property. The content of the file is usual CLI commands and/or
>>
>>   > operations. So, the variables could be initialized there. This file, if
>>
>>   > located, will be executed before the CLI session (interactive or not)
>>
>>   > starts (but also after the system properties specified with --properties
>>
>>   > are set).
>>
>>   >
>>
>>   > As a side effect, '$' is now a special character and will have to be
>>
>>   > escaped. Otherwise the CLI might complain about an unresolved variable.
>>
>>   > So, this could potentially cause problems for existing scripts using $.
>>
>>   >
>>
>>   > Note, most of this replacement stuff can already be done with system
>>
>>   > properties using ${xxx} format (and btw scripts using '$' as in '${xxx}'
>>
>>   > won't be affected, of course).
>>
>>   >
>>
>>   > And for now I've made variable names follow the rules for Java identifiers.
>>
>>   >
>>
>>   > Any remarks, objections or suggestions?
>>
>>   >
>>
>>   > Thanks,
>>
>>   > Alexey
>>
>>   > _______________________________________________
>>
>>   > jboss-as7-dev mailing list
>>
>>   > jboss-as7-dev at lists.jboss.org
>>
>>   > https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
>>
>>
>>
>> _______________________________________________
>> jboss-as7-dev mailing list
>> jboss-as7-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
>>
> _______________________________________________
> jboss-as7-dev mailing list
> jboss-as7-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
>


More information about the wildfly-dev mailing list