stir is a tool for synchronizing files between two or more systems โ a general purpose package manager.
stir is a simple method of sharing source code libraries between microservices,
fetching credential files (like Google's service account credentials.json
),
or any other files.
- A package containing some files is created and placed on your private server.
- The package is then installed via
stir install package-name
wherever the files are needed.
- Merging - Multiple packages can be installed in the same directory.
- Easy - Creating and publishing packages is trivial.
- Language Agnostic - Python, JavaScript, C source, or any file type you need to package and share.
- Secure - Packages can require authentication to update or fetch.
- Private - Host your own stir server.
- Microservices - No need to duplicate code between services.
Project bar
depends on libraries maintained in project foo
's git repository.
- From
foo
's git repository, in a directory that will be the package root, create your package.stir upsert foolibs -p "**.py"
- This will find all files in the current that match
**.py
(**
is the convention for recursive matching).
- From
foo
's git repository, runstir publish foolibs
. This will bundle the package (foolibs-0.0.1.zip
) and push it to the server. - When working in the
bar
project, fetch the latestfoolibs
package.stir install foolibs
- If
foolibs
is not installed, or an older version, this will pull the most recentfoolibs
package from your stir server and install it infoolibs/
.
- Add to your deployment pipeline. For example, in your Dockerfile:
RUN pip install stir && (cd /app/bar && stir -y install foolibs)