I've recently been experimenting with adding groovy support for gogo, and I
assume that scala would be similar.

My use-case is that although gogo is scriptable, it was never intended to be
used instead of groovy or scala.

I therefore wanted the ability to run a full blown groovy script from gogo,
giving the script access to my gogo session variables and an OSGi context.
Here's a brief look of what it can do so far:

[Note: I'm using posh here, which is part of our commercial Nimble product,
but this could easily be ported to gogo]

% cat hello.groovy
#!/usr/bin/env posh -c groovy

println "hello, groovy!"

// access bundle context
println context.bundle

// run gogo command
def b0 = session.execute("bundle 0")
println "b0=" + b0

// concatenate arguments from gogo
def result = ""

for (arg in this.args) {
  println "Argument:" + arg.class + ": " + arg;
  result += arg
}

return result
%

# now run hello.groovy script from posh/gogo
# note: that arguments and return value are handled correctly

% groovy hello.groovy $HOME $SHLVL
hello, groovy!
com.paremus.posh.runtime_1.0.21.SNAPSHOT [1]
b0=org.eclipse.osgi_3.6.0.v20100517 [0]
Argument:class java.net.URI: file:/Users/derek/
Argument:class java.lang.Integer: 1
%
% echo $_
file:/Users/derek/1
%



# now run groovy interactively from posh/gogo
# this is less advanced, as there is no command-line editting or completion.
# rather than posh/gogo try to provide this, it should be provided by the
scripting environment
# so that gogo/scala shell handles completion/editting in exactly the same
way as the non-OSGi scala shell.

% groovy
groovy$ println context.bundle(0)
groovy: groovy.lang.MissingMethodException: No signature of method:
org.eclipse.osgi.framework.internal.core.BundleContextImpl.bundle() is
applicable for argument types: (java.lang.Integer) values: [0]
Possible solutions: getBundle(), getBundle(long), getBundles(),
findAll(groovy.lang.Closure), find(groovy.lang.Closure),
use([Ljava.lang.Object;)
groovy$
groovy$ println context.getBundle(0)
org.eclipse.osgi_3.6.0.v20100517 [0]
groovy$ %


Does this have any synergies with what you're want to do, assuming we can
create similar functionality using scala?

Regards,

Derek



On 7 July 2010 15:39, Richard S. Hall <he...@ungoverned.org> wrote:

> On 7/7/10 3:39, Reto Bachmann-Gmuer wrote:
>
>> On Tue, Jul 6, 2010 at 11:09 PM, Richard S. Hall<he...@ungoverned.org
>> >wrote:
>>
>> I'm not too familiar with Scala, so pardon my ignorance.
>>
>>
>>> So is the proposal to have some sort of Scala-based console/shell? Does
>>> this mean you can do Scala-based scripting and syntax? Is this something
>>> that could simply be another shell front end for the Gogo runtime or is
>>> it
>>> somehow completely different?
>>>
>>>
>>>
>> I must  admit I'm not familiar with OSGi RFC-147 so I'm not sure if it
>> could
>> be implemented on it.
>>
>> To be as attractive for people currently not using OSGi it should feel as
>> much as possible like the scala console, this includes:
>> - autocompletion with tab
>> - multi-line expressions (afte an incomplete expression such as one
>> opening,
>> but not closing a bracket a continuation-prompt appears)
>>
>> Once we have this we can add a DSL to more easily do OSGi related tasks
>> (listing services and bundles, accessing services, etc. )
>>
>>
>
> Well, I still can't say I totally understand what is being proposed, but
> I'm not against having people work on it at Felix if other people think its
> worthwhile. If it does ultimately blossom into a full-blown shell for OSGi,
> then there will certainly be some overlap with Gogo, but we can always look
> for ways to bridge the two...
>
> -> richard
>
>  Reto
>>
>>
>>
>

Reply via email to