# Rocket.Chat.Apps-cli **Repository Path**: mirrors_RocketChat/Rocket.Chat.Apps-cli ## Basic Information - **Project Name**: Rocket.Chat.Apps-cli - **Description**: The CLI for interacting with Rocket.Chat Apps - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-25 - **Last Updated**: 2026-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rocket.Chat Apps CLI The Rocket.Chat Apps CLI for interacting with Apps. ## Getting Started Extremely simple. ``` npm install -g @rocket.chat/apps-cli ``` ## Rocket.Chat App Development ### Logging Inside an App Due to limitations of NodeJS's `vm` package we have had to implement a custom logger class. To make usage of this you can use `this.getLogger()` and then do the normal `console` style logging. ### `rc-apps create` The development tools provide a command to quickly scaffold a new Rocket.Chat App, simply run `rc-apps create` and a new folder will be created inside the current working directory with a basic App which does nothing but will compile and be packaged in the `dist` folder. ### App description The app description file, named `app.json`, contains basic information about the app. You can check the [app-schema.json](https://github.com/RocketChat/Rocket.Chat.Apps-engine/blob/master/src/definition/app-schema.json) file for all the detailed information and fields allowed in the app description file, the basic structure is similar to this: ``` { "id": "5cb9a329-0613-4d39-b20f-cc2cc9175df5", "name": "App Name", "nameSlug": "app-name", "version": "0.0.1", "requiredApiVersion": "^1.4.0", "description": "App which provides something very useful for Rocket.Chat users.", "author": { "name": "Author Name ", "support": "Support Url or Email" }, "classFile": "main.ts", "iconFile": "beautiful-app-icon.jpg" } ``` ### Extending the App class The basic creation of an App is based on extending the `App` class from the Rocket.Chat Apps _definition_ library. Your class also has to implement the constructor and optionally the `initialize` function, for more details on those check the [App definition documentation](https://rocketchat.github.io/Rocket.Chat.Apps-engine/classes/app.html). ``` import { IAppAccessors, IConfigurationExtend, IEnvironmentRead, ILogger, } from '@rocket.chat/apps-engine/definition/accessors'; import { App } from '@rocket.chat/apps-engine/definition/App'; import { IAppInfo } from '@rocket.chat/apps-engine/definition/metadata'; export class TodoListApp extends App { constructor(info: IAppInfo, logger: ILogger, accessors: IAppAccessors) { super(info, logger, accessors); } public async initialize(configurationExtend: IConfigurationExtend, environmentRead: IEnvironmentRead): Promise { await this.extendConfiguration(configurationExtend, environmentRead); this.getLogger().log('Hello world from my app'); } } ``` ### Packaging the app Currently the Rocket.Chat servers and Marketplace allow submission of zip files, these files can be created by running `rc-apps package` which packages your app and creates the zip file under `dist` folder. ### Uploading the app For uploading the app you need add to the required parameters in the .rcappsconfig already created in the apps directory. It accepts two types of objects:- 1. Upload using username, password ``` { url: string; username: string; password: string; } ``` 2. Upload using personal access token and userId ``` { url: string; userId: string; token: string; } ``` ### Enabling autocomplete for commands To enable autocomplete for the apps cli use the command `rc-apps autocomplete ` with the shell type as zsh or bash as the supported types. This would provide a step by step instruction to enable shell completion in your preferred shell.