forked from pie-extensions/protobuf
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.pie-mirror.schema.json
More file actions
172 lines (172 loc) · 7.17 KB
/
Copy path.pie-mirror.schema.json
File metadata and controls
172 lines (172 loc) · 7.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": ".pie-mirror.json configuration",
"description": "Configuration for PIE-compatible mirror repos managed by pie-extensions/mirror-action",
"type": "object",
"required": ["upstream", "php_ext_name"],
"properties": {
"$schema": {
"type": "string"
},
"upstream": {
"type": "object",
"description": "Upstream repository to mirror from",
"required": ["repo", "type"],
"properties": {
"repo": {
"type": "string",
"description": "GitHub repository in owner/repo format (e.g. \"grpc/grpc\")",
"pattern": "^[^/]+/[^/]+$"
},
"type": {
"type": "string",
"enum": ["github"],
"description": "Repository platform type (only \"github\" is supported)"
}
},
"additionalProperties": false
},
"php_ext_name": {
"type": "string",
"description": "PHP extension name as reported by php -m. Must match php-ext.extension-name in composer.json"
},
"source_dir": {
"type": "string",
"description": "Directory where upstream source code is extracted, relative to repo root",
"default": "src/"
},
"sync": {
"type": "object",
"description": "Controls version detection and filtering during sync",
"properties": {
"prereleases": {
"type": "boolean",
"description": "Include upstream pre-releases (alpha, beta, rc, etc.)",
"default": false
},
"initial-versions": {
"type": "integer",
"description": "On first sync (composer.json version is 0.0.0), limit to the last N upstream releases",
"default": 5,
"minimum": 1
},
"exclude-tags": {
"type": "array",
"description": "Regex patterns to exclude specific upstream tags from syncing",
"items": {
"type": "string",
"description": "Regex pattern (e.g. \".*-pre\\\\d+\" to exclude pre-release-like tags)"
},
"default": []
}
},
"additionalProperties": false
},
"hooks": {
"type": "object",
"description": "Custom shell commands to run during the sync process",
"properties": {
"post-extract": {
"type": "array",
"description": "Commands to run after tarball extraction, before composer.json update and commit. Each runs via sh -c from repo root. Available env vars: PIE_SYNC_TAG, PIE_SYNC_VERSION, PIE_SOURCE_DIR, GITHUB_WORKSPACE",
"items": {
"type": "string",
"minLength": 1
},
"default": []
}
},
"additionalProperties": false
},
"build": {
"type": "object",
"description": "Binary build configuration. When enabled, mirror-action generates build matrices and creates draft releases",
"properties": {
"enabled": {
"type": "boolean",
"description": "Enable binary building for this extension",
"default": false
},
"os": {
"type": "array",
"description": "Operating systems to build for",
"items": {
"type": "string"
},
"default": ["linux", "darwin"]
},
"arches": {
"type": "array",
"description": "CPU architectures to build for",
"items": {
"type": "string"
},
"default": ["x86_64", "arm64"]
},
"zts": {
"type": "array",
"description": "PHP thread safety variants",
"items": {
"type": "string",
"enum": ["nts", "ts"]
},
"default": ["nts", "ts"]
},
"libc": {
"type": "array",
"description": "C library variants (Linux only; bsdlibc is automatically used for Darwin)",
"items": {
"type": "string"
},
"default": ["glibc", "musl"]
},
"configure-flags": {
"type": "string",
"description": "Additional flags to pass to the extension's ./configure script",
"default": ""
},
"apk-packages": {
"type": "string",
"description": "Space-separated list of additional Alpine Linux packages to install in the build container",
"default": ""
},
"build-path": {
"type": "string",
"description": "Path to extension build config (config.m4) relative to source_dir",
"default": "."
},
"php-version-constraints": {
"type": "array",
"description": "Maps extension version ranges to supported PHP versions. First matching constraint wins. Uses npm semver syntax for ext-versions (e.g. \"<1.78.0\", \">=2.0.0\", \"*\")",
"items": {
"type": "object",
"required": ["ext-versions", "php-versions"],
"properties": {
"ext-versions": {
"type": "string",
"description": "Semver range for extension versions (e.g. \"<1.78.0\", \">=2.0.0\", \"*\")"
},
"php-versions": {
"type": "array",
"description": "PHP versions to build for when extension version matches this range",
"items": {
"type": "string"
},
"minItems": 1
}
},
"additionalProperties": false
},
"default": [
{
"ext-versions": "*",
"php-versions": ["8.2", "8.3", "8.4", "8.5"]
}
]
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}