Skip to content
Open

Dev #14

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
446 commits
Select commit Hold shift + click to select a range
ff6eb83
chore: ensure the full analysis options are used when formatting
stnguyen90 Oct 8, 2025
e95cd68
chore: fix dart and flutter analysis errors
stnguyen90 Oct 9, 2025
0721992
Merge pull request #1214 from appwrite/chore-improve-dart-flutter-pub…
abnegate Oct 9, 2025
10764ee
feat: add `DeprecationWarning` decorator support python lang
amustaque97 Oct 9, 2025
5585eb9
feat: add finally block to reset filter
amustaque97 Oct 9, 2025
d1f9097
Merge pull request #1215 from appwrite/PLA-3382
amustaque97 Oct 9, 2025
2eb9b58
feat(web): use session from setSession() for realtime
stnguyen90 Oct 10, 2025
6a5378f
fix: handle Object[] in .NET array deserialization
ChiragAgg5k Oct 13, 2025
67972c5
refactor: simplify type handling for array deserialization
ChiragAgg5k Oct 13, 2025
aac6cc3
fix: method name
ChiragAgg5k Oct 13, 2025
1ee0540
fix: issue 3
ChiragAgg5k Oct 13, 2025
951a27a
fix: issue 4
ChiragAgg5k Oct 13, 2025
0b9d6d6
Update templates/dotnet/Package/Extensions/Extensions.cs.twig
ChiragAgg5k Oct 13, 2025
a20b20c
Merge pull request #1218 from appwrite/fix-dotnet-array-deserialization
ChiragAgg5k Oct 13, 2025
10993e5
Refactor array handling in DotNet code generation
Fellmonkey Oct 13, 2025
76ce99c
Merge branch 'master' into improve-json-serialization
Fellmonkey Oct 13, 2025
12e7d61
fix: some login issues in cli
ChiragAgg5k Oct 19, 2025
8dfc5c5
Add .NET SDK test templates and test generation
Fellmonkey Oct 19, 2025
a71ae71
Add test execution step to SDK build workflow
Fellmonkey Oct 19, 2025
85f51dc
Merge pull request #1220 from appwrite/fix-login-issues-cli
abnegate Oct 20, 2025
94a5c4c
Merge branch 'master' into feat-8925-realtime-session-web-sdk
ChiragAgg5k Oct 20, 2025
11caff6
Merge branch 'tests-dotnet' into dev
Fellmonkey Oct 20, 2025
f7ce30b
Create cgch.txt
Fellmonkey Oct 20, 2025
9725af6
Add new project configuration to Package.sln
Fellmonkey Oct 20, 2025
1905a3b
Update Package.sln
Fellmonkey Oct 20, 2025
e0e8c9a
Update InputFileTests.cs.twig
Fellmonkey Oct 20, 2025
e9cb8f7
Fix InputFile filename assertion for OS differences
Fellmonkey Oct 20, 2025
16620e6
feat: cli sync databases
ChiragAgg5k Oct 20, 2025
be1bc73
Avoid C# 12 collection expressions for broader compatibility.
Fellmonkey Oct 20, 2025
11427a9
Remove redundant CanConvert test for non-enum type
Fellmonkey Oct 20, 2025
8bfe93e
spec.title
Fellmonkey Oct 20, 2025
e9e77ae
Merge branch 'tests-dotnet' into dev
Fellmonkey Oct 20, 2025
f271d9f
remove automatic updates
ChiragAgg5k Oct 21, 2025
223f663
stack changes
ChiragAgg5k Oct 21, 2025
32cfee0
add enabled
ChiragAgg5k Oct 21, 2025
3d18a1e
wrap in try catch
ChiragAgg5k Oct 21, 2025
0c4f514
Merge pull request #1222 from appwrite/sync-databases
ChiragAgg5k Oct 21, 2025
ac43a8b
Add error and close callbacks to Swift Realtime service
ChiragAgg5k Oct 21, 2025
cc46d55
Update templates/swift/Sources/Services/Realtime.swift.twig
ChiragAgg5k Oct 21, 2025
c88c9a9
Update templates/swift/Sources/Services/Realtime.swift.twig
ChiragAgg5k Oct 21, 2025
e278eb2
fix: invocation
ChiragAgg5k Oct 21, 2025
997e27a
Merge pull request #1224 from appwrite/add-swift-realtime-callbacks
ChiragAgg5k Oct 21, 2025
091dc69
Add operator classes
abnegate Oct 22, 2025
bbb6700
Add tests
abnegate Oct 22, 2025
52bc09a
fix: onclose callback to trigger in reconnects too
ChiragAgg5k Oct 22, 2025
7a0ab23
Merge pull request #1226 from appwrite/update-onclose-callback
ChiragAgg5k Oct 22, 2025
2489906
Fix Android/Kotlin filter
abnegate Oct 22, 2025
c6398f6
Fix dart/flutter filter
abnegate Oct 22, 2025
c8bdf6e
chore: add onOpen callback to realtime in swift/apple
ChiragAgg5k Oct 22, 2025
e6a0c1f
Add condition enum
abnegate Oct 22, 2025
a61c8be
Merge pull request #1227 from appwrite/swift-onopen-callback
ChiragAgg5k Oct 22, 2025
740b006
feat: Realtime service for web sdk
ChiragAgg5k Oct 22, 2025
4be7e1d
session check
hmacr Oct 22, 2025
bc0ba8f
chore: shift realtime service file to apple template
ChiragAgg5k Oct 22, 2025
21acb98
update spec
hmacr Oct 22, 2025
f23cb97
Fix tests
abnegate Oct 22, 2025
8f17f71
update tests
ChiragAgg5k Oct 22, 2025
3e350dc
deprecate method
ChiragAgg5k Oct 22, 2025
0d87a2b
Merge pull request #1229 from appwrite/fix-realtime-template
ChiragAgg5k Oct 22, 2025
611e8b2
Fix tests
abnegate Oct 22, 2025
2c4b18d
export realtime service
ChiragAgg5k Oct 22, 2025
2bbc569
use endpointRealtime
ChiragAgg5k Oct 22, 2025
77b70b5
keep the skip
ChiragAgg5k Oct 22, 2025
406cd01
keep the skip
ChiragAgg5k Oct 22, 2025
23f8496
add format
ChiragAgg5k Oct 22, 2025
109cfc4
use generics
ChiragAgg5k Oct 22, 2025
f5884d2
use normal closure
ChiragAgg5k Oct 22, 2025
c734f3a
Fix tests
abnegate Oct 22, 2025
3d1df1f
Fix PHP test
abnegate Oct 22, 2025
8df4a60
Fix chromium test
abnegate Oct 22, 2025
ed20156
Add isNull + isNotNull conditions
abnegate Oct 22, 2025
3c4dc84
Block divide by 0
abnegate Oct 22, 2025
c26f8d6
Fix web chrome test
abnegate Oct 23, 2025
c4af38b
Add divide by zero checks
abnegate Oct 23, 2025
75c4f07
Fix Android nullable
abnegate Oct 23, 2025
b38d7d0
Merge remote-tracking branch 'origin/master' into feat-operators
abnegate Oct 23, 2025
e891fc7
Align exceptions
abnegate Oct 23, 2025
d4b0349
Merge pull request #1228 from appwrite/feat-realtime-web
ChiragAgg5k Oct 23, 2025
405ed73
Merge pull request #1216 from appwrite/feat-8925-realtime-session-web…
stnguyen90 Oct 23, 2025
fd4027e
Merge remote-tracking branch 'origin/master' into feat-operators
abnegate Oct 24, 2025
7fa776c
fix: tables init in cli and improve approveChanges table
ChiragAgg5k Oct 24, 2025
1b75df0
update copy
ChiragAgg5k Oct 24, 2025
d836725
Merge pull request #1230 from appwrite/fix-tables-init
ChiragAgg5k Oct 24, 2025
92f13d8
Add more numeric checks
abnegate Oct 24, 2025
14f619e
fix: handle sessions in realtime service for web
ChiragAgg5k Oct 24, 2025
10b612a
suggestion
ChiragAgg5k Oct 24, 2025
9b78ba0
update fix
ChiragAgg5k Oct 24, 2025
1c64a0e
fix: session check
ChiragAgg5k Oct 24, 2025
b66910c
Merge pull request #1231 from appwrite/handle-sessions-realtime-web
ChiragAgg5k Oct 24, 2025
1b8fdf8
fix: config typing
ChiragAgg5k Oct 24, 2025
0ef2a57
fix: mark as undefined
ChiragAgg5k Oct 24, 2025
d17a631
fix: channels set
ChiragAgg5k Oct 24, 2025
5970def
Merge pull request #1232 from appwrite/fix-annotation
ChiragAgg5k Oct 24, 2025
85fb57a
fix: trigger onOpen callback in Swift WebSocket after upgrade completes
ChiragAgg5k Oct 24, 2025
746dcc0
chore: sync tables deletion when removed locally
ChiragAgg5k Oct 24, 2025
2cd830c
Merge pull request #1234 from appwrite/sync-tables
ChiragAgg5k Oct 24, 2025
1bb75e5
fix: export allEnums instead of just requestEnums
ChiragAgg5k Oct 25, 2025
efda558
Merge pull request #1235 from appwrite/fix-import-request-enums
ChiragAgg5k Oct 25, 2025
873f4d5
feat: use Permissions and Roles helper class in docs instead of read(…
ChiragAgg5k Oct 26, 2025
4a50754
move the filter
ChiragAgg5k Oct 26, 2025
a951574
update fn
ChiragAgg5k Oct 26, 2025
c8ffdb5
fix: lint
ChiragAgg5k Oct 26, 2025
6a88349
declare public
ChiragAgg5k Oct 26, 2025
8ebe19c
fix: usage
ChiragAgg5k Oct 26, 2025
fde0de3
check for multiple permission strings
ChiragAgg5k Oct 26, 2025
5da2c46
update extractPermissions
ChiragAgg5k Oct 26, 2025
9b3b137
lint
ChiragAgg5k Oct 26, 2025
45ed065
add changes for php
ChiragAgg5k Oct 26, 2025
3ceec54
add changes for python
ChiragAgg5k Oct 26, 2025
eded549
finish all languages
ChiragAgg5k Oct 26, 2025
c225f05
handle id and inner roles
ChiragAgg5k Oct 26, 2025
c1aaf05
handle in python and kotlin too
ChiragAgg5k Oct 26, 2025
db1a0f9
Merge pull request #1236 from appwrite/feat-update-permissions-docs
ChiragAgg5k Oct 27, 2025
523c165
Merge pull request #1054 from mi5ha/patch-1
ChiragAgg5k Oct 27, 2025
8594bf9
fix: import in swift and apple docs
ChiragAgg5k Oct 27, 2025
fad05db
dotnet too
ChiragAgg5k Oct 27, 2025
b9405cc
Merge pull request #1237 from appwrite/fix-permissions-import
ChiragAgg5k Oct 27, 2025
b4a2fd9
Merge pull request #1233 from appwrite/fix-swift-websocket-onopen-cal…
ChiragAgg5k Oct 28, 2025
24e5082
chore: flutter support for android 15+ changes
ChiragAgg5k Oct 28, 2025
f00005d
security fix: replace pkg with @yao-pkg/pkg in cli
ChiragAgg5k Oct 28, 2025
95f91ca
fix - added push command support for cli spatial types
ArnabChatterjee20k Oct 28, 2025
ae9f475
Merge pull request #1241 from appwrite/cli-sdk-spatial
ChiragAgg5k Oct 28, 2025
2d24ec8
Merge pull request #1240 from appwrite/fix-moderate-vul-cli
ChiragAgg5k Oct 28, 2025
3ea8de6
Merge pull request #1239 from appwrite/fix-update-device_info_plus
ChiragAgg5k Oct 28, 2025
b2a3be4
fix: attribute changing during push
ChiragAgg5k Oct 29, 2025
928137c
fix: add permission and role helper class to node
ChiragAgg5k Oct 29, 2025
1685a96
Merge pull request #1242 from appwrite/fix-attribute-changing
abnegate Oct 29, 2025
b18577e
fix: wrap non required values with Optional[] in python
ChiragAgg5k Oct 29, 2025
61b898b
fix: skipping of none values
ChiragAgg5k Oct 29, 2025
e2fd487
import optional
ChiragAgg5k Oct 29, 2025
08f8394
Merge pull request #1244 from appwrite/chore-wrap-optional-python
abnegate Oct 29, 2025
28e876f
move permission check to language class
ChiragAgg5k Oct 29, 2025
2c17646
reorganize
ChiragAgg5k Oct 29, 2025
9359bef
Merge pull request #1243 from appwrite/fix-add-permission-helper-clas…
abnegate Oct 30, 2025
6bb5b51
Merge remote-tracking branch 'origin/master' into feat-operators
abnegate Oct 30, 2025
3a1c0c7
Merge branch 'feat-operators' of github.com:appwrite/sdk-generator in…
abnegate Oct 30, 2025
304388a
Fix string operator names
abnegate Oct 31, 2025
4030614
Merge remote-tracking branch 'origin/master' into feat-operators
abnegate Oct 31, 2025
bdb3d32
Fix tests
abnegate Oct 31, 2025
3e21aef
Fix tests
abnegate Oct 31, 2025
a38e654
Fix tests
abnegate Oct 31, 2025
42df221
Merge pull request #1225 from appwrite/feat-operators
abnegate Oct 31, 2025
7a8cdde
fix (python): skip passing None to non nullable params
ChiragAgg5k Nov 4, 2025
66303a3
Fix: Replace deprecated OpenJDK Docker images with Eclipse Temurin
ChiragAgg5k Nov 4, 2025
ad352a2
Merge pull request #1246 from appwrite/fix-deprecated-openjdk-images
abnegate Nov 4, 2025
5015554
Merge branch 'master' into fix-passing-none-values-python
ChiragAgg5k Nov 4, 2025
530ca3b
use type bool
ChiragAgg5k Nov 4, 2025
cd71267
Merge pull request #1245 from appwrite/fix-passing-none-values-python
abnegate Nov 4, 2025
f0a6764
Merge remote-tracking branch 'upstream/master' into tests-dotnet
Fellmonkey Nov 4, 2025
5ca706c
Add operator tests and update query method assertions
Fellmonkey Nov 4, 2025
5afc6c7
Merge branch 'tests-dotnet' into dev
Fellmonkey Nov 4, 2025
1fda365
Update sdk-build-validation.yml
Fellmonkey Nov 4, 2025
014ca81
Update sdk-build-validation.yml
Fellmonkey Nov 4, 2025
764e2d4
Handle enum string values in Dart test templates
Fellmonkey Nov 4, 2025
0718093
Update service_test.dart.twig
Fellmonkey Nov 4, 2025
662d87a
Update ServiceTest.php.twig
Fellmonkey Nov 4, 2025
5d3754b
Update ServiceTest.php.twig
Fellmonkey Nov 4, 2025
090c572
Add test execution step to SDK build workflow
Fellmonkey Nov 4, 2025
c9100c2
fix: type generation for enums by prefixing table name
ChiragAgg5k Nov 7, 2025
123771d
fix: csharp
ChiragAgg5k Nov 7, 2025
98a08ba
fix: php build failing
ChiragAgg5k Nov 10, 2025
39ee7e0
Merge pull request #1249 from appwrite/fix-prefix-table-name
ChiragAgg5k Nov 10, 2025
3d17552
skip deprecated colliding method names
ChiragAgg5k Nov 10, 2025
7a34a2c
Merge pull request #1250 from appwrite/fix-php-build-failing
abnegate Nov 10, 2025
a3d0afb
fix: example generation for php for enums
ChiragAgg5k Nov 10, 2025
1a7a3b8
Merge pull request #1251 from appwrite/fix-example-generation
abnegate Nov 10, 2025
5a34b58
fix: strip non-nullable optional params in Dart/Flutter SDKs
ChiragAgg5k Nov 10, 2025
e4f2bef
include removal of stripping null values
ChiragAgg5k Nov 10, 2025
ecfc5fb
fix: duplicacy
ChiragAgg5k Nov 12, 2025
3c12f46
filter null values in multi part and get requests
ChiragAgg5k Nov 12, 2025
958947b
Merge pull request #1252 from appwrite/fix-dart-flutter-optional-params
loks0n Nov 12, 2025
eeb56cc
fix: spelling UInt8List to Uint8List
ChiragAgg5k Nov 13, 2025
50fd27e
Merge pull request #1253 from appwrite/fix-spelling-mistake-Uint8List
abnegate Nov 13, 2025
a835a4b
fix: Fix issue https://github.com/appwrite/sdk-for-flutter/issues/285…
M4dhav Nov 13, 2025
7871aef
Re-export JSONCodable module
abnegate Nov 14, 2025
1f3686e
Merge pull request #1255 from appwrite/feat-expose-anycodable
abnegate Nov 14, 2025
991858e
Merge pull request #1254 from M4dhav/fix-flutter-web-auth-2
ChiragAgg5k Nov 17, 2025
e0c94c8
Fix enum rendering in templates and remove enumName fallback hacks
ChiragAgg5k Nov 18, 2025
d552c63
try fix java
ChiragAgg5k Nov 18, 2025
9bacbb5
try fix java
ChiragAgg5k Nov 18, 2025
63874ea
fix python
ChiragAgg5k Nov 18, 2025
049fa31
fix ruby
ChiragAgg5k Nov 18, 2025
c720707
fix rn
ChiragAgg5k Nov 18, 2025
2e5d2b9
fix android
ChiragAgg5k Nov 18, 2025
c908315
fix android
ChiragAgg5k Nov 18, 2025
7051afc
fix add optional enums too
ChiragAgg5k Nov 18, 2025
38b6523
fix kotlin android
ChiragAgg5k Nov 18, 2025
91a4c93
fix casing
ChiragAgg5k Nov 18, 2025
67dfeff
fix casing
ChiragAgg5k Nov 18, 2025
9bd8057
fix dotnet
ChiragAgg5k Nov 18, 2025
e2cf0af
fix kotlin
ChiragAgg5k Nov 18, 2025
3f39061
fix node
ChiragAgg5k Nov 18, 2025
dc6720b
Merge pull request #1257 from appwrite/fix-enum-rendering
abnegate Nov 18, 2025
374c9a5
Merge remote-tracking branch 'upstream/master' into dev
Fellmonkey Nov 18, 2025
eea14a6
Add type generation support for geometric types (point, linestring, p…
ChiragAgg5k Nov 19, 2025
d8126c7
Merge remote-tracking branch 'upstream/master' into CI-run-tests
Fellmonkey Nov 19, 2025
734f44a
fix playwright version
ChiragAgg5k Nov 20, 2025
d7ac737
seperate out branch in example file
ChiragAgg5k Nov 20, 2025
ae5294d
fix web chromium issue
ChiragAgg5k Nov 20, 2025
05367bc
Merge pull request #1258 from appwrite/feat-add-geometric-types-support
Meldiron Nov 20, 2025
13d2386
Fix Java examples using Kotlin-specific syntax
ChiragAgg5k Nov 23, 2025
df5574b
Add djLint formatter and linter for Twig templates
ChiragAgg5k Nov 25, 2025
ec0e7e1
Fix: Disable djLint formatting, use lint-only mode
ChiragAgg5k Nov 25, 2025
04b5e00
Add more ignore rules to djLint configuration
ChiragAgg5k Nov 25, 2025
3d1534f
Refine djLint rules: ignore false positives, fix real issues
ChiragAgg5k Nov 25, 2025
ba8db0e
docs: Add Twig linting section to CONTRIBUTING.md
ChiragAgg5k Nov 25, 2025
9902d29
review comments
ChiragAgg5k Nov 24, 2025
ee434aa
Merge pull request #1259 from appwrite/fix-java-examples-kotlin-syntax
ChiragAgg5k Nov 25, 2025
64369d3
Merge branch 'master' into feat-djlint-twig-formatter
ChiragAgg5k Nov 25, 2025
a13dfb9
Merge pull request #1260 from appwrite/feat-djlint-twig-formatter
ChiragAgg5k Dec 1, 2025
bfa2fb0
Add validation for undefined endpoint in TypeScript setEndpoint method
ChiragAgg5k Nov 28, 2025
ac31311
Merge pull request #1261 from appwrite/fix-typescript-setendpoint-val…
loks0n Dec 1, 2025
21ce631
Merge remote-tracking branch 'upstream/master' into CI-run-tests
Fellmonkey Dec 2, 2025
c075d71
Merge branch 'CI-run-tests' into dev
Fellmonkey Dec 2, 2025
c976f23
tmp
Fellmonkey Dec 2, 2025
08a31f0
Merge branch 'php-test-fix' into dev
Fellmonkey Dec 2, 2025
1a913e5
tmp
Fellmonkey Dec 2, 2025
1dcc93d
Merge branch 'php-test-fix' into dev
Fellmonkey Dec 2, 2025
0ffd2b6
Refactor PHP test templates
Fellmonkey Dec 2, 2025
e51522b
Merge branch 'php-test-fix' into dev
Fellmonkey Dec 2, 2025
43417b7
Refactor PHP test templates
Fellmonkey Dec 2, 2025
51fc7db
Merge branch 'php-test-fix' into dev
Fellmonkey Dec 2, 2025
09c0144
Cast enum parameters to string in PHP templates
Fellmonkey Dec 2, 2025
113e2d0
Merge branch 'php-test-fix' into dev
Fellmonkey Dec 2, 2025
c76e0f8
Cast enum parameters to string in PHP templates
Fellmonkey Dec 2, 2025
da443fd
Merge branch 'php-test-fix' into dev
Fellmonkey Dec 2, 2025
5a1fa86
Cast enum parameters to string in PHP templates
Fellmonkey Dec 2, 2025
98c9094
Merge branch 'php-test-fix' into dev
Fellmonkey Dec 2, 2025
afc17b6
lint fix
Fellmonkey Dec 2, 2025
4ce5504
Update ServiceTest.php.twig
Fellmonkey Dec 2, 2025
82ea5a3
Cast enum parameters to string in PHP templates
Fellmonkey Dec 2, 2025
2137d79
Merge branch 'php-test-fix' into dev
Fellmonkey Dec 2, 2025
e5374c0
Cast enum parameters to string in PHP templates
Fellmonkey Dec 2, 2025
d85ff1e
Merge branch 'php-test-fix' into dev
Fellmonkey Dec 2, 2025
0b3a021
Update ServiceTest template for array return types
Fellmonkey Dec 2, 2025
598ed71
Merge branch 'php-test-fix' into dev
Fellmonkey Dec 2, 2025
8cd68c7
Update request and test templates for location type
Fellmonkey Dec 2, 2025
f49f2ae
Merge branch 'php-test-fix' into dev
Fellmonkey Dec 2, 2025
8020d3e
test
Fellmonkey Dec 2, 2025
bf5bb8b
Update api.twig
Fellmonkey Dec 2, 2025
52ffbc5
Update ServiceTest.php.twig
Fellmonkey Dec 2, 2025
6966815
Update service_test.dart.twig
Fellmonkey Dec 2, 2025
0bb8b7c
Revert "Update service_test.dart.twig"
Fellmonkey Dec 2, 2025
8b1eff0
Remove extra blank lines
Fellmonkey Dec 12, 2025
d7ca639
Merge remote-tracking branch 'upstream/master' into unity-client-sdk
Fellmonkey Dec 12, 2025
4ebabd7
Refactor Unity SDK templates and improve thread safety
Fellmonkey Dec 12, 2025
fbce5fd
unity tests
Fellmonkey Dec 12, 2025
0abdb63
Merge branch 'unity-client-sdk' into dev
Fellmonkey Dec 12, 2025
790a2e6
Update Tests.cs
Fellmonkey Dec 12, 2025
027a41d
Update Tests.cs
Fellmonkey Dec 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
31 changes: 31 additions & 0 deletions .github/workflows/djlint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Twig Linting

on:
pull_request:
paths:
- '**.twig'
- '.github/workflows/djlint.yml'
- 'pyproject.toml'
push:
branches:
- master
paths:
- '**.twig'
- '.github/workflows/djlint.yml'
- 'pyproject.toml'

jobs:
djlint:
name: djLint - Twig Linter
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v4

- name: Run djLint linter
run: |
uvx djlint templates/ --lint
297 changes: 297 additions & 0 deletions .github/workflows/sdk-build-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,297 @@
name: Appwrite SDK Build Validation

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on: [pull_request]

jobs:
generate-and-build:
name: ${{ matrix.sdk }} (${{ matrix.platform }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
# Client SDKs
- sdk: web
platform: client

- sdk: flutter
platform: client

- sdk: apple
platform: client

- sdk: android
platform: client

- sdk: react-native
platform: client

# Server SDKs
- sdk: node
platform: server

- sdk: php
platform: server

- sdk: python
platform: server

- sdk: ruby
platform: server

- sdk: dart
platform: server

- sdk: go
platform: server

- sdk: swift
platform: server

- sdk: dotnet
platform: server

- sdk: kotlin
platform: server

# Console SDKs
- sdk: cli
platform: console

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: curl

- name: Install Composer Dependencies
run: composer install

- name: Generate SDK for ${{ matrix.sdk }}
run: php example.php ${{ matrix.sdk }} ${{ matrix.platform }}

# Language-specific setup
- name: Setup Node.js
if: matrix.sdk == 'web' || matrix.sdk == 'node' || matrix.sdk == 'cli' || matrix.sdk == 'react-native'
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Setup Flutter
if: matrix.sdk == 'flutter'
uses: subosito/flutter-action@v2
with:
channel: 'stable'

- name: Setup Swift
if: matrix.sdk == 'apple' || matrix.sdk == 'swift'
run: |
sudo apt-get update
sudo apt-get install -y wget
wget https://download.swift.org/swift-5.9.2-release/ubuntu2204/swift-5.9.2-RELEASE/swift-5.9.2-RELEASE-ubuntu22.04.tar.gz
tar xzf swift-5.9.2-RELEASE-ubuntu22.04.tar.gz
sudo mv swift-5.9.2-RELEASE-ubuntu22.04 /usr/share/swift
echo "/usr/share/swift/usr/bin" >> $GITHUB_PATH

- name: Setup Java
if: matrix.sdk == 'android' || matrix.sdk == 'kotlin'
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'

- name: Setup Python
if: matrix.sdk == 'python'
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Setup Ruby
if: matrix.sdk == 'ruby'
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1'

- name: Setup Dart
if: matrix.sdk == 'dart'
uses: dart-lang/setup-dart@v1
with:
sdk: 'stable'

- name: Setup Go
if: matrix.sdk == 'go'
uses: actions/setup-go@v5
with:
go-version: '1.21'

- name: Setup .NET
if: matrix.sdk == 'dotnet'
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'

- name: Build SDK
working-directory: examples/${{ matrix.sdk }}
run: |
case "${{ matrix.sdk }}" in
web|node)
npm install
npm run build
;;
cli)
npm install
npm run linux-x64
;;
react-native)
npm install
npm run build || echo "No build script, checking syntax only"
;;
flutter)
flutter pub get
dart analyze --no-fatal-warnings
;;
apple|swift)
swift build
;;
android)
chmod +x ./gradlew || true
./gradlew build -x lint
;;
kotlin)
chmod +x ./gradlew || true
./gradlew build
;;
php)
composer install
find . -name "*.php" ! -path "./vendor/*" -exec php -l {} +
;;
python)
pip install -e .
python -m compileall appwrite/
;;
ruby)
bundle install
;;
dart)
dart pub get
dart analyze --no-fatal-warnings
;;
go)
go mod tidy || true
go build ./...
;;
dotnet)
dotnet build
;;
*)
echo "Unknown SDK: ${{ matrix.sdk }}"
exit 1
;;
esac

- name: Run Tests
working-directory: examples/${{ matrix.sdk }}
run: |
case "${{ matrix.sdk }}" in
web|node|cli|react-native)
if [ -f "package.json" ] && grep -q '"test"' package.json; then
# Check if test script is not a placeholder/error message
if grep -q '"test".*"echo.*no test' package.json; then
echo "No tests configured (placeholder script found)"
else
npm test
fi
else
echo "No tests configured in package.json"
fi
;;
flutter)
if [ -d "test" ] && find test -name "*_test.dart" 2>/dev/null | grep -q .; then
flutter test
else
echo "No Flutter tests found"
fi
;;
apple|swift)
if [ -d "Tests" ] && find Tests -name "*.swift" 2>/dev/null | grep -q .; then
swift test
else
echo "No Swift tests found"
fi
;;
android)
if [ -d "library/src/test" ] || [ -d "app/src/test" ]; then
./gradlew test
else
echo "No Android tests found"
fi
;;
kotlin)
if [ -d "src/test" ]; then
./gradlew test
else
echo "No Kotlin tests found"
fi
;;
php)
if [ -f "vendor/bin/phpunit" ] && [ -d "tests" ]; then
vendor/bin/phpunit tests/
else
echo "No PHPUnit tests configured"
fi
;;
python)
if [ -d "tests" ] || find . -maxdepth 2 -name "test_*.py" -o -name "*_test.py" 2>/dev/null | grep -q .; then
python -m pytest
else
echo "No pytest tests found"
fi
;;
ruby)
if [ -d "test" ] || [ -d "spec" ]; then
if [ -f "Rakefile" ] && grep -q "test" Rakefile; then
bundle exec rake test
elif [ -d "spec" ]; then
bundle exec rspec
else
echo "No Ruby tests configured"
fi
else
echo "No Ruby tests found"
fi
;;
dart)
if [ -d "test" ] && find test -name "*_test.dart" 2>/dev/null | grep -q .; then
dart test
else
echo "No Dart tests found"
fi
;;
go)
if find . -name "*_test.go" 2>/dev/null | grep -q .; then
go test ./...
else
echo "No Go tests found"
fi
;;
dotnet)
if find . -name "*.csproj" -exec grep -l "Microsoft.NET.Test.Sdk" {} \; 2>/dev/null | grep -q .; then
dotnet test
else
echo "No .NET tests configured"
fi
;;
*)
echo "No tests for SDK: ${{ matrix.sdk }}"
;;
esac
8 changes: 5 additions & 3 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ concurrency:

on: [pull_request]

env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}

jobs:
build:
runs-on: ubuntu-latest
Expand All @@ -20,8 +23,6 @@ jobs:
CLINode18,
DartBeta,
DartStable,
Deno1193,
Deno1303,
DotNet60,
DotNet80,
DotNet90,
Expand All @@ -47,6 +48,7 @@ jobs:
Ruby31,
AppleSwift56,
Swift56,
Unity2021,
WebChromium,
WebNode
]
Expand Down Expand Up @@ -96,7 +98,7 @@ jobs:
- name: Setup PHP with PECL extension
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
php-version: '8.3'
extensions: curl

- name: Install
Expand Down
25 changes: 25 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,31 @@ docker run --rm -v $(pwd):/app -w /app php:8.3-cli php example.php

Check your output files at: /examples/new-lang and make sure the SDK works. When possible, add some unit tests.

## Linting Twig Templates

We use [djLint](https://djlint.com/) to lint Twig template files for syntax errors and common issues. The linter runs automatically on pull requests.

**To lint templates locally:**
```bash
composer lint-twig
```

**Requirements:**
- [uv](https://github.com/astral-sh/uv) must be installed (for running `uvx` commands)

**Configuration:**
- Located in `pyproject.toml`
- Only linting is enabled (formatting is disabled to avoid breaking code generation)
- Several rules are ignored as they produce false positives for code generation templates

**What the linter catches:**
- Template syntax errors
- Missing closing tags
- Extra blank lines
- Basic HTML structure issues

**Note:** If you encounter linting errors that seem incorrect for code generation templates, please discuss in your PR rather than disabling the linter.

## SDK Checklist

It is very important for us to create a consistent structure and architecture, as well as a language-native feel for the SDKs we generate.
Expand Down
Loading
Loading