Appctl is a developer oriented multi-purpose command line tool. It allows you to abstract the tipical commands you use to build, test, package,... your applications, this way you can use a similar set of commands accross all your projects, regardless of the technology used.
Are you too lazy to write your own build scripts or your own Makefiles? Do you even know what make
is? Do you suffer from having several projects written with different technologies and you always struggle to remember how to build/test/package each one?
This project aims to provide a simple and unified development experice across all your projects
Appctl executes your most common workflows in your development process through a simple and unified CLI
Actually this tool does nothing, your typical build tools do the job. You will use npm for nodejs apps, maven for java, docker for container images, ... Whatever tool, but appctl
will invoke them for you.
You may even forget about all of that but only remember to execute appctl build
To install from source, only pre-requisite is golang >= 1.13
make install
Or just download and install it with the install.sh
script
curl -sfL https://raw.githubusercontent.com/famartinrh/appctl/master/install.sh | sh -
There are some examples of applications using appctl
under the folder examples
cd examples/simple-app
appctl status
appctl build
docker images | grep simple-app
cat app.yaml
cd examples/microservices-example
appctl status
appctl build
docker images | grep appctl-
cat app.yaml
cat api-gateway/app.yaml
Appctl basically executes predefined Makefiles in your projects, Makefiles that just run whatever commands are needed to perform some task in your development process. Appctl defines this concepts:
A recipe is a list of tasks to be executed sequentially by Appctl. Developers can define recipes in the app.yaml
file, other kind of recipes are also defined in Templates
.
One task can execute one or more pre-defined recipes from one Template
A template defines a list of recipes. But this recipes are special, they consist of the execution of a Makefile, i.e: This is the docker template. As you can see the index.json
file defines a list of "recipes" and each one points to a Makefile stored alongside the index.json file. This is an example showing the usage of recipes defined in templates.
There is a special template called appctl
which invokes other appctl recipes on applications found in subdirectories of the current application directory. An example of this can be found on the microservices example
Managed with app.yaml
files that can be created with appctl init -n <your-app-name>
. Applications can use one or more templates and inherit all of their recipes, here an example of an application inheriting all the recipes from the "nodejs" and "docker" templates. You can see the inherited recipes executing appctl status
into the application directory.
appctl status
will display a list with the available recipes that the current application has.
A recipe can be executed in an application by running:
appctl <recipe-name>
Templates allow to manage recipes and Makefiles and they are made available to you with an online catalog. Because the catalog is just some static files available through an http-server, currently the catalog is hosted in github pages and managed in this repository (under the docs/catalog
folder)
Appctl will download the templates used in your applications into the $HOME/.appctl/templates/
directory