[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