resources/Schema-Build.json

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "description": "Project Schema for Build only",
  "properties": {
    "ProjectName": {
      "type": "string"
    },
    "Description": {
      "type": "string"
    },
    "Version": {
      "type": "string"
    },
    "CopyResourcesToModuleRoot": {
      "type": "boolean"
    },
    "BuildRecursiveFolders": {
      "type": "boolean",
      "description": "Default enabled recursive discovery for src/classes, src/private and tests. src/public stays top-level only unless explicitly set to false for top-level-only discovery."
    },
    "SetSourcePath": {
      "type": "boolean",
      "description": "Default enabled source markers: emit '# Source: <relative path>' before each concatenated source file in the generated dist/<Project>/<Project>.psm1."
    },
    "FailOnDuplicateFunctionNames": {
      "type": "boolean",
      "description": "Default enabled validation: fail build when duplicate top-level function names exist in the generated dist/<Project>/<Project>.psm1."
    },
    "Preamble": {
      "type": "array",
      "description": "Optional module-level lines written at the very top of the generated dist/<Project>/<Project>.psm1 before any source markers or other generated content.",
      "items": {
        "type": "string"
      }
    },
    "Manifest": {
      "type": "object",
      "properties": {
        "Author": {
          "type": "string"
        },
        "PowerShellHostVersion": {
          "type": "string"
        },
        "GUID": {
          "type": "string"
        },
        "Tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ProjectUri": {
          "type": "string"
        }
      },
      "required": [
        "Author",
        "PowerShellHostVersion",
        "GUID"
      ]
    },
    "Package": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string"
        },
        "Types": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?:[Nn][Uu][Gg][Ee][Tt]|[Zz][Ii][Pp]|\\.[Nn][Uu][Pp][Kk][Gg]|\\.[Zz][Ii][Pp])$"
          }
        },
        "Latest": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "never",
                "stable",
                "always"
              ]
            }
          ]
        },
        "OutputDirectory": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "properties": {
                "Path": {
                  "type": "string"
                },
                "Clean": {
                  "type": "boolean"
                }
              }
            }
          ]
        },
        "PackageFileName": {
          "type": "string"
        },
        "AddVersionToFileName": {
          "type": "boolean"
        },
        "FileNamePattern": {
          "type": "string"
        },
        "Authors": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "Description": {
          "type": "string"
        },
        "RepositoryUrl": {
          "type": "string"
        },
        "RawRepositoryUrl": {
          "type": "string"
        },
        "UploadPath": {
          "type": "string"
        },
        "Headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "Auth": {
          "type": "object",
          "properties": {
            "HeaderName": {
              "type": "string"
            },
            "Scheme": {
              "type": "string"
            },
            "Token": {
              "type": "string"
            },
            "TokenEnvironmentVariable": {
              "type": "string"
            }
          }
        },
        "Repositories": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "Name": {
                "type": "string"
              },
              "Url": {
                "type": "string"
              },
              "UploadPath": {
                "type": "string"
              },
              "Headers": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "Auth": {
                "type": "object",
                "properties": {
                  "HeaderName": {
                    "type": "string"
                  },
                  "Scheme": {
                    "type": "string"
                  },
                  "Token": {
                    "type": "string"
                  },
                  "TokenEnvironmentVariable": {
                    "type": "string"
                  }
                }
              }
            },
            "required": [
              "Name",
              "Url"
            ]
          }
        }
      }
    }
  },
  "required": [
    "ProjectName",
    "Description",
    "Version",
    "Manifest"
  ]
}