[jboss-as7-dev] cli variables

Dimitris Andreadis dandread at redhat.com
Thu Dec 5 03:19:00 EST 2013


+1 on Hynek's comments, especially the echo $var

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?

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
>


More information about the jboss-as7-dev mailing list