This repository comprises the formal specification and documentation source for the EthPM package manifest data format.
This data format is designed to be produced/consumed by Ethereum development tools. As such, this repository is intended for tool developers wishing to integrate with EthPM.
Package manifests are JSON-encoded, tightly-packed, with objects’ keys sorted in lexicographic order. Package manifests may live on disk, but are intended to be produced programmatically and uploaded directly to a content-addressable storage network (e.g. IPFS). A package manifest describes a single package, including package name, version, dependencies, and references to distributed source files.
Package: owned
(prettified)
{
"manifest_version": "2",
"version": "1.0.0",
"package_name": "owned",
"meta": {
"license": "MIT",
"authors": [
"Piper Merriam <pipermerriam@gmail.com>"
],
"description": "Reusable contracts which implement a privileged 'owner' model for authorization.",
"keywords": [
"authorization"
],
"links": {
"documentation": "ipfs://QmUYcVzTfSwJoigggMxeo2g5STWAgJdisQsqcXHws7b1FW"
}
},
"sources": {
"./contracts/Owned.sol": "ipfs://Qme4otpS88NV8yQi8TfTP89EsQC5bko3F5N1yhRoi6cwGV"
}
}
Please see Use Cases for documented examples of different kinds of packages with varying levels of complexity. Source for use case examples can be found in the examples/ directory of this repository.
The EthPM package manifest format is formally specified as a JSON-Schema.
Please see Package Specification for a natural-language description of this schema, or see package.spec.json for the machine-readable version.
Requirements: Python 3, pip
, make
Fork and clone this repo to get started. Then, in the cloned repo's directory:
pip install -r requirements.txt
cd docs
make html
Docs are written in reStructuredText and built using the Sphinx documentation generator.