snapctl 1.1.3__py3-none-any.whl → 1.1.4__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.

Potentially problematic release.


This version of snapctl might be problematic. Click here for more details.

@@ -230,6 +230,7 @@ class Snapend:
230
230
 
231
231
  def _execute_download(self) -> bool:
232
232
  try:
233
+ final_http_lib = None
233
234
  url = (
234
235
  f"{self.base_url}/v1/snapser-api/snapends/{self.snapend_id}/"
235
236
  f"download?category={self.portal_category}"
@@ -248,10 +249,19 @@ class Snapend:
248
249
  if 'auth_type' in SDK_ACCESS_AUTH_TYPE_LOOKUP[self.category_type] and \
249
250
  SDK_ACCESS_AUTH_TYPE_LOOKUP[self.category_type]['auth_type'] != '':
250
251
  url += f"&auth_type={SDK_ACCESS_AUTH_TYPE_LOOKUP[self.category_type]['auth_type']}"
251
- if self.category_http_lib:
252
- # First check if the format supports http-lib
253
- if self.category_format in Snapend.get_formats_supporting_http_lib():
254
- url += f"&http_lib={self.category_http_lib}"
252
+ if self.category_format in Snapend.get_formats_supporting_http_lib():
253
+ http_libs = Snapend.get_http_lib_for_sdk(
254
+ self.category_format
255
+ )
256
+ if self.category_http_lib:
257
+ if self.category_http_lib in http_libs:
258
+ final_http_lib = self.category_http_lib
259
+ else:
260
+ if len(http_libs) > 0:
261
+ info(f"Using default `--http-lib {http_libs[0]}`")
262
+ final_http_lib = http_libs[0]
263
+ if final_http_lib:
264
+ url += f"&http_lib={final_http_lib}"
255
265
  # Customize snaps
256
266
  if self.snaps:
257
267
  url += f"&snaps={self.snaps}"
@@ -261,16 +271,18 @@ class Snapend:
261
271
  )
262
272
  if not res.ok:
263
273
  # Handle known conflict case
274
+ response = res.json()
264
275
  if res.status_code == HTTP_CONFLICT:
265
- response = res.json()
266
276
  if (
267
277
  response.get(
268
278
  "api_error_code") == HTTP_ERROR_CLUSTER_UPDATE_IN_PROGRESS
269
279
  ):
270
280
  raise SnapendDownloadException(
271
281
  "Snapend update is in progress. Please try again later.")
272
- return False
273
-
282
+ raise SnapendDownloadException(
283
+ f"Unable to download {self.category}. " +
284
+ f"Reason: {response.get('message', '')}"
285
+ )
274
286
  fn: str = ''
275
287
  if self.category == 'admin-settings':
276
288
  fn = f"snapser-{self.snapend_id}-admin-settings.json"
@@ -289,8 +301,8 @@ class Snapend:
289
301
  fn += f"-{SDK_ACCESS_AUTH_TYPE_LOOKUP[self.category_type]['auth_type']}"
290
302
  if self.category_http_lib:
291
303
  # First check if the format supports http-lib
292
- if self.category_format in Snapend.get_formats_supporting_http_lib():
293
- fn += f"-{self.category_http_lib}"
304
+ if final_http_lib:
305
+ fn += f"-{final_http_lib}"
294
306
  fn += ".zip"
295
307
  if self.out_path is not None:
296
308
  file_save_path = os.path.join(self.out_path, fn)
@@ -321,6 +333,15 @@ class Snapend:
321
333
  format_list.append(key)
322
334
  return format_list
323
335
 
336
+ @staticmethod
337
+ def get_http_lib_for_sdk(sdk_format: str) -> list:
338
+ '''
339
+ Get the list of http-lib supported for a sdk format
340
+ '''
341
+ if sdk_format in SDK_TYPES and 'http-lib' in SDK_TYPES[sdk_format]:
342
+ return SDK_TYPES[sdk_format]['http-lib']
343
+ return []
344
+
324
345
  @staticmethod
325
346
  def get_http_formats_str() -> str:
326
347
  '''
@@ -557,10 +578,12 @@ class Snapend:
557
578
  # code=SNAPCTL_INPUT_ERROR
558
579
  # )
559
580
  if self.category_http_lib:
560
- # First check if the format supports http-lib
581
+ # First check if the format supports http-lib TODO
561
582
  if self.category_format in Snapend.get_formats_supporting_http_lib():
562
583
  # Check if the http-lib is supported for the format
563
- valid_http_libs = SDK_TYPES[self.category_format]['http-lib']
584
+ valid_http_libs = Snapend.get_http_lib_for_sdk(
585
+ self.category_format
586
+ )
564
587
  if self.category_http_lib not in valid_http_libs:
565
588
  snapctl_error(
566
589
  message="Invalid HTTP Library. Valid libraries are " +
@@ -661,47 +684,55 @@ class Snapend:
661
684
  url, headers={'api-key': self.api_key},
662
685
  files=files, data=payload, timeout=SERVER_CALL_TIMEOUT
663
686
  )
664
- if res.ok:
665
- # extract the cluster ID
687
+ if not res.ok:
666
688
  response = res.json()
667
- if 'cluster' not in response or 'id' not in response['cluster']:
668
- snapctl_error(
669
- message='Server Error. Unable to get a Snapend ID. ' +
670
- 'Please try again in sometime.',
671
- code=SNAPCTL_SNAPEND_CREATE_SERVER_ERROR,
672
- progress=progress
673
- )
674
- self._assign_snapend_id(response['cluster']['id'])
675
- info(f"Cluster ID assigned: {response['cluster']['id']}")
676
- if self.blocking:
677
- snapctl_success(
678
- message='Snapend create initiated.',
679
- progress=progress,
680
- no_exit=True
681
- )
682
- status = self._blocking_get_status()
683
- # Fetch the new manifest
684
- if status is True:
685
- # TODO: Uncomment this if we want to do an auto download
686
- # self._setup_for_download(
687
- # self.manifest_file_name.split('.')[-1])
688
- # self._execute_download()
689
- snapctl_success(
690
- message='Snapend create successful. Do not forget to download the latest manifest.',
691
- progress=progress)
692
- snapctl_error(
693
- message='Snapend create has been initiated but the Snapend is not up yet.' +
694
- 'Please try checking the status of the Snapend in some time',
695
- code=SNAPCTL_SNAPEND_CREATE_TIMEOUT_ERROR,
696
- progress=progress
697
- )
689
+ if 'details' in response:
690
+ response = response['details']
691
+ snapctl_error(
692
+ message=response,
693
+ code=SNAPCTL_SNAPEND_CREATE_ERROR,
694
+ progress=progress
695
+ )
696
+ # extract the cluster ID
697
+ response = res.json()
698
+ if 'cluster' not in response or 'id' not in response['cluster']:
699
+ snapctl_error(
700
+ message='Server Error. Unable to get a Snapend ID. ' +
701
+ 'Please try again in sometime.',
702
+ code=SNAPCTL_SNAPEND_CREATE_SERVER_ERROR,
703
+ progress=progress
704
+ )
705
+ self._assign_snapend_id(response['cluster']['id'])
706
+ info(f"Cluster ID assigned: {response['cluster']['id']}")
707
+ if self.blocking:
698
708
  snapctl_success(
699
- message="Snapend create has been initiated. " +
700
- "You can check the status using " +
701
- "`snapctl snapend state --snapend-id" +
702
- f"{response['cluster']['id']}`",
709
+ message='Snapend create initiated.',
710
+ progress=progress,
711
+ no_exit=True
712
+ )
713
+ status = self._blocking_get_status()
714
+ # Fetch the new manifest
715
+ if status is True:
716
+ # TODO: Uncomment this if we want to do an auto download
717
+ # self._setup_for_download(
718
+ # self.manifest_file_name.split('.')[-1])
719
+ # self._execute_download()
720
+ snapctl_success(
721
+ message='Snapend create successful. Do not forget to download the latest manifest.',
722
+ progress=progress)
723
+ snapctl_error(
724
+ message='Snapend create has been initiated but the Snapend is not up yet.' +
725
+ 'Please try checking the status of the Snapend in some time',
726
+ code=SNAPCTL_SNAPEND_CREATE_TIMEOUT_ERROR,
703
727
  progress=progress
704
728
  )
729
+ snapctl_success(
730
+ message="Snapend create has been initiated. " +
731
+ "You can check the status using " +
732
+ "`snapctl snapend state --snapend-id" +
733
+ f"{response['cluster']['id']}`",
734
+ progress=progress
735
+ )
705
736
  except RequestException as e:
706
737
  snapctl_error(
707
738
  message=f"Unable to create a snapend from a manifest. {e}",
@@ -75,7 +75,7 @@ class SnapendManifest:
75
75
  ) from e
76
76
  return yaml.safe_load(s)
77
77
 
78
- if not self.manifest_path_filename:
78
+ if not self.manifest_path_filename or not os.path.isfile(self.manifest_path_filename):
79
79
  return False
80
80
  with open(self.manifest_path_filename, "r", encoding="utf-8") as f:
81
81
  text = f.read()
@@ -196,6 +196,10 @@ class SnapendManifest:
196
196
  snapctl_error(
197
197
  message="Manifest path is required for sync command.",
198
198
  code=SNAPCTL_INPUT_ERROR)
199
+ if not os.path.isfile(self.manifest_path_filename):
200
+ snapctl_error(
201
+ message="Manifest path filename `--manifest-path-filename` does not exist.",
202
+ code=SNAPCTL_INPUT_ERROR)
199
203
  if (not self.snaps or self.snaps == '') and \
200
204
  (not self.features or self.features == ''):
201
205
  snapctl_error(
@@ -257,6 +261,10 @@ class SnapendManifest:
257
261
  snapctl_error(
258
262
  message="Manifest path is required for upgrade command.",
259
263
  code=SNAPCTL_INPUT_ERROR)
264
+ if not os.path.isfile(self.manifest_path_filename):
265
+ snapctl_error(
266
+ message="Manifest path filename `--manifest-path-filename` does not exist.",
267
+ code=SNAPCTL_INPUT_ERROR)
260
268
  if self.snaps and self.snaps != '':
261
269
  input_snaps_list = self.snaps.split(',')
262
270
  repeat_snaps = check_duplicates_in_list(input_snaps_list)
@@ -307,6 +315,10 @@ class SnapendManifest:
307
315
  snapctl_error(
308
316
  message="Manifest path is required for update command.",
309
317
  code=SNAPCTL_INPUT_ERROR)
318
+ if not os.path.isfile(self.manifest_path_filename):
319
+ snapctl_error(
320
+ message="Manifest path filename `--manifest-path-filename` does not exist.",
321
+ code=SNAPCTL_INPUT_ERROR)
310
322
  if (not self.add_snaps or self.add_snaps == '') and \
311
323
  (not self.remove_snaps or self.remove_snaps == '') and \
312
324
  (not self.add_features or self.add_features == '') and \
@@ -404,8 +416,12 @@ class SnapendManifest:
404
416
  snapctl_error(
405
417
  message="Manifest path is required for validate command.",
406
418
  code=SNAPCTL_INPUT_ERROR)
419
+ if not os.path.isfile(self.manifest_path_filename):
420
+ snapctl_error(
421
+ message="Manifest path filename `--manifest-path-filename` does not exist.",
422
+ code=SNAPCTL_INPUT_ERROR)
407
423
 
408
- def _get_snap_sd(self, snap_id) -> dict:
424
+ def _get_snap_sd(self, snap_id, sanitize_dd: bool = True) -> dict:
409
425
  """
410
426
  Get snap service definition
411
427
  """
@@ -424,6 +440,25 @@ class SnapendManifest:
424
440
  if versions['version'] == snap['latest_version']:
425
441
  snap_sd['data_dependencies'] = \
426
442
  versions['data_dependencies']
443
+ if not sanitize_dd:
444
+ return snap_sd
445
+ # Sanitize data dependencies
446
+ sanitized_data_dependencies = []
447
+ for data_dep in snap_sd['data_dependencies']:
448
+ new_obj = {}
449
+ if data_dep['type'] == 'POSTGRES':
450
+ new_obj['type'] = 'POSTGRES'
451
+ new_obj['postgres'] = {
452
+ 'database': data_dep['postgres']['database']
453
+ }
454
+ elif data_dep['type'] == 'REDIS':
455
+ new_obj['type'] = 'REDIS'
456
+ new_obj['redis'] = {}
457
+ elif data_dep['type'] == 'COUCHBASE':
458
+ new_obj['type'] = 'COUCHBASE'
459
+ new_obj['couchbase'] = {}
460
+ sanitized_data_dependencies.append(new_obj)
461
+ snap_sd['data_dependencies'] = sanitized_data_dependencies
427
462
  return snap_sd
428
463
  raise ValueError(
429
464
  f"Snap service definition with id '{snap_id}' not found")
@@ -524,7 +559,7 @@ class SnapendManifest:
524
559
  """
525
560
  Sync with a snapend manifest
526
561
  @test -
527
- `python -m snapctl snapend-manifest sync --manifest-path-filename ./snapend-manifest.json --snaps analytics,auth --features WEB_SOCKETS --out-path-filename ./snapend-updated-manifest.json`
562
+ `python -m snapctl snapend-manifest sync --manifest-path-filename ./snapend-create-manifest.json --snaps analytics,auth --features WEB_SOCKETS --out-path-filename ./snapend-synced-manifest.json`
528
563
  """
529
564
  progress = Progress(
530
565
  SpinnerColumn(),
@@ -3,7 +3,7 @@ Constants used by snapctl
3
3
  """
4
4
  COMPANY_NAME = 'Snapser'
5
5
  VERSION_PREFIX = ''
6
- VERSION = '1.1.3'
6
+ VERSION = '1.1.4'
7
7
  CONFIG_FILE_MAC = '~/.snapser/config'
8
8
  CONFIG_FILE_WIN = '%homepath%\\.snapser\\config'
9
9
 
snapctl/config/hashes.py CHANGED
@@ -57,13 +57,18 @@ CLIENT_SDK_TYPES: Dict[str, Dict[str, str]] = {
57
57
  'web-ts': {
58
58
  'type': 'typescript',
59
59
  'subtype': 'web',
60
- 'http-lib': ['axios', 'fetch'],
60
+ 'http-lib': ['fetch', 'axios'],
61
61
  },
62
62
  'web-js': {
63
63
  'type': 'javascript',
64
64
  'subtype': 'web',
65
65
  'http-lib': [],
66
66
  },
67
+ 'flutter-dart': {
68
+ 'type': 'dart',
69
+ 'subtype': 'flutter',
70
+ 'http-lib': ['http', 'dio'],
71
+ },
67
72
  }
68
73
 
69
74
  SERVER_SDK_TYPES: Dict[str, Dict[str, str]] = {
@@ -85,7 +90,7 @@ SERVER_SDK_TYPES: Dict[str, Dict[str, str]] = {
85
90
  'ts': {
86
91
  'type': 'typescript',
87
92
  'subtype': '',
88
- 'http-lib': ['axios', 'fetch'],
93
+ 'http-lib': ['fetch', 'axios'],
89
94
  },
90
95
  'go': {
91
96
  'type': 'go',
@@ -147,6 +152,11 @@ SERVER_SDK_TYPES: Dict[str, Dict[str, str]] = {
147
152
  'subtype': '',
148
153
  'http-lib': [],
149
154
  },
155
+ 'dart': {
156
+ 'type': 'dart',
157
+ 'subtype': '',
158
+ 'http-lib': ['http', 'dio'],
159
+ },
150
160
  }
151
161
 
152
162
  SDK_TYPES: Dict[str, Dict[str, str]] = {**CLIENT_SDK_TYPES, **SERVER_SDK_TYPES}
@@ -0,0 +1,14 @@
1
+ ## Release 1.1.4
2
+ ##### Oct 24, 2025
3
+
4
+ ### Features
5
+ 1. We added SDK support for `flutter-dart` and `dart`. You can download SDKs using the `snapend download` command.
6
+
7
+ ### Fixes
8
+ 1. Snapend-Manifest create, update, upgrade and sync was adding some extra fields in the `data_definitions` (this was already backward compatible, but still unnecessary). This has been fixed.
9
+ 2. Snapend-manifest sync, update, upgrade now validate if the manifest file is a valid.
10
+ 3. Snapend creation failures due to duplicate cluster names now show proper error messages.
11
+ 4. Snapend download command now smartly picks a default `http-lib` if the user does not provide one, based on the SDK selected.
12
+
13
+ ### Documentation
14
+ 1. Updated the README.md to reflect correct parameter names for commands.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: snapctl
3
- Version: 1.1.3
3
+ Version: 1.1.4
4
4
  Summary: Snapser CLI Tool
5
5
  Author: Ajinkya Apte
6
6
  Author-email: aj@snapser.com
@@ -248,8 +248,8 @@ See all the supported commands.
248
248
 
249
249
  ```bash
250
250
  # Enumerate details for all the available snaps
251
- # $output_path = Optional path to where you want snapctl to save snap details
252
- snapctl snaps enumerate --out-path
251
+ # $output_path = Optional path and filename ending in JSON, where you want snapctl to save snap details
252
+ snapctl snaps enumerate --out-path-filename
253
253
  ```
254
254
 
255
255
  ### 2. BYO Snap - Bring your own Snap
@@ -651,11 +651,11 @@ The output manifest file can then be used with the `snapend create` or `snapend
651
651
  # $env = One of DEVELOPMENT, STAGING or PRODUCTION
652
652
  # $output_path_filename = Path and file name to store the manifest. The filename should end with .json or .yaml
653
653
  # $snaps = Comma separated list of snap ids you want to add. You can get the snap ids from the
654
- # `snapctl snaps enumerate --out-path ./snaps.json` command
654
+ # `snapctl snaps enumerate --out-path-filename ./snaps.json` command
655
655
  # $features = Pass `WEB_SOCKETS` if you want to enable web sockets for your backend.
656
656
  # Note: One of snaps or features is required
657
657
  # Example:
658
- # snapend-manifest create --name my-dev-snapend --env DEVELOPMENT --snaps auth,analytics --add-features WEB_SOCKETS --out-path ./snapend-manifest.json
658
+ # snapend-manifest create --name my-dev-snapend --env DEVELOPMENT --snaps auth,analytics --add-features WEB_SOCKETS --out-path-filename ./snapend-manifest.json
659
659
 
660
660
  snapctl snapend-manifest create --name $name --env $env --snaps $snaps --features $features --out-path-filename $output_path_filename
661
661
  ```
@@ -673,13 +673,13 @@ Sync with an existing Snapend manifest. This command is idempotent and destructi
673
673
  # Sync a Snapend manifest file
674
674
  # $input_manifest = Path and file name of the current manifest. The filename should end with .json or .yaml
675
675
  # $output_path_filename = Path and file name to store the manifest. The filename should end with .json or .yaml
676
- # $snaps = Comma separated list of snap ids you want to have at the end. You can get the snap ids from # the `snapctl snaps enumerate --out-path ./snaps.json` command.
676
+ # $snaps = Comma separated list of snap ids you want to have at the end. You can get the snap ids from # the `snapctl snaps enumerate --out-path-filename ./snaps.json` command.
677
677
  # IMPORTANT: If your manifest has a snap but your --snaps does not. It will be removed.
678
678
  # $features = Pass `WEB_SOCKETS` if you want to enable web sockets for your backend.
679
679
  # IMPORTANT: If your manifest has a feature but your --features does not. It will be removed.
680
680
  # Note: One of snaps, and features is required
681
681
  # Example:
682
- # snapctl snapend-manifest sync --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --add-snaps game-server-fleets --remove-snaps analytics --remove-features WEB_SOCKETS --out-path ./snapend-updated-manifest.yaml
682
+ # snapctl snapend-manifest sync --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --add-snaps game-server-fleets --remove-snaps analytics --remove-features WEB_SOCKETS --out-path-filename ./snapend-updated-manifest.yaml
683
683
 
684
684
  snapctl snapend-manifest sync --manifest-path-filename $input_manifest --snaps $snaps --features $features--out-path-filename $output_path_filename
685
685
  ```
@@ -693,11 +693,11 @@ Upgrade all snaps or a list of snaps to the latest version of the snap available
693
693
  # $input_manifest = Path and file name of the current manifest. The filename should end with .json or .yaml
694
694
  # $output_path_filename = Path and file name to store the manifest. The filename should end with .json or .yaml
695
695
  # $snaps = (Optional) Comma separated list of snap ids you want to upgrade. You can get the snap ids
696
- # from the `snapctl snaps enumerate --out-path ./snaps.json` command
696
+ # from the `snapctl snaps enumerate --out-path-filename ./snaps.json` command
697
697
  # IMPORTANT: If the --snaps parameter is not provided then all snaps in the manifest will be upgraded
698
698
  # Example:
699
- # snapctl snapend-manifest upgrade --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --snaps game-server-fleets --out-path ./snapend-updated-manifest.yaml
700
- # snapctl snapend-manifest upgrade --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --out-path ./snapend-updated-manifest.yaml
699
+ # snapctl snapend-manifest upgrade --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --snaps game-server-fleets --out-path-filename ./snapend-updated-manifest.yaml
700
+ # snapctl snapend-manifest upgrade --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --out-path-filename ./snapend-updated-manifest.yaml
701
701
 
702
702
  snapctl snapend-manifest upgrade --manifest-path-filename $input_manifest --out-path-filename $output_path_filename
703
703
 
@@ -716,13 +716,13 @@ Update your manifest. This command is additive and subtractive. It allows you to
716
716
  # Update a Snapend manifest file
717
717
  # $input_manifest = Path and file name of the current manifest. The filename should end with .json or .yaml
718
718
  # $output_path_filename = Path and file name to store the manifest. The filename should end with .json or .yaml
719
- # $addSnaps = Comma separated list of snap ids you want to add to your manifest. You can get the snap ids from # the `snapctl snaps enumerate --out-path ./snaps.json` command.
720
- # $removeSnaps = Comma separated list of snap ids you want to remove from your manifest. You can get the snap ids from # the `snapctl snaps enumerate --out-path ./snaps.json` command.
719
+ # $addSnaps = Comma separated list of snap ids you want to add to your manifest. You can get the snap ids from # the `snapctl snaps enumerate --out-path-filename ./snaps.json` command.
720
+ # $removeSnaps = Comma separated list of snap ids you want to remove from your manifest. You can get the snap ids from # the `snapctl snaps enumerate --out-path-filename ./snaps.json` command.
721
721
  # $addFeatures = Pass `WEB_SOCKETS` if you want to enable web sockets for your backend.
722
722
  # $removeFeatures = Pass `WEB_SOCKETS` if you want to disable web sockets for your backend.
723
723
  # Note: One of add-snaps, remove-snaps, add-features or remove-features is required
724
724
  # Example:
725
- # snapctl snapend-manifest update --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --add-snaps game-server-fleets --remove-snaps analytics --remove-features WEB_SOCKETS --out-path ./snapend-updated-manifest.yaml
725
+ # snapctl snapend-manifest update --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --add-snaps game-server-fleets --remove-snaps analytics --remove-features WEB_SOCKETS --out-path-filename ./snapend-updated-manifest.yaml
726
726
 
727
727
  snapctl snapend-manifest update --manifest-path-filename $input_manifest --add-snaps $addSnaps --remove-snaps $removeSnaps --add-features $addFeatures --remove-features $removeFeatures --out-path-filename $output_path_filename
728
728
  ```
@@ -753,8 +753,8 @@ snapctl snapend download --help
753
753
  # $category = snapend-manifest, sdk, protos
754
754
  # $format = One of the supported formats:
755
755
  # snapend-manifest(yaml, json)
756
- # sdk(unity, unreal, roblox, godot, cocos, ios-objc, ios-swift, android-java, android-kotlin, web-ts, web-js),
757
- # sdk(csharp, cpp, lua, ts, go, python, kotlin, java, c, node, js, perl, php, closure, ruby, rust),
756
+ # sdk(unity, unreal, roblox, godot, cocos, ios-objc, ios-swift, android-java, android-kotlin, web-ts, web-js, flutter-dart),
757
+ # sdk(csharp, cpp, lua, ts, go, python, kotlin, java, c, node, js, perl, php, closure, ruby, rust, dart),
758
758
  # protos(go, csharp, cpp, raw)
759
759
  # $type = One of the supported types:
760
760
  # For category=sdk type=(user, server, internal, app)
@@ -783,14 +783,14 @@ Create a Snapend from an existing manifest. Passing the blocking flag ensures yo
783
783
  snapctl snapend create --help
784
784
 
785
785
  # Create a Snapend
786
- # $app_id = App Id
786
+ # $application_id = Application Id
787
787
  # $path_to_manifest = Path to the manifest file; should include the file name
788
788
  # Optionally override name and environment by passing the --name and --environment overrides
789
789
  # Example:
790
- # snapctl snapend create --manifest-path-filename $path_to_manifest --app-id $app_id --blocking
791
- snapctl snapend create --manifest-path-filename $path_to_manifest --app-id $app_id
792
- snapctl snapend create --manifest-path-filename $path_to_manifest --app-id $app_id --blocking
793
- snapctl snapend create --name $name --env $env --manifest-path-filename $path_to_manifest --app-id $app_id --blocking
790
+ # snapctl snapend create --manifest-path-filename $path_to_manifest --application-id $application_id --blocking
791
+ snapctl snapend create --manifest-path-filename $path_to_manifest --application-id $application_id
792
+ snapctl snapend create --manifest-path-filename $path_to_manifest --application-id $application_id --blocking
793
+ snapctl snapend create --name $name --env $env --manifest-path-filename $path_to_manifest --application-id $application_id --blocking
794
794
  ```
795
795
 
796
796
  #### 4. snapend clone
@@ -802,14 +802,14 @@ Clone a Snapend from an existing manifest. Passing the blocking flag ensures you
802
802
  snapctl snapend clone --help
803
803
 
804
804
  # Clone your Snapend
805
- # $app_id = App Id
805
+ # $application_id = Application Id
806
806
  # $snapend_name = Name of your new Snapend
807
807
  # $env = One of development, staging
808
808
  # $path_to_manifest = Path to the manifest file; should include the file name
809
809
  # Example:
810
- # snapctl snapend clone --app-id 2581d802-aca-496c-8a76-1953ad0db165 --name new-snapend --env development --manifest-path-filename "C:\Users\name\Downloads\snapser-ox1bcyim-manifest.json" --blocking
811
- snapctl snapend clone --app-id $app_id --name $snapend_name --env $env --manifest-path-filename "$path_to_manifest"
812
- snapctl snapend clone --app-id $app_id --name $snapend_name --env $env --manifest-path-filename "$path_to_manifest" --blocking
810
+ # snapctl snapend clone --application-id 2581d802-aca-496c-8a76-1953ad0db165 --name new-snapend --env development --manifest-path-filename "C:\Users\name\Downloads\snapser-ox1bcyim-manifest.json" --blocking
811
+ snapctl snapend clone --application-id $application_id --name $snapend_name --env $env --manifest-path-filename "$path_to_manifest"
812
+ snapctl snapend clone --application-id $application_id --name $snapend_name --env $env --manifest-path-filename "$path_to_manifest" --blocking
813
813
  ```
814
814
 
815
815
  #### 5. snapend apply
@@ -8,14 +8,14 @@ snapctl/commands/byows.py,sha256=91bpV-LXOIbDDx3vNj9Xl_vRBTQeedyzl6fHZcpG6ig,189
8
8
  snapctl/commands/game.py,sha256=F6TL5T3i8yZAQxfsx0uma2tbLHCQ_gqA1wj6oxkAgGk,5236
9
9
  snapctl/commands/generate.py,sha256=9-NlZVQllBT2LZT_t9S3ztwtHzTbM-C8_x0f6z70U3g,5606
10
10
  snapctl/commands/release_notes.py,sha256=EMl-NK9-MSdRxiVyA0MLX4CBG0zijOctddEODQa5PZ4,2151
11
- snapctl/commands/snapend.py,sha256=DuzqpVRiQzTI1LAJICDRAjoFNKhyhbMkfaBsmsjuxO4,50307
12
- snapctl/commands/snapend_manifest.py,sha256=F4Ql-jkfPvkTrrQ5RfTXp8Jk5s4EFSkWtoOvzxdcacQ,43255
11
+ snapctl/commands/snapend.py,sha256=fc2S3m3u8sp_0RP8VGV_p9Fn7OaUCWTc-dwiRbWw36Y,51435
12
+ snapctl/commands/snapend_manifest.py,sha256=xoF156xpGeqXT7w1NHbNHZoF71q2kBVyhzBmGMpeDdk,45256
13
13
  snapctl/commands/snaps.py,sha256=VI7B1FtrYAyJTxtQcOU6BgImwRND0ZXJGTWSpCXKzW0,4103
14
14
  snapctl/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  snapctl/config/app.py,sha256=U9Mm0BbGJoqcmBBam2tN7F-oTf_u9dK6EJsiB-yVvKg,888
16
- snapctl/config/constants.py,sha256=VEQieWjO9Nl80hM9dJgUuhcK4_8eZbe-cUsjB6UGGxw,4405
16
+ snapctl/config/constants.py,sha256=h5lFBzzMsFz8A-qk_uNbmUFzpgcHD5jw2NRwZQNh3y4,4405
17
17
  snapctl/config/endpoints.py,sha256=jD0n5ocJBbIkrb97F2_r9hqAHzUuddAqzqqBAPUKDTI,477
18
- snapctl/config/hashes.py,sha256=PVYSDrSiRW-WTclqji-E9J70r5Ff3-nGr0cz81WOMoc,5344
18
+ snapctl/config/hashes.py,sha256=HpaQOcEpz5oX_kOqcowu2ggJW35COPSWFxeiFP0AbmE,5569
19
19
  snapctl/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  snapctl/data/profiles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  snapctl/data/profiles/snapser-byosnap-profile.json,sha256=c7oIzMJewVQaoLaXCBPXlH-k5cL9DCz6q4IixsWWD9c,2404
@@ -28,6 +28,7 @@ snapctl/data/releases/1.0.4.mdx,sha256=hKwi0tormf0gvKAY5W4G1BY7L6fgwOzlw3R-WGSH4
28
28
  snapctl/data/releases/1.1.0.mdx,sha256=w_X9SsMH-ghex8UYQn9b1AcQT9i3eeAlQWP2YCVU_kY,1303
29
29
  snapctl/data/releases/1.1.2.mdx,sha256=_hHvOSR5O9QJBwgqhglxazcpR3rBiJE2WZn5wzGEFSA,244
30
30
  snapctl/data/releases/1.1.3.mdx,sha256=qil7MseqvmIDgfwjEFwCOBTD3yYN3xQ-n3zc71Cysdg,136
31
+ snapctl/data/releases/1.1.4.mdx,sha256=tP42ukg5dk9wD8P3eIWew4tGF3KeoCHGdxMcM6MLXhs,768
31
32
  snapctl/data/releases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
33
  snapctl/data/releases/beta-0.46.0.mdx,sha256=_MJA7TnnJjAnNm_EOvoBiz7FjHwl4c49sYtZ9r4KZQE,2386
33
34
  snapctl/data/releases/beta-0.46.4.mdx,sha256=3-ojdCyvax27sdd8nKmcP0zfCWEzi_edPbSlkFqla4o,173
@@ -50,8 +51,8 @@ snapctl/utils/echo.py,sha256=9fxrPW9kNJwiJvJBFy9RlAP4qGRcPTOHfQb3pQh3CMg,1446
50
51
  snapctl/utils/exceptions.py,sha256=deLs6sOKIUrhjKNgiMpNC1S6lkU0rpZ7Ml4Tx1CN_Ss,155
51
52
  snapctl/utils/helper.py,sha256=8PwlN8xcx4ivHhEudt-PwAl1IL4h1vR0ah7qPEdzWhU,7424
52
53
  snapctl/utils/telemetry.py,sha256=kyzKnBoQlJaCSsNjm4bOA9Kh1TMBXWSlsk2hmSZF5ig,5195
53
- snapctl-1.1.3.dist-info/LICENSE,sha256=6AcXm54KFSpmUI1ji9NIBd4Xl-DtjTqiyjBzfVb_CEk,2804
54
- snapctl-1.1.3.dist-info/METADATA,sha256=5cz2QNoGNKXVfzqroVGaTlUCE09BqcAROViun4_h69U,46266
55
- snapctl-1.1.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
56
- snapctl-1.1.3.dist-info/entry_points.txt,sha256=tkKW9MzmFdRs6Bgkv29G78i9WEBK4WIOWunPfe3t2Wg,44
57
- snapctl-1.1.3.dist-info/RECORD,,
54
+ snapctl-1.1.4.dist-info/LICENSE,sha256=6AcXm54KFSpmUI1ji9NIBd4Xl-DtjTqiyjBzfVb_CEk,2804
55
+ snapctl-1.1.4.dist-info/METADATA,sha256=0eF_nyXvOeDdb7IRbGskV8v6fUa13Ag0sD_X3oAS-fg,46547
56
+ snapctl-1.1.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
57
+ snapctl-1.1.4.dist-info/entry_points.txt,sha256=tkKW9MzmFdRs6Bgkv29G78i9WEBK4WIOWunPfe3t2Wg,44
58
+ snapctl-1.1.4.dist-info/RECORD,,