Skip to content

jig

A Go-based reimplementation of the Puppet Development Kit (PDK), built to be fast, self-contained, and free of Ruby runtime dependencies.

Why jig?

PDK has been an essential tool for Puppet module authors for years. When Perforce moved PDK to a closed-source model, it created a real problem for teams and individuals who depend on open tooling for their workflows. On top of that, PDK carries a heavy Ruby runtime footprint, which adds friction to CI environments and developer machines alike.

jig aims to replace the parts of PDK that matter most: scaffolding new modules, building module packages, and cutting releases. It ships as a single static binary with no external runtime required.

Features

  • Scaffolding: jig new generates modules, classes, defined types, facts, functions, providers, tasks, tests, and transports. Use --skip-interview to scaffold non-interactively.
  • Templates: override the built-in templates locally, pull templates from remote repositories, and inspect them with jig templates dump and jig templates resolve.
  • Module lifecycle: jig renew refreshes a module against its templates, and jig convert brings existing modules under jig management.
  • Build & release: jig build packages a module and jig release publishes it to the Puppet Forge.
  • Quality checks: jig validate runs static checks and jig test unit runs unit tests.
  • Fleet management: jig msync keeps many modules in sync.

Installation

Requires Go 1.21 or later.

git clone https://github.com/voxpupuli/jig.git
cd jig
go build -o jig .

Move the resulting binary somewhere in your $PATH:

mv jig /usr/local/bin/

No other dependencies or runtimes needed.

Quick start

# Scaffold a new module (interactive interview)
jig new module mymodule
cd mymodule

# Generate a class inside it
jig new class myclass

# Run checks and tests
jig validate
jig test unit

# Build and publish to the Puppet Forge
jig build
jig release --version 1.0.0

Documentation

Full documentation lives in docs/:

Contributing

Contributions are welcome. The project is in early stages, so the best place to start is by opening an issue to discuss what you want to work on before sending a PR. See the contributing guide for project layout, testing conventions, git hooks, and design notes.

NOTICE

Some default template files included in this project are derived from the pdk-templates project, copyright Puppet Labs, and are used under the terms of the Apache License, Version 2.0.

License

See LICENSE.

About

A tool for building and publishing Puppet modules

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages