Skip to content

Separate CLI from runtime #5971

New issue

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

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

Already on GitHub? Sign in 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 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants