The goal of this project is to provide a cli to hasten my dev process and to create interface for the tools I use.
Eclipse che is my main env that allow me to dev in my personal time (and i love it). This project is born from this issue that follow my thinking process of loving project with source openly available.
There is also a redhat release of che that is called DevSpace.
Inside of this module there will be multiple categories of commands that will be available, like:
dev_cli code
- Commands that are related to vscode manipulation (Open che workspace in vscode desktop)dev_cli workspace
- Commands that are related to workspace manipulation (Info/Get/List/Start/Stop/...)dev_cli shell
- Commands that are related to shell manipulation (ItShell/ExecShell/...)dev_cli completion
- Commands that are related to completion manipulation (Bash/Zsh/...)dev_cli devfile
- Commands that are related to devfile manipulation (Create/Update/...)dev_cli dockerfile
- Commands that are related to dockerfile generation (Based on template/...)
dev_cli code open
- Open the current workspace in vscode desktopdev_cli code check
- Check if the needed vscode extension are installed and install them if needed
dev_cli workspace get
- Output workspace info, and if run directly in a workspace, output the current workspace info, either ask the user to choose a workspace (output could be json or yaml)dev_cli workspace get_container
- Get a workspace's container by name, by default the current if in onedev_cli workspace list
- List all the workspacesdev_cli workspace start
- Start a workspace by namedev_cli workspace stop
- Stop a workspace by namedev_cli workspace restart
- Restart a workspace by namedev_cli workspace restart_from_local
- Restart from local devfile
dev_cli shell
- Start an interactive shell in the current workspace
dev_cli completion -s $TERMINAL_KIND
- Output $TERMINAL_KIND completion script
Based on the Rust NX template.
nx generate @monodon/rust:library my-rust-lib # Create lib
nx generate @monodon/rust:binary my-rust-app # Create app
- To detect DevSpace/Eclipse Che there is some env var that's available.
- You can start/stop with a simple patch Code Source
You can get the CRD def with kubectl explain devworkspace
for exemple, the src/crd
include the Modop to generate new CRD or update existing one based based on the neeeded crd.
Has of now the restart in VsCode is not fit for other ide (How it's done in che-code). This way of working need to be tweaked for Idea and futur other ide. To make it easier i found the annotation "che.eclipse.org/che-editor" in the DevWorkspace CRD that include the editor passed on startup (Could be interesting to include the one in .che/che-editor if the other one is not found)
Long story short i would like to include in another submodule/cli close to this one (it's possible that in the futur i pop out this part) a module that would act has a component library who would output a Dockerfile including all your need. Atm i have made the batleforc/che-base that include the base tool that i deemed necessary and made some variant based on it including different tool (sdkman for a full java image, Rust and cargo for a rust variant, etc). BUT i may need in some case to reduce the size of those image (ATM less than 1Go).
Please do cog install-hook --all
before your first commit, the hooks include a pre commit that will check for any secret and possible clippy error.
This repo has two CICD:
- Build and Release that will create a release draft on each Tag
- Clippy that will check for possible improvement
NO TAG SHOULD BE MANUALY MADE !!
To make a tag use :
cog bump [ --patch | --minor | --major ]
Doing it with the cli will:
- Increment the past version depending on the choice made (path/minor/major)
- Change the version in Cargo.toml
- Generate the changelog
- Trigger the pipeline that will create a draft with possible package
- Go to the Github release page
- Select the release to undraft
- Give it a name like
0.2.2 - Dalek
and a descrption to your need - Publish the release and enjoy !!