// Copyright (C) 2021 The Qt Company Ltd. // Copyright (C) 2019 Luxoft Sweden AB // Copyright (C) 2018 Pelagicore AG // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! \page appman-controller.html \title Controller \brief A command-line utility to remote control the application manager on a target device. \ingroup qtappman-tools The \c{appman-controller} is a command-line utility that can be used by the developer, or indirectly by other tools, on the target device to control the application manager without communicating directly with its D-Bus interface. \note In order to use this tool, the application manager has to be connected to either a session- or system-bus; don't run it with \c{--dbus none}. If you are running multiple application manager instances in the same system, you need to first \l{instance-id}{assign unique instance-ids} to each of them and then you can address them individually from the \c appman-controller tool by using the \c --instance-id command line option. The following commands are available: \table \header \li Command \li Arguments \li Description \row \li \span {style="white-space: nowrap"} {\c start-application} \li \c{} \c{[document-url]} \li Starts the application with \c application-id within the application manager. \row \li \span {style="white-space: nowrap"} {\c debug-application} \li \c{} \c{} \c{[document-url]} \li Starts the application with \c application-id within the application manager using a debug-wrapper. For more information, see \l{DebugWrappers}. \row \li \span {style="white-space: nowrap"} {\c stop-application} \li \c{} \li Stops the application with \c application-id. \row \li \span {style="white-space: nowrap"} {\c stop-all-applications} \li (none) \li Stops all applications that are running within the application manager. \row \li \span {style="white-space: nowrap"} {\c list-applications} \li (none) \li Outputs all available application IDs on the console, one per line. \row \li \span {style="white-space: nowrap"} {\c show-application} \li \c{} \li Shows the current metadata for the given application in YAML format. Alternatively, use \c{--json} to get the metadata in JSON format instead. \row \li \span {style="white-space: nowrap"} {\c list-packages} \li (none) \li Outputs all available package IDs on the console, one per line. \row \li \span {style="white-space: nowrap"} {\c show-package} \li \c{} \li Shows the current metadata for the given package in YAML format. Alternatively, use \c{--json} to get the metadata in JSON format instead. \row \li \span {style="white-space: nowrap"} {\c install-package} \li \c{} \li Installs the package given on the command-line. If the package file is specified as \c{-}, the tool tries to read the package from \c stdin. The following options are supported: \c{-a, --acknowledge}: Automatically acknowledge the installation, instead of relying on the System UI's logic. \row \li \span {style="white-space: nowrap"} {\c remove-package} \li \c{} \li Removes the package, specified with \c package-id. The following options are supported: \c{-f, --force}: Force removal of package. \c{-k, --keep-documents}: Keep the document folder of the package. \row \li \span {style="white-space: nowrap"} {\c list-installation-locations} \li (none) \li Lists all installaton locations. \row \li \span {style="white-space: nowrap"} {\c show-installation-location} \li \c{} \li Shows details for the specified \c installation-location in YAML format. Alternatively, use \c{--json} to get the location details in JSON format instead. \row \li \span {style="white-space: nowrap"} {\c list-instances} \li (none) \li Lists all currently running \l{instance-id}{named} application manager instances. \row \li \span {style="white-space: nowrap"} {\c inject-intent-request} \li \c{} \c{[parameters as json string]} \li Injects an intent request into the application manager for testing or debugging purposes. This only works, if the application manager is running in \l{development-mode}{developmentMode}. The parameters have to be supplied as a single argument JSON string - make sure to correctly escape any quotation marks when running from a shell. By default, the injected intent request will have a requesting application id of \c{:sysui:} (the System UI) and no handling application id. You can use the following command line options to change this behavior: \c{--requesting-application-id} Fake the requesting application id. \c{--application-id} Specify the handling application id to prevent disambiguation. \c{--broadcast} Instead of a directed request, create a broadcast. Please note that \c{--application-id} and \c{--broadcast} are mutually exclusive. For successful non-broadcast requests, the result will be printed to the console as JSON. \endtable The \c{appman-controller} naturally supports the standard Unix \c{--help} command-line option. */