Hi Stephen,

I think it is getting close enough to make that kind of assessment soon.
I'll send details once I take a look.

Paul.

On Thu, Jun 26, 2025 at 3:12 AM Stephen Mallette <spmalle...@gmail.com>
wrote:

> Hi Paul, I haven't had a chance to try things yet, but I was just
> wondering if in your work on this you could identify anything that might be
> troublesome for folks who extend groovysh? As you probably recall,
> TinkerPop makes pretty heavy use of groovysh for our Gremlin Console and
> I'm curious if there are any gotchas we will need to consider in the future.
>
> Thanks,
>
> stephen
>
> On Mon, Jun 23, 2025 at 5:35 PM Paul King <pa...@asert.com.au> wrote:
>
>> I think you can do:
>> groovy> /nano filename.groovy   // edit script then save
>> groovy> filename.groovy          // execute script
>>
>> On Mon, Jun 23, 2025 at 10:48 PM Guillaume Laforge <glafo...@gmail.com>
>> wrote:
>>
>>> Hi Paul,
>>>
>>> I've just built that branch, and this new Jline integration looks cool!
>>> I've only tried a few simple things, like some commands (inspecting
>>> variables, calling the docs), creating some methods, calling them, printing
>>> stuff on the output, etc.
>>> I really like the fact of having syntax highlighting, or how it shows
>>> that you're currently writing a method and implies the closing curly brace
>>> (also the indentation is there).
>>> I'm not sure what the nano editor is really supposed to be doing?
>>> Could've been nice to be able to edit the current script we're working on?
>>> Or maybe I'm missing something (on how it's supposed to work)?
>>> Launching /console, when quitting the console, it'll quit the shell as
>>> well.
>>>
>>> Anyway, that's really cool stuff!
>>>
>>> Guillaume
>>>
>>>
>>> On Mon, Jun 23, 2025 at 8:07 AM Paul King <pa...@asert.com.au> wrote:
>>>
>>>> I found an (old) existing issue:
>>>>
>>>> https://issues.apache.org/jira/browse/GROOVY-8162
>>>>
>>>> I'll attach a few screenshots there and use that for additional
>>>> discussion.
>>>>
>>>> Paul.
>>>>
>>>>
>>>> On Mon, Jun 23, 2025 at 3:45 PM Paul King <pa...@asert.com.au> wrote:
>>>>
>>>>>
>>>>> Hi folks,
>>>>>
>>>>> I have been looking at what is involved with migrating our
>>>>> Groovysh repl from JLine2 to JLine3.
>>>>>
>>>>> You can find the latest version in the jline3 branch. It would be
>>>>> great if anyone has spare time and would like to help assess whether we
>>>>> think we can knock this into shape in time for Groovy 5.
>>>>>
>>>>> The easiest way to try it out is switch (once fetched) to the jline3
>>>>> branch.
>>>>>
>>>>> Run "./gradlew iG" to build.
>>>>> Then run "subprojects/groovy-binary/build/install/bin/groovysh2".
>>>>> Hitting <TAB> can show some of the commands.
>>>>> I found some implementation issues using our current ":command"
>>>>> commands and so have instead used "/command" like jshell. The colon
>>>>> variants are supported as an undocumented alias at the moment. We'd likely
>>>>> need some changes to jline if we wanted the colon variants as the only
>>>>> variant.
>>>>>
>>>>> That branch has two versions side-by-side:
>>>>> * The groovysh command is our old version with minimal work done to
>>>>> "just port" from jline2 to jline3. (This might be currently broken but 
>>>>> I'll
>>>>> fix it soon.)
>>>>> * The groovysh2 command tries to leverage many features from JLine3 to
>>>>> make a feature-rich repl but also minimise the amount of code we'd have to
>>>>> maintain.
>>>>>
>>>>> The two versions do parsing/completing/commands slightly differently.
>>>>> My current thinking is that we'd throw away most of the earlier commands
>>>>> since they are covered by alternatives. We need to see which, if any, of
>>>>> the existing completers/parsing we'd like to bring across.
>>>>>
>>>>> The JLine3 project's repo has a Groovy-based repl as an example demo
>>>>> application which shows off many built-in JLine3 features and widgets. I
>>>>> have based our repl on that demo and kept a lot of the functionality. 
>>>>> We'll
>>>>> have to decide which features, if any, we want to keep. I have copied some
>>>>> of the repl-related files from the JLine3 repo to ours. I imagine there
>>>>> will need to be an assessment of which of those files we may be able to
>>>>> leave on the JLine side of things.
>>>>>
>>>>> There will be lots of tidying up to do (dependency metadata, license
>>>>> file updates, etc.) but the first thing to do is work out which bits we'd
>>>>> want to keep or need further work.
>>>>>
>>>>> Things that I know need some work:
>>>>> * The /grab completer completes maven coordinates based on
>>>>> dependencies found in the users ~/.m2/repository directory. We might like
>>>>> to allow that to be configured to use ~/.groovy/grapes or a URL to maven
>>>>> central.
>>>>> * Theme support is "enabled" for syntax highlighting and existing
>>>>> commands let you switch e.g. between light and dark highlighting, but I
>>>>> don't know what parts are actually affected when you make such changes.
>>>>> * There are some completers like BackslashEscapeCompleter that are
>>>>> only in the old version.
>>>>> * There is a rudimentary DocFinder class that looks up javadoc and
>>>>> groovydoc using a browser. Our old version also handled GDK documentation
>>>>> and had fallbacks if browsers weren't found.
>>>>> * Many switches and system properties haven't been converted over
>>>>> * I18N message resources are rather limited in the new version
>>>>> * Interpreter mode hasn't been looked at
>>>>> * testing on various platforms
>>>>> * test suite is hard-coded to JLine2 implementation details in
>>>>> numerous places
>>>>>
>>>>> If anyone does get some time, please get in touch and if there are
>>>>> bits of work that can be divided up, that would be great. I am about to
>>>>> head off on a mini-break, so may not respond for a few days, but I plan to
>>>>> work on this again when I return.
>>>>>
>>>>> Cheers, Paul.
>>>>>
>>>>>
>>>
>>> --
>>> *Guillaume Laforge*
>>> Apache Groovy committer
>>> Developer Advocate @ Google Cloud <https://cloud.google.com/>
>>>
>>>    - Blog: glaforge.dev
>>>    - X: @glaforge <http://twitter.com/glaforge>
>>>    - Bluesky: @glaforge.dev <https://bsky.app/profile/glaforge.dev>
>>>    - Mastodon: @glafo...@uwyn.net <http://%40glafo...@uwyn.net/>
>>>
>>>

Reply via email to