Skip to content

Separate CLI from runtime #5971

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Separate CLI from runtime #5971

wants to merge 1 commit into from

Conversation

bentsherman
Copy link
Member

@bentsherman bentsherman commented Apr 14, 2025

This PR splits the nextflow module into two modules:

  • nextflow: contains only the Launcher and CLI classes
  • nf-runtime: contains everything (i.e. the "runtime")

Benefits:

  • Improves build time, editing CLI code doesn't rebuild the entire project
  • Removes some circular dependencies, making the code easier to read/understand
  • Library consumers like platform or plugins can just depend on the runtime and not the CLI
  • Makes it easier to implement a CLI v2 in the future

I left ConfigBuilder in the CLI module for now because it is a tangled mess. In a follow-up PR I would like to separate the "core" ConfigBuilder from the extra CLI logic (e.g. ConfigCliAdapter)

Note to self: could also keep nextflow as it is and move the CLI code into a separate module e.g. nextflow-cli.

This comment was marked as off-topic.

@bentsherman
Copy link
Member Author

Due to the nature of this PR, I will keep it updated via rebase instead of merge commits so that the changes are as clear as possible.

@pditommaso
Copy link
Member

oh mamma mia 😆

@bentsherman
Copy link
Member Author

Your k8s plugin inspired me 😄

@pditommaso
Copy link
Member

I feared that 😆

@bentsherman
Copy link
Member Author

Jokes aside, it might be good to do the actual code changes in a separate PR so that the nf-runtime part is as clean as possible

The nf-runtime refactor was just the easiest way to reveal the circular dependencies

@pditommaso
Copy link
Member

I'll review post 25.04

@bentsherman
Copy link
Member Author

Refactored so that the CLI code is in a new module nf-cli-v1. Made the PR considerably smaller

Note the following plugins depend explicitly on the CLI code because they add CLI commands:

  • nf-console
  • nf-k8s
  • nf-tower
  • nf-wave

Might be possible to remove this dependency by moving some interfaces into the core runtime, but not a big deal either way

@bentsherman bentsherman force-pushed the nf-runtime branch 2 times, most recently from ac8c183 to bf822ef Compare April 19, 2025 00:33
Signed-off-by: Ben Sherman <bentshermann@gmail.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants