meshplayctl
meshplayctl
is the CLI client for Meshplay.
Contributing
Please refer the Meshplay Contributing Guidelines for setting up your development environment.
Refer the meshplayctl- Command Reference and Tracker for current status of meshplayctl
.
For a quick introduction to meshplayctl
, checkout Beginner's guide to contributing to Meshplay and meshplayctl.
Building and running meshplayctl
The /meshplayctl
folder contains the complete code for meshplayctl
.
meshplayctl
is written in Golang or the Go Programming Language. For development use Go version 1.15+.
After making changes, run make
in the meshplayctl
folder to build the binary. You can then use the binary by, say, ./meshplayctl system start
.
Refer the Meshplay CLI Commands and Documentation for a complete reference of meshplayctl
.
meshplayctl
command reference
Detailed documentation of the meshplayctl
commands is available in the Meshplay Docs.
General guidelines and resources
meshplayctl
might be the interface that the users first have with Meshplay. As such, meshplayctl
needs to provide a great UX.
The following principles should be taken in mind while designing meshplayctl
commands-
- Provide user experiences that are familiar.
- Make the commands and their behavior intuitive.
- Avoid long commands with chained series of flags.
- Design with automated testing in mind, e.g. provide possibility to specify output format as json (-o json) for easy inspection of command response.
Part of delivering a great user experience is providing intuitive interfaces. In the case of meshplayctl
, we should take inspiration from and deliver similar user experiences as popular CLIs do in this ecosystem, like kubectl
and docker
. Here is relevant kubectl
information to reference - Kubectl SIG CLI Community Meeting Minutes, contributing to kubectl, code.
meshplayctl
uses the Cobra framework. A good first-step towards contributing to meshplayctl
would be to familiarise yourself with the Cobra concepts.
For manipulating config files, meshplayctl
uses Viper.
A central struct
is maintained in the meshplayctl/internal/cli/root/config/config.go
file. These are updated and should be used for getting the Meshplay configuration.
For logs, meshplayctl
uses Logrus. Going through the docs and understanding the different log-levels will help a lot.
meshplayctl
uses golangci-lint. Refer it for lint checks.
All contributors are invited to review pull requests on meshplayctl
as on other Khulnasoft projects.