https://github.com/rocketchat/rocket.chat.apps-cli
The CLI for interacting with Rocket.Chat Apps
https://github.com/rocketchat/rocket.chat.apps-cli
apps cli hacktoberfest rocketchat-apps
Last synced: 3 months ago
JSON representation
The CLI for interacting with Rocket.Chat Apps
- Host: GitHub
- URL: https://github.com/rocketchat/rocket.chat.apps-cli
- Owner: RocketChat
- License: mit
- Created: 2017-06-19T16:26:50.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2025-09-16T18:11:56.000Z (4 months ago)
- Last Synced: 2025-09-16T21:10:46.548Z (4 months ago)
- Topics: apps, cli, hacktoberfest, rocketchat-apps
- Language: TypeScript
- Homepage:
- Size: 2.24 MB
- Stars: 49
- Watchers: 19
- Forks: 31
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
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.