snapctl 1.1.3__tar.gz → 1.1.4__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.3 → snapctl-1.1.4}/PKG-INFO +24 -24
- {snapctl-1.1.3 → snapctl-1.1.4}/README.md +23 -23
- {snapctl-1.1.3 → snapctl-1.1.4}/pyproject.toml +1 -1
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/commands/snapend.py +79 -48
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/commands/snapend_manifest.py +38 -3
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/config/constants.py +1 -1
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/config/hashes.py +12 -2
- snapctl-1.1.4/snapctl/data/releases/1.1.4.mdx +14 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/LICENSE +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/__init__.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/__main__.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/commands/__init__.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/commands/application.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/commands/byogs.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/commands/byosnap.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/commands/byows.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/commands/game.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/commands/generate.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/commands/release_notes.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/commands/snaps.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/config/__init__.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/config/app.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/config/endpoints.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/__init__.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/profiles/__init__.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/profiles/snapser-byosnap-profile.json +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/profiles/snapser-byosnap-profile.yaml +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/profiles/snapser-byosnap-profile.yml +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/1.0.0.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/1.0.2.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/1.0.3.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/1.0.4.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/1.1.0.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/1.1.2.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/1.1.3.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/__init__.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.46.0.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.46.4.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.47.0.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.47.1.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.47.2.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.48.0.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.49.0.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.49.1.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.49.2.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.49.3.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.50.0.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.51.0.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/data/releases/beta-0.53.1.mdx +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/main.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/types/__init__.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/types/definitions.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/utils/__init__.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/utils/echo.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/utils/exceptions.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/utils/helper.py +0 -0
- {snapctl-1.1.3 → snapctl-1.1.4}/snapctl/utils/telemetry.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: snapctl
|
|
3
|
-
Version: 1.1.
|
|
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
|
|
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
|
-
# $
|
|
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 --
|
|
791
|
-
snapctl snapend create --manifest-path-filename $path_to_manifest --
|
|
792
|
-
snapctl snapend create --manifest-path-filename $path_to_manifest --
|
|
793
|
-
snapctl snapend create --name $name --env $env --manifest-path-filename $path_to_manifest --
|
|
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
|
-
# $
|
|
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 --
|
|
811
|
-
snapctl snapend clone --
|
|
812
|
-
snapctl snapend clone --
|
|
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
|
|
@@ -227,8 +227,8 @@ See all the supported commands.
|
|
|
227
227
|
|
|
228
228
|
```bash
|
|
229
229
|
# Enumerate details for all the available snaps
|
|
230
|
-
# $output_path = Optional path
|
|
231
|
-
snapctl snaps enumerate --out-path
|
|
230
|
+
# $output_path = Optional path and filename ending in JSON, where you want snapctl to save snap details
|
|
231
|
+
snapctl snaps enumerate --out-path-filename
|
|
232
232
|
```
|
|
233
233
|
|
|
234
234
|
### 2. BYO Snap - Bring your own Snap
|
|
@@ -630,11 +630,11 @@ The output manifest file can then be used with the `snapend create` or `snapend
|
|
|
630
630
|
# $env = One of DEVELOPMENT, STAGING or PRODUCTION
|
|
631
631
|
# $output_path_filename = Path and file name to store the manifest. The filename should end with .json or .yaml
|
|
632
632
|
# $snaps = Comma separated list of snap ids you want to add. You can get the snap ids from the
|
|
633
|
-
# `snapctl snaps enumerate --out-path ./snaps.json` command
|
|
633
|
+
# `snapctl snaps enumerate --out-path-filename ./snaps.json` command
|
|
634
634
|
# $features = Pass `WEB_SOCKETS` if you want to enable web sockets for your backend.
|
|
635
635
|
# Note: One of snaps or features is required
|
|
636
636
|
# Example:
|
|
637
|
-
# snapend-manifest create --name my-dev-snapend --env DEVELOPMENT --snaps auth,analytics --add-features WEB_SOCKETS --out-path ./snapend-manifest.json
|
|
637
|
+
# snapend-manifest create --name my-dev-snapend --env DEVELOPMENT --snaps auth,analytics --add-features WEB_SOCKETS --out-path-filename ./snapend-manifest.json
|
|
638
638
|
|
|
639
639
|
snapctl snapend-manifest create --name $name --env $env --snaps $snaps --features $features --out-path-filename $output_path_filename
|
|
640
640
|
```
|
|
@@ -652,13 +652,13 @@ Sync with an existing Snapend manifest. This command is idempotent and destructi
|
|
|
652
652
|
# Sync a Snapend manifest file
|
|
653
653
|
# $input_manifest = Path and file name of the current manifest. The filename should end with .json or .yaml
|
|
654
654
|
# $output_path_filename = Path and file name to store the manifest. The filename should end with .json or .yaml
|
|
655
|
-
# $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.
|
|
655
|
+
# $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.
|
|
656
656
|
# IMPORTANT: If your manifest has a snap but your --snaps does not. It will be removed.
|
|
657
657
|
# $features = Pass `WEB_SOCKETS` if you want to enable web sockets for your backend.
|
|
658
658
|
# IMPORTANT: If your manifest has a feature but your --features does not. It will be removed.
|
|
659
659
|
# Note: One of snaps, and features is required
|
|
660
660
|
# Example:
|
|
661
|
-
# 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
|
|
661
|
+
# 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
|
|
662
662
|
|
|
663
663
|
snapctl snapend-manifest sync --manifest-path-filename $input_manifest --snaps $snaps --features $features--out-path-filename $output_path_filename
|
|
664
664
|
```
|
|
@@ -672,11 +672,11 @@ Upgrade all snaps or a list of snaps to the latest version of the snap available
|
|
|
672
672
|
# $input_manifest = Path and file name of the current manifest. The filename should end with .json or .yaml
|
|
673
673
|
# $output_path_filename = Path and file name to store the manifest. The filename should end with .json or .yaml
|
|
674
674
|
# $snaps = (Optional) Comma separated list of snap ids you want to upgrade. You can get the snap ids
|
|
675
|
-
# from the `snapctl snaps enumerate --out-path ./snaps.json` command
|
|
675
|
+
# from the `snapctl snaps enumerate --out-path-filename ./snaps.json` command
|
|
676
676
|
# IMPORTANT: If the --snaps parameter is not provided then all snaps in the manifest will be upgraded
|
|
677
677
|
# Example:
|
|
678
|
-
# snapctl snapend-manifest upgrade --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --snaps game-server-fleets --out-path ./snapend-updated-manifest.yaml
|
|
679
|
-
# snapctl snapend-manifest upgrade --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --out-path ./snapend-updated-manifest.yaml
|
|
678
|
+
# snapctl snapend-manifest upgrade --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --snaps game-server-fleets --out-path-filename ./snapend-updated-manifest.yaml
|
|
679
|
+
# snapctl snapend-manifest upgrade --manifest-path-filename ./snapser-jn86b0dv-manifest.yaml --out-path-filename ./snapend-updated-manifest.yaml
|
|
680
680
|
|
|
681
681
|
snapctl snapend-manifest upgrade --manifest-path-filename $input_manifest --out-path-filename $output_path_filename
|
|
682
682
|
|
|
@@ -695,13 +695,13 @@ Update your manifest. This command is additive and subtractive. It allows you to
|
|
|
695
695
|
# Update a Snapend manifest file
|
|
696
696
|
# $input_manifest = Path and file name of the current manifest. The filename should end with .json or .yaml
|
|
697
697
|
# $output_path_filename = Path and file name to store the manifest. The filename should end with .json or .yaml
|
|
698
|
-
# $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.
|
|
699
|
-
# $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.
|
|
698
|
+
# $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.
|
|
699
|
+
# $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.
|
|
700
700
|
# $addFeatures = Pass `WEB_SOCKETS` if you want to enable web sockets for your backend.
|
|
701
701
|
# $removeFeatures = Pass `WEB_SOCKETS` if you want to disable web sockets for your backend.
|
|
702
702
|
# Note: One of add-snaps, remove-snaps, add-features or remove-features is required
|
|
703
703
|
# Example:
|
|
704
|
-
# 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
|
|
704
|
+
# 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
|
|
705
705
|
|
|
706
706
|
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
|
|
707
707
|
```
|
|
@@ -732,8 +732,8 @@ snapctl snapend download --help
|
|
|
732
732
|
# $category = snapend-manifest, sdk, protos
|
|
733
733
|
# $format = One of the supported formats:
|
|
734
734
|
# snapend-manifest(yaml, json)
|
|
735
|
-
# sdk(unity, unreal, roblox, godot, cocos, ios-objc, ios-swift, android-java, android-kotlin, web-ts, web-js),
|
|
736
|
-
# sdk(csharp, cpp, lua, ts, go, python, kotlin, java, c, node, js, perl, php, closure, ruby, rust),
|
|
735
|
+
# sdk(unity, unreal, roblox, godot, cocos, ios-objc, ios-swift, android-java, android-kotlin, web-ts, web-js, flutter-dart),
|
|
736
|
+
# sdk(csharp, cpp, lua, ts, go, python, kotlin, java, c, node, js, perl, php, closure, ruby, rust, dart),
|
|
737
737
|
# protos(go, csharp, cpp, raw)
|
|
738
738
|
# $type = One of the supported types:
|
|
739
739
|
# For category=sdk type=(user, server, internal, app)
|
|
@@ -762,14 +762,14 @@ Create a Snapend from an existing manifest. Passing the blocking flag ensures yo
|
|
|
762
762
|
snapctl snapend create --help
|
|
763
763
|
|
|
764
764
|
# Create a Snapend
|
|
765
|
-
# $
|
|
765
|
+
# $application_id = Application Id
|
|
766
766
|
# $path_to_manifest = Path to the manifest file; should include the file name
|
|
767
767
|
# Optionally override name and environment by passing the --name and --environment overrides
|
|
768
768
|
# Example:
|
|
769
|
-
# snapctl snapend create --manifest-path-filename $path_to_manifest --
|
|
770
|
-
snapctl snapend create --manifest-path-filename $path_to_manifest --
|
|
771
|
-
snapctl snapend create --manifest-path-filename $path_to_manifest --
|
|
772
|
-
snapctl snapend create --name $name --env $env --manifest-path-filename $path_to_manifest --
|
|
769
|
+
# snapctl snapend create --manifest-path-filename $path_to_manifest --application-id $application_id --blocking
|
|
770
|
+
snapctl snapend create --manifest-path-filename $path_to_manifest --application-id $application_id
|
|
771
|
+
snapctl snapend create --manifest-path-filename $path_to_manifest --application-id $application_id --blocking
|
|
772
|
+
snapctl snapend create --name $name --env $env --manifest-path-filename $path_to_manifest --application-id $application_id --blocking
|
|
773
773
|
```
|
|
774
774
|
|
|
775
775
|
#### 4. snapend clone
|
|
@@ -781,14 +781,14 @@ Clone a Snapend from an existing manifest. Passing the blocking flag ensures you
|
|
|
781
781
|
snapctl snapend clone --help
|
|
782
782
|
|
|
783
783
|
# Clone your Snapend
|
|
784
|
-
# $
|
|
784
|
+
# $application_id = Application Id
|
|
785
785
|
# $snapend_name = Name of your new Snapend
|
|
786
786
|
# $env = One of development, staging
|
|
787
787
|
# $path_to_manifest = Path to the manifest file; should include the file name
|
|
788
788
|
# Example:
|
|
789
|
-
# snapctl snapend clone --
|
|
790
|
-
snapctl snapend clone --
|
|
791
|
-
snapctl snapend clone --
|
|
789
|
+
# 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
|
|
790
|
+
snapctl snapend clone --application-id $application_id --name $snapend_name --env $env --manifest-path-filename "$path_to_manifest"
|
|
791
|
+
snapctl snapend clone --application-id $application_id --name $snapend_name --env $env --manifest-path-filename "$path_to_manifest" --blocking
|
|
792
792
|
```
|
|
793
793
|
|
|
794
794
|
#### 5. snapend apply
|
|
@@ -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.
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
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
|
-
|
|
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
|
|
293
|
-
fn += f"-{
|
|
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 =
|
|
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 '
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
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=
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
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-
|
|
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(),
|
|
@@ -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': ['
|
|
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': ['
|
|
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.
|
|
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
|
|
File without changes
|