Merge pull request #2646 from appwrite/feat-getting-started-cli
feat: added getting started guides ( Node CLI )
This commit is contained in:
commit
ba8c575f4a
|
@ -205,6 +205,24 @@ return [
|
|||
'gitUserName' => 'appwrite',
|
||||
'gitBranch' => 'master',
|
||||
],
|
||||
[
|
||||
'key' => 'node-cli',
|
||||
'name' => 'Command Line',
|
||||
'version' => '0.13.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-node-cli',
|
||||
'package' => 'https://www.npmjs.com/package/appwrite-cli',
|
||||
'enabled' => true,
|
||||
'beta' => true,
|
||||
'dev' => false,
|
||||
'hidden' => false,
|
||||
'family' => APP_PLATFORM_CONSOLE,
|
||||
'prism' => 'bash',
|
||||
'source' => \realpath(__DIR__ . '/../sdks/server-cli'),
|
||||
'gitUrl' => 'git@github.com:appwrite/sdk-for-cli.git',
|
||||
'gitRepoName' => 'sdk-for-node-cli',
|
||||
'gitUserName' => 'appwrite',
|
||||
'gitBranch' => 'master',
|
||||
],
|
||||
[
|
||||
'key' => 'deno',
|
||||
'name' => 'Deno',
|
||||
|
|
|
@ -251,8 +251,10 @@
|
|||
</span>
|
||||
|
||||
<div class="pull-start margin-end avatar-container">
|
||||
<img onerror="this.onerror=null;this.className='avatar hide'" data-ls-attrs="src={{env.API}}/avatars/browsers/{{session.clientCode|lowercase}}?width=60&height=60&project={{env.PROJECT}},title={{session.clientName}},alt={{session.clientName}}" class="avatar" loading="lazy" width="60" height="60" />
|
||||
|
||||
<img onerror="this.onerror=null;this.className='avatar hide'" data-ls-attrs="src={{env.API}}/avatars/browsers/{{session.clientCode|lowercase}}?width=120&height=120&project={{env.PROJECT}},title={{session.clientName}},alt={{session.clientName}}" class="avatar" loading="lazy" width="60" height="60" data-ls-if="{{session.clientCode|lowercase}} !== 'cli'"/>
|
||||
|
||||
<img onerror="this.onerror=null;this.className='avatar hide'" data-ls-attrs="src=/images/clients/terminal.png?buster=<?php echo APP_CACHE_BUSTER; ?>,title={{session.clientName}},alt={{session.clientName}}" class="avatar" loading="lazy" width="60" height="60" data-ls-if="{{session.clientCode|lowercase}} === 'cli'" >
|
||||
|
||||
<div data-ls-if="{{session.provider}} !== 'email'" class="corner">
|
||||
<img data-ls-attrs="src=/images/users/{{session.provider}}.png?buster=<?php echo APP_CACHE_BUSTER; ?>,title={{session.provider}},alt={{session.provider}}" class="avatar xs" loading="lazy" width="30" height="30" />
|
||||
</div>
|
||||
|
@ -317,7 +319,10 @@
|
|||
<td data-title="Date: "><span data-ls-bind="{{log.time|dateTime}}"></span></td>
|
||||
<td data-title="Event: "><span data-ls-bind="{{log.event}}"></span></td>
|
||||
<td data-title="Client: ">
|
||||
<img onerror="this.onerror=null;this.className='avatar hide'" data-ls-attrs="src={{env.API}}/avatars/browsers/{{log.clientCode|lowercase}}?width=80&height=80&project={{env.PROJECT}},title={{log.clientName}},alt={{log.clientName}}" class="avatar xxs inline margin-end-small" />
|
||||
<img onerror="this.onerror=null;this.className='avatar hide'" data-ls-attrs="src={{env.API}}/avatars/browsers/{{log.clientCode|lowercase}}?width=80&height=80&project={{env.PROJECT}},title={{log.clientName}},alt={{log.clientName}}" class="avatar xxs inline margin-end-small" data-ls-if="{{log.clientCode|lowercase}} !== 'cli'"/>
|
||||
|
||||
<img onerror="this.onerror=null;this.className='avatar hide'" data-ls-attrs="src=/images/clients/terminal.png?buster=<?php echo APP_CACHE_BUSTER; ?>,title={{log.clientName}},alt={{log.clientName}}" class="avatar xxs inline margin-end-small" data-ls-if="{{log.clientCode|lowercase}} === 'cli'" />
|
||||
|
||||
<span data-ls-if="(!{{log.clientName}})">Unknown</span>
|
||||
<span data-ls-if="({{log.clientName}})" data-ls-bind="{{log.clientName}} {{log.clientVersion}} on {{log.model}} {{log.osName}} {{log.osVersion}}"></span>
|
||||
</td>
|
||||
|
|
|
@ -394,7 +394,7 @@
|
|||
<td data-title="Client: ">
|
||||
<img onerror="this.onerror=null;this.className='avatar hide'" data-ls-if="{{log.clientCode|lowercase}} !== 'cli'" data-ls-attrs="src={{env.API}}/avatars/browsers/{{log.clientCode|lowercase}}?width=80&height=80&project={{env.PROJECT}},title={{log.clientName}},alt={{log.clientName}}" class="avatar xxs inline margin-end-small" />
|
||||
|
||||
<img onerror="this.onerror=null;this.className='avatar hide'" data-ls-if="{{log.clientCode|lowercase}} === 'cli'" data-ls-attrs="src=/images/clients/terminal.png?buster=<?php echo APP_CACHE_BUSTER; ?>,,title={{log.clientName}},alt={{log.clientName}}" class="avatar xxs inline margin-end-small" />
|
||||
<img onerror="this.onerror=null;this.className='avatar hide'" data-ls-if="{{log.clientCode|lowercase}} === 'cli'" data-ls-attrs="src=/images/clients/terminal.png?buster=<?php echo APP_CACHE_BUSTER; ?>,title={{log.clientName}},alt={{log.clientName}}" class="avatar xxs inline margin-end-small" />
|
||||
|
||||
<span data-ls-if="({{log.clientName}})" data-ls-bind="{{log.clientName}} {{log.clientVersion}} on {{log.model}} {{log.osName}} {{log.osVersion}}"></span>
|
||||
<div data-ls-if="(!{{log.clientName}})" class="text-align-center text-fade">Unknown</div>
|
||||
|
|
1
docs/sdks/node-cli/CHANGELOG.md
Normal file
1
docs/sdks/node-cli/CHANGELOG.md
Normal file
|
@ -0,0 +1 @@
|
|||
# Change Log
|
156
docs/sdks/node-cli/GETTING_STARTED.md
Normal file
156
docs/sdks/node-cli/GETTING_STARTED.md
Normal file
|
@ -0,0 +1,156 @@
|
|||
## Getting Started
|
||||
|
||||
Before you can use the CLI, you need to login to your Appwrite account.
|
||||
|
||||
```sh
|
||||
$ appwrite login
|
||||
|
||||
? Enter your email test@test.com
|
||||
? Enter your password ********
|
||||
✓ Success
|
||||
```
|
||||
This will also prompt you to enter your Appwrite endpoint ( default: http://localhost/v1 )
|
||||
|
||||
* ### Initialising your project
|
||||
Once logged in, the CLI needs to be initialised before you can use it with your Appwrite project. You can do this with the `appwrite init project` command.
|
||||
|
||||
```sh
|
||||
$ appwrite init project
|
||||
```
|
||||
|
||||
The following prompt will guide you through the setup process. The `init` command also creates an `appwrite.json` file representing your Appwrite project.
|
||||
|
||||
The `appwrite.json` file does a lot of things.
|
||||
* Provides context to the CLI
|
||||
* Keeps track of all your cloud functions
|
||||
* Keeps track of all your project's collections
|
||||
* Helps you deploy your Appwrite project to production and more..
|
||||
|
||||
You can also fetch all the collections in your current project using
|
||||
```sh
|
||||
appwrite init collection
|
||||
```
|
||||
|
||||
The CLI also comes with a convenient `--all` flag to perform both these steps at once.
|
||||
|
||||
```sh
|
||||
appwrite init --all
|
||||
```
|
||||
|
||||
* ### Creating and deploying cloud functions
|
||||
|
||||
The CLI makes it extremely easy to create and deploy Appwrite's cloud functions. Initialise your new function using
|
||||
|
||||
```
|
||||
$ appwrite init function
|
||||
? What would you like to name your function? My Awesome Function
|
||||
? What runtime would you like to use? Node.js (node-15.5)
|
||||
✓ Success
|
||||
```
|
||||
|
||||
This will create a new function `My Awesome Function` in your current Appwrite project and also create a template function for you to get started.
|
||||
|
||||
```sh
|
||||
$ tree My\ Awesome\ Function
|
||||
|
||||
My Awesome Function
|
||||
├── README.md
|
||||
├── index.js
|
||||
├── package-lock.json
|
||||
└── package.json
|
||||
|
||||
0 directories, 4 files
|
||||
```
|
||||
|
||||
You can now deploy this function using
|
||||
|
||||
```sh
|
||||
$ appwrite deploy function
|
||||
|
||||
? Which functions would you like to deploy? My Awesome Function (61d1a4c81dfcd95bc834)
|
||||
ℹ Info Deploying function My Awesome Function ( 61d1a4c81dfcd95bc834 )
|
||||
? Enter the entrypoint command node index.js
|
||||
✓ Success Deployed My Awesome Function ( 61d1a4c81dfcd95bc834 )
|
||||
```
|
||||
|
||||
Your function is now ready to be executed on your Appwrite server!
|
||||
|
||||
* ### Deploying Collections
|
||||
|
||||
Similarly, you can deploy all your collections to your Appwrite server using
|
||||
|
||||
```sh
|
||||
appwrite deploy collections
|
||||
```
|
||||
|
||||
The `deploy` command also comes with a convenient `--all` flag to deploy all your functions and collections at once.
|
||||
|
||||
```sh
|
||||
appwrite deploy --all
|
||||
```
|
||||
|
||||
> ### Note
|
||||
> By default, requests to domains with self signed SSL certificates (or no certificates) are disabled. If you trust the domain, you can bypass the certificate validation using
|
||||
```sh
|
||||
$ appwrite client --selfSigned true
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
The Appwrite CLI follows the following general syntax.
|
||||
```sh
|
||||
$ appwrite [COMMAND] --[OPTIONS]
|
||||
```
|
||||
|
||||
A few sample commands to get you started
|
||||
|
||||
```sh
|
||||
$ appwrite users create --userId "unique()" --email hello@appwrite.io --password very_strong_password
|
||||
$ appwrite users list
|
||||
```
|
||||
|
||||
To create a document you can use the following command
|
||||
```sh
|
||||
$ appwrite database createDocument --collectionId <ID> --documentId 'unique()' --data '{ "Name": "Iron Man" }' --read role:all team:abc
|
||||
```
|
||||
|
||||
### Some Gotchas
|
||||
- `data` must be a valid JSON string where each key and value are enclosed in double quotes `"` like the example above.
|
||||
- Some arguments like the `read` and `write` permissions are expected to be arrays. In the Appwrite CLI, array values are passed in using space as a separator like in the example above.
|
||||
|
||||
|
||||
To get information about the different services available, you can use
|
||||
```sh
|
||||
$ appwrite -h
|
||||
```
|
||||
|
||||
To get information about a particular service and the commands available in a service you can use
|
||||
```sh
|
||||
$ appwrite users // or
|
||||
$ appwrite users --help // or
|
||||
$ appwrite users help // or
|
||||
$ appwrite accounts
|
||||
```
|
||||
|
||||
To get information about a particular command and the parameters it accepts, you can use
|
||||
|
||||
```sh
|
||||
$ appwrite users list --help
|
||||
$ appwrite account get --help
|
||||
```
|
||||
|
||||
At any point, you can view or reset the CLI configuration using the `client` service.
|
||||
|
||||
```
|
||||
$ appwrite client --debug
|
||||
// This will display your endpoint, projectID, API key and so on.
|
||||
$ appwrite client --reset
|
||||
```
|
||||
|
||||
## CI mode
|
||||
|
||||
The Appwrite CLI can also work in a CI environment. The initialisation of the CLI works a bit differently in CI. In CI, you set your `endpoint`, `projectId` and `API Key` using
|
||||
|
||||
```sh
|
||||
appwrite client --endpoint http://localhost/v1 --projectId <PROJECT_ID> --key <API KEY>
|
||||
```
|
|
@ -47,7 +47,7 @@ class Detector
|
|||
*/
|
||||
public function getClient(): array
|
||||
{
|
||||
if (strpos($this->userAgent, 'Appwrite CLI') !== false) {
|
||||
if (strpos($this->userAgent, 'AppwriteCLI') !== false) {
|
||||
$version = explode(' ', $this->userAgent)[0];
|
||||
$version = explode('/', $version)[1];
|
||||
$client = [
|
||||
|
|
Loading…
Reference in a new issue