[Glass] run topaz from bash and have access to arguments from topaz smalltalk
Ralph Mauersberger
ralph.mauersberger at ewetel.de
Tue Jan 14 08:43:16 PST 2014
Mariano Martinez Peck schrieb:
>
>
>
> On Tue, Jan 14, 2014 at 1:01 PM, Mariano Martinez Peck
> <marianopeck at gmail.com <mailto:marianopeck at gmail.com>> wrote:
>
>>
>
> Mariano,
>
> that should be correct and it works for me. I tested with the
> following two scripts:
>
> test.sh with the following lines:
>
> #!/bin/bash
> topaz -ql <<EOF
> input $1
> EOF
>
>
> and input.topaz like this:
>
> set gems seaside user DataCurator pass swordfish
> login
> printIt
> 20 factorial
> %
>
> I can execute "bash test.sh input.topaz" and get the result.
>
>
> OK, that works for me. But...is there a way I can for example, get
> something like this: I would like to access the parameters from
> input.topaz script. For example:
>
> set gems seaside user DataCurator pass swordfish
> login
> printIt
> $2 factorial
> %
>
> And then call it like this:
>
> "bash test.sh input.topaz 20"
>
> I would like to do that without having to export each variable
> individually... maybe using $@ somewhere?
>
>
Hmm, I don't think that there is a way to get something like that
directly working. Of course there are workarounds, like storing $2 to a
file, save it to sessionState or whatever and afterwards access it from
within input.topaz with appropriate smalltalk code.
>
>
> I forgot to said....somehow that works for startSeaside30_Adaptor....
> but I don't understand how it can do it.
Maybe I'm blind, but I can't see any special trick in
startSeaside30_Adaptor. It's just one here document passed to "cat", the
result is piped to topaz. $1 and $2 are used inside the here document
and are substituted by the shell like we discussed it. $1 and $2 are
also used to specify the log file name.
>
>
>
>
>
>
> Just as addition and independent of the here documents
> approach: Another way to access the shell script arguments
> would be to export them to the environment and access them via
> System>>gemEnvironmentVariable:. So the following should also
> work:
>
> #!/bin/bash
> export MYARG=$1
> topaz -l <<EOF
> set gems seaside user DataCurator pass swordfish
> login
> printIt
> 'The first argument was: ', (System gemEnvironmentVariable:
> 'MYARG')
> %
> exit
> EOF
>
>
> Ok, (System gemEnvironmentVariable: 'MYARG') is answering nil ...
> however.....System performOnServer: 'echo $MYARG' does answer
> correctly.
> weird...
>
>
>
> The here document is just to make the example complete. This
> way you can access the env vars from within any method.
>
>
> Thanks!!
>
>
>
> Br,
> Ralph
>
>
>>
>> Any ideas?
>>
>> Thank!
>>
>>
>>
>>
>>
>> Hope that helps.
>>
>> Br,
>> Ralph
>>
>>
>>
>> Am 13.01.2014 15:31, schrieb Mariano Martinez Peck:
>>> Hi guys,
>>>
>>> In Norbert's utilize, we have this nice script
>>> runTopazScript.sh :
>>>
>>> #!/bin/sh
>>>
>>> source $APPLICATION_DIR/env
>>>
>>> if [ -z \$1 ];
>>> then
>>> echo "no script name given"
>>> fi
>>>
>>> cat ../scripts/login.st <http://login.st> \$1 | su -m
>>> $GEMSTONE_USER -c \"$GEMSTONE/bin/topaz -ql -T200000 \"
>>>
>>>
>>> That let us automatically connect to GemStone using an
>>> auto-generated .topazini. So we can pass around a topaz
>>> script and that would be execute. So we can do for example:
>>>
>>> sudo sh ./runTopazScript.sh something.tpz
>>>
>>> Now....I saw in several topaz scripts from seaside that
>>> the SMALLTALK code is able to directly access the
>>> argument variables to the shell. For example,
>>> startSeaside30_adaptor does:
>>>
>>> GsFile gciLogServer: '$1 Server started on port ', $2
>>> printString.
>>>
>>> I want to do the same in my something.tpz. Imagine I
>>> have this something.tpz file:
>>>
>>> run
>>> $1 printString.
>>> %
>>>
>>> And I execute:
>>>
>>> sudo sh ./runTopazScript.sh something.tpz mariano
>>>
>>> So how can we adapt the script so that such a smalltalk
>>> script outputs 'mariano' instead of the literal string $1 ?
>>>
>>> I tried adding a & at the end of the topaz call and
>>> many other workarounds but I am not sure if topaz needs
>>> something special for this.
>>>
>>>
>>> Thanks a lot in advance and sorry for the offtopic.
>>>
>>> --
>>> Mariano
>>> http://marianopeck.wordpress.com
>>>
>>>
>>> _______________________________________________
>>> Glass mailing list
>>> Glass at lists.gemtalksystems.com <mailto:Glass at lists.gemtalksystems.com>
>>> http://lists.gemtalksystems.com/mailman/listinfo/glass
>>>
>>
>>
>> _______________________________________________
>> Glass mailing list
>> Glass at lists.gemtalksystems.com
>> <mailto:Glass at lists.gemtalksystems.com>
>> http://lists.gemtalksystems.com/mailman/listinfo/glass
>>
>>
>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.com
>
>
> _______________________________________________
> Glass mailing list
> Glass at lists.gemtalksystems.com
> <mailto:Glass at lists.gemtalksystems.com>
> http://lists.gemtalksystems.com/mailman/listinfo/glass
>
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20140114/e161347d/attachment.html>
More information about the Glass
mailing list