spaceforge 0.0.12__py3-none-any.whl → 0.0.14__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- spaceforge/_version_scm.py +2 -2
- spaceforge/cls.py +5 -2
- spaceforge/plugin.py +58 -2
- spaceforge/schema.json +12 -5
- {spaceforge-0.0.12.dist-info → spaceforge-0.0.14.dist-info}/METADATA +1 -1
- {spaceforge-0.0.12.dist-info → spaceforge-0.0.14.dist-info}/RECORD +10 -10
- {spaceforge-0.0.12.dist-info → spaceforge-0.0.14.dist-info}/WHEEL +0 -0
- {spaceforge-0.0.12.dist-info → spaceforge-0.0.14.dist-info}/entry_points.txt +0 -0
- {spaceforge-0.0.12.dist-info → spaceforge-0.0.14.dist-info}/licenses/LICENSE +0 -0
- {spaceforge-0.0.12.dist-info → spaceforge-0.0.14.dist-info}/top_level.txt +0 -0
spaceforge/_version_scm.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.0.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 0,
|
|
31
|
+
__version__ = version = '0.0.14'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 0, 14)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
spaceforge/cls.py
CHANGED
|
@@ -145,7 +145,7 @@ class Webhook:
|
|
|
145
145
|
|
|
146
146
|
name_prefix: str
|
|
147
147
|
endpoint: str
|
|
148
|
-
secretFromParameter: str
|
|
148
|
+
secretFromParameter: Optional[str] = optional_field
|
|
149
149
|
labels: Optional[List[str]] = optional_field
|
|
150
150
|
|
|
151
151
|
|
|
@@ -202,4 +202,7 @@ if __name__ == "__main__":
|
|
|
202
202
|
|
|
203
203
|
from pydantic import TypeAdapter
|
|
204
204
|
|
|
205
|
-
|
|
205
|
+
schema = TypeAdapter(PluginManifest).json_schema()
|
|
206
|
+
schema["$schema"] = "http://json-schema.org/draft-07/schema#"
|
|
207
|
+
|
|
208
|
+
print(json.dumps(schema, indent=2))
|
spaceforge/plugin.py
CHANGED
|
@@ -43,6 +43,7 @@ class SpaceforgePlugin(ABC):
|
|
|
43
43
|
self._api_enabled = bool(self._api_token and self.spacelift_domain)
|
|
44
44
|
self._workspace_root = os.getcwd()
|
|
45
45
|
self._spacelift_markdown_endpoint = None
|
|
46
|
+
self._markdown_endpoint_token = os.environ.get("SPACELIFT_API_TOKEN") or False
|
|
46
47
|
|
|
47
48
|
# This should be the last thing we do in the constructor
|
|
48
49
|
# because we set api_enabled to false if the domain is set up incorrectly.
|
|
@@ -109,6 +110,58 @@ class SpaceforgePlugin(ABC):
|
|
|
109
110
|
|
|
110
111
|
return logger
|
|
111
112
|
|
|
113
|
+
def use_user_token(self, id: str, token: str) -> None:
|
|
114
|
+
headers = {
|
|
115
|
+
"Content-Type": "application/json",
|
|
116
|
+
"Authorization": f"Bearer {self._api_token}",
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
query = """
|
|
120
|
+
mutation requestApiKey($id: ID!, $secret: String!){
|
|
121
|
+
apiKeyUser(id: $id, secret: $secret){
|
|
122
|
+
jwt
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
data: Dict[str, Any] = {
|
|
128
|
+
"query": query,
|
|
129
|
+
"variables": {"id": id, "secret": token},
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
req = urllib.request.Request(
|
|
133
|
+
self.spacelift_domain, # type: ignore[arg-type]
|
|
134
|
+
json.dumps(data).encode("utf-8"),
|
|
135
|
+
headers,
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
self.logger.debug(f"Sending request to url: {self.spacelift_domain}")
|
|
139
|
+
try:
|
|
140
|
+
with urllib.request.urlopen(req) as response:
|
|
141
|
+
resp: Dict[str, Any] = json.loads(response.read().decode("utf-8"))
|
|
142
|
+
except urllib.error.HTTPError as e:
|
|
143
|
+
if hasattr(e, "read"):
|
|
144
|
+
resp = json.loads(e.read().decode("utf-8"))
|
|
145
|
+
else:
|
|
146
|
+
# We should not get here, but if we do re-raise the exception
|
|
147
|
+
self.logger.error(f"HTTP error occurred: ({e.code}) {e.reason} {e.msg}")
|
|
148
|
+
raise e
|
|
149
|
+
|
|
150
|
+
if "errors" in resp:
|
|
151
|
+
self.logger.error(f"Error: {resp['errors']}")
|
|
152
|
+
return
|
|
153
|
+
|
|
154
|
+
if (
|
|
155
|
+
"data" in resp
|
|
156
|
+
and "apiKeyUser" in resp["data"]
|
|
157
|
+
and "jwt" in resp["data"]["apiKeyUser"]
|
|
158
|
+
):
|
|
159
|
+
self._api_token = resp["data"]["apiKeyUser"]["jwt"]
|
|
160
|
+
self._api_enabled = True
|
|
161
|
+
self.logger.debug("Successfully set user token for API calls.")
|
|
162
|
+
else:
|
|
163
|
+
self.logger.error(f"API call returned no data: {resp}")
|
|
164
|
+
|
|
112
165
|
def get_available_hooks(self) -> List[str]:
|
|
113
166
|
"""
|
|
114
167
|
Get list of hook methods available in this plugin.
|
|
@@ -256,13 +309,16 @@ class SpaceforgePlugin(ABC):
|
|
|
256
309
|
self.logger.info(markdown)
|
|
257
310
|
return True
|
|
258
311
|
|
|
259
|
-
if
|
|
312
|
+
if (
|
|
313
|
+
self._spacelift_markdown_endpoint is None
|
|
314
|
+
or not self._markdown_endpoint_token
|
|
315
|
+
):
|
|
260
316
|
self.logger.error(
|
|
261
317
|
'API is not enabled, please export "SPACELIFT_API_TOKEN" and "TF_VAR_spacelift_graphql_endpoint".'
|
|
262
318
|
)
|
|
263
319
|
return False
|
|
264
320
|
|
|
265
|
-
headers = {"Authorization": f"Bearer {self.
|
|
321
|
+
headers = {"Authorization": f"Bearer {self._markdown_endpoint_token}"}
|
|
266
322
|
body = {
|
|
267
323
|
"plugin_name": self.__plugin_name__,
|
|
268
324
|
}
|
spaceforge/schema.json
CHANGED
|
@@ -260,8 +260,15 @@
|
|
|
260
260
|
"type": "string"
|
|
261
261
|
},
|
|
262
262
|
"secretFromParameter": {
|
|
263
|
-
"
|
|
264
|
-
|
|
263
|
+
"anyOf": [
|
|
264
|
+
{
|
|
265
|
+
"type": "string"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"type": "null"
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
"title": "Secretfromparameter"
|
|
265
272
|
},
|
|
266
273
|
"labels": {
|
|
267
274
|
"anyOf": [
|
|
@@ -280,8 +287,7 @@
|
|
|
280
287
|
},
|
|
281
288
|
"required": [
|
|
282
289
|
"name_prefix",
|
|
283
|
-
"endpoint"
|
|
284
|
-
"secretFromParameter"
|
|
290
|
+
"endpoint"
|
|
285
291
|
],
|
|
286
292
|
"title": "Webhook",
|
|
287
293
|
"type": "object"
|
|
@@ -383,5 +389,6 @@
|
|
|
383
389
|
"author"
|
|
384
390
|
],
|
|
385
391
|
"title": "PluginManifest",
|
|
386
|
-
"type": "object"
|
|
392
|
+
"type": "object",
|
|
393
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
387
394
|
}
|
|
@@ -2,13 +2,13 @@ spaceforge/README.md,sha256=8o1Nuyasb4OxX3E7ZycyducOrR4J19bZcHrLvFeoFNg,7730
|
|
|
2
2
|
spaceforge/__init__.py,sha256=TU-vvm15dK1ucixNW0V42eTT72x3_hmKSyxP4MC1Occ,589
|
|
3
3
|
spaceforge/__main__.py,sha256=c3nAw4WBnHXIcfMlRV6Ja7r87pEhSeK-SAqiSYIasIY,643
|
|
4
4
|
spaceforge/_version.py,sha256=RP_LfUd4ODnrfwn9nam8wB6bR3lM4VwmoRxK08Tkiiw,2155
|
|
5
|
-
spaceforge/_version_scm.py,sha256=
|
|
6
|
-
spaceforge/cls.py,sha256=
|
|
5
|
+
spaceforge/_version_scm.py,sha256=YDX9ERYoOeE60PulkdUCy2JxmS89Xb_igX2wwbidLMQ,706
|
|
6
|
+
spaceforge/cls.py,sha256=8jZ0noS-kIBQWHp7pWHOX6yzs5N30gIEm6-slWgBaKI,6182
|
|
7
7
|
spaceforge/conftest.py,sha256=U-xCavCsgRAQXqflIIOMeq9pcGbeqRviUNkEXgZol8g,2141
|
|
8
8
|
spaceforge/generator.py,sha256=7tt0zpqrD2pZsoVxQa0BfzBH1ZtGr6o3r_LmpBjrOJk,16739
|
|
9
|
-
spaceforge/plugin.py,sha256=
|
|
9
|
+
spaceforge/plugin.py,sha256=fuATKzkkev2hNKWpQYMwJs1ZHgYKxEXGdlqHQ_wmpZ4,16057
|
|
10
10
|
spaceforge/runner.py,sha256=aBQQLG8MFVrqCzM0X8HgERYbhLKbmlOHUPKjV7-xvpA,3163
|
|
11
|
-
spaceforge/schema.json,sha256=
|
|
11
|
+
spaceforge/schema.json,sha256=F0STokM3YYT0xzcNdtnELZJJgpyi49mwk9Oj8ueD39s,10631
|
|
12
12
|
spaceforge/test_cls.py,sha256=nXAgbnFnGdFxrtA7vNXiePjNUASuoYW-lEuQGx9WMGs,468
|
|
13
13
|
spaceforge/test_generator.py,sha256=Nst3YVu_iZbFopH6ajjxCfqYrZvybteGbwMfZzjBFnI,32615
|
|
14
14
|
spaceforge/test_generator_binaries.py,sha256=X_7pPLGE45eQt-Kv9_ku__LsyLgOvViHc_BvVpSCMp0,7263
|
|
@@ -25,9 +25,9 @@ spaceforge/test_runner_core.py,sha256=eNR9YOwJwv7LsMtNQ4WXXMPIW6RE_A7hUp4bCpzz1R
|
|
|
25
25
|
spaceforge/test_runner_execution.py,sha256=BRlOApCmlpjE9YYvqHc8creSRu2vyPubzOCVXv-on0w,5335
|
|
26
26
|
spaceforge/templates/binary_install.sh.j2,sha256=UjP_kAdvkkATKds2nqk4ouqLhuIfCgM_x0WQIl1hbIo,477
|
|
27
27
|
spaceforge/templates/ensure_spaceforge_and_run.sh.j2,sha256=g5BldIEve0IkZ-mCzTXfB_rFvyWqUJqymRRaaMrpp0s,550
|
|
28
|
-
spaceforge-0.0.
|
|
29
|
-
spaceforge-0.0.
|
|
30
|
-
spaceforge-0.0.
|
|
31
|
-
spaceforge-0.0.
|
|
32
|
-
spaceforge-0.0.
|
|
33
|
-
spaceforge-0.0.
|
|
28
|
+
spaceforge-0.0.14.dist-info/licenses/LICENSE,sha256=wyljRrfnWY2ggQKkSCg3Nw2hxwPMmupopaKs9Kpgys8,1065
|
|
29
|
+
spaceforge-0.0.14.dist-info/METADATA,sha256=zT9cFLQOwMjkHyrXeUDN4a0Pm_elJI2dpMhrvWetjZc,16804
|
|
30
|
+
spaceforge-0.0.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
31
|
+
spaceforge-0.0.14.dist-info/entry_points.txt,sha256=qawuuKBSNTGg-njnQnhxxFldFvXYAPej6bF_f3iyQ48,56
|
|
32
|
+
spaceforge-0.0.14.dist-info/top_level.txt,sha256=eVw-Lw4Th0oHM8Gx1Y8YetyNgbNbMBU00yWs-kwGeSs,11
|
|
33
|
+
spaceforge-0.0.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|