pdns-cli 0.0.3

Rust client library and CLI for the PowerDNS Authoritative Server API
Documentation
# Table of Contents <!-- omit from toc -->

- [Overview]#overview
- [CLI]#cli
  - [Installation]#installation
  - [Connecting the to API]#connecting-the-to-api
  - [Examples]#examples
- [Client Library]#client-library
- [Project Status]#project-status
- [Development Notes]#development-notes

# Overview

This project provides two components:

1. **Library** — A Rust client library/SDK for interacting with the PowerDNS Authoritative Server API.
2. **CLI** — A command-line application built on top of the client library.

# CLI

## Installation

Like any rust crate, it can be installed via `cargo install pdns-cli` 

## Connecting the to API

The CLI expects 2 parameters:

1) The webser url

This url specifies the API endpoint to hit and can be specified in 2 ways
- `PDNS_WEBSERVER_URL` environment variable
- `webserver-url` cli parameter

See `pdns_client::Client::new` for restrictions on the url

2) The webserver API key

This is used for authenticating to the API (specified in the header of requests as `X-API-Key`) and can be specified in 2 ways
- `PDNS_API_KEY` environment variable
- `api-key` cli parameter

## Examples

```bash
export PDNS_WEBSERVER_URL=http://127.0.0.1:8081/
export PDNS_API_KEY=changeme

pdns-cli servers list
```

# Client Library

Documentation for the library crate is published to `docs.rs` and can be found at: https://docs.rs/pdns-cli/latest/pdns_client/.

# Project Status

This is a personal learning project, which leads to certain limitations, such as:

- Development is maintained on a best-effort basis. There is no guaranteed release schedule.
- The public API and supported feature set may remain intentionally minimal.
- Cross-platform support is limited and may not be actively tested.
- APIs and internal implementation details may not always be idiomatic.

# Development Notes

- This project is developed and tested only on Ubuntu 
- Rust patterns in internal code and ecosystem tooling may be in constant flux and may not always be idiomatic for Rust