snapctl 1.1.2__tar.gz → 1.1.3__tar.gz
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.
Potentially problematic release.
This version of snapctl might be problematic. Click here for more details.
- {snapctl-1.1.2 → snapctl-1.1.3}/PKG-INFO +1 -1
- {snapctl-1.1.2 → snapctl-1.1.3}/pyproject.toml +1 -1
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/commands/byosnap.py +1 -1
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/config/constants.py +2 -1
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/config/hashes.py +5 -4
- snapctl-1.1.3/snapctl/data/releases/1.1.3.mdx +5 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/main.py +202 -103
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/utils/telemetry.py +6 -1
- {snapctl-1.1.2 → snapctl-1.1.3}/LICENSE +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/README.md +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/__init__.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/__main__.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/commands/__init__.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/commands/application.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/commands/byogs.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/commands/byows.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/commands/game.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/commands/generate.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/commands/release_notes.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/commands/snapend.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/commands/snapend_manifest.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/commands/snaps.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/config/__init__.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/config/app.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/config/endpoints.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/__init__.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/profiles/__init__.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/profiles/snapser-byosnap-profile.json +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/profiles/snapser-byosnap-profile.yaml +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/profiles/snapser-byosnap-profile.yml +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/1.0.0.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/1.0.2.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/1.0.3.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/1.0.4.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/1.1.0.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/1.1.2.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/__init__.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.46.0.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.46.4.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.47.0.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.47.1.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.47.2.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.48.0.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.49.0.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.49.1.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.49.2.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.49.3.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.50.0.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.51.0.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/data/releases/beta-0.53.1.mdx +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/types/__init__.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/types/definitions.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/utils/__init__.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/utils/echo.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/utils/exceptions.py +0 -0
- {snapctl-1.1.2 → snapctl-1.1.3}/snapctl/utils/helper.py +0 -0
|
@@ -1350,7 +1350,7 @@ class ByoSnap:
|
|
|
1350
1350
|
if self.path is not None or self.resources_path is not None:
|
|
1351
1351
|
self.upload_docs(no_exit=True)
|
|
1352
1352
|
snapctl_success(
|
|
1353
|
-
message='BYOSNAP publish successful', no_exit=no_exit)
|
|
1353
|
+
message='BYOSNAP publish image successful', no_exit=no_exit)
|
|
1354
1354
|
|
|
1355
1355
|
def publish_version(self, no_exit: bool = False) -> None:
|
|
1356
1356
|
"""
|
|
@@ -3,13 +3,14 @@ Constants used by snapctl
|
|
|
3
3
|
"""
|
|
4
4
|
COMPANY_NAME = 'Snapser'
|
|
5
5
|
VERSION_PREFIX = ''
|
|
6
|
-
VERSION = '1.1.
|
|
6
|
+
VERSION = '1.1.3'
|
|
7
7
|
CONFIG_FILE_MAC = '~/.snapser/config'
|
|
8
8
|
CONFIG_FILE_WIN = '%homepath%\\.snapser\\config'
|
|
9
9
|
|
|
10
10
|
DEFAULT_PROFILE = 'default'
|
|
11
11
|
API_KEY = 'SNAPSER_API_KEY'
|
|
12
12
|
URL_KEY = 'SNAPSER_URL_KEY'
|
|
13
|
+
TEST_MODE = 'SNAPSER_TEST_MODE'
|
|
13
14
|
CONFIG_PATH_KEY = 'SNAPSER_CONFIG_PATH'
|
|
14
15
|
SERVER_CALL_TIMEOUT = 300
|
|
15
16
|
|
|
@@ -182,10 +182,11 @@ SNAPEND_MANIFEST_TYPES: Dict[str, Dict[str, str]] = {
|
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
SERVICE_IDS: List[str] = [
|
|
185
|
-
'analytics', '
|
|
186
|
-
'
|
|
187
|
-
'
|
|
188
|
-
'
|
|
185
|
+
'analytics', 'assets', 'auth', 'chat', 'client-logs', 'decorators', 'event-bus', 'experiments',
|
|
186
|
+
'gdpr', 'game-server-fleets', 'guilds', 'iap', 'inbox', 'inventory', 'kws', 'leaderboards',
|
|
187
|
+
'events', 'lobbies', 'matchmaking', 'notifications', 'parties', 'photon', 'profiles', 'quago',
|
|
188
|
+
'quests', 'relay', 'remote-config', 'scheduler', 'sequencer', 'social-graph', 'statistics',
|
|
189
|
+
'storage', 'trackables'
|
|
189
190
|
]
|
|
190
191
|
|
|
191
192
|
SDK_ACCESS_AUTH_TYPE_LOOKUP: Dict[str, Dict[str, str]] = {
|
|
@@ -262,10 +262,12 @@ def common(
|
|
|
262
262
|
def validate(
|
|
263
263
|
ctx: typer.Context,
|
|
264
264
|
api_key: Union[str, None] = typer.Option(
|
|
265
|
-
None, "--api-key",
|
|
265
|
+
None, "--api-key",
|
|
266
|
+
help="API Key override.", callback=api_key_context_callback
|
|
266
267
|
),
|
|
267
268
|
profile: Union[str, None] = typer.Option(
|
|
268
|
-
None, "--profile",
|
|
269
|
+
None, "--profile",
|
|
270
|
+
help="Profile from the Snapser config to use.", callback=profile_context_callback
|
|
269
271
|
),
|
|
270
272
|
) -> None:
|
|
271
273
|
"""
|
|
@@ -285,13 +287,16 @@ def release_notes(
|
|
|
285
287
|
..., help="Release Notes Subcommands: " + ", ".join(ReleaseNotes.SUBCOMMANDS) + "."
|
|
286
288
|
),
|
|
287
289
|
version: str = typer.Option(
|
|
288
|
-
VERSION_PREFIX + VERSION,
|
|
290
|
+
VERSION_PREFIX + VERSION,
|
|
291
|
+
help="(optional: show-version) If not passed will show the latest version."
|
|
289
292
|
),
|
|
290
293
|
api_key: Union[str, None] = typer.Option(
|
|
291
|
-
None, "--api-key",
|
|
294
|
+
None, "--api-key",
|
|
295
|
+
help="API Key override.", callback=api_key_context_callback
|
|
292
296
|
),
|
|
293
297
|
profile: Union[str, None] = typer.Option(
|
|
294
|
-
None, "--profile",
|
|
298
|
+
None, "--profile",
|
|
299
|
+
help="Profile from the Snapser config to use.", callback=profile_context_callback
|
|
295
300
|
),
|
|
296
301
|
) -> None:
|
|
297
302
|
"""
|
|
@@ -316,28 +321,37 @@ def byogs(
|
|
|
316
321
|
),
|
|
317
322
|
tag: str = typer.Option(
|
|
318
323
|
None, "--tag",
|
|
319
|
-
help="(
|
|
324
|
+
help="(required: build, push, publish) Tag for your snap."
|
|
320
325
|
),
|
|
321
326
|
# publish and publish-image
|
|
322
327
|
path: Union[str, None] = typer.Option(
|
|
323
|
-
None, "--path",
|
|
328
|
+
None, "--path",
|
|
329
|
+
help="(required: build, publish) Path to your snap code."
|
|
324
330
|
),
|
|
325
331
|
resources_path: Union[str, None] = typer.Option(
|
|
326
|
-
None, "--resources-path",
|
|
332
|
+
None, "--resources-path",
|
|
333
|
+
help=(
|
|
334
|
+
"(optional: publish) Path to resources such as your Dockerfile, "
|
|
335
|
+
"swagger.json or README.md."
|
|
336
|
+
)
|
|
327
337
|
),
|
|
328
338
|
docker_filename: str = typer.Option(
|
|
329
|
-
"Dockerfile", help="(optional: publish) Dockerfile name to use"
|
|
339
|
+
"Dockerfile", help="(optional: publish) Dockerfile name to use."
|
|
330
340
|
),
|
|
331
341
|
skip_build: bool = typer.Option(
|
|
332
|
-
False, "--skip-build",
|
|
342
|
+
False, "--skip-build",
|
|
343
|
+
help=(
|
|
344
|
+
"(optional: publish) Skip the build step. You have to pass the image tag you "
|
|
345
|
+
"used during the build step."
|
|
346
|
+
)
|
|
333
347
|
),
|
|
334
348
|
snapend_id: str = typer.Option(
|
|
335
349
|
None, "--snapend-id",
|
|
336
|
-
help=("(
|
|
350
|
+
help=("(required: sync) Snapend Id.")
|
|
337
351
|
),
|
|
338
352
|
fleet_names: str = typer.Option(
|
|
339
353
|
None, "--fleet-names",
|
|
340
|
-
help=("(
|
|
354
|
+
help=("(required: sync) Comma separated fleet names.")
|
|
341
355
|
),
|
|
342
356
|
blocking: bool = typer.Option(
|
|
343
357
|
False, "--blocking",
|
|
@@ -348,10 +362,12 @@ def byogs(
|
|
|
348
362
|
),
|
|
349
363
|
# overrides
|
|
350
364
|
api_key: Union[str, None] = typer.Option(
|
|
351
|
-
None, "--api-key",
|
|
365
|
+
None, "--api-key",
|
|
366
|
+
help="API Key override.", callback=api_key_context_callback
|
|
352
367
|
),
|
|
353
368
|
profile: Union[str, None] = typer.Option(
|
|
354
|
-
None, "--profile",
|
|
369
|
+
None, "--profile",
|
|
370
|
+
help="Profile from the Snapser config to use.", callback=profile_context_callback
|
|
355
371
|
),
|
|
356
372
|
) -> None:
|
|
357
373
|
"""
|
|
@@ -382,27 +398,45 @@ def byosnap(
|
|
|
382
398
|
ctx: typer.Context,
|
|
383
399
|
# Required fields
|
|
384
400
|
subcommand: str = typer.Argument(
|
|
385
|
-
...,
|
|
401
|
+
...,
|
|
402
|
+
help=(
|
|
403
|
+
"BYOSnap Subcommands: " +
|
|
404
|
+
", ".join(ByoSnap.SHOW_SUBCOMMANDS) + ". Commands to be deprecated soon: " +
|
|
405
|
+
", ".join(ByoSnap.TO_DEPRECATE_SUBCOMMANDS) + "."
|
|
406
|
+
)
|
|
386
407
|
),
|
|
387
408
|
byosnap_id: Union[str, None] = typer.Option(
|
|
388
|
-
None, "--byosnap-id",
|
|
409
|
+
None, "--byosnap-id",
|
|
410
|
+
help=(
|
|
411
|
+
"(required: publish, sync, upload-docs, create, publish-image, publish-version, "
|
|
412
|
+
"update-version) BYOSnap Id. Should start with `byosnap-`."
|
|
413
|
+
)
|
|
389
414
|
),
|
|
390
415
|
# publish
|
|
391
416
|
path: Union[str, None] = typer.Option(
|
|
392
|
-
None, "--path",
|
|
417
|
+
None, "--path",
|
|
418
|
+
help="(required: publish, sync, publish-image, publish-version) Path to your snap code."
|
|
393
419
|
),
|
|
394
420
|
resources_path: Union[str, None] = typer.Option(
|
|
395
|
-
None, "--resources-path",
|
|
421
|
+
None, "--resources-path",
|
|
422
|
+
help=(
|
|
423
|
+
"(required: upload-docs) (optional: publish, sync, publish-image, publish-version) "
|
|
424
|
+
"Path to resources such as your Dockerfile, snapser-byosnap-profile.json, "
|
|
425
|
+
"snapser-tool-*.json, swagger.json or README.md."
|
|
426
|
+
)
|
|
396
427
|
),
|
|
397
428
|
# publish, sync and publish-version
|
|
398
429
|
version: Union[str, None] = typer.Option(
|
|
399
430
|
None, "--version",
|
|
400
|
-
help=
|
|
431
|
+
help=(
|
|
432
|
+
"(required: publish, sync, publish-version) Snap semantic version. "
|
|
433
|
+
"Should start with `v`. Example `vX.X.X`."
|
|
434
|
+
)
|
|
401
435
|
),
|
|
402
436
|
# sync
|
|
403
437
|
snapend_id: str = typer.Option(
|
|
404
438
|
None, "--snapend-id",
|
|
405
|
-
help=("(
|
|
439
|
+
help=("(required: sync) Snapend Id. NOTE: Development Snapends only.")
|
|
406
440
|
),
|
|
407
441
|
blocking: bool = typer.Option(
|
|
408
442
|
False, "--blocking",
|
|
@@ -413,47 +447,64 @@ def byosnap(
|
|
|
413
447
|
),
|
|
414
448
|
# create
|
|
415
449
|
name: str = typer.Option(
|
|
416
|
-
None, "--name", help="(
|
|
450
|
+
None, "--name", help="(required: create) Name for your snap."
|
|
417
451
|
),
|
|
418
452
|
desc: str = typer.Option(
|
|
419
|
-
None, "--desc", help="(
|
|
453
|
+
None, "--desc", help="(required: create) Description for your snap."
|
|
420
454
|
),
|
|
421
455
|
platform_type: str = typer.Option(
|
|
422
456
|
None, "--platform",
|
|
423
|
-
help=
|
|
424
|
-
|
|
457
|
+
help=(
|
|
458
|
+
"(required: create) Platform for your snap - " +
|
|
459
|
+
", ".join(ByoSnap.PLATFORMS) + "."
|
|
460
|
+
)
|
|
425
461
|
),
|
|
426
462
|
language: str = typer.Option(
|
|
427
463
|
None, "--language",
|
|
428
|
-
help=
|
|
429
|
-
|
|
464
|
+
help=(
|
|
465
|
+
"(required: create) Language of your snap - " +
|
|
466
|
+
", ".join(ByoSnap.LANGUAGES) + "."
|
|
467
|
+
)
|
|
430
468
|
),
|
|
431
469
|
# publish-image, publish-version, publish, sync, upload-docs
|
|
432
470
|
tag: str = typer.Option(
|
|
433
|
-
None, "--tag",
|
|
434
|
-
|
|
471
|
+
None, "--tag",
|
|
472
|
+
help=(
|
|
473
|
+
"(required: publish-image, publish-version, upload-docs) (optional: publish, sync) "
|
|
474
|
+
"Tag for your snap."
|
|
435
475
|
)
|
|
436
476
|
),
|
|
437
477
|
# overrides
|
|
438
478
|
skip_build: bool = typer.Option(
|
|
439
|
-
False, "--skip-build",
|
|
479
|
+
False, "--skip-build",
|
|
480
|
+
help=(
|
|
481
|
+
"(optional: publish-image, publish, sync) Skip the build step. You have to pass "
|
|
482
|
+
"the image tag you used during the build step."
|
|
483
|
+
)
|
|
440
484
|
),
|
|
441
485
|
docker_filename: str = typer.Option(
|
|
442
|
-
"Dockerfile", help="(optional
|
|
486
|
+
"Dockerfile", help="(optional: publish, sync) Dockerfile name to use."
|
|
443
487
|
),
|
|
444
488
|
profile_filename: str = typer.Option(
|
|
445
|
-
"snapser-byosnap-profile.json", "--profile-filename",
|
|
489
|
+
"snapser-byosnap-profile.json", "--profile-filename",
|
|
490
|
+
help=(
|
|
491
|
+
"(required: generate-profile, validate-profile) (optional override: publish, "
|
|
492
|
+
"publish-version) BYOSnap Profile is picked up via the --path or the "
|
|
493
|
+
"--resources-path. This allows you to override the default profile filename."
|
|
494
|
+
)
|
|
446
495
|
),
|
|
447
496
|
out_path: Union[str, None] = typer.Option(
|
|
448
497
|
None, "--out-path", help=(
|
|
449
|
-
"(
|
|
498
|
+
"(required: generate-profile) Path to output the byosnap profile."
|
|
450
499
|
)
|
|
451
500
|
),
|
|
452
501
|
api_key: Union[str, None] = typer.Option(
|
|
453
|
-
None, "--api-key",
|
|
502
|
+
None, "--api-key",
|
|
503
|
+
help="API Key override.", callback=api_key_context_callback
|
|
454
504
|
),
|
|
455
505
|
profile: Union[str, None] = typer.Option(
|
|
456
|
-
None, "--profile",
|
|
506
|
+
None, "--profile",
|
|
507
|
+
help="Profile from the Snapser config to use.", callback=profile_context_callback
|
|
457
508
|
),
|
|
458
509
|
) -> None:
|
|
459
510
|
"""
|
|
@@ -496,14 +547,16 @@ def game(
|
|
|
496
547
|
# name
|
|
497
548
|
name: str = typer.Option(
|
|
498
549
|
None, "--name",
|
|
499
|
-
help=("(
|
|
550
|
+
help=("(required: create) Name of your game.")
|
|
500
551
|
),
|
|
501
552
|
# overrides
|
|
502
553
|
api_key: Union[str, None] = typer.Option(
|
|
503
|
-
None, "--api-key",
|
|
554
|
+
None, "--api-key",
|
|
555
|
+
help="API Key override.", callback=api_key_context_callback
|
|
504
556
|
),
|
|
505
557
|
profile: Union[str, None] = typer.Option(
|
|
506
|
-
None, "--profile",
|
|
558
|
+
None, "--profile",
|
|
559
|
+
help="Profile from the Snapser config to use.", callback=profile_context_callback
|
|
507
560
|
),
|
|
508
561
|
) -> None:
|
|
509
562
|
"""
|
|
@@ -534,14 +587,16 @@ def application(
|
|
|
534
587
|
# name
|
|
535
588
|
name: str = typer.Option(
|
|
536
589
|
None, "--name",
|
|
537
|
-
help=("(
|
|
590
|
+
help=("(required: create) Name of your application.")
|
|
538
591
|
),
|
|
539
592
|
# overrides
|
|
540
593
|
api_key: Union[str, None] = typer.Option(
|
|
541
|
-
None, "--api-key",
|
|
594
|
+
None, "--api-key",
|
|
595
|
+
help="API Key override.", callback=api_key_context_callback
|
|
542
596
|
),
|
|
543
597
|
profile: Union[str, None] = typer.Option(
|
|
544
|
-
None, "--profile",
|
|
598
|
+
None, "--profile",
|
|
599
|
+
help="Profile from the Snapser config to use.", callback=profile_context_callback
|
|
545
600
|
),
|
|
546
601
|
) -> None:
|
|
547
602
|
"""
|
|
@@ -573,21 +628,24 @@ def generate(
|
|
|
573
628
|
category: Union[str, None] = typer.Option(
|
|
574
629
|
None, "--category",
|
|
575
630
|
help=(
|
|
576
|
-
"(
|
|
577
|
-
", ".join(Generate.CATEGORIES['credentials']) +
|
|
631
|
+
"(required: token) Supported category - " +
|
|
632
|
+
", ".join(Generate.CATEGORIES['credentials']) + "."
|
|
578
633
|
)
|
|
579
634
|
),
|
|
580
635
|
out_path: Union[str, None] = typer.Option(
|
|
581
|
-
None, "--out-path",
|
|
582
|
-
|
|
636
|
+
None, "--out-path",
|
|
637
|
+
help=(
|
|
638
|
+
"(required: token) Path to output the byosnap profile."
|
|
583
639
|
)
|
|
584
640
|
),
|
|
585
641
|
# overrides
|
|
586
642
|
api_key: Union[str, None] = typer.Option(
|
|
587
|
-
None, "--api-key",
|
|
643
|
+
None, "--api-key",
|
|
644
|
+
help="API Key override.", callback=api_key_context_callback
|
|
588
645
|
),
|
|
589
646
|
profile: Union[str, None] = typer.Option(
|
|
590
|
-
None, "--profile",
|
|
647
|
+
None, "--profile",
|
|
648
|
+
help="Profile from the Snapser config to use.", callback=profile_context_callback
|
|
591
649
|
),
|
|
592
650
|
) -> None:
|
|
593
651
|
"""
|
|
@@ -614,96 +672,105 @@ def snapend(
|
|
|
614
672
|
subcommand: str = typer.Argument(
|
|
615
673
|
..., help="Snapend Subcommands: " + ", ".join(Snapend.SUBCOMMANDS) + "."
|
|
616
674
|
),
|
|
617
|
-
# snapend_id: str = typer.Argument(..., help="Snapend Id"),
|
|
618
675
|
snapend_id: str = typer.Option(
|
|
619
676
|
None, "--snapend-id",
|
|
620
|
-
help=("(
|
|
677
|
+
help=("(required: state, update, download) Snapend Id.")
|
|
621
678
|
),
|
|
622
679
|
# enumerate
|
|
623
680
|
game_id: str = typer.Option(
|
|
624
681
|
None, "--game-id",
|
|
625
|
-
help="(DEPRECATED: Use --application-id instead) Game Id"
|
|
682
|
+
help="(DEPRECATED: Use --application-id instead) Game Id."
|
|
626
683
|
),
|
|
627
684
|
application_id: str = typer.Option(
|
|
628
685
|
None, "--application-id",
|
|
629
|
-
help="(
|
|
686
|
+
help="(required: enumerate, create, clone) Application Id."
|
|
630
687
|
),
|
|
631
688
|
# apply, clone
|
|
632
689
|
manifest_path_filename: str = typer.Option(
|
|
633
690
|
None, "--manifest-path-filename",
|
|
634
|
-
help=
|
|
691
|
+
help=(
|
|
692
|
+
"(required: create, apply, clone) Full Path to the manifest file "
|
|
693
|
+
"including the filename."
|
|
694
|
+
)
|
|
635
695
|
),
|
|
636
696
|
force: bool = typer.Option(
|
|
637
697
|
False, "--force",
|
|
638
|
-
help=
|
|
698
|
+
help=(
|
|
699
|
+
"(optional: apply) If true, Snapser will ignore the configuration diff validation "
|
|
700
|
+
"and allow to force apply the manifest."
|
|
701
|
+
)
|
|
639
702
|
),
|
|
640
703
|
# download
|
|
641
704
|
category: str = typer.Option(
|
|
642
705
|
None, "--category",
|
|
643
706
|
help=(
|
|
644
|
-
"(
|
|
707
|
+
"(required: download) Supported Download Categories - " +
|
|
645
708
|
", ".join(Snapend.DOWNLOAD_CATEGORY) + "."
|
|
646
709
|
)
|
|
647
710
|
),
|
|
648
711
|
category_format: str = typer.Option(
|
|
649
712
|
None, "--format",
|
|
650
713
|
help=(
|
|
651
|
-
"(
|
|
714
|
+
"(required: --category sdk|protos|snapend-manifest --format " +
|
|
652
715
|
"sdk(" + ", ".join(SDK_TYPES.keys()) +
|
|
653
716
|
") | protos(" + ", ".join(PROTOS_TYPES.keys()) + ")" +
|
|
654
717
|
") | snapend-manifest(" +
|
|
655
|
-
", ".join(SNAPEND_MANIFEST_TYPES.keys()) + ")"
|
|
718
|
+
", ".join(SNAPEND_MANIFEST_TYPES.keys()) + ")."
|
|
656
719
|
)
|
|
657
720
|
),
|
|
658
721
|
category_type: str = typer.Option(
|
|
659
722
|
None, "--type",
|
|
660
723
|
help=(
|
|
661
|
-
"(optional: download) Only applicable for --category sdk|protos --type "
|
|
662
|
-
"sdk(" + ", ".join(Snapend.CATEGORY_TYPE_SDK) + ")"
|
|
663
|
-
" | protos(" + ", ".join(Snapend.CATEGORY_TYPE_PROTOS) + ")"
|
|
724
|
+
"(optional: download) Only applicable for --category sdk|protos --type " +
|
|
725
|
+
"sdk(" + ", ".join(Snapend.CATEGORY_TYPE_SDK) + ")" +
|
|
726
|
+
" | protos(" + ", ".join(Snapend.CATEGORY_TYPE_PROTOS) + ")."
|
|
664
727
|
)
|
|
665
728
|
),
|
|
666
729
|
category_http_lib: str = typer.Option(
|
|
667
730
|
None, "--http-lib",
|
|
668
731
|
help=(
|
|
669
|
-
"(optional: download) Only applicable for --category sdk "
|
|
732
|
+
"(optional: download) Only applicable for --category sdk " +
|
|
670
733
|
"--format " + '|'.join(Snapend.get_formats_supporting_http_lib()) + ' ' +
|
|
671
|
-
"--type user|server|internal|app "
|
|
672
|
-
"--http-lib " + Snapend.get_http_formats_str()
|
|
734
|
+
"--type user|server|internal|app " +
|
|
735
|
+
"--http-lib " + Snapend.get_http_formats_str() + "."
|
|
673
736
|
)
|
|
674
737
|
),
|
|
675
738
|
snaps_list_str: Union[str, None] = typer.Option(
|
|
676
739
|
None, "--snaps",
|
|
677
740
|
help=(
|
|
678
|
-
"(optional: download) Comma separated list of snap ids to customize the "
|
|
679
|
-
"SDKs, protos or admin settings. "
|
|
680
|
-
"snaps(" + ", ".join(SERVICE_IDS)
|
|
741
|
+
"(optional: download) Comma separated list of snap ids to customize the " +
|
|
742
|
+
"SDKs, protos or admin settings. " +
|
|
743
|
+
"snaps(" + ", ".join(SERVICE_IDS) + ")."
|
|
681
744
|
)
|
|
682
745
|
),
|
|
683
746
|
# Clone
|
|
684
747
|
name: Union[str, None] = typer.Option(
|
|
685
|
-
None, "--name",
|
|
748
|
+
None, "--name",
|
|
749
|
+
help="(required: clone, optional: create) Snapend name."),
|
|
686
750
|
env: Union[str, None] = typer.Option(
|
|
687
|
-
None, "--env",
|
|
688
|
-
|
|
689
|
-
"
|
|
751
|
+
None, "--env",
|
|
752
|
+
help=(
|
|
753
|
+
"(required: clone, optional: create) Snapend environments " +
|
|
754
|
+
" - " + ", ".join(Snapend.ENV_TYPES) + "."
|
|
690
755
|
)),
|
|
691
756
|
# Download, Apply, Clone
|
|
692
757
|
out_path: Union[str, None] = typer.Option(
|
|
693
|
-
None, "--out-path",
|
|
758
|
+
None, "--out-path",
|
|
759
|
+
help="(optional: create, download, apply, clone) Path to save the output file."
|
|
760
|
+
),
|
|
694
761
|
# update
|
|
695
762
|
byosnaps_list: str = typer.Option(
|
|
696
763
|
None, "--byosnaps",
|
|
697
764
|
help=(
|
|
698
765
|
"(optional: update) Comma separated list of BYOSnap ids and versions. "
|
|
699
|
-
"Eg: service-1:v1.0.0,service-2:v1.0.0"
|
|
766
|
+
"Eg: `service-1:v1.0.0,service-2:v1.0.0`."
|
|
700
767
|
)
|
|
701
768
|
),
|
|
702
769
|
byogs_list: str = typer.Option(
|
|
703
770
|
None, "--byogs",
|
|
704
771
|
help=(
|
|
705
772
|
"(optional: update) Comma separated list of BYOGs fleet_name:tag. "
|
|
706
|
-
"Eg: fleet-1:v1.0.0,fleet-2:v1.0.0"
|
|
773
|
+
"Eg: `fleet-1:v1.0.0,fleet-2:v1.0.0`."
|
|
707
774
|
)
|
|
708
775
|
),
|
|
709
776
|
# create, update, promote, apply, clone
|
|
@@ -716,10 +783,12 @@ def snapend(
|
|
|
716
783
|
),
|
|
717
784
|
# overrides
|
|
718
785
|
api_key: Union[str, None] = typer.Option(
|
|
719
|
-
None, "--api-key",
|
|
786
|
+
None, "--api-key",
|
|
787
|
+
help="API Key override.", callback=api_key_context_callback
|
|
720
788
|
),
|
|
721
789
|
profile: Union[str, None] = typer.Option(
|
|
722
|
-
None, "--profile",
|
|
790
|
+
None, "--profile",
|
|
791
|
+
help="Profile from the Snapser config to use.", callback=profile_context_callback
|
|
723
792
|
),
|
|
724
793
|
) -> None:
|
|
725
794
|
"""
|
|
@@ -765,26 +834,33 @@ def byows(
|
|
|
765
834
|
# attach
|
|
766
835
|
snapend_id: str = typer.Option(
|
|
767
836
|
None, "--snapend-id",
|
|
768
|
-
help=("(
|
|
837
|
+
help=("(required: attach, reset) Snapend Id.")
|
|
769
838
|
),
|
|
770
839
|
byosnap_id: str = typer.Option(
|
|
771
840
|
None, "--byosnap-id",
|
|
772
|
-
help=("(
|
|
841
|
+
help=("(required: attach) BYOSnap Id. Should start with `byosnap-`.")
|
|
773
842
|
),
|
|
774
843
|
http_port: str = typer.Option(
|
|
775
844
|
None, "--http-port",
|
|
776
|
-
help=(
|
|
845
|
+
help=(
|
|
846
|
+
"(use: attach) HTTP port of your local server. "
|
|
847
|
+
"One of --http-port or --grpc-port is required."
|
|
848
|
+
)
|
|
777
849
|
),
|
|
778
850
|
grpc_port: str = typer.Option(
|
|
779
851
|
None, "--grpc-port",
|
|
780
|
-
help=(
|
|
852
|
+
help=(
|
|
853
|
+
"(use: attach) gRPC port of your local server. "
|
|
854
|
+
"One of --http-port or --grpc-port is required."
|
|
855
|
+
)
|
|
781
856
|
),
|
|
782
857
|
# overrides
|
|
783
858
|
api_key: Union[str, None] = typer.Option(
|
|
784
859
|
None, "--api-key", help="API Key override.", callback=api_key_context_callback
|
|
785
860
|
),
|
|
786
861
|
profile: Union[str, None] = typer.Option(
|
|
787
|
-
None, "--profile",
|
|
862
|
+
None, "--profile",
|
|
863
|
+
help="Profile from the Snapser config to use.", callback=profile_context_callback
|
|
788
864
|
),
|
|
789
865
|
) -> None:
|
|
790
866
|
"""
|
|
@@ -815,8 +891,10 @@ def snaps(
|
|
|
815
891
|
..., help="Snaps Subcommands: " + ", ".join(Snaps.SUBCOMMANDS) + "."
|
|
816
892
|
),
|
|
817
893
|
out_path_filename: Union[str, None] = typer.Option(
|
|
818
|
-
None, "--out-path-filename",
|
|
819
|
-
|
|
894
|
+
None, "--out-path-filename",
|
|
895
|
+
help=(
|
|
896
|
+
"(optional: enumerate) Path and filename to output the snaps list. "
|
|
897
|
+
"The filename should end with `.json`."
|
|
820
898
|
)
|
|
821
899
|
),
|
|
822
900
|
# overrides
|
|
@@ -824,7 +902,8 @@ def snaps(
|
|
|
824
902
|
None, "--api-key", help="API Key override.", callback=api_key_context_callback
|
|
825
903
|
),
|
|
826
904
|
profile: Union[str, None] = typer.Option(
|
|
827
|
-
None, "--profile",
|
|
905
|
+
None, "--profile",
|
|
906
|
+
help="Profile from the Snapser config to use.", callback=profile_context_callback
|
|
828
907
|
),
|
|
829
908
|
) -> None:
|
|
830
909
|
"""
|
|
@@ -851,61 +930,81 @@ def snapend_manifest(
|
|
|
851
930
|
..., help="Snapend Manifest Subcommands: " + ", ".join(SnapendManifest.SUBCOMMANDS) + "."
|
|
852
931
|
),
|
|
853
932
|
name: Union[str, None] = typer.Option(
|
|
854
|
-
None, "--name",
|
|
933
|
+
None, "--name",
|
|
934
|
+
help="(required: create) Name for your snapend."
|
|
855
935
|
),
|
|
856
936
|
env: Union[str, None] = typer.Option(
|
|
857
|
-
None, "--env",
|
|
858
|
-
|
|
937
|
+
None, "--env",
|
|
938
|
+
help=(
|
|
939
|
+
"(required: create) Environment for your snapend - " +
|
|
859
940
|
", ".join(SnapendManifest.ENVIRONMENTS) + "."
|
|
860
941
|
)
|
|
861
942
|
),
|
|
862
943
|
manifest_path_filename: Union[str, None] = typer.Option(
|
|
863
|
-
None, "--manifest-path-filename",
|
|
864
|
-
|
|
944
|
+
None, "--manifest-path-filename",
|
|
945
|
+
help=(
|
|
946
|
+
"(required: sync, upgrade, update) Full Path to the manifest file "
|
|
947
|
+
"including the filename."
|
|
865
948
|
)
|
|
866
949
|
),
|
|
867
950
|
snaps_list_str: str = typer.Option(
|
|
868
|
-
None, "--snaps",
|
|
869
|
-
|
|
951
|
+
None, "--snaps",
|
|
952
|
+
help=(
|
|
953
|
+
"(use: create, sync, upgrade) Comma separated list of snap ids to add, " +
|
|
954
|
+
"sync or upgrade. snaps(" + ", ".join(SERVICE_IDS) + ")."
|
|
870
955
|
)
|
|
871
956
|
),
|
|
872
957
|
features: str = typer.Option(
|
|
873
|
-
None, "--features",
|
|
874
|
-
|
|
875
|
-
"
|
|
958
|
+
None, "--features",
|
|
959
|
+
help=(
|
|
960
|
+
"(use: create, sync) Comma separated list of feature flags to add, sync. " +
|
|
961
|
+
"features(" + ", ".join(SnapendManifest.FEATURES) + ")."
|
|
876
962
|
)
|
|
877
963
|
),
|
|
878
964
|
add_snaps: str = typer.Option(
|
|
879
|
-
None, "--add-snaps",
|
|
880
|
-
|
|
965
|
+
None, "--add-snaps",
|
|
966
|
+
help=(
|
|
967
|
+
"(use: update) Comma separated list of snap ids to add. " +
|
|
968
|
+
"snaps(" + ", ".join(SERVICE_IDS) + ")."
|
|
881
969
|
)
|
|
882
970
|
),
|
|
883
971
|
remove_snaps: str = typer.Option(
|
|
884
|
-
None, "--remove-snaps",
|
|
885
|
-
|
|
972
|
+
None, "--remove-snaps",
|
|
973
|
+
help=(
|
|
974
|
+
"(use: update) Comma separated list of snap ids to remove. snaps(" +
|
|
975
|
+
", ".join([s for s in SERVICE_IDS if s.lower() != SnapendManifest.AUTH_SNAP_ID]) +
|
|
976
|
+
")."
|
|
886
977
|
)
|
|
887
978
|
),
|
|
888
979
|
add_features: str = typer.Option(
|
|
889
|
-
None, "--add-features",
|
|
890
|
-
|
|
980
|
+
None, "--add-features",
|
|
981
|
+
help=(
|
|
982
|
+
"(use: update) Comma separated list of features to add. " +
|
|
983
|
+
"features(" + ", ".join(SnapendManifest.FEATURES) + ")."
|
|
891
984
|
)
|
|
892
985
|
),
|
|
893
986
|
remove_features: str = typer.Option(
|
|
894
|
-
None, "--remove-features",
|
|
895
|
-
|
|
987
|
+
None, "--remove-features",
|
|
988
|
+
help=(
|
|
989
|
+
"(use: update) Comma separated list of features to remove. " +
|
|
990
|
+
"features(" + ", ".join(SnapendManifest.FEATURES) + ")."
|
|
896
991
|
)
|
|
897
992
|
),
|
|
898
993
|
out_path_filename: Union[str, None] = typer.Option(
|
|
899
|
-
None, "--out-path-filename",
|
|
900
|
-
|
|
994
|
+
None, "--out-path-filename",
|
|
995
|
+
help=(
|
|
996
|
+
"(required: create, sync, upgrade, update) (optional: enumerate) Path and filename to "
|
|
997
|
+
"output the manifest. The filename should end with .json or .yaml"
|
|
901
998
|
)
|
|
902
999
|
),
|
|
903
1000
|
# overrides
|
|
904
1001
|
api_key: Union[str, None] = typer.Option(
|
|
905
|
-
None, "--api-key",
|
|
1002
|
+
None, "--api-key",
|
|
1003
|
+
help="API Key override.", callback=api_key_context_callback
|
|
906
1004
|
),
|
|
907
1005
|
profile: Union[str, None] = typer.Option(
|
|
908
|
-
None, "--profile",
|
|
1006
|
+
None, "--profile",
|
|
1007
|
+
help="Profile from the Snapser config to use.", callback=profile_context_callback
|
|
909
1008
|
),
|
|
910
1009
|
) -> None:
|
|
911
1010
|
"""
|
|
@@ -3,13 +3,14 @@ Telemetry utilities for snapctl
|
|
|
3
3
|
'''
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
from typing import Any, Dict, Optional
|
|
6
|
+
import os
|
|
6
7
|
import functools
|
|
7
8
|
import platform
|
|
8
9
|
import uuid
|
|
9
10
|
import hashlib
|
|
10
11
|
import requests
|
|
11
12
|
import typer
|
|
12
|
-
from snapctl.config.constants import AMPLITUDE_HTTP_US, AMPLITUDE_HTTP_EU
|
|
13
|
+
from snapctl.config.constants import AMPLITUDE_HTTP_US, AMPLITUDE_HTTP_EU, TEST_MODE
|
|
13
14
|
from snapctl.utils.helper import get_config_value
|
|
14
15
|
from snapctl.utils.echo import info
|
|
15
16
|
|
|
@@ -65,6 +66,10 @@ def _is_active(ctx: Optional[typer.Context]) -> tuple[bool, bool, Optional[str]]
|
|
|
65
66
|
if not api_key or api_key == '':
|
|
66
67
|
return (False, False, None)
|
|
67
68
|
telemetry_active = get_config_value(env, "TELEMETRY_ACTIVE") == "true"
|
|
69
|
+
# If we are running unit test; disable tracking
|
|
70
|
+
is_test = os.getenv(TEST_MODE) == "true"
|
|
71
|
+
if is_test:
|
|
72
|
+
telemetry_active = False
|
|
68
73
|
dry_run = get_config_value(env, "TELEMETRY_DRY_RUN") == "true"
|
|
69
74
|
return (telemetry_active, dry_run, api_key)
|
|
70
75
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|