.. _building_apps_tcpackage: ------------------------------------- Building Apps: Packaging (tcpackage) ------------------------------------- Summary ------- This CLI tool provides a simple interface to package the App so that it can easily be deployed to the ThreatConnect platform. Running ``tcpackage`` will build a zip package of an App that can be installed directly in the ThreatConnect platform. For App packages that contain multiple Apps using separate **install.json** files, add the ``--bundle`` argument to build a bundle. When using multiple **install.json** files, the prefix of the filename is the App name (e.g., **MyApp.install.json** will have an App name of **MyApp**). During the build process, validation of the **install.json** file will be handled automatically. .. Note:: Typically, the ``tcpackage`` command is run with no arguments, or using the ``--bundle`` flag for packages with multiple **install.json** files. Usage ----- .. code-block:: bash usage: tcpackage [-h] [--bundle] [--exclude EXCLUDE] [--config CONFIG] [--install_json INSTALL_JSON] [--outdir OUTDIR] optional arguments: -h, --help Show this help message and exit --bundle Build a bundle file. --exclude EXCLUDE File and directories to exclude from build --config CONFIG (Advanced) Build configuration file. (Default: tcex.json) --install_json INSTALL_JSON The install.json file name for the App that should be built. --outdir OUTDIR (Advanced) Directory to write the outfile. (Default: target) Common Usage ~~~~~~~~~~~~ The following command will build the app in the **target** directory of the project with and extension of **.tcx**. .. code-block:: bash tcpackage Configuration Options --------------------- By default, the ``tcex.json`` file will be loaded by ``tcpackage``. The following is an example of additional configuration that can be provided for the ``tcpackage`` command. Single App ~~~~~~~~~~ .. code-block:: javascript <..snipped> "package": { "app_name": "MyApp", "app_version": "v1.0", "bundle": false, "excludes": [ "log", "requirements.txt", "tcex.d" ], "outdir": "target" }, Multiple Bundles ~~~~~~~~~~~~~~~~ .. code-block:: javascript <..snipped> "package": { "bundle": true, "bundle_name": "TCPB_-_Palo_Alto", "bundle_packages": [{ "name": "TCPB_-_My_Bundle_Create", "patterns": [ ".*Create.*" ] }, { "name": "TCPB_-_My_Bundle_Delete", "patterns": [ ".*Delete.*" ] }], "excludes": [ "log", "requirements.txt", "tcex.d" ], "outdir": "target" },