https://github.com/fitzgen/tooltool
https://github.com/fitzgen/tooltool
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/fitzgen/tooltool
- Owner: fitzgen
- License: other
- Created: 2016-05-20T19:52:57.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2016-05-20T19:53:32.000Z (about 10 years ago)
- Last Synced: 2025-03-17T11:59:45.473Z (over 1 year ago)
- Language: Python
- Size: 365 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Tooltool
This is tooltool. Tooltool is a program that helps make downloading large
binaries easier in a CI environment. The program creates a json based manifest
that is small compared to the binaries. That manifest is transmitted to the
machine that needs the binary somehow (checked in, included in tarball, etc)
where the machine will run tooltool to download.
When using the fetch mode, the program will check to see if the file exists
locally. If this file does not exist locally the program will try to fetch
from one of the base URLs provided. The API that tooltool uses to fetch files
is exceedingly simple. the API is that each file request will look for an http
resource that is a combination of an arbitrary base url, a directory that is
named as the hashing algorithm used and the hashing results of each file stored.
Example, using base url of "http://localhost:8080/tooltool", algorithm of "sha512"
and a file that hashes to "abcedf0123456789", tooltool would look for the file
at "http://localhost:8080/tooltool/sha512/abcdef0123456789". If there is a local
file that has the filename specified in the manifest already, tooltool will not
overwrite by default. In this case, tooltool will exit with a non-0 exit value.
If overwrite mode is enabled, tooltool will overwrite the local file with the
file specified in the manifest.
## Structure
This repository contains both the tooltool client -- `tooltool.py` -- and the
tooltool server component, which is a
[RelengAPI](https://github.com/mozilla/build-relengapi) blueprint.
If you want to use the client, just copy out `tooltool.py` -- it has no
dependencies.
## Development
Hack on tooltool as you would any RelengAPI blueprint. That means, roughly,
creating a virtualenv and running `pip install -e .[test]` to install the
blueprint and all of its dependences, including those for running tests.
Send pull requests through GitHub.
Both the client and the server components are covered by Travis, via the
`validate.sh` script which you can run yourself.