Skip to main content

Extensible CLI to automate documentation in wiki platforms (Azure DevOps, Confluence, etc.) using Markdown. Built on a plugin and provider architecture, it enables generating, updating, and structuring documentation as code.

Project description

wikiops

wikiops is the host application and CLI runtime for the WikiOps ecosystem.

It orchestrates documentation automation workflows around wikiops-sdk by loading configuration, discovering plugins and providers, building execution context, rendering previews, and applying planned changes.

What This Repository Contains

  • A command-line interface for WikiOps execution workflows.
  • The host orchestrator that coordinates planning and apply flows.
  • Runtime loading for plugins and providers through Python entry points.
  • YAML configuration loading for providers, profiles, refs, and plugin config.
  • Document loading, diff rendering, and apply delegation.
  • A built-in Azure DevOps Wiki provider.
  • A strict pytest suite with coverage enforcement.

What This Repository Does Not Contain

  • The public extension contracts and shared domain models.
  • A stable SDK-level API surface for plugins and providers.
  • Built-in documentation plugins.
  • Project-specific documentation business logic.

Those concerns belong to wikiops-sdk and external plugin repositories.

Relationship To wikiops-sdk

The WikiOps ecosystem is intentionally split across repositories:

plugin -> sdk <- host
provider -> sdk <- host
  • wikiops-sdk
    • defines the shared contracts, domain models, and compatibility helpers
  • wikiops
    • orchestrates execution around those SDK contracts
  • plugins
    • implement documentation planning logic
  • providers
    • implement persistence and read-side infrastructure

Canonical SDK documentation lives in the separate SDK repository:

Quick Start

Install the host and its runtime dependencies:

poetry install --with test

Inspect the currently available extensions:

poetry run wikiops plugins
poetry run wikiops providers

The host currently ships with a built-in provider implementation:

  • azure_devops_wiki

Plugins are expected to be installed separately through Python packages that expose the wikiops.plugins entry point group.

Example Configuration

The host reads YAML configuration with provider definitions, profiles, refs, and plugin-specific settings.

providers:
  azdo:
    type: azure_devops_wiki
    organization: acme
    project: engineering
    wiki: platform

profiles:
  default:
    provider: azdo
    refs:
      docs_root:
        provider: azdo
        kind: path
        locator:
          path: /Engineering/Teams
    plugins:
      acme.team-docs:
        parent_alias: docs_root

Example Input

team_name: Platform

Plan A Run

Replace acme.team-docs with an installed plugin ID shown by wikiops plugins.

poetry run wikiops run \
  --config wikiops.yaml \
  --profile default \
  --plugin acme.team-docs \
  --input input.yaml

This prints:

  • the planned ChangeSet as JSON
  • a preview diff

Apply A Run

poetry run wikiops run \
  --config wikiops.yaml \
  --profile default \
  --plugin acme.team-docs \
  --input input.yaml \
  --apply

On apply, the CLI also prints the provider ApplyResult and exits with code 1 if any operation failed.

Plugin Resources

wikiops injects a PluginResourceProvider when loading plugin entry points.

  • Resource paths are relative to the plugin package root.
  • The host does not assume a fixed resources/ directory.
  • If a plugin stores assets under resources/, it should request them as resources/....
  • If a plugin already provides its own resources object, the host leaves it untouched.

Documentation Map

Start here depending on your role:

The full host documentation index lives at docs/index.md.

Tests

This repository ships with a strict pytest suite and coverage threshold.

poetry run pytest

The tests are also useful as executable examples of the current host behavior.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wikiops-1.1.0.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wikiops-1.1.0-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file wikiops-1.1.0.tar.gz.

File metadata

  • Download URL: wikiops-1.1.0.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wikiops-1.1.0.tar.gz
Algorithm Hash digest
SHA256 80af2c63a3f41be611beb42758ec0fa8e13372cf2ce2474fa4944d7c2e35e011
MD5 3a7d52f8bac705100251f1c7c91b7b20
BLAKE2b-256 f53767a0e18459ae3f20e09345cc7aafe10d4a9fb402a54f3e8da7a3dd7f852c

See more details on using hashes here.

Provenance

The following attestation bundles were made for wikiops-1.1.0.tar.gz:

Publisher: release.yml on sgg10/wikiops

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wikiops-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: wikiops-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wikiops-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 45266cf286cf9925853fb3e6ff252101035eb4a0312e1381bf3fa0dea0ee4c2c
MD5 47dcb0e4bd14069cdac3ac401d490a35
BLAKE2b-256 54840143692cd48b7e7d96f793c85676ccf8992650ff36e79952fd1c645d489e

See more details on using hashes here.

Provenance

The following attestation bundles were made for wikiops-1.1.0-py3-none-any.whl:

Publisher: release.yml on sgg10/wikiops

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page