0.1.3 • Published 5 years ago

evergreen-shrub v0.1.3

Weekly downloads
14,025
License
Apache-2.0
Repository
github
Last release
5 years ago

shrub.ts – Generate Evergreen Project Configs in TypeScript and JavaScript

Code Style: Google

Overview

shrub.ts is a library for programatically building Evergreen project configurations. It is especially useful for generating tasks dynamically through the generate.tasks command

Installation

watch this space

Example

Supposed you want to write the following project configuration (from Evergreen's wiki):

tasks:
- name: compile
  commands:
    - command: git.get_project
      params:
        directory: src
    - func: "compile and upload to s3"

You can use shrub.ts to build the above config:

const c = new Configuration();

const getProjCommand = new CommandDefinition();
getProjCommand.setCommand('git.get_project');
getProjCommand.getParamsMap().set('directory', 'src');

const uploadCommand = new CommandDefinition();
uploadCommand.setFunc('compile and upload to s3');

const task = new Task();
task.setName('compile')
task.setCommandsList([
   getProjCommand,
   uploadCommand, 
]);

const c = new Configuration();
c.addTasks(task);

return JSON.stringify(c.toObject(), jsonReplacer);

If you are familiar with the chaining syntax used by shrub and shrub.py, you can use a similar syntax in shrub.ts. It is more concise than the naive version above with indentation resembling the structure of the generated config file:

const c = new Configuration;

const task = chain(
    Task,
    o => o.setName('compile'),
    o => o.setCommandsList([
        chain(
            CommandDefinition,
            o => o.setCommand('git.getproject'),
            o => o.getParamsMap().set('directory', 'src')
        ),
        chain(CommandDefinition, o => o.setFunc('compile and upload to s3')),
    ]),
)

c.addTasks(task);

return JSON.stringify(c.toObject(), jsonReplacer);

For more advanced examples, please see the shrub.ts integration tests.

Development

Run source scripts/gen_shrub_proto_ts_files.sh after installing protobuf's command line tool.

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago