question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Technology for workspace management and release tooling

See original GitHub issue

We’ve been on and off with discussing the need for more and better workspace tooling. This issue is intended to collect ideas and references regarding the topic to help us make an informed decision how to move forward.

Current Features

🚧 TODO: collect a list of features offered by groovyw ...

Requirements

🚧 TODO: figure out what we really need this for

References

Multi-Repo Tooling

  • Google’s repo tool for managing multiple repositories within the same “workspace”. Not necessarily something we should use directly, but we can take reference from their API design.

Gradle

There are also Gradle Plugins for semver version management (either via git tag or version file), like https://github.com/ethauvin/semver-gradle.

Maybe this could be integrated into the terasology-module Gradle plugin in some way, so we would use Gradle to perform this task… I don’t know how clean the code for that would, though, and how well this works with git interaction. And release plugins in general: https://github.com/researchgate/gradle-release

They usually work with version.properties or something similar, though.

CLI tooling

  • CLIkt multi-platform command line parser for Kotlin
  • kotlinx.cli seems to be another CLI argument parser for Kotlin
  • http://yargs.js.org/ is a pretty neat library for writing CLIs in Javascript (auto-generating help messages, structure in sub-commands which automatically contribute to the overall CLI tool, …)
  • PicoCLI - any JVM?

POCs

Issue Analytics

  • State:open
  • Created 3 years ago
  • Comments:12 (12 by maintainers)

github_iconTop GitHub Comments

2reactions
eviltakcommented, Jul 20, 2020

My 2 cents for versioning: enforce git tagging somehow; makes it really easy to check out the exact source of a specific version of a module/lib. This isn’t applicable to snapshots of course, but if we really wanted to find a way to correlate snapshot releases to their sources, we could somehow add the 7-digit SHA value of the commit corresponding to the release in the version number/package metadata.

1reaction
skaldarnarcommented, Jul 14, 2020

Thanks for the effort and update on this @Cervator.

At this point I’m leaning towards either of gw or gooky as they are closer to our ecosystem. I still haven’t found the time to look at gw in detail, but the use of PicoCLI seems promising. Most of all, it addresses my main pain point of the Groovy scripts being really hard to maintain or extend. I may use node-gooey as little playground to test out some features or compare implementations and performance in a PoC style, but will focus on bringing one of the JVM solutions to life.

Without looking at gw in detail it’s hard to say which one to prefer. Kotlin seems to be the “modern” choice, being a bit more trendy than plain old Groovy. It also comes with some nice language features, is backed by Jetbrains, and Gradle seems to have a future with Kotlin, too. We’d need to find a convenient way of bootsrapping it, though. That’s where gw can shine, just using the whatever Groovy ships with Gradle. On the other hand, it comes with some Java boilerplate as far as I can tell. Is it the safe but boring alternative?

Let me try to turn this text into pro/con lists for both gooky and gw:

gooky (Kotlin)

  • 🟢 fresh, modern language
  • 🟢 backed by Jetbrains (we’re already heavily using IntelliJ)
  • 🟢 Gradle shifting to/supporting configuration in Kotlin
  • 🟢 CLIkt library to aid CLI tool development
  • 🔴 how to bootstrap a CLI tool

gw (Java/Gradle)

  • 🟢 bootstrapping with Groovy wrapper (Groovy shipped with Gradle)
  • 🟢 PicoCLI library to aid CLI tool development
  • 🟢 many developers are at least familiar with some basic Java
  • 🔴 Java boilerplate code
  • 🔴 bound to Groovy version shipped with Gradle (currently v2, printing warnings…)
Read more comments on GitHub >

github_iconTop Results From Across the Web

7 Must-Have Tech Tools for the Modern Office - The Receptionist
Technology is what supports businesses today. These seven office technology tools that will turn your office into a modern digital space.
Read more >
19 Workspace Management Tools (for 2022 and Beyond)
19 Workspace Management Tools (for 2022 and Beyond) · 1. Greetly · 2. ClickUp · 3. QuickBooks · 4. Google Hangouts · 5....
Read more >
Headed Back to the Office? These Are the Best Space ...
Space management helps keep your employees safe in the office using features like daily check-ins, contact tracing, and socially distanced floor plans.
Read more >
Workplace Software: Technology For Workspace Planning
Workplace software integrated with other technology tools translates to major cost savings, creating a win-win scenario for facility management.
Read more >
13+ Tools to Help Improve Your Work Performance
From creating to-do lists to goal setting, check out these tools that can help you increase work productivity and reach your goals.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found