MajorDomo project descriptions
The Projects interface provides the MajorDomo UI with a list of existing Project descriptions for a user, together with the associated build targets.
Getting project definitions
httpRoutes:
projects:
route: /projects/<workspacePath>/<project>
actions:
- GET
response: projectDefinition
Project definition files
On disk a project definition file is a YAML file loosely based upon the Python Sake format. In this example, the reply to this REST request is essentially a project definition file as it would be found on the disk in the project workspace.
jsonExamples:
projectDefinition:
title: Project definition for the 'Measuring Heyting algebras' paper
httpRoutes:
route:
mountPoint: /projects
workspacePath: measuringHeyting
project: project.yaml
action: GET
---
description: |
The Measuring Heyting algebras paper looks at...
targets:
html:
help: build the html version of the paper
dependencies:
- measuringHeyting.pdf
worker: html2pdf
pdf:
help: build the pdf version of the paper
dependencies:
- measuringHeyting.tex
worker: context
JSON project definition
A project definition is a string description together with a dictionary of targets. Each target key is the name of a target. Each target item consists of a help string, a list of known (top-level file) dependencies, and the name of a ComputePods worker who has the competence to build this target.
jsonSchemaDefs:
projectDefinition:
type: object
properties:
description:
type: string
targets:
type: dictionary
items:
type: object
properties:
help:
type: string
dependencies:
type: array
items:
type: string
worker:
type: string