Poulp is a tool, or a set of tools, created to help you writing great softwares in Vala. It will help you building your projects, installing librairies, linting your code and much more.
Our goal is to provide a simple command line tool to manage your project and its dependencies.
To achieve that, every project contains a poulp.toml
file, describing your application
or library.
If you don't know what is TOML, you can read the specification. But it is really easy to read, so maybe it's not even necessary.
Complete manifest
Here is an example of a complete poulp.toml
.
# First we define the valac version(s) targeted
vala-version = ">=0.20.1"
# Basic informations about our app
name = "my-app"
description = "A cool application"
# Use semantic versionning
version = "0.1.0"
# To help find your project
keywords = [ "website", "valse", "cool" ]
license = "LGPL-3.0"
homepage = "https://jean.dupont.fr/myapp.html"
repository = "https://git.dupont.fr/my-app.git"
# Where to report bugs
bugs = {
email = "jean@dupont.fr",
url = "git.dupont.fr/jean/my-app/issues"
}
# Dev team members informations.
authors = [
"Jean Dupont <jean@dupont.fr>",
"John Doe <john.doe@anon.im>"
]
# The files to compile, supports wildcard (*).
files = [
"*.vala",
"models/*.vala",
"*.gs",
"*.c"
]
# VAPIs directory.
vapi-dir = "src/vapis/"
# Custom output path, if not specified defaults to `build/$(app-name)`.
output = "custom-build-path/my-app"
# Other arguments to give to valac.
compilerParams = [
"-o", "$(POULP_NAME)-$(POULP_VERSION)"
]
# If true, we add flags to compile as a library
library = false
# Poulp has support for npm-like scripts.
[scripts]
test = [ "poulp build", "./$(POULP_BUILD_OUPUT)" ]
[dependencies]
gio-2.0 = "*"
valse = "^0.1.2"
[dev-dependencies]
valadate = "^0.1.0"
# You can toggle some features/options of the compiler
[features]
c-warnings = false
vapi-comments = true
If you want to learn more about all this options, check out the documentation on Framagit.
Available commands
build
Builds your project using the options defined in the manifest.
gen
Scaffolds a file following a template. Templates can be installed by packages.
help
Just displays help about other commands.
init
Initialize a new project. You can eventually use a template (which can be installed by packages too).
install
Installs a specific package or all the dependencies of the project.
lint
Lints your source code following elementary OS's or GNOME's conventions.
pack
Create a
.zip
bundle of your project which can be deflated and then easily installed thanks to a script.publish
Publishes a new version of your library.
repo
Manages remote packages repositories
run
Run one of the script of your manifest.
update
Updates your packages.
You can install additional commands as any other package with poulp install
.
Convinced?
Just install it via Flatpak:
echo "See issue #40 on Framagit"
FAQ
How to host a remote repository?
We are working on a web app to manage a repository with a nice UI. But hosting a repository is really easy.
You just have to create a packages.json
file. Then list your packages like
in this example
Why not use waf, meson, CMake & Co?
Poulp is not just a build tool. It also manages your dependencies and let you publish your projects.
And even the build
command is designed specially for Vala and not as a general build tool,
so it fits the developers needs better.