What Goes in a Rug Archive?

What goes in a Rug Archive?

A key design goal was to respect your own tooling as much as possible so that every project should be a working Atomist project, and every Atomist project is a working project.

The Atomist Rug DSL was designed to work unintrusively alongside your existing projects to automate all the slow, annoying tasks of working in a modern software development environment.

Atomist's Rug DSL can be expressed and packaged alongside your existing projects. A project that has a .atomist directory, along with some other artifacts that we'll explain here, is referred to as a Rug project.

A packaged (zipped) Rug Project is referred to as a Rug project.

Exploring a very basic Rug Project

A very basic Rug project, along with some example Rug scripts and other bits and pieces, is provided by creating a new project using the Rug project generator. You can run this generator using the Atomist Button below.

Get Started with Atomist

The resulting project will have the following contents:

README.md
.atomist/
  pom.xml
  assembly.xml
  tests/
  editors/
  reviewers/
  templates/
.atomist.yml

The README.md is a standard project README file. The atomist.yml file provides information on what Rugs have operated on the repo. The contents of the .atomist directory are described in the next section.

The .atomist directory

Atomist Rug artifacts need to work happily alongside whatever languages, frameworks or other artifacts may be present in your project. For this reason, Rug artifacts are safely contained in a .atomist directory that has the following general structure:

.atomist/
  manifest.yml <= Metadata for the Rug project
  editors/     <= Rugs providing editors, generators, and conditional predicates
  executors/   <= Rugs that will work across multiple repositories
  reviewers/   <= Rugs that will provide feedback
  templates/   <= Templates  used by Rugs
  tests/       <= BDD-style tests for your Rugs

Files in the editors, executors, and reviewers directory use the .rug extension if they are using the Rug DSL or the .ts extension if they are written in TypeScript.

The templates in the templates directory can be either Velocity templates with a .vm extension or Mustache templates with a .mustache extension.

Rug tests use the .rt extension.

Next steps