sit-inbox is a tool that helps managing inbound additions for SIT repositories over different transports. A common case would be accepting patches for a Git repository for a SIT repository portion of it, allowing others to contribute their additions to other parties in an automated way.
This tool is built with decentralized scenarios in mind. It can enable workflows that don't require hosting it on a publicly accessible server. For example, by piggying back on e-mail, it can be operated on a regular end-user computer, sporadically connected to the internet.
Currently, sit-inbox supports:
- receiving patches for Git-hosted SIT repositories over IMAP, POP3 and Maildir
This list is expected to grow.
It is packaged as a Docker container to make its installation and operation easier.
In order to build it, you'll need
sit-inbox comes with a small convenience helper that can be used either directly
from the source root or installed using
sit-inbox new path/to/new/setup
This will create default structure for an inbox. You will need to edit
etc/config.toml configuration and possibly add more arguments
to the docker container (most likely, for extra volumes) in `.dockerargs.
In order to run the inbox, simply do this:
sit-inbox run path/to/setup
After (successful) [re-]provisioning, you should see something like this:
Upon startup, sit-inbox will attempt to retrieve updates
from inboxes that don't have
By default, it will keep fetching email every minute. this can be changed
cron option for every
inbox config entry, it
takes the standard crontab time entry format:
* * * * * - - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +------- month (1 - 12) | | +--------- day of month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59)
The above user interface also allows the operator to observe logs and manually invoke operations such as mail retrieval.
An example configuration for a trivial setup will look something like:
[target.repo] type = "git" source = "https://username:password@host/repo.git" git_username = "sit-inbox" git_email = "email@example.com" [inbox.email] type = "email" retriever = "SimpleIMAPSSLRetriever" server = "mail.server.com" username = "firstname.lastname@example.org" password = "password" default_target = "repo"
Please refer to schema.yaml for almost-human-interpretable
schema for the
config.toml file. It'd be great to convert it into Markdown
or something like it, so if you're up to it -- please contribute.
Assuming basic familiarity with SIT workflow (sit-web for issues,
script), prepare a branch with a patch and send updates to this repository:
git send-email --email@example.com master..<branch>