brix 0.4.2

Brix is a CLI tool written in Rust for scaffolding and code generation.
{
  "$schema": "http://json-schema.org/draft-07/schema",
  "title": "JSON Schema for Brix, a CLI tool for scaffolding your codebase",
  "description": "Brix is a CLI tool written in Rust for scaffolding and code generation.",
  "additionalProperties": false,
  "required": ["commands"],
  "properties": {
    "context": {
      "type": "object",
      "description": "Additional context information to be used within the file"
    },
    "commands": {
      "type": "array",
      "description": "The list of commands that will be executed in order by Brix",
      "items": {
        "type": "object",
        "properties": {
          "copy": {
            "$ref": "#/$defs/copy"
          },
          "exec": {
            "$ref": "#/$defs/exec"
          },
          "mkdir": {
            "$ref": "#/$defs/mkdir"
          },
          "search_replace": {
            "$ref": "#/$defs/search_replace"
          },
          "template": {
            "$ref": "#/$defs/template"
          }
        }
      }
    }
  },
  "$defs": {
    "copy": {
      "description": "The copy command copies a file from the source file to the destination file",
      "type": "object",
      "required": ["source", "destination"],
      "properties": {
        "source": {
          "type": "string",
          "description": "The path to the source file to copy"
        },
        "destination": {
          "type": "string",
          "description": "The path to the destination file to copy to"
        },
        "overwrite": {
          "type": "boolean",
          "description": "Whether or not to overwrite the destination file if it already exists"
        }
      }
    },
    "exec": {
      "description": "The exec command executes commands in a shell",
      "type": "object",
      "required": ["commands"],
      "properties": {
        "commands": {
          "type": "array",
          "description": "The list of commands to execute in order",
          "items": {
            "type": "string"
          }
        },
        "stdout": {
          "type": "boolean",
          "description": "Whether or not to print the stdout of the command"
        }
      }
    },
    "mkdir": {
      "description": "The mkdir command recursively creates a directory",
      "type": "object",
      "required": ["destination"],
      "properties": {
        "destination": {
          "type": "string",
          "description": "The path of the directory to create"
        }
      }
    },
    "search_replace": {
      "description": "The search_replace command uses searches for an expression within a file and replaces it with new content",
      "type": "object",
      "required": ["destination", "search", "replace"],
      "properties": {
        "destination": {
          "type": "string",
          "description": "The path of the file to search and replace"
        },
        "search": {
          "type": "string",
          "description": "The expression to search for (supports Perl-like regular expressions with https://crates.io/crates/fancy_regex/)"
        },
        "replace": {
          "type": "string",
          "description": "The expression to replace the search with"
        }
      }
    },
    "template": {
      "description": "The template command uses a template to generate a file",
      "type": "object",
      "required": ["source", "destination"],
      "properties": {
        "source": {
          "type": "string",
          "description": "The path to the template file"
        },
        "destination": {
          "type": "string",
          "description": "The destination file to output"
        },
        "overwrite": {
          "type": "boolean",
          "description": "Whether or not to overwrite the destination file if it already exists"
        },
        "context": {
          "type": "object",
          "description": "The context to use when rendering the template"
        }
      }
    }
  }
}