The VS Code Extension for Unikraft enables developers to quickly and painlessly build unikernels from the VS Code IDE. Amongst other features, it allows developers to list and find unikernel libraries as well as run basic commands. In this project, I developed a VS Code extension to use KraftKit, the newly released CLI companion tool for Unikraft, written in Go as well as created a few commands for kraftkit.
Listing packages available on the system & project directory:
listing_packages.webm
Adding a package to the project:
adding_package.webm
Removing and purging a pakcage:
removing.purging_package.webm
Fetching dependencies:
fetching.webm
Preparing a project to run:
preparing.webm
Building a project to run:
building.webm
Running a project:
running.webm
Initialising a library:
creating_library.webm
Cleaning a built project:
cleaning.webm
Cleaning builts properly:
proper_cleaning.webm
Name: Md Sahil
Email: Mohdssahil1@gmail.com
Github profile: https://github.com/MdSahil-oss
For this project, I made enhancement in two diffrent repositories Kraftkit and ide-vscode of Unikraft. Where Kraftkit repository contains all the enhancements related to CLI commands development and ide-vscode repository contains all enhancements have been made for the development of Unikraft Vscode IDE extension to make it possible to execute Kraftkit
CLI commands using VsCode.
PR links in kraftkit repository
- Configurable output format
- Added a subcommand
show
for commandkraft pkg
- Adds
kraft lib create
support - Add new subcommand
kraft pkg add
- Add new subcommand
kraft pkg rm
- Add subcommand
prune
for the commandkraft pkg
The main part of my project is almost done (Only pull requests are pending to be reviewed & merged by mentors), Now IDE extension is working fine with newly created golang based CLI Kraftkit as well as able to execute some new commands that Kraftkit has like Fetch
, Prepare
, Clean
and Properclean
.
Some additional tasks are left to be accomplished in this project that are:
- Adding support in Unikraft's build cycle for packaging unikernels in different formats.
- The provisioning of an LSP that would allow checks when writing Unikraft code such that relevant libraries are imported or not.
Once my created PRs get merged I'll start working on these remaining additional tasks one by one beyond GSoC.