2 unstable releases

new 0.2.0 Sep 12, 2024
0.1.0 Aug 8, 2024

#622 in Web programming

Download history 106/week @ 2024-08-08 5/week @ 2024-08-15

111 downloads per month

PostgreSQL

360KB
9K SLoC

PGXN Distribution Metadata

license-badge crates-badge release-badge ci-badge cov-badge docs-badge deps-badge

The pgxn_meta crate provides PGXN Meta v1 and v2 validation and management


The PGXN Meta v1 and v2 specs define the requirements for the metadata file (META.json) file for PGXN source distribution packages. This project provides Rust a crates for working with spec META.json files.

Crate Usage

Click to show `Cargo.toml`.
[dependencies]
serde_json = "1.0"
pgxn_meta = "0.2"
use serde_json::json;
use pgxn_meta::meta::Distribution;

func main() {
    // Load the contents of a META.json file into a serde_json::Value.
    let meta = json!({
      "name": "pair",
      "abstract": "A key/value pair data type",
      "version": "0.1.8",
      "maintainer": "theory <theory@pgxn.org>",
      "license": "postgresql",
      "provides": {
        "pair": {
          "file": "sql/pair.sql",
          "version": "0.1.8"
        }
      },
      "meta-spec": { "version": "1.0.0" }
    });

    // Validate and load the META.json contents.
    match Distribution::try_from(meta) {
        Err(e) => panic!("Validation failed: {e}"),
        Ok(dist) => println!("Loaded {} {}", dist.name(), dist.version()),
    };
}

See the pgxn_meta docs on docs.rs for complete details.

Installation

There are several ways to install pgxn_meta.

ubi

Install the universal binary installer (ubi) and use it to install pgxn_meta and many other tools.

ubi --project pgxn/meta --exe pgxn_meta --in ~/bin

Binary Releases

Grab the appropriate binary release, untar or unzip it, and put the pgxn_meta executable somewhere in your path.

Cargo

Compile and install pgxn_meta via cargo by running:

cargo install pgxn_meta

See the cargo docs to learn where the binary will be installed.

Usage

Simply execute pgxn_meta to validate the PGXN META.json file in the current directory:

pgxn_meta

If the file has a different name, simply pass it:

pgxn_meta widget.json

Contributing

We welcome community contributions to this project. All contributors must abide by the PostgresSQL Code of Conduct.

  • Create Issues to submit bug reports and feature requests
  • Submit Pull Requests to fix issues or add features

License

This project is distributed under the PostgreSQL License.

Dependencies

~12MB
~224K SLoC