diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e50441..3c2e7ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log +## 12.0.0 + +* Change `create-deployment-template`'s `version` parameter to `type` and `reference`. eg. usage - `create-deployment-template --type tag --reference 1.0.0` +* Remove `bucket-id` parameter from `create-csv-export` command +* Allow enabling or disabling of image `transformations` in a bucket +* Fix type generation for `point`, `lineString` and `polygon` columns + ## 11.1.1 * Fix duplicate `enums` during type generation by prefixing them with table name. For example, `enum MyEnum` will now be generated as `enum MyTableMyEnum` to avoid conflicts. diff --git a/README.md b/README.md index 5b38479..4ef5ae4 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Once the installation is complete, you can verify the install using ```sh $ appwrite -v -11.1.1 +12.0.0 ``` ### Install using prebuilt binaries @@ -60,7 +60,7 @@ $ scoop install https://raw.githubusercontent.com/appwrite/sdk-for-cli/master/sc Once the installation completes, you can verify your install using ``` $ appwrite -v -11.1.1 +12.0.0 ``` ## Getting Started diff --git a/docs/examples/functions/create-template-deployment.md b/docs/examples/functions/create-template-deployment.md index f3c8487..72fa62b 100644 --- a/docs/examples/functions/create-template-deployment.md +++ b/docs/examples/functions/create-template-deployment.md @@ -3,4 +3,5 @@ appwrite functions create-template-deployment \ --repository \ --owner \ --root-directory \ - --version + --type commit \ + --reference diff --git a/docs/examples/migrations/create-csv-export.md b/docs/examples/migrations/create-csv-export.md index e56afae..61eceab 100644 --- a/docs/examples/migrations/create-csv-export.md +++ b/docs/examples/migrations/create-csv-export.md @@ -1,4 +1,3 @@ appwrite migrations create-csv-export \ --resource-id \ - --bucket-id \ --filename diff --git a/docs/examples/sites/create-template-deployment.md b/docs/examples/sites/create-template-deployment.md index 2eece41..5242534 100644 --- a/docs/examples/sites/create-template-deployment.md +++ b/docs/examples/sites/create-template-deployment.md @@ -3,4 +3,5 @@ appwrite sites create-template-deployment \ --repository \ --owner \ --root-directory \ - --version + --type branch \ + --reference diff --git a/install.ps1 b/install.ps1 index 40c30c4..aad94fd 100644 --- a/install.ps1 +++ b/install.ps1 @@ -13,8 +13,8 @@ # You can use "View source" of this page to see the full script. # REPO -$GITHUB_x64_URL = "https://github.com/appwrite/sdk-for-cli/releases/download/11.1.1/appwrite-cli-win-x64.exe" -$GITHUB_arm64_URL = "https://github.com/appwrite/sdk-for-cli/releases/download/11.1.1/appwrite-cli-win-arm64.exe" +$GITHUB_x64_URL = "https://github.com/appwrite/sdk-for-cli/releases/download/12.0.0/appwrite-cli-win-x64.exe" +$GITHUB_arm64_URL = "https://github.com/appwrite/sdk-for-cli/releases/download/12.0.0/appwrite-cli-win-arm64.exe" $APPWRITE_BINARY_NAME = "appwrite.exe" diff --git a/install.sh b/install.sh index 714616b..3f1fe8c 100644 --- a/install.sh +++ b/install.sh @@ -97,7 +97,7 @@ printSuccess() { downloadBinary() { echo "[2/4] Downloading executable for $OS ($ARCH) ..." - GITHUB_LATEST_VERSION="11.1.1" + GITHUB_LATEST_VERSION="12.0.0" GITHUB_FILE="appwrite-cli-${OS}-${ARCH}" GITHUB_URL="https://github.com/$GITHUB_REPOSITORY_NAME/releases/download/$GITHUB_LATEST_VERSION/$GITHUB_FILE" diff --git a/lib/client.js b/lib/client.js index 78cd5c6..9f7de38 100644 --- a/lib/client.js +++ b/lib/client.js @@ -16,8 +16,8 @@ class Client { 'x-sdk-name': 'Command Line', 'x-sdk-platform': 'console', 'x-sdk-language': 'cli', - 'x-sdk-version': '11.1.1', - 'user-agent' : `AppwriteCLI/11.1.1 (${os.type()} ${os.version()}; ${os.arch()})`, + 'x-sdk-version': '12.0.0', + 'user-agent' : `AppwriteCLI/12.0.0 (${os.type()} ${os.version()}; ${os.arch()})`, 'X-Appwrite-Response-Format' : '1.8.0', }; } diff --git a/lib/commands/functions.js b/lib/commands/functions.js index 94d72e8..9e41c11 100644 --- a/lib/commands/functions.js +++ b/lib/commands/functions.js @@ -819,7 +819,8 @@ const functionsCreateDuplicateDeployment = async ({functionId,deploymentId,build * @property {string} repository Repository name of the template. * @property {string} owner The name of the owner of the template. * @property {string} rootDirectory Path to function code in the template repo. - * @property {string} version Version (tag) for the repo linked to the function template. + * @property {TemplateReferenceType} type Type for the reference provided. Can be commit, branch, or tag + * @property {string} reference Reference value, can be a commit hash, branch name, or release tag * @property {boolean} activate Automatically activate the deployment when it is finished building. * @property {boolean} overrideForCli * @property {boolean} parseOutput @@ -829,7 +830,7 @@ const functionsCreateDuplicateDeployment = async ({functionId,deploymentId,build /** * @param {FunctionsCreateTemplateDeploymentRequestParams} params */ -const functionsCreateTemplateDeployment = async ({functionId,repository,owner,rootDirectory,version,activate,parseOutput = true, overrideForCli = false, sdk = undefined}) => { +const functionsCreateTemplateDeployment = async ({functionId,repository,owner,rootDirectory,type,reference,activate,parseOutput = true, overrideForCli = false, sdk = undefined}) => { let client = !sdk ? await sdkForProject() : sdk; let apiPath = '/functions/{functionId}/deployments/template'.replace('{functionId}', functionId); @@ -843,8 +844,11 @@ const functionsCreateTemplateDeployment = async ({functionId,repository,owner,ro if (typeof rootDirectory !== 'undefined') { payload['rootDirectory'] = rootDirectory; } - if (typeof version !== 'undefined') { - payload['version'] = version; + if (typeof type !== 'undefined') { + payload['type'] = type; + } + if (typeof reference !== 'undefined') { + payload['reference'] = reference; } if (typeof activate !== 'undefined') { payload['activate'] = activate; @@ -866,7 +870,7 @@ const functionsCreateTemplateDeployment = async ({functionId,repository,owner,ro /** * @typedef {Object} FunctionsCreateVcsDeploymentRequestParams * @property {string} functionId Function ID. - * @property {VCSDeploymentType} type Type of reference passed. Allowed values are: branch, commit + * @property {VCSReferenceType} type Type of reference passed. Allowed values are: branch, commit * @property {string} reference VCS reference to create deployment from. Depending on type this can be: branch name, commit hash * @property {boolean} activate Automatically activate the deployment when it is finished building. * @property {boolean} overrideForCli @@ -1565,7 +1569,8 @@ functions .requiredOption(`--repository `, `Repository name of the template.`) .requiredOption(`--owner `, `The name of the owner of the template.`) .requiredOption(`--root-directory `, `Path to function code in the template repo.`) - .requiredOption(`--version `, `Version (tag) for the repo linked to the function template.`) + .requiredOption(`--type `, `Type for the reference provided. Can be commit, branch, or tag`) + .requiredOption(`--reference `, `Reference value, can be a commit hash, branch name, or release tag`) .option(`--activate [value]`, `Automatically activate the deployment when it is finished building.`, (value) => value === undefined ? true : parseBool(value)) .action(actionRunner(functionsCreateTemplateDeployment)) diff --git a/lib/commands/migrations.js b/lib/commands/migrations.js index 9fba9f4..9f2093d 100644 --- a/lib/commands/migrations.js +++ b/lib/commands/migrations.js @@ -172,7 +172,6 @@ const migrationsGetAppwriteReport = async ({resources,endpoint,projectID,key,par /** * @typedef {Object} MigrationsCreateCSVExportRequestParams * @property {string} resourceId Composite ID in the format {databaseId:collectionId}, identifying a collection within a database to export. - * @property {string} bucketId Storage bucket unique ID where the exported CSV will be stored. * @property {string} filename The name of the file to be created for the export, excluding the .csv extension. * @property {string[]} columns List of attributes to export. If empty, all attributes will be exported. You can use the '*' wildcard to export all attributes from the collection. * @property {string[]} queries Array of query strings generated using the Query class provided by the SDK to filter documents to export. [Learn more about queries](https://appwrite.io/docs/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. @@ -189,7 +188,7 @@ const migrationsGetAppwriteReport = async ({resources,endpoint,projectID,key,par /** * @param {MigrationsCreateCSVExportRequestParams} params */ -const migrationsCreateCSVExport = async ({resourceId,bucketId,filename,columns,queries,delimiter,enclosure,escape,header,notify,parseOutput = true, overrideForCli = false, sdk = undefined}) => { +const migrationsCreateCSVExport = async ({resourceId,filename,columns,queries,delimiter,enclosure,escape,header,notify,parseOutput = true, overrideForCli = false, sdk = undefined}) => { let client = !sdk ? await sdkForProject() : sdk; let apiPath = '/migrations/csv/exports'; @@ -197,9 +196,6 @@ const migrationsCreateCSVExport = async ({resourceId,bucketId,filename,columns,q if (typeof resourceId !== 'undefined') { payload['resourceId'] = resourceId; } - if (typeof bucketId !== 'undefined') { - payload['bucketId'] = bucketId; - } if (typeof filename !== 'undefined') { payload['filename'] = filename; } @@ -712,9 +708,8 @@ migrations migrations .command(`create-csv-export`) - .description(`Export documents to a CSV file from your Appwrite database. This endpoint allows you to export documents to a CSV file stored in an Appwrite Storage bucket.`) + .description(`Export documents to a CSV file from your Appwrite database. This endpoint allows you to export documents to a CSV file stored in a secure internal bucket. You'll receive an email with a download link when the export is complete.`) .requiredOption(`--resource-id `, `Composite ID in the format {databaseId:collectionId}, identifying a collection within a database to export.`) - .requiredOption(`--bucket-id `, `Storage bucket unique ID where the exported CSV will be stored.`) .requiredOption(`--filename `, `The name of the file to be created for the export, excluding the .csv extension.`) .option(`--columns [columns...]`, `List of attributes to export. If empty, all attributes will be exported. You can use the '*' wildcard to export all attributes from the collection.`) .option(`--queries [queries...]`, `Array of query strings generated using the Query class provided by the SDK to filter documents to export. [Learn more about queries](https://appwrite.io/docs/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.`) diff --git a/lib/commands/projects.js b/lib/commands/projects.js index 1af1213..607ca9a 100644 --- a/lib/commands/projects.js +++ b/lib/commands/projects.js @@ -2322,7 +2322,7 @@ projects .description(`Create a new API key. It's recommended to have multiple API keys with strict scopes for separate functions within your project.`) .requiredOption(`--project-id `, `Project unique ID.`) .requiredOption(`--name `, `Key name. Max length: 128 chars.`) - .requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 100 scopes are allowed.`) + .option(`--scopes [scopes...]`, `Key scopes list. Maximum of 100 scopes are allowed.`) .option(`--expire `, `Expiration time in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`) .action(actionRunner(projectsCreateKey)) @@ -2340,7 +2340,7 @@ projects .requiredOption(`--project-id `, `Project unique ID.`) .requiredOption(`--key-id `, `Key unique ID.`) .requiredOption(`--name `, `Key name. Max length: 128 chars.`) - .requiredOption(`--scopes [scopes...]`, `Key scopes list. Maximum of 100 events are allowed.`) + .option(`--scopes [scopes...]`, `Key scopes list. Maximum of 100 events are allowed.`) .option(`--expire `, `Expiration time in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Use null for unlimited expiration.`) .action(actionRunner(projectsUpdateKey)) diff --git a/lib/commands/sites.js b/lib/commands/sites.js index 1f81d3e..c414422 100644 --- a/lib/commands/sites.js +++ b/lib/commands/sites.js @@ -813,7 +813,8 @@ const sitesCreateDuplicateDeployment = async ({siteId,deploymentId,parseOutput = * @property {string} repository Repository name of the template. * @property {string} owner The name of the owner of the template. * @property {string} rootDirectory Path to site code in the template repo. - * @property {string} version Version (tag) for the repo linked to the site template. + * @property {TemplateReferenceType} type Type for the reference provided. Can be commit, branch, or tag + * @property {string} reference Reference value, can be a commit hash, branch name, or release tag * @property {boolean} activate Automatically activate the deployment when it is finished building. * @property {boolean} overrideForCli * @property {boolean} parseOutput @@ -823,7 +824,7 @@ const sitesCreateDuplicateDeployment = async ({siteId,deploymentId,parseOutput = /** * @param {SitesCreateTemplateDeploymentRequestParams} params */ -const sitesCreateTemplateDeployment = async ({siteId,repository,owner,rootDirectory,version,activate,parseOutput = true, overrideForCli = false, sdk = undefined}) => { +const sitesCreateTemplateDeployment = async ({siteId,repository,owner,rootDirectory,type,reference,activate,parseOutput = true, overrideForCli = false, sdk = undefined}) => { let client = !sdk ? await sdkForProject() : sdk; let apiPath = '/sites/{siteId}/deployments/template'.replace('{siteId}', siteId); @@ -837,8 +838,11 @@ const sitesCreateTemplateDeployment = async ({siteId,repository,owner,rootDirect if (typeof rootDirectory !== 'undefined') { payload['rootDirectory'] = rootDirectory; } - if (typeof version !== 'undefined') { - payload['version'] = version; + if (typeof type !== 'undefined') { + payload['type'] = type; + } + if (typeof reference !== 'undefined') { + payload['reference'] = reference; } if (typeof activate !== 'undefined') { payload['activate'] = activate; @@ -860,7 +864,7 @@ const sitesCreateTemplateDeployment = async ({siteId,repository,owner,rootDirect /** * @typedef {Object} SitesCreateVcsDeploymentRequestParams * @property {string} siteId Site ID. - * @property {VCSDeploymentType} type Type of reference passed. Allowed values are: branch, commit + * @property {VCSReferenceType} type Type of reference passed. Allowed values are: branch, commit * @property {string} reference VCS reference to create deployment from. Depending on type this can be: branch name, commit hash * @property {boolean} activate Automatically activate the deployment when it is finished building. * @property {boolean} overrideForCli @@ -1501,7 +1505,8 @@ sites .requiredOption(`--repository `, `Repository name of the template.`) .requiredOption(`--owner `, `The name of the owner of the template.`) .requiredOption(`--root-directory `, `Path to site code in the template repo.`) - .requiredOption(`--version `, `Version (tag) for the repo linked to the site template.`) + .requiredOption(`--type `, `Type for the reference provided. Can be commit, branch, or tag`) + .requiredOption(`--reference `, `Reference value, can be a commit hash, branch name, or release tag`) .option(`--activate [value]`, `Automatically activate the deployment when it is finished building.`, (value) => value === undefined ? true : parseBool(value)) .action(actionRunner(sitesCreateTemplateDeployment)) diff --git a/lib/commands/storage.js b/lib/commands/storage.js index 19e6ed1..c951e7a 100644 --- a/lib/commands/storage.js +++ b/lib/commands/storage.js @@ -41,7 +41,7 @@ const storage = new Command("storage").description(commandDescriptions['storage' /** * @typedef {Object} StorageListBucketsRequestParams - * @property {string[]} queries Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus + * @property {string[]} queries Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus, transformations * @property {string} search Search term to filter your list results. Max length: 256 chars. * @property {boolean} total When set to false, the total count returned will be 0 and will not be calculated. * @property {boolean} overrideForCli @@ -95,6 +95,7 @@ const storageListBuckets = async ({queries,search,total,parseOutput = true, over * @property {Compression} compression Compression algorithm choosen for compression. Can be one of none, [gzip](https://en.wikipedia.org/wiki/Gzip), or [zstd](https://en.wikipedia.org/wiki/Zstd), For file size above 20MB compression is skipped even if it's enabled * @property {boolean} encryption Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled * @property {boolean} antivirus Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled + * @property {boolean} transformations Are image transformations enabled? * @property {boolean} overrideForCli * @property {boolean} parseOutput * @property {libClient | undefined} sdk @@ -103,7 +104,7 @@ const storageListBuckets = async ({queries,search,total,parseOutput = true, over /** * @param {StorageCreateBucketRequestParams} params */ -const storageCreateBucket = async ({bucketId,name,permissions,fileSecurity,enabled,maximumFileSize,allowedFileExtensions,compression,encryption,antivirus,parseOutput = true, overrideForCli = false, sdk = undefined}) => { +const storageCreateBucket = async ({bucketId,name,permissions,fileSecurity,enabled,maximumFileSize,allowedFileExtensions,compression,encryption,antivirus,transformations,parseOutput = true, overrideForCli = false, sdk = undefined}) => { let client = !sdk ? await sdkForProject() : sdk; let apiPath = '/storage/buckets'; @@ -140,6 +141,9 @@ const storageCreateBucket = async ({bucketId,name,permissions,fileSecurity,enabl if (typeof antivirus !== 'undefined') { payload['antivirus'] = antivirus; } + if (typeof transformations !== 'undefined') { + payload['transformations'] = transformations; + } let response = undefined; @@ -199,6 +203,7 @@ const storageGetBucket = async ({bucketId,parseOutput = true, overrideForCli = f * @property {Compression} compression Compression algorithm choosen for compression. Can be one of none, [gzip](https://en.wikipedia.org/wiki/Gzip), or [zstd](https://en.wikipedia.org/wiki/Zstd), For file size above 20MB compression is skipped even if it's enabled * @property {boolean} encryption Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled * @property {boolean} antivirus Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled + * @property {boolean} transformations Are image transformations enabled? * @property {boolean} overrideForCli * @property {boolean} parseOutput * @property {libClient | undefined} sdk @@ -207,7 +212,7 @@ const storageGetBucket = async ({bucketId,parseOutput = true, overrideForCli = f /** * @param {StorageUpdateBucketRequestParams} params */ -const storageUpdateBucket = async ({bucketId,name,permissions,fileSecurity,enabled,maximumFileSize,allowedFileExtensions,compression,encryption,antivirus,parseOutput = true, overrideForCli = false, sdk = undefined}) => { +const storageUpdateBucket = async ({bucketId,name,permissions,fileSecurity,enabled,maximumFileSize,allowedFileExtensions,compression,encryption,antivirus,transformations,parseOutput = true, overrideForCli = false, sdk = undefined}) => { let client = !sdk ? await sdkForProject() : sdk; let apiPath = '/storage/buckets/{bucketId}'.replace('{bucketId}', bucketId); @@ -241,6 +246,9 @@ const storageUpdateBucket = async ({bucketId,name,permissions,fileSecurity,enabl if (typeof antivirus !== 'undefined') { payload['antivirus'] = antivirus; } + if (typeof transformations !== 'undefined') { + payload['transformations'] = transformations; + } let response = undefined; @@ -821,7 +829,7 @@ const storageGetBucketUsage = async ({bucketId,range,parseOutput = true, overrid storage .command(`list-buckets`) .description(`Get a list of all the storage buckets. You can use the query params to filter your results.`) - .option(`--queries [queries...]`, `Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus`) + .option(`--queries [queries...]`, `Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus, transformations`) .option(`--search `, `Search term to filter your list results. Max length: 256 chars.`) .option(`--total [value]`, `When set to false, the total count returned will be 0 and will not be calculated.`, (value) => value === undefined ? true : parseBool(value)) .option(`--console`, `Get the resource console url`) @@ -840,6 +848,7 @@ storage .option(`--compression `, `Compression algorithm choosen for compression. Can be one of none, [gzip](https://en.wikipedia.org/wiki/Gzip), or [zstd](https://en.wikipedia.org/wiki/Zstd), For file size above 20MB compression is skipped even if it's enabled`) .option(`--encryption [value]`, `Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled`, (value) => value === undefined ? true : parseBool(value)) .option(`--antivirus [value]`, `Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled`, (value) => value === undefined ? true : parseBool(value)) + .option(`--transformations [value]`, `Are image transformations enabled?`, (value) => value === undefined ? true : parseBool(value)) .action(actionRunner(storageCreateBucket)) storage @@ -862,6 +871,7 @@ storage .option(`--compression `, `Compression algorithm choosen for compression. Can be one of none, [gzip](https://en.wikipedia.org/wiki/Gzip), or [zstd](https://en.wikipedia.org/wiki/Zstd), For file size above 20MB compression is skipped even if it's enabled`) .option(`--encryption [value]`, `Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled`, (value) => value === undefined ? true : parseBool(value)) .option(`--antivirus [value]`, `Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled`, (value) => value === undefined ? true : parseBool(value)) + .option(`--transformations [value]`, `Are image transformations enabled?`, (value) => value === undefined ? true : parseBool(value)) .action(actionRunner(storageUpdateBucket)) storage diff --git a/lib/commands/tables-db.js b/lib/commands/tables-db.js index b377045..21914d2 100644 --- a/lib/commands/tables-db.js +++ b/lib/commands/tables-db.js @@ -602,7 +602,7 @@ const tablesDBGetTable = async ({databaseId,tableId,parseOutput = true, override * @property {string} tableId Table ID. * @property {string} name Table name. Max length: 128 chars. * @property {string[]} permissions An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions). - * @property {boolean} rowSecurity Enables configuring permissions for individual rows. A user needs one of row or table level permissions to access a document. [Learn more about permissions](https://appwrite.io/docs/permissions). + * @property {boolean} rowSecurity Enables configuring permissions for individual rows. A user needs one of row or table-level permissions to access a row. [Learn more about permissions](https://appwrite.io/docs/permissions). * @property {boolean} enabled Is table enabled? When set to 'disabled', users cannot access the table but Server SDKs with and API key can still read and write to the table. No data is lost when this is toggled. * @property {boolean} overrideForCli * @property {boolean} parseOutput @@ -2965,7 +2965,7 @@ tablesDB .requiredOption(`--table-id `, `Table ID.`) .requiredOption(`--name `, `Table name. Max length: 128 chars.`) .option(`--permissions [permissions...]`, `An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).`) - .option(`--row-security [value]`, `Enables configuring permissions for individual rows. A user needs one of row or table level permissions to access a document. [Learn more about permissions](https://appwrite.io/docs/permissions).`, (value) => value === undefined ? true : parseBool(value)) + .option(`--row-security [value]`, `Enables configuring permissions for individual rows. A user needs one of row or table-level permissions to access a row. [Learn more about permissions](https://appwrite.io/docs/permissions).`, (value) => value === undefined ? true : parseBool(value)) .option(`--enabled [value]`, `Is table enabled? When set to 'disabled', users cannot access the table but Server SDKs with and API key can still read and write to the table. No data is lost when this is toggled.`, (value) => value === undefined ? true : parseBool(value)) .action(actionRunner(tablesDBUpdateTable)) diff --git a/lib/parser.js b/lib/parser.js index 89ee454..ce88887 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -122,7 +122,7 @@ const parseError = (err) => { } catch { } - const version = '11.1.1'; + const version = '12.0.0'; const stepsToReproduce = `Running \`appwrite ${cliConfig.reportData.data.args.join(' ')}\``; const yourEnvironment = `CLI version: ${version}\nOperation System: ${os.type()}\nAppwrite version: ${appwriteVersion}\nIs Cloud: ${isCloud()}`; diff --git a/package.json b/package.json index 43c52e7..33209c5 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "appwrite-cli", "homepage": "https://appwrite.io/support", "description": "Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API", - "version": "11.1.1", + "version": "12.0.0", "license": "BSD-3-Clause", "main": "index.js", "bin": { diff --git a/scoop/appwrite.config.json b/scoop/appwrite.config.json index 625d78d..59e2d4f 100644 --- a/scoop/appwrite.config.json +++ b/scoop/appwrite.config.json @@ -1,12 +1,12 @@ { "$schema": "https://raw.githubusercontent.com/ScoopInstaller/Scoop/master/schema.json", - "version": "11.1.1", + "version": "12.0.0", "description": "The Appwrite CLI is a command-line application that allows you to interact with Appwrite and perform server-side tasks using your terminal.", "homepage": "https://github.com/appwrite/sdk-for-cli", "license": "BSD-3-Clause", "architecture": { "64bit": { - "url": "https://github.com/appwrite/sdk-for-cli/releases/download/11.1.1/appwrite-cli-win-x64.exe", + "url": "https://github.com/appwrite/sdk-for-cli/releases/download/12.0.0/appwrite-cli-win-x64.exe", "bin": [ [ "appwrite-cli-win-x64.exe", @@ -15,7 +15,7 @@ ] }, "arm64": { - "url": "https://github.com/appwrite/sdk-for-cli/releases/download/11.1.1/appwrite-cli-win-arm64.exe", + "url": "https://github.com/appwrite/sdk-for-cli/releases/download/12.0.0/appwrite-cli-win-arm64.exe", "bin": [ [ "appwrite-cli-win-arm64.exe",