{
  "repo": "pingcap/campaign",
  "binary": "gaday-invitation-letter",
  "binary_path": "gaday/invitation-letter/generate.js",
  "dependencies": {
    "CLI node invitation-letter/generate.js <username|ALL>": {
      "infrastructure": {
        "filesystem": {
          "conditions": [
            "Always during execution"
          ],
          "operations": [
            {
              "operation": "READ / WRITE FILES",
              "trigger": "Load contributor JSON and write generated JPEG images",
              "conditions": [
                "Generator starts"
              ],
              "implementation": "fs.readFileSync('../webpage/contributors.json'); page.screenshot({path: `${__dirname}/images/${name}.jpeg`})"
            }
          ]
        }
      },
      "services": [
        {
          "name": "puppeteer",
          "target_repo": "external/puppeteer",
          "target_interface": "browser.newPage / page.goto / page.screenshot",
          "operation_type": "headless_browser",
          "conditions": [
            "Always when generating an invitation image"
          ],
          "operations": [
            {
              "operation": "RENDER HTML TO IMAGE",
              "trigger": "Open local invitation HTML and capture a screenshot",
              "conditions": [
                "generate(name) is called"
              ],
              "implementation": "puppeteer.launch(); page.goto(file://.../index.html#name); page.screenshot(...)"
            }
          ]
        }
      ]
    }
  }
}
