Freshworks CLI

Freshworks Command-Line Interface (CLI) enables you to build, test, and package apps to publish them in Freshworks Marketplace.

As soon as you install the CLI and type fdk to display the supported commands.

The following options are also avaliable.

  • For information about a specific command, run the following command. $ fdk COMMAND (-h | --help)
  • To obtain detailed logs, run the following command. $ NODE_DEBUG=fdk fdk COMMAND

Create

This command is used to create a new app. Before executing the create command, ensure that the specified or current app directory is empty. $ fdk create [--app-dir DIR] [--products PRODUCT] [--template TEMPLATE]

Options Usage
--app-dir Specify the absolute or relative path to the project directory.
--products Specify the product for which the app is created. If not specified, you will be prompted to select a product.
--template Specify the template. If not specified, you will be prompted as shown.

Example 1
To create a Freshsales app in the current directory, run the following command.
$ fdk create --products freshsales --template your_first_app The current directory should be empty.

Output
A new Freshsales app is created from the your_first_app template with the following files.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/Users/user/myfirstapp ├── README.md ├── app │ ├── app.js │ ├── freshsales_logo.png │ ├── icon.svg │ ├── logo.png │ ├── style.css │ └── template.html ├── config │ ├── iparam_test_data.json │ └── iparams.json └── manifest.json 2 directories, 10 files
EXPAND ↓

Example 2
Run any of the following commands to create default Freshsales sample app directories and files in the myfirstapp directory. $ fdk create --app-dir ./myfirstapp $ fdk create --app-dir /Users/user/myfirstapp The output will be the same as Example 1.

Generate

This command is used to generate app files with a specific template for an existing app that was created by using the create command.

  • After you create an app, run the following command. $ fdk generate The list of the following files is displayed.
    • oauth_config.json: Contains the configuration parameters, such as client_id, client_secret, authorize_url, token_url, and account/agent scope, required for OAuth-based authentication.
    • iparams.json: Contains the installation parameters, such as iparam name and type of iparam, whose values are set when the app is installed.
    • iparams.html: Contains the html code to build the Custom Installation page. You can enter the page title, select the product css to link, and choose to add jquery, fresh_client.js, and iparam.js and iparam.css.
    • server.js: Contains the event registration and callback methods. You need to enter the names of the events and callback functions.
    • manifest.json: Contains app information such as version, product, location, and so on. You need to select the product and app location.
  • Select a file and enter the appropriate parameter values. The corresponding file is generated based on the values.
Run

This command is used to start the local server in order to test your app.

$ fdk run [--app-dir DIR]
Options Usage
--app-dir Specify the absolute or relative path to the project directory.

If you are running a serverless app that contains dependencies, the packages defined in manifest.json are automatically installed.

Once you exit testing, the CLI will print a summary of how extensive your testing was. The following coverage summary shows an example of thorough testing.

1
2
3
4
5
6
======================= Coverage summary ======================== Statements : 98.18% ( 54/55 ) Branches : 100% ( 4/4 ) Functions : 84.62% ( 22/26 ) Lines : 98.18% ( 54/55 ) =================================================================

Note:
Each component in the coverage summary should be at least 80% for apps to be submitted in Freshworks Marketplace. See Code coverage for more information.

Example 1
To run the command from the app project directory, type:

$ fdk run Output Starting local testing server at http://*:10001/
Append "dev=true" to your Freshsales support URL to start testing
e.g. https://domain.freshsales.io/contacts/2007663673?dev=true
Quit the server with Control-C.

Example 2
To run the command from a different directory, type:
$ fdk run --app-dir /Users/user/myfirstapp The output will be the same as Example 1.

Example 3
To run the command for a serverless app from a different directory, type:
$ fdk run --app-dir /Users/user/myfirstapp Output $ Starting local testing server at http://*:10001/
Append "dev=true" to your freshsales support URL to start testing
e.g. https://domain.freshsales.io/contacts/2007663673?dev=true
Quit the server with Control-C.

To test the serverless component of your app, visit - http://localhost:10001/web/events

Validate

This command validates whether the app code is error free. If there are errors in the code, corresponding violations are displayed after the command is run.

$ fdk validate [--app-dir DIR] [--fix]
Option Usage
--app-dir To specify the absolute or relative path to the app directory that contains the files to be validated.
--fix To fix all the lint errors for which auto-fix support is available.
Pack

This command is used to pack the app project for submission.

$ fdk pack [--app-dir DIR]
Options Usage
--app-dir Specify the absolute or relative path to the project directory.

Once you execute the pack command, a dist/<appdirectory>.zip file is generated which you need to upload in the Developer portal to publish it in Marketplace.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
~ user$ tree myfirstapp/ myfirstapp/ ├── README.md ├── app │ ├── app.js │ ├── freshsales_logo.png │ ├── icon.svg │ ├── logo.png │ ├── style.css │ └── template.html ├── config │ ├── iparam_test_data.json │ └── iparams.json ├── dist │ └── myfirstapp.zip └── manifest.json 3 directories, 11 files
EXPAND ↓

Example 1
To run the command from the app project directory, type:$ fdk pack

Output

App packed successfully at /dist/myfirstapp.zip
Upload this file to the marketplace by following the instructions at
https://developers.freshsales.io/docs/marketplace-listing/

Example 2
To run the command from a different directory, type:$ fdk pack --app-dir /Users/user/myfirstapp The output will be same as Example 1.

Version

This command prints the installed and latest CLI versions.

$ fdk version

Output

Installed: 6.0.0
Latest: 6.6.0
To install the latest version type
"npm install https://dl.freshdev.io/cli/fdk.tgz -g"