mirror of
https://github.com/immich-app/immich
synced 2025-11-07 17:27:20 +00:00
See https://pnpm.io/cli/dlx pnpx is an alias to pnpm dlx. However in some situations, the alias might not be preset in the current terminal session. We should use pnpm dlx directly instead of relying on the alias which might not work.
49 lines
2 KiB
Bash
Executable file
49 lines
2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
OPENAPI_GENERATOR_VERSION=v7.12.0
|
|
|
|
# usage: ./bin/generate-open-api.sh
|
|
|
|
function dart {
|
|
rm -rf ../mobile/openapi
|
|
cd ./templates/mobile/serialization/native
|
|
wget -O native_class.mustache https://raw.githubusercontent.com/OpenAPITools/openapi-generator/$OPENAPI_GENERATOR_VERSION/modules/openapi-generator/src/main/resources/dart2/serialization/native/native_class.mustache
|
|
patch --no-backup-if-mismatch -u native_class.mustache <native_class.mustache.patch
|
|
patch --no-backup-if-mismatch -u native_class.mustache <native_class_nullable_items_in_arrays.patch
|
|
|
|
cd ../../
|
|
wget -O api.mustache https://raw.githubusercontent.com/OpenAPITools/openapi-generator/$OPENAPI_GENERATOR_VERSION/modules/openapi-generator/src/main/resources/dart2/api.mustache
|
|
patch --no-backup-if-mismatch -u api.mustache <api.mustache.patch
|
|
|
|
cd ../../
|
|
pnpm dlx @openapitools/openapi-generator-cli generate -g dart -i ./immich-openapi-specs.json -o ../mobile/openapi -t ./templates/mobile
|
|
|
|
# Post generate patches
|
|
patch --no-backup-if-mismatch -u ../mobile/openapi/lib/api_client.dart <./patch/api_client.dart.patch
|
|
patch --no-backup-if-mismatch -u ../mobile/openapi/lib/api.dart <./patch/api.dart.patch
|
|
patch --no-backup-if-mismatch -u ../mobile/openapi/pubspec.yaml <./patch/pubspec_immich_mobile.yaml.patch
|
|
# Don't include analysis_options.yaml for the generated openapi files
|
|
# so that language servers can properly exclude the mobile/openapi directory
|
|
rm ../mobile/openapi/analysis_options.yaml
|
|
}
|
|
|
|
function typescript {
|
|
pnpm dlx oazapfts --optimistic --argumentStyle=object --useEnumType immich-openapi-specs.json typescript-sdk/src/fetch-client.ts
|
|
pnpm --filter @immich/sdk install --frozen-lockfile
|
|
pnpm --filter @immich/sdk build
|
|
}
|
|
|
|
# requires server to be built
|
|
(
|
|
cd ..
|
|
SHARP_IGNORE_GLOBAL_LIBVIPS=true pnpm --filter immich build
|
|
pnpm --filter immich sync:open-api
|
|
)
|
|
|
|
if [[ $1 == 'dart' ]]; then
|
|
dart
|
|
elif [[ $1 == 'typescript' ]]; then
|
|
typescript
|
|
else
|
|
dart
|
|
typescript
|
|
fi
|