[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