chirag-appwrite-cli 0.1.0
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.
- package/.github/workflows/npm-publish.yml +49 -0
- package/CHANGELOG.md +1 -0
- package/Formula/appwrite.rb +19 -0
- package/LICENSE.md +1 -0
- package/README.md +104 -0
- package/appwrite.json +164 -0
- package/docs/examples/account/create-anonymous-session.md +1 -0
- package/docs/examples/account/create-email-password-session.md +3 -0
- package/docs/examples/account/create-email-token.md +4 -0
- package/docs/examples/account/create-j-w-t.md +1 -0
- package/docs/examples/account/create-magic-u-r-l-token.md +5 -0
- package/docs/examples/account/create-mfa-authenticator.md +2 -0
- package/docs/examples/account/create-mfa-challenge.md +2 -0
- package/docs/examples/account/create-mfa-recovery-codes.md +1 -0
- package/docs/examples/account/create-o-auth2session.md +5 -0
- package/docs/examples/account/create-o-auth2token.md +5 -0
- package/docs/examples/account/create-phone-token.md +3 -0
- package/docs/examples/account/create-phone-verification.md +1 -0
- package/docs/examples/account/create-push-target.md +4 -0
- package/docs/examples/account/create-recovery.md +3 -0
- package/docs/examples/account/create-session.md +3 -0
- package/docs/examples/account/create-verification.md +2 -0
- package/docs/examples/account/create.md +5 -0
- package/docs/examples/account/delete-identity.md +2 -0
- package/docs/examples/account/delete-mfa-authenticator.md +2 -0
- package/docs/examples/account/delete-push-target.md +2 -0
- package/docs/examples/account/delete-session.md +2 -0
- package/docs/examples/account/delete-sessions.md +1 -0
- package/docs/examples/account/delete.md +1 -0
- package/docs/examples/account/get-mfa-recovery-codes.md +1 -0
- package/docs/examples/account/get-prefs.md +1 -0
- package/docs/examples/account/get-session.md +2 -0
- package/docs/examples/account/get.md +1 -0
- package/docs/examples/account/list-identities.md +2 -0
- package/docs/examples/account/list-logs.md +2 -0
- package/docs/examples/account/list-mfa-factors.md +1 -0
- package/docs/examples/account/list-sessions.md +1 -0
- package/docs/examples/account/update-email.md +3 -0
- package/docs/examples/account/update-m-f-a.md +2 -0
- package/docs/examples/account/update-magic-u-r-l-session.md +3 -0
- package/docs/examples/account/update-mfa-authenticator.md +3 -0
- package/docs/examples/account/update-mfa-challenge.md +3 -0
- package/docs/examples/account/update-mfa-recovery-codes.md +1 -0
- package/docs/examples/account/update-name.md +2 -0
- package/docs/examples/account/update-password.md +3 -0
- package/docs/examples/account/update-phone-session.md +3 -0
- package/docs/examples/account/update-phone-verification.md +3 -0
- package/docs/examples/account/update-phone.md +3 -0
- package/docs/examples/account/update-prefs.md +2 -0
- package/docs/examples/account/update-push-target.md +3 -0
- package/docs/examples/account/update-recovery.md +4 -0
- package/docs/examples/account/update-session.md +2 -0
- package/docs/examples/account/update-status.md +1 -0
- package/docs/examples/account/update-verification.md +3 -0
- package/docs/examples/avatars/get-browser.md +5 -0
- package/docs/examples/avatars/get-credit-card.md +5 -0
- package/docs/examples/avatars/get-favicon.md +2 -0
- package/docs/examples/avatars/get-flag.md +5 -0
- package/docs/examples/avatars/get-image.md +4 -0
- package/docs/examples/avatars/get-initials.md +5 -0
- package/docs/examples/avatars/get-q-r.md +5 -0
- package/docs/examples/console/get-resource.md +3 -0
- package/docs/examples/console/variables.md +1 -0
- package/docs/examples/databases/create-boolean-attribute.md +7 -0
- package/docs/examples/databases/create-collection.md +7 -0
- package/docs/examples/databases/create-datetime-attribute.md +7 -0
- package/docs/examples/databases/create-document.md +6 -0
- package/docs/examples/databases/create-documents.md +4 -0
- package/docs/examples/databases/create-email-attribute.md +7 -0
- package/docs/examples/databases/create-enum-attribute.md +8 -0
- package/docs/examples/databases/create-float-attribute.md +9 -0
- package/docs/examples/databases/create-index.md +8 -0
- package/docs/examples/databases/create-integer-attribute.md +9 -0
- package/docs/examples/databases/create-ip-attribute.md +7 -0
- package/docs/examples/databases/create-relationship-attribute.md +9 -0
- package/docs/examples/databases/create-string-attribute.md +9 -0
- package/docs/examples/databases/create-url-attribute.md +7 -0
- package/docs/examples/databases/create.md +4 -0
- package/docs/examples/databases/decrement-document-attribute.md +7 -0
- package/docs/examples/databases/delete-attribute.md +4 -0
- package/docs/examples/databases/delete-collection.md +3 -0
- package/docs/examples/databases/delete-document.md +4 -0
- package/docs/examples/databases/delete-documents.md +4 -0
- package/docs/examples/databases/delete-index.md +4 -0
- package/docs/examples/databases/delete.md +2 -0
- package/docs/examples/databases/get-attribute.md +4 -0
- package/docs/examples/databases/get-collection-usage.md +4 -0
- package/docs/examples/databases/get-collection.md +3 -0
- package/docs/examples/databases/get-database-usage.md +3 -0
- package/docs/examples/databases/get-document.md +5 -0
- package/docs/examples/databases/get-index.md +4 -0
- package/docs/examples/databases/get-usage.md +2 -0
- package/docs/examples/databases/get.md +2 -0
- package/docs/examples/databases/increment-document-attribute.md +7 -0
- package/docs/examples/databases/list-attributes.md +4 -0
- package/docs/examples/databases/list-collection-logs.md +4 -0
- package/docs/examples/databases/list-collections.md +4 -0
- package/docs/examples/databases/list-document-logs.md +5 -0
- package/docs/examples/databases/list-documents.md +4 -0
- package/docs/examples/databases/list-indexes.md +4 -0
- package/docs/examples/databases/list-logs.md +3 -0
- package/docs/examples/databases/list.md +3 -0
- package/docs/examples/databases/update-boolean-attribute.md +7 -0
- package/docs/examples/databases/update-collection.md +7 -0
- package/docs/examples/databases/update-datetime-attribute.md +7 -0
- package/docs/examples/databases/update-document.md +6 -0
- package/docs/examples/databases/update-documents.md +5 -0
- package/docs/examples/databases/update-email-attribute.md +7 -0
- package/docs/examples/databases/update-enum-attribute.md +8 -0
- package/docs/examples/databases/update-float-attribute.md +9 -0
- package/docs/examples/databases/update-integer-attribute.md +9 -0
- package/docs/examples/databases/update-ip-attribute.md +7 -0
- package/docs/examples/databases/update-relationship-attribute.md +6 -0
- package/docs/examples/databases/update-string-attribute.md +8 -0
- package/docs/examples/databases/update-url-attribute.md +7 -0
- package/docs/examples/databases/update.md +4 -0
- package/docs/examples/databases/upsert-document.md +6 -0
- package/docs/examples/databases/upsert-documents.md +4 -0
- package/docs/examples/functions/create-deployment.md +6 -0
- package/docs/examples/functions/create-duplicate-deployment.md +4 -0
- package/docs/examples/functions/create-execution.md +8 -0
- package/docs/examples/functions/create-template-deployment.md +7 -0
- package/docs/examples/functions/create-variable.md +5 -0
- package/docs/examples/functions/create-vcs-deployment.md +5 -0
- package/docs/examples/functions/create.md +19 -0
- package/docs/examples/functions/delete-deployment.md +3 -0
- package/docs/examples/functions/delete-execution.md +3 -0
- package/docs/examples/functions/delete-variable.md +3 -0
- package/docs/examples/functions/delete.md +2 -0
- package/docs/examples/functions/get-deployment-download.md +4 -0
- package/docs/examples/functions/get-deployment.md +3 -0
- package/docs/examples/functions/get-execution.md +3 -0
- package/docs/examples/functions/get-template.md +2 -0
- package/docs/examples/functions/get-usage.md +3 -0
- package/docs/examples/functions/get-variable.md +3 -0
- package/docs/examples/functions/get.md +2 -0
- package/docs/examples/functions/list-deployments.md +4 -0
- package/docs/examples/functions/list-executions.md +3 -0
- package/docs/examples/functions/list-runtimes.md +1 -0
- package/docs/examples/functions/list-specifications.md +1 -0
- package/docs/examples/functions/list-templates.md +5 -0
- package/docs/examples/functions/list-usage.md +2 -0
- package/docs/examples/functions/list-variables.md +2 -0
- package/docs/examples/functions/list.md +3 -0
- package/docs/examples/functions/update-deployment-status.md +3 -0
- package/docs/examples/functions/update-function-deployment.md +3 -0
- package/docs/examples/functions/update-variable.md +6 -0
- package/docs/examples/functions/update.md +19 -0
- package/docs/examples/graphql/mutation.md +2 -0
- package/docs/examples/graphql/query.md +2 -0
- package/docs/examples/health/get-antivirus.md +1 -0
- package/docs/examples/health/get-cache.md +1 -0
- package/docs/examples/health/get-certificate.md +2 -0
- package/docs/examples/health/get-d-b.md +1 -0
- package/docs/examples/health/get-failed-jobs.md +3 -0
- package/docs/examples/health/get-pub-sub.md +1 -0
- package/docs/examples/health/get-queue-builds.md +2 -0
- package/docs/examples/health/get-queue-certificates.md +2 -0
- package/docs/examples/health/get-queue-databases.md +3 -0
- package/docs/examples/health/get-queue-deletes.md +2 -0
- package/docs/examples/health/get-queue-functions.md +2 -0
- package/docs/examples/health/get-queue-logs.md +2 -0
- package/docs/examples/health/get-queue-mails.md +2 -0
- package/docs/examples/health/get-queue-messaging.md +2 -0
- package/docs/examples/health/get-queue-migrations.md +2 -0
- package/docs/examples/health/get-queue-stats-resources.md +2 -0
- package/docs/examples/health/get-queue-usage.md +2 -0
- package/docs/examples/health/get-queue-webhooks.md +2 -0
- package/docs/examples/health/get-storage-local.md +1 -0
- package/docs/examples/health/get-storage.md +1 -0
- package/docs/examples/health/get-time.md +1 -0
- package/docs/examples/health/get.md +1 -0
- package/docs/examples/locale/get.md +1 -0
- package/docs/examples/locale/list-codes.md +1 -0
- package/docs/examples/locale/list-continents.md +1 -0
- package/docs/examples/locale/list-countries-e-u.md +1 -0
- package/docs/examples/locale/list-countries-phones.md +1 -0
- package/docs/examples/locale/list-countries.md +1 -0
- package/docs/examples/locale/list-currencies.md +1 -0
- package/docs/examples/locale/list-languages.md +1 -0
- package/docs/examples/messaging/create-apns-provider.md +9 -0
- package/docs/examples/messaging/create-email.md +13 -0
- package/docs/examples/messaging/create-fcm-provider.md +5 -0
- package/docs/examples/messaging/create-mailgun-provider.md +11 -0
- package/docs/examples/messaging/create-msg91provider.md +7 -0
- package/docs/examples/messaging/create-push.md +20 -0
- package/docs/examples/messaging/create-sendgrid-provider.md +9 -0
- package/docs/examples/messaging/create-sms.md +8 -0
- package/docs/examples/messaging/create-smtp-provider.md +15 -0
- package/docs/examples/messaging/create-subscriber.md +4 -0
- package/docs/examples/messaging/create-telesign-provider.md +7 -0
- package/docs/examples/messaging/create-textmagic-provider.md +7 -0
- package/docs/examples/messaging/create-topic.md +4 -0
- package/docs/examples/messaging/create-twilio-provider.md +7 -0
- package/docs/examples/messaging/create-vonage-provider.md +7 -0
- package/docs/examples/messaging/delete-provider.md +2 -0
- package/docs/examples/messaging/delete-subscriber.md +3 -0
- package/docs/examples/messaging/delete-topic.md +2 -0
- package/docs/examples/messaging/delete.md +2 -0
- package/docs/examples/messaging/get-message.md +2 -0
- package/docs/examples/messaging/get-provider.md +2 -0
- package/docs/examples/messaging/get-subscriber.md +3 -0
- package/docs/examples/messaging/get-topic.md +2 -0
- package/docs/examples/messaging/list-message-logs.md +3 -0
- package/docs/examples/messaging/list-messages.md +3 -0
- package/docs/examples/messaging/list-provider-logs.md +3 -0
- package/docs/examples/messaging/list-providers.md +3 -0
- package/docs/examples/messaging/list-subscriber-logs.md +3 -0
- package/docs/examples/messaging/list-subscribers.md +4 -0
- package/docs/examples/messaging/list-targets.md +3 -0
- package/docs/examples/messaging/list-topic-logs.md +3 -0
- package/docs/examples/messaging/list-topics.md +3 -0
- package/docs/examples/messaging/update-apns-provider.md +9 -0
- package/docs/examples/messaging/update-email.md +13 -0
- package/docs/examples/messaging/update-fcm-provider.md +5 -0
- package/docs/examples/messaging/update-mailgun-provider.md +11 -0
- package/docs/examples/messaging/update-msg91provider.md +7 -0
- package/docs/examples/messaging/update-push.md +20 -0
- package/docs/examples/messaging/update-sendgrid-provider.md +9 -0
- package/docs/examples/messaging/update-sms.md +8 -0
- package/docs/examples/messaging/update-smtp-provider.md +15 -0
- package/docs/examples/messaging/update-telesign-provider.md +7 -0
- package/docs/examples/messaging/update-textmagic-provider.md +7 -0
- package/docs/examples/messaging/update-topic.md +4 -0
- package/docs/examples/messaging/update-twilio-provider.md +7 -0
- package/docs/examples/messaging/update-vonage-provider.md +7 -0
- package/docs/examples/migrations/create-appwrite-migration.md +5 -0
- package/docs/examples/migrations/create-csv-migration.md +4 -0
- package/docs/examples/migrations/create-firebase-migration.md +3 -0
- package/docs/examples/migrations/create-n-host-migration.md +9 -0
- package/docs/examples/migrations/create-supabase-migration.md +8 -0
- package/docs/examples/migrations/delete.md +2 -0
- package/docs/examples/migrations/get-appwrite-report.md +5 -0
- package/docs/examples/migrations/get-firebase-report.md +3 -0
- package/docs/examples/migrations/get-n-host-report.md +9 -0
- package/docs/examples/migrations/get-supabase-report.md +8 -0
- package/docs/examples/migrations/get.md +2 -0
- package/docs/examples/migrations/list.md +3 -0
- package/docs/examples/migrations/retry.md +2 -0
- package/docs/examples/project/create-variable.md +4 -0
- package/docs/examples/project/delete-variable.md +2 -0
- package/docs/examples/project/get-usage.md +4 -0
- package/docs/examples/project/get-variable.md +2 -0
- package/docs/examples/project/list-variables.md +1 -0
- package/docs/examples/project/update-variable.md +5 -0
- package/docs/examples/projects/create-dev-key.md +4 -0
- package/docs/examples/projects/create-j-w-t.md +4 -0
- package/docs/examples/projects/create-key.md +5 -0
- package/docs/examples/projects/create-platform.md +7 -0
- package/docs/examples/projects/create-smtp-test.md +11 -0
- package/docs/examples/projects/create-webhook.md +9 -0
- package/docs/examples/projects/create.md +14 -0
- package/docs/examples/projects/delete-dev-key.md +3 -0
- package/docs/examples/projects/delete-email-template.md +4 -0
- package/docs/examples/projects/delete-key.md +3 -0
- package/docs/examples/projects/delete-platform.md +3 -0
- package/docs/examples/projects/delete-sms-template.md +4 -0
- package/docs/examples/projects/delete-webhook.md +3 -0
- package/docs/examples/projects/delete.md +2 -0
- package/docs/examples/projects/get-dev-key.md +3 -0
- package/docs/examples/projects/get-email-template.md +4 -0
- package/docs/examples/projects/get-key.md +3 -0
- package/docs/examples/projects/get-platform.md +3 -0
- package/docs/examples/projects/get-sms-template.md +4 -0
- package/docs/examples/projects/get-webhook.md +3 -0
- package/docs/examples/projects/get.md +2 -0
- package/docs/examples/projects/list-dev-keys.md +3 -0
- package/docs/examples/projects/list-keys.md +2 -0
- package/docs/examples/projects/list-platforms.md +2 -0
- package/docs/examples/projects/list-webhooks.md +2 -0
- package/docs/examples/projects/list.md +3 -0
- package/docs/examples/projects/update-api-status-all.md +3 -0
- package/docs/examples/projects/update-api-status.md +4 -0
- package/docs/examples/projects/update-auth-duration.md +3 -0
- package/docs/examples/projects/update-auth-limit.md +3 -0
- package/docs/examples/projects/update-auth-password-dictionary.md +3 -0
- package/docs/examples/projects/update-auth-password-history.md +3 -0
- package/docs/examples/projects/update-auth-sessions-limit.md +3 -0
- package/docs/examples/projects/update-auth-status.md +4 -0
- package/docs/examples/projects/update-dev-key.md +5 -0
- package/docs/examples/projects/update-email-template.md +9 -0
- package/docs/examples/projects/update-key.md +6 -0
- package/docs/examples/projects/update-memberships-privacy.md +5 -0
- package/docs/examples/projects/update-mock-numbers.md +3 -0
- package/docs/examples/projects/update-o-auth2.md +6 -0
- package/docs/examples/projects/update-personal-data-check.md +3 -0
- package/docs/examples/projects/update-platform.md +7 -0
- package/docs/examples/projects/update-service-status-all.md +3 -0
- package/docs/examples/projects/update-service-status.md +4 -0
- package/docs/examples/projects/update-session-alerts.md +3 -0
- package/docs/examples/projects/update-sms-template.md +5 -0
- package/docs/examples/projects/update-smtp.md +11 -0
- package/docs/examples/projects/update-team.md +3 -0
- package/docs/examples/projects/update-webhook-signature.md +3 -0
- package/docs/examples/projects/update-webhook.md +10 -0
- package/docs/examples/projects/update.md +12 -0
- package/docs/examples/proxy/create-a-p-i-rule.md +2 -0
- package/docs/examples/proxy/create-function-rule.md +4 -0
- package/docs/examples/proxy/create-redirect-rule.md +6 -0
- package/docs/examples/proxy/create-site-rule.md +4 -0
- package/docs/examples/proxy/delete-rule.md +2 -0
- package/docs/examples/proxy/get-rule.md +2 -0
- package/docs/examples/proxy/list-rules.md +3 -0
- package/docs/examples/proxy/update-rule-verification.md +2 -0
- package/docs/examples/sites/create-deployment.md +7 -0
- package/docs/examples/sites/create-duplicate-deployment.md +3 -0
- package/docs/examples/sites/create-template-deployment.md +7 -0
- package/docs/examples/sites/create-variable.md +5 -0
- package/docs/examples/sites/create-vcs-deployment.md +5 -0
- package/docs/examples/sites/create.md +19 -0
- package/docs/examples/sites/delete-deployment.md +3 -0
- package/docs/examples/sites/delete-log.md +3 -0
- package/docs/examples/sites/delete-variable.md +3 -0
- package/docs/examples/sites/delete.md +2 -0
- package/docs/examples/sites/get-deployment-download.md +4 -0
- package/docs/examples/sites/get-deployment.md +3 -0
- package/docs/examples/sites/get-log.md +3 -0
- package/docs/examples/sites/get-template.md +2 -0
- package/docs/examples/sites/get-usage.md +3 -0
- package/docs/examples/sites/get-variable.md +3 -0
- package/docs/examples/sites/get.md +2 -0
- package/docs/examples/sites/list-deployments.md +4 -0
- package/docs/examples/sites/list-frameworks.md +1 -0
- package/docs/examples/sites/list-logs.md +3 -0
- package/docs/examples/sites/list-specifications.md +1 -0
- package/docs/examples/sites/list-templates.md +5 -0
- package/docs/examples/sites/list-usage.md +2 -0
- package/docs/examples/sites/list-variables.md +2 -0
- package/docs/examples/sites/list.md +3 -0
- package/docs/examples/sites/update-deployment-status.md +3 -0
- package/docs/examples/sites/update-site-deployment.md +3 -0
- package/docs/examples/sites/update-variable.md +6 -0
- package/docs/examples/sites/update.md +19 -0
- package/docs/examples/storage/create-bucket.md +11 -0
- package/docs/examples/storage/create-file.md +5 -0
- package/docs/examples/storage/delete-bucket.md +2 -0
- package/docs/examples/storage/delete-file.md +3 -0
- package/docs/examples/storage/get-bucket-usage.md +3 -0
- package/docs/examples/storage/get-bucket.md +2 -0
- package/docs/examples/storage/get-file-download.md +4 -0
- package/docs/examples/storage/get-file-preview.md +15 -0
- package/docs/examples/storage/get-file-view.md +4 -0
- package/docs/examples/storage/get-file.md +3 -0
- package/docs/examples/storage/get-usage.md +2 -0
- package/docs/examples/storage/list-buckets.md +3 -0
- package/docs/examples/storage/list-files.md +4 -0
- package/docs/examples/storage/update-bucket.md +11 -0
- package/docs/examples/storage/update-file.md +5 -0
- package/docs/examples/teams/create-membership.md +8 -0
- package/docs/examples/teams/create.md +4 -0
- package/docs/examples/teams/delete-membership.md +3 -0
- package/docs/examples/teams/delete.md +2 -0
- package/docs/examples/teams/get-membership.md +3 -0
- package/docs/examples/teams/get-prefs.md +2 -0
- package/docs/examples/teams/get.md +2 -0
- package/docs/examples/teams/list-logs.md +3 -0
- package/docs/examples/teams/list-memberships.md +4 -0
- package/docs/examples/teams/list.md +3 -0
- package/docs/examples/teams/update-membership-status.md +5 -0
- package/docs/examples/teams/update-membership.md +4 -0
- package/docs/examples/teams/update-name.md +3 -0
- package/docs/examples/teams/update-prefs.md +3 -0
- package/docs/examples/tokens/create-file-token.md +4 -0
- package/docs/examples/tokens/delete.md +2 -0
- package/docs/examples/tokens/get.md +2 -0
- package/docs/examples/tokens/list.md +4 -0
- package/docs/examples/tokens/update.md +3 -0
- package/docs/examples/users/create-argon2user.md +5 -0
- package/docs/examples/users/create-bcrypt-user.md +5 -0
- package/docs/examples/users/create-j-w-t.md +4 -0
- package/docs/examples/users/create-m-d5user.md +5 -0
- package/docs/examples/users/create-mfa-recovery-codes.md +2 -0
- package/docs/examples/users/create-p-h-pass-user.md +5 -0
- package/docs/examples/users/create-s-h-a-user.md +6 -0
- package/docs/examples/users/create-scrypt-modified-user.md +8 -0
- package/docs/examples/users/create-scrypt-user.md +10 -0
- package/docs/examples/users/create-session.md +2 -0
- package/docs/examples/users/create-target.md +7 -0
- package/docs/examples/users/create-token.md +4 -0
- package/docs/examples/users/create.md +6 -0
- package/docs/examples/users/delete-identity.md +2 -0
- package/docs/examples/users/delete-mfa-authenticator.md +3 -0
- package/docs/examples/users/delete-session.md +3 -0
- package/docs/examples/users/delete-sessions.md +2 -0
- package/docs/examples/users/delete-target.md +3 -0
- package/docs/examples/users/delete.md +2 -0
- package/docs/examples/users/get-mfa-recovery-codes.md +2 -0
- package/docs/examples/users/get-prefs.md +2 -0
- package/docs/examples/users/get-target.md +3 -0
- package/docs/examples/users/get-usage.md +2 -0
- package/docs/examples/users/get.md +2 -0
- package/docs/examples/users/list-identities.md +3 -0
- package/docs/examples/users/list-logs.md +3 -0
- package/docs/examples/users/list-memberships.md +4 -0
- package/docs/examples/users/list-mfa-factors.md +2 -0
- package/docs/examples/users/list-sessions.md +2 -0
- package/docs/examples/users/list-targets.md +3 -0
- package/docs/examples/users/list.md +3 -0
- package/docs/examples/users/update-email-verification.md +3 -0
- package/docs/examples/users/update-email.md +3 -0
- package/docs/examples/users/update-labels.md +3 -0
- package/docs/examples/users/update-mfa-recovery-codes.md +2 -0
- package/docs/examples/users/update-mfa.md +3 -0
- package/docs/examples/users/update-name.md +3 -0
- package/docs/examples/users/update-password.md +3 -0
- package/docs/examples/users/update-phone-verification.md +3 -0
- package/docs/examples/users/update-phone.md +3 -0
- package/docs/examples/users/update-prefs.md +3 -0
- package/docs/examples/users/update-status.md +3 -0
- package/docs/examples/users/update-target.md +6 -0
- package/docs/examples/vcs/create-repository-detection.md +5 -0
- package/docs/examples/vcs/create-repository.md +4 -0
- package/docs/examples/vcs/delete-installation.md +2 -0
- package/docs/examples/vcs/get-installation.md +2 -0
- package/docs/examples/vcs/get-repository-contents.md +5 -0
- package/docs/examples/vcs/get-repository.md +3 -0
- package/docs/examples/vcs/list-installations.md +3 -0
- package/docs/examples/vcs/list-repositories.md +4 -0
- package/docs/examples/vcs/list-repository-branches.md +3 -0
- package/docs/examples/vcs/update-external-deployments.md +4 -0
- package/functions/Starter function/.prettierrc.json +6 -0
- package/functions/Starter function/README.md +48 -0
- package/functions/Starter function/package-lock.json +60 -0
- package/functions/Starter function/package.json +16 -0
- package/functions/Starter function/src/main.js +35 -0
- package/generate/appwrite.d.ts +18 -0
- package/index.js +109 -0
- package/install.ps1 +98 -0
- package/install.sh +157 -0
- package/lib/client.js +259 -0
- package/lib/commands/account.js +2074 -0
- package/lib/commands/avatars.js +491 -0
- package/lib/commands/console.js +129 -0
- package/lib/commands/databases.js +2972 -0
- package/lib/commands/functions.js +1737 -0
- package/lib/commands/generic.js +328 -0
- package/lib/commands/graphql.js +128 -0
- package/lib/commands/health.js +891 -0
- package/lib/commands/init.js +566 -0
- package/lib/commands/locale.js +324 -0
- package/lib/commands/messaging.js +2970 -0
- package/lib/commands/migrations.js +751 -0
- package/lib/commands/organizations.js +48 -0
- package/lib/commands/project.js +308 -0
- package/lib/commands/projects.js +2615 -0
- package/lib/commands/proxy.js +406 -0
- package/lib/commands/pull.js +474 -0
- package/lib/commands/push.js +2117 -0
- package/lib/commands/run.js +330 -0
- package/lib/commands/sites.js +1663 -0
- package/lib/commands/storage.js +990 -0
- package/lib/commands/teams.js +682 -0
- package/lib/commands/tokens.js +261 -0
- package/lib/commands/types.js +156 -0
- package/lib/commands/users.js +2035 -0
- package/lib/commands/vcs.js +484 -0
- package/lib/config.js +705 -0
- package/lib/emulation/docker.js +264 -0
- package/lib/emulation/utils.js +186 -0
- package/lib/exception.js +9 -0
- package/lib/id.js +30 -0
- package/lib/paginate.js +52 -0
- package/lib/parser.js +246 -0
- package/lib/questions.js +1006 -0
- package/lib/sdks.js +60 -0
- package/lib/spinner.js +104 -0
- package/lib/type-generation/attribute.js +16 -0
- package/lib/type-generation/languages/dart.js +196 -0
- package/lib/type-generation/languages/java.js +130 -0
- package/lib/type-generation/languages/javascript.js +102 -0
- package/lib/type-generation/languages/kotlin.js +84 -0
- package/lib/type-generation/languages/language.js +125 -0
- package/lib/type-generation/languages/php.js +109 -0
- package/lib/type-generation/languages/swift.js +169 -0
- package/lib/type-generation/languages/typescript.js +102 -0
- package/lib/utils.js +289 -0
- package/lib/validations.js +17 -0
- package/package.json +50 -0
- package/scoop/appwrite.json +30 -0
- package/sites/JavaScript starter/.env.example +3 -0
- package/sites/JavaScript starter/LICENSE +21 -0
- package/sites/JavaScript starter/images/appwrite.svg +8 -0
- package/sites/JavaScript starter/images/javascript.svg +5 -0
- package/sites/JavaScript starter/index.html +250 -0
- package/sites/JavaScript starter/lib/appwrite.js +10 -0
- package/sites/JavaScript starter/package-lock.json +1431 -0
- package/sites/JavaScript starter/package.json +21 -0
- package/sites/JavaScript starter/readme.md +26 -0
- package/sites/JavaScript starter/src/javascript.svg +1 -0
- package/sites/JavaScript starter/style/app.css +20 -0
- package/sites/JavaScript starter/vite.config.js +7 -0
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const path = require("path");
|
|
3
|
+
const childProcess = require('child_process');
|
|
4
|
+
const { Command } = require("commander");
|
|
5
|
+
const inquirer = require("inquirer");
|
|
6
|
+
const { fetch } = require("undici");
|
|
7
|
+
const { projectsCreate, projectsGet } = require("./projects");
|
|
8
|
+
const { storageCreateBucket } = require("./storage");
|
|
9
|
+
const { messagingCreateTopic } = require("./messaging");
|
|
10
|
+
const { functionsCreate } = require("./functions");
|
|
11
|
+
const { databasesCreateCollection } = require("./databases");
|
|
12
|
+
const { pullResources } = require("./pull");
|
|
13
|
+
const ID = require("../id");
|
|
14
|
+
const { localConfig, globalConfig } = require("../config");
|
|
15
|
+
const {
|
|
16
|
+
questionsCreateFunction,
|
|
17
|
+
questionsCreateFunctionSelectTemplate,
|
|
18
|
+
questionsCreateSite,
|
|
19
|
+
questionsCreateBucket,
|
|
20
|
+
questionsCreateMessagingTopic,
|
|
21
|
+
questionsCreateCollection,
|
|
22
|
+
questionsInitProject,
|
|
23
|
+
questionsInitProjectAutopull,
|
|
24
|
+
questionsInitResources,
|
|
25
|
+
questionsCreateTeam
|
|
26
|
+
} = require("../questions");
|
|
27
|
+
const { cliConfig, success, log, hint, error, actionRunner, commandDescriptions } = require("../parser");
|
|
28
|
+
const { accountGet } = require("./account");
|
|
29
|
+
const { sitesListTemplates } = require("./sites");
|
|
30
|
+
const { sdkForConsole } = require("../sdks");
|
|
31
|
+
const { isCloud } = require('../utils');
|
|
32
|
+
|
|
33
|
+
const initResources = async () => {
|
|
34
|
+
const actions = {
|
|
35
|
+
function: initFunction,
|
|
36
|
+
site: initSite,
|
|
37
|
+
collection: initCollection,
|
|
38
|
+
bucket: initBucket,
|
|
39
|
+
team: initTeam,
|
|
40
|
+
message: initTopic
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const answers = await inquirer.prompt(questionsInitResources[0]);
|
|
44
|
+
|
|
45
|
+
const action = actions[answers.resource];
|
|
46
|
+
if (action !== undefined) {
|
|
47
|
+
await action({ returnOnZero: true });
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const initProject = async ({ organizationId, projectId, projectName } = {}) => {
|
|
52
|
+
let response = {};
|
|
53
|
+
|
|
54
|
+
try {
|
|
55
|
+
if (globalConfig.getEndpoint() === '' || globalConfig.getCookie() === '') {
|
|
56
|
+
throw '';
|
|
57
|
+
}
|
|
58
|
+
const client = await sdkForConsole();
|
|
59
|
+
|
|
60
|
+
await accountGet({
|
|
61
|
+
parseOutput: false,
|
|
62
|
+
sdk: client
|
|
63
|
+
});
|
|
64
|
+
} catch (e) {
|
|
65
|
+
error("Error Session not found. Please run 'appwrite login' to create a session");
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
let answers = {};
|
|
70
|
+
|
|
71
|
+
if (!organizationId && !projectId && !projectName) {
|
|
72
|
+
answers = await inquirer.prompt(questionsInitProject)
|
|
73
|
+
if (answers.override === false) {
|
|
74
|
+
process.exit(1)
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
answers.start = 'existing';
|
|
78
|
+
answers.project = {};
|
|
79
|
+
answers.organization = {};
|
|
80
|
+
|
|
81
|
+
answers.organization = organizationId ?? (await inquirer.prompt(questionsInitProject[2])).organization;
|
|
82
|
+
answers.project.name = projectName ?? (await inquirer.prompt(questionsInitProject[3])).project;
|
|
83
|
+
answers.project = projectId ?? (await inquirer.prompt(questionsInitProject[4])).id;
|
|
84
|
+
|
|
85
|
+
try {
|
|
86
|
+
await projectsGet({ projectId, parseOutput: false });
|
|
87
|
+
} catch (e) {
|
|
88
|
+
if (e.code === 404) {
|
|
89
|
+
answers.start = 'new';
|
|
90
|
+
answers.id = answers.project;
|
|
91
|
+
answers.project = answers.project.name;
|
|
92
|
+
} else {
|
|
93
|
+
throw e;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
localConfig.clear(); // Clear the config to avoid any conflicts
|
|
99
|
+
const url = new URL("https://cloud.appwrite.io/v1");
|
|
100
|
+
|
|
101
|
+
if (answers.start === 'new') {
|
|
102
|
+
response = await projectsCreate({
|
|
103
|
+
projectId: answers.id,
|
|
104
|
+
name: answers.project,
|
|
105
|
+
teamId: answers.organization,
|
|
106
|
+
parseOutput: false
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
localConfig.setProject(response['$id']);
|
|
110
|
+
if (answers.region) {
|
|
111
|
+
localConfig.setEndpoint(`https://${answers.region}.${url.host}${url.pathname}`);
|
|
112
|
+
}
|
|
113
|
+
} else {
|
|
114
|
+
localConfig.setProject(answers.project["$id"]);
|
|
115
|
+
if(isCloud()) {
|
|
116
|
+
localConfig.setEndpoint(`https://${answers.project["region"]}.${url.host}${url.pathname}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
success(`Project successfully ${answers.start === 'existing' ? 'linked' : 'created'}. Details are now stored in appwrite.json file.`);
|
|
121
|
+
|
|
122
|
+
if(answers.start === 'existing') {
|
|
123
|
+
answers = await inquirer.prompt(questionsInitProjectAutopull);
|
|
124
|
+
if(answers.autopull) {
|
|
125
|
+
cliConfig.all = true;
|
|
126
|
+
cliConfig.force = true;
|
|
127
|
+
await pullResources();
|
|
128
|
+
} else {
|
|
129
|
+
log("You can run 'appwrite pull all' to synchronize all of your existing resources.");
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
hint("Next you can use 'appwrite init' to create resources in your project, or use 'appwrite pull' and 'appwrite push' to synchronize your project.")
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const initBucket = async () => {
|
|
137
|
+
const answers = await inquirer.prompt(questionsCreateBucket)
|
|
138
|
+
|
|
139
|
+
localConfig.addBucket({
|
|
140
|
+
$id: answers.id === 'unique()' ? ID.unique() : answers.id,
|
|
141
|
+
name: answers.bucket,
|
|
142
|
+
fileSecurity: answers.fileSecurity.toLowerCase() === 'yes',
|
|
143
|
+
enabled: true,
|
|
144
|
+
});
|
|
145
|
+
success("Initialing bucket");
|
|
146
|
+
log("Next you can use 'appwrite push bucket' to deploy the changes.");
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
const initTeam = async () => {
|
|
150
|
+
const answers = await inquirer.prompt(questionsCreateTeam)
|
|
151
|
+
|
|
152
|
+
localConfig.addTeam({
|
|
153
|
+
$id: answers.id === 'unique()' ? ID.unique() : answers.id,
|
|
154
|
+
name: answers.bucket,
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
success("Initialing team");
|
|
158
|
+
log("Next you can use 'appwrite push team' to deploy the changes.");
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
const initCollection = async () => {
|
|
162
|
+
const answers = await inquirer.prompt(questionsCreateCollection)
|
|
163
|
+
const newDatabase = (answers.method ?? '').toLowerCase() !== 'existing';
|
|
164
|
+
|
|
165
|
+
if (!newDatabase) {
|
|
166
|
+
answers.databaseId = answers.database;
|
|
167
|
+
answers.databaseName = localConfig.getDatabase(answers.database).name;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const databaseId = answers.databaseId === 'unique()' ? ID.unique() : answers.databaseId;
|
|
171
|
+
|
|
172
|
+
if (newDatabase || !localConfig.getDatabase(answers.databaseId)) {
|
|
173
|
+
localConfig.addDatabase({
|
|
174
|
+
$id: databaseId,
|
|
175
|
+
name: answers.databaseName,
|
|
176
|
+
enabled: true
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
localConfig.addCollection({
|
|
181
|
+
$id: answers.id === 'unique()' ? ID.unique() : answers.id,
|
|
182
|
+
databaseId: databaseId,
|
|
183
|
+
name: answers.collection,
|
|
184
|
+
documentSecurity: answers.documentSecurity.toLowerCase() === 'yes',
|
|
185
|
+
attributes: [],
|
|
186
|
+
indexes: [],
|
|
187
|
+
enabled: true,
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
success("Initialing collection");
|
|
191
|
+
log("Next you can use 'appwrite push collection' to deploy the changes.");
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
const initTopic = async () => {
|
|
195
|
+
const answers = await inquirer.prompt(questionsCreateMessagingTopic)
|
|
196
|
+
|
|
197
|
+
localConfig.addMessagingTopic({
|
|
198
|
+
$id: answers.id === 'unique()' ? ID.unique() : answers.id,
|
|
199
|
+
name: answers.topic,
|
|
200
|
+
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
success("Initialing topic");
|
|
204
|
+
log("Next you can use 'appwrite push topic' to deploy the changes.");
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
const initFunction = async () => {
|
|
208
|
+
process.chdir(localConfig.configDirectoryPath)
|
|
209
|
+
|
|
210
|
+
// TODO: Add CI/CD support (ID, name, runtime)
|
|
211
|
+
const answers = await inquirer.prompt(questionsCreateFunction)
|
|
212
|
+
const functionFolder = path.join(process.cwd(), 'functions');
|
|
213
|
+
|
|
214
|
+
if (!fs.existsSync(functionFolder)) {
|
|
215
|
+
fs.mkdirSync(functionFolder, {
|
|
216
|
+
recursive: true
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
const functionId = answers.id === 'unique()' ? ID.unique() : answers.id;
|
|
221
|
+
const functionName = answers.name;
|
|
222
|
+
const functionDir = path.join(functionFolder, functionName);
|
|
223
|
+
const templatesDir = path.join(functionFolder, `${functionId}-templates`);
|
|
224
|
+
const runtimeDir = path.join(templatesDir, answers.runtime.name);
|
|
225
|
+
|
|
226
|
+
if (fs.existsSync(functionDir)) {
|
|
227
|
+
throw new Error(`( ${functionName} ) already exists in the current directory. Please choose another name.`);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
if (!answers.runtime.entrypoint) {
|
|
231
|
+
log(`Entrypoint for this runtime not found. You will be asked to configure entrypoint when you first push the function.`);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if (!answers.runtime.commands) {
|
|
235
|
+
log(`Installation command for this runtime not found. You will be asked to configure the install command when you first push the function.`);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
fs.mkdirSync(functionDir, "777");
|
|
239
|
+
fs.mkdirSync(templatesDir, "777");
|
|
240
|
+
const repo = "https://github.com/appwrite/templates";
|
|
241
|
+
const api = `https://api.github.com/repos/appwrite/templates/contents/${answers.runtime.name}`
|
|
242
|
+
let selected = { template: 'starter' };
|
|
243
|
+
|
|
244
|
+
const sparse = (selected ? `${answers.runtime.name}/${selected.template}` : answers.runtime.name).toLowerCase();
|
|
245
|
+
|
|
246
|
+
let gitInitCommands = `git clone --single-branch --depth 1 --sparse ${repo} .`; // depth prevents fetching older commits reducing the amount fetched
|
|
247
|
+
|
|
248
|
+
let gitPullCommands = `git sparse-checkout add ${sparse}`;
|
|
249
|
+
|
|
250
|
+
/* Force use CMD as powershell does not support && */
|
|
251
|
+
if (process.platform === 'win32') {
|
|
252
|
+
gitInitCommands = 'cmd /c "' + gitInitCommands + '"';
|
|
253
|
+
gitPullCommands = 'cmd /c "' + gitPullCommands + '"';
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* Execute the child process but do not print any std output */
|
|
257
|
+
try {
|
|
258
|
+
childProcess.execSync(gitInitCommands, { stdio: 'pipe', cwd: templatesDir });
|
|
259
|
+
childProcess.execSync(gitPullCommands, { stdio: 'pipe', cwd: templatesDir });
|
|
260
|
+
} catch (error) {
|
|
261
|
+
/* Specialised errors with recommended actions to take */
|
|
262
|
+
if (error.message.includes('error: unknown option')) {
|
|
263
|
+
throw new Error(`${error.message} \n\nSuggestion: Try updating your git to the latest version, then trying to run this command again.`)
|
|
264
|
+
} else if (error.message.includes('is not recognized as an internal or external command,') || error.message.includes('command not found')) {
|
|
265
|
+
throw new Error(`${error.message} \n\nSuggestion: It appears that git is not installed, try installing git then trying to run this command again.`)
|
|
266
|
+
} else {
|
|
267
|
+
throw error;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
fs.rmSync(path.join(templatesDir, ".git"), { recursive: true });
|
|
272
|
+
if (!selected) {
|
|
273
|
+
const templates = [];
|
|
274
|
+
templates.push(...fs.readdirSync(runtimeDir, { withFileTypes: true })
|
|
275
|
+
.filter(item => item.isDirectory() && item.name !== 'starter')
|
|
276
|
+
.map(dirent => dirent.name));
|
|
277
|
+
selected = { template: 'starter' };
|
|
278
|
+
|
|
279
|
+
if (templates.length > 1) {
|
|
280
|
+
selected = await inquirer.prompt(questionsCreateFunctionSelectTemplate(templates))
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
const copyRecursiveSync = (src, dest) => {
|
|
285
|
+
let exists = fs.existsSync(src);
|
|
286
|
+
let stats = exists && fs.statSync(src);
|
|
287
|
+
let isDirectory = exists && stats.isDirectory();
|
|
288
|
+
if (isDirectory) {
|
|
289
|
+
if (!fs.existsSync(dest)) {
|
|
290
|
+
fs.mkdirSync(dest);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
fs.readdirSync(src).forEach(function (childItemName) {
|
|
294
|
+
copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName));
|
|
295
|
+
});
|
|
296
|
+
} else {
|
|
297
|
+
fs.copyFileSync(src, dest);
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
copyRecursiveSync(path.join(runtimeDir, selected.template), functionDir);
|
|
301
|
+
|
|
302
|
+
fs.rmSync(templatesDir, { recursive: true, force: true });
|
|
303
|
+
|
|
304
|
+
const readmePath = path.join(process.cwd(), 'functions', functionName, 'README.md');
|
|
305
|
+
const readmeFile = fs.readFileSync(readmePath).toString();
|
|
306
|
+
const newReadmeFile = readmeFile.split('\n');
|
|
307
|
+
newReadmeFile[0] = `# ${answers.name}`;
|
|
308
|
+
newReadmeFile.splice(1, 2);
|
|
309
|
+
fs.writeFileSync(readmePath, newReadmeFile.join('\n'));
|
|
310
|
+
|
|
311
|
+
let data = {
|
|
312
|
+
$id: functionId,
|
|
313
|
+
name: answers.name,
|
|
314
|
+
runtime: answers.runtime.id,
|
|
315
|
+
specification: answers.specification,
|
|
316
|
+
execute: ["any"],
|
|
317
|
+
events: [],
|
|
318
|
+
scopes: ["users.read"],
|
|
319
|
+
schedule: "",
|
|
320
|
+
timeout: 15,
|
|
321
|
+
enabled: true,
|
|
322
|
+
logging: true,
|
|
323
|
+
entrypoint: answers.runtime.entrypoint || '',
|
|
324
|
+
commands: answers.runtime.commands || '',
|
|
325
|
+
ignore: answers.runtime.ignore || null,
|
|
326
|
+
path: `functions/${functionName}`,
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
localConfig.addFunction(data);
|
|
330
|
+
success("Initialing function");
|
|
331
|
+
log("Next you can use 'appwrite run function' to develop a function locally. To deploy the function, use 'appwrite push function'");
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
const initSite = async () => {
|
|
335
|
+
process.chdir(localConfig.configDirectoryPath)
|
|
336
|
+
|
|
337
|
+
const answers = await inquirer.prompt(questionsCreateSite);
|
|
338
|
+
const siteFolder = path.join(process.cwd(), 'sites');
|
|
339
|
+
|
|
340
|
+
if (!fs.existsSync(siteFolder)) {
|
|
341
|
+
fs.mkdirSync(siteFolder, {
|
|
342
|
+
recursive: true
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
const siteId = answers.id === 'unique()' ? ID.unique() : answers.id;
|
|
347
|
+
const siteName = answers.name;
|
|
348
|
+
const siteDir = path.join(siteFolder, siteName);
|
|
349
|
+
const templatesDir = path.join(siteFolder, `${siteId}-templates`);
|
|
350
|
+
|
|
351
|
+
if (fs.existsSync(siteDir)) {
|
|
352
|
+
throw new Error(`( ${siteName} ) already exists in the current directory. Please choose another name.`);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
let templateDetails;
|
|
356
|
+
try {
|
|
357
|
+
const response = await sitesListTemplates({
|
|
358
|
+
frameworks: [answers.framework.key],
|
|
359
|
+
useCases: ['starter'],
|
|
360
|
+
limit: 1,
|
|
361
|
+
parseOutput: false
|
|
362
|
+
});
|
|
363
|
+
if (response.total == 0) {
|
|
364
|
+
throw new Error(`No starter template found for framework ${answers.framework.key}`);
|
|
365
|
+
}
|
|
366
|
+
templateDetails = response.templates[0];
|
|
367
|
+
} catch (error) {
|
|
368
|
+
throw new Error(`Failed to fetch template for framework ${answers.framework.key}: ${error.message}`);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
fs.mkdirSync(siteDir, "777");
|
|
372
|
+
fs.mkdirSync(templatesDir, "777");
|
|
373
|
+
const repo = `https://github.com/${templateDetails.providerOwner}/${templateDetails.providerRepositoryId}`;
|
|
374
|
+
let selected = { template: templateDetails.frameworks[0].providerRootDirectory };
|
|
375
|
+
|
|
376
|
+
let gitCloneCommands = '';
|
|
377
|
+
|
|
378
|
+
const sparse = selected.template.startsWith('./') ? selected.template.substring(2) : selected.template;
|
|
379
|
+
|
|
380
|
+
log('Fetching site code ...');
|
|
381
|
+
|
|
382
|
+
if(selected.template === './') {
|
|
383
|
+
gitCloneCommands = `
|
|
384
|
+
mkdir -p .
|
|
385
|
+
cd .
|
|
386
|
+
git init
|
|
387
|
+
git remote add origin ${repo}
|
|
388
|
+
git config --global init.defaultBranch main
|
|
389
|
+
git fetch --depth=1 origin refs/tags/$(git ls-remote --tags origin "${templateDetails.providerVersion}" | tail -n 1 | awk -F '/' '{print $3}')
|
|
390
|
+
git checkout FETCH_HEAD
|
|
391
|
+
`.trim();
|
|
392
|
+
} else {
|
|
393
|
+
gitCloneCommands = `
|
|
394
|
+
mkdir -p .
|
|
395
|
+
cd .
|
|
396
|
+
git init
|
|
397
|
+
git remote add origin ${repo}
|
|
398
|
+
git config --global init.defaultBranch main
|
|
399
|
+
git config core.sparseCheckout true
|
|
400
|
+
echo "${sparse}" >> .git/info/sparse-checkout
|
|
401
|
+
git config --add remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
|
|
402
|
+
git config remote.origin.tagopt --no-tags
|
|
403
|
+
git fetch --depth=1 origin refs/tags/$(git ls-remote --tags origin "${templateDetails.providerVersion}" | tail -n 1 | awk -F '/' '{print $3}')
|
|
404
|
+
git checkout FETCH_HEAD
|
|
405
|
+
`.trim();
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/* Force use CMD as powershell does not support && */
|
|
409
|
+
if (process.platform === 'win32') {
|
|
410
|
+
gitCloneCommands = 'cmd /c "' + gitCloneCommands + '"';
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/* Execute the child process but do not print any std output */
|
|
414
|
+
try {
|
|
415
|
+
childProcess.execSync(gitCloneCommands, { stdio: 'pipe', cwd: templatesDir });
|
|
416
|
+
} catch (error) {
|
|
417
|
+
/* Specialised errors with recommended actions to take */
|
|
418
|
+
if (error.message.includes('error: unknown option')) {
|
|
419
|
+
throw new Error(`${error.message} \n\nSuggestion: Try updating your git to the latest version, then trying to run this command again.`)
|
|
420
|
+
} else if (error.message.includes('is not recognized as an internal or external command,') || error.message.includes('command not found')) {
|
|
421
|
+
throw new Error(`${error.message} \n\nSuggestion: It appears that git is not installed, try installing git then trying to run this command again.`)
|
|
422
|
+
} else {
|
|
423
|
+
throw error;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
fs.rmSync(path.join(templatesDir, ".git"), { recursive: true });
|
|
428
|
+
|
|
429
|
+
const copyRecursiveSync = (src, dest) => {
|
|
430
|
+
let exists = fs.existsSync(src);
|
|
431
|
+
let stats = exists && fs.statSync(src);
|
|
432
|
+
let isDirectory = exists && stats.isDirectory();
|
|
433
|
+
if (isDirectory) {
|
|
434
|
+
if (!fs.existsSync(dest)) {
|
|
435
|
+
fs.mkdirSync(dest);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
fs.readdirSync(src).forEach(function (childItemName) {
|
|
439
|
+
copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName));
|
|
440
|
+
});
|
|
441
|
+
} else {
|
|
442
|
+
fs.copyFileSync(src, dest);
|
|
443
|
+
}
|
|
444
|
+
};
|
|
445
|
+
copyRecursiveSync(selected.template === './' ? templatesDir : path.join(templatesDir, selected.template), siteDir);
|
|
446
|
+
|
|
447
|
+
fs.rmSync(templatesDir, { recursive: true, force: true });
|
|
448
|
+
|
|
449
|
+
const readmePath = path.join(process.cwd(), 'sites', siteName, 'README.md');
|
|
450
|
+
const readmeFile = fs.readFileSync(readmePath).toString();
|
|
451
|
+
const newReadmeFile = readmeFile.split('\n');
|
|
452
|
+
newReadmeFile[0] = `# ${answers.key}`;
|
|
453
|
+
newReadmeFile.splice(1, 2);
|
|
454
|
+
fs.writeFileSync(readmePath, newReadmeFile.join('\n'));
|
|
455
|
+
|
|
456
|
+
let vars = (templateDetails.variables ?? []).map(variable => {
|
|
457
|
+
let value = variable.value;
|
|
458
|
+
const replacements = {
|
|
459
|
+
'{apiEndpoint}': globalConfig.getEndpoint(),
|
|
460
|
+
'{projectId}': localConfig.getProject().projectId,
|
|
461
|
+
'{projectName}': localConfig.getProject().projectName,
|
|
462
|
+
};
|
|
463
|
+
|
|
464
|
+
for (const placeholder in replacements) {
|
|
465
|
+
if (value?.includes(placeholder)) {
|
|
466
|
+
value = value.replace(placeholder, replacements[placeholder]);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
return {
|
|
471
|
+
key: variable.name,
|
|
472
|
+
value: value
|
|
473
|
+
};
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
let data = {
|
|
477
|
+
$id: siteId,
|
|
478
|
+
name: answers.name,
|
|
479
|
+
framework: answers.framework.key,
|
|
480
|
+
adapter: templateDetails.frameworks[0].adapter || '',
|
|
481
|
+
buildRuntime: templateDetails.frameworks[0].buildRuntime || '',
|
|
482
|
+
installCommand: templateDetails.frameworks[0].installCommand || '',
|
|
483
|
+
buildCommand: templateDetails.frameworks[0].buildCommand || '',
|
|
484
|
+
outputDirectory: templateDetails.frameworks[0].outputDirectory || '',
|
|
485
|
+
fallbackFile: templateDetails.frameworks[0].fallbackFile || '',
|
|
486
|
+
specification: answers.specification,
|
|
487
|
+
enabled: true,
|
|
488
|
+
timeout: 30,
|
|
489
|
+
logging: true,
|
|
490
|
+
ignore: answers.framework.ignore || null,
|
|
491
|
+
path: `sites/${siteName}`,
|
|
492
|
+
vars: vars
|
|
493
|
+
};
|
|
494
|
+
|
|
495
|
+
if (!data.buildRuntime) {
|
|
496
|
+
log(`Build runtime for this framework not found. You will be asked to configure build runtime when you first push the site.`);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
if (!data.installCommand) {
|
|
500
|
+
log(`Installation command for this framework not found. You will be asked to configure the install command when you first push the site.`);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
if (!data.buildCommand) {
|
|
504
|
+
log(`Build command for this framework not found. You will be asked to configure the build command when you first push the site.`);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
if (!data.outputDirectory) {
|
|
508
|
+
log(`Output directory for this framework not found. You will be asked to configure the output directory when you first push the site.`);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
localConfig.addSite(data);
|
|
512
|
+
success("Initializing site");
|
|
513
|
+
log("Next you can use 'appwrite push site' to deploy the changes.");
|
|
514
|
+
};
|
|
515
|
+
|
|
516
|
+
const init = new Command("init")
|
|
517
|
+
.description(commandDescriptions['init'])
|
|
518
|
+
.action(actionRunner(initResources));
|
|
519
|
+
|
|
520
|
+
init
|
|
521
|
+
.command("project")
|
|
522
|
+
.description("Init a new Appwrite project")
|
|
523
|
+
.option("--organization-id <organization-id>", "Appwrite organization ID")
|
|
524
|
+
.option("--project-id <project-id>", "Appwrite project ID")
|
|
525
|
+
.option("--project-name <project-name>", "Appwrite project ID")
|
|
526
|
+
.action(actionRunner(initProject));
|
|
527
|
+
|
|
528
|
+
init
|
|
529
|
+
.command("function")
|
|
530
|
+
.alias("functions")
|
|
531
|
+
.description("Init a new Appwrite function")
|
|
532
|
+
.action(actionRunner(initFunction));
|
|
533
|
+
|
|
534
|
+
init
|
|
535
|
+
.command("site")
|
|
536
|
+
.alias("sites")
|
|
537
|
+
.description("Init a new Appwrite site")
|
|
538
|
+
.action(actionRunner(initSite));
|
|
539
|
+
|
|
540
|
+
init
|
|
541
|
+
.command("bucket")
|
|
542
|
+
.alias("buckets")
|
|
543
|
+
.description("Init a new Appwrite bucket")
|
|
544
|
+
.action(actionRunner(initBucket));
|
|
545
|
+
|
|
546
|
+
init
|
|
547
|
+
.command("team")
|
|
548
|
+
.alias("teams")
|
|
549
|
+
.description("Init a new Appwrite team")
|
|
550
|
+
.action(actionRunner(initTeam));
|
|
551
|
+
|
|
552
|
+
init
|
|
553
|
+
.command("collection")
|
|
554
|
+
.alias("collections")
|
|
555
|
+
.description("Init a new Appwrite collection")
|
|
556
|
+
.action(actionRunner(initCollection));
|
|
557
|
+
|
|
558
|
+
init
|
|
559
|
+
.command("topic")
|
|
560
|
+
.alias("topics")
|
|
561
|
+
.description("Init a new Appwrite topic")
|
|
562
|
+
.action(actionRunner(initTopic));
|
|
563
|
+
|
|
564
|
+
module.exports = {
|
|
565
|
+
init,
|
|
566
|
+
};
|