Commit 7ff1bdbe authored by Bat's avatar Bat
Browse files

Doc: remote repo

parent f4d69f35
Pipeline #10128 passed with stages
in 6 minutes and 50 seconds
......@@ -142,7 +142,7 @@ Creates a .zip or .tar.gz file containing all the binaries of the project (.h, .
### publish major|minor|patch --repo url [--no-changelog]
Pack the project (see `pack` below), creates a new version (update it in the manifest, `git tag` if the project uses `git`),
Pack the project (see `pack` above), creates a new version (update it in the manifest, `git tag` if the project uses `git`),
and update the changelog with `git log`, if it was not manually done (this last behavior can be disabled with `--no-changelog`).
Then it post the new version on the repository at `url`.
......@@ -201,6 +201,82 @@ poulp defines some environment varaibles when spawning a command. You can use th
# Remote repositories organization
*You can find a sample repository [here](*
The remote repositories are organized as follow.
- /
- packages.json
- my-package/
- poulp.json
- my-package.vapi
- my-package.h
- ...
- projects/
- projects.json
- my-template/
- main.vala
- poulp.json
- ...
- files/
- files.json
- foo.vala
- ...
`packages.json` contains a list of all the packages available in this repository. It also contains two other fields `name` (the name of the repository) and `owner`, the name (and optionally email) of the administrator.
Every package is an object in the `libs` array, with those properties.
- name, the name/ID of the package, used by `poulp install name`. Normally, it is the same as the name in the `poulp.json` ;
- files, an object with at least one of this key :
- `all`, an array containing files for any platform (.pc, .vapi, .h, etc). The path are relative to the packages folder (see below) ;
- `windows`, windows specific files (`.dll` and Co.) ;
- `linux`, GNU/Linux specific files ;
- `osx`, Mac OS X specific files ;
- `bsd`, BSD specific files ;
- `unix`, an alias for `linux`, `osx` and `bsd`.
The repository should contain a folder named with the ID of the package at its root (`my-package` in the example above).
This folder should contains all the files specified in `packages.json`. It could also contain two special folders : projects and files. Those two folders respectively contains projects and files templates.
The `projects` directory should contain a `projects.json` file, that looks like this.
"id": "my-project-template",
"name": "My project template",
"description": "An example template",
"files": [ "foo.vala", "poulp.json" ]
Then, you should create a new subfolder in `projects`, that contains the files of the templates. If a `poulp.json` file is here, some of its property will be used when a new project is initialized with this template (actually, only `libs` and `keywords`).
The `files` folders is quite similar to the `projects` one. It also contains a file, named `files.json`, containing a list of available file templates. This file looks like this.
"id": "my-file-template",
"name": "My file template",
"description": "A super cool file template",
"files": [ "bar.vala" ]
The files should be in the `files` folder, not in a subdirectory like for `projects`. You can specify many files, because it could be useful. For instance, you can have a GTK+ window template, with a `window.vala` file and `window.ui` file.
Because it could be a little bit hard to manually manage a repository, we are [working on a web interface]( to do it easily. But yet, you can just use a git repository.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment