[DAEMON-73] Titanium CLI.next
|Titanium CLI 6.0.0
The Titanium CLI.next, aka v6, will replace the existing Appc CLI and Titanium CLI v5. The Titanium CLI.next is a radical architecture change that will depend on the Appc Daemon where the Titanium CLI itself is a dumb client and all of the CLI logic lives in an Appc Daemon plugin. This new architecture will give us speed, flexibility, release management, and testability. This ticket is comprised of 2 major components: Titanium CLI client and the Titanium appcd plugin.
Titanium CLI ClientThe Titanium CLI "client" is the "titanium" package distributed via npm. It has 2 jobs: 1. Make sure the Appc Daemon is running 2. Execute the request command The client makes 2 types of appcd requests to the Titanium appcd plugin running in : 1. Discover the port to connect to and execute a command 2. Retrieve the schema for the Titanium CLI commands and options (needed for AMPLIFY CLI integration)
Titanium appcd pluginWhen executing a command, we need bi-directional communication for stdio. Despite the Appc Daemon using a WebSockets-based protocol, it does not support and it is not feasible (DAEMON-267) to add bi-directional communication over the WebSocket protocol. Instead the Titanium appcd plugin will start its own server for the Titanium CLI to connect to.
AMPLIFY CLI IntegrationThe Titanium CLI client is an AMPLIFY CLI extension which means it is installable via the AMPLIFY CLI Package Manager. Once installed, the AMPLIFY CLI will fetch the Titanium CLI's schema from the Titanium appcd plugin and append it to the AMPLIFY CLI's command schema. This allows AMPLIFY CLI users to benefit from integrated help and future features such as bash completion.
Architecture OverviewRefer to https://techweb.axway.com/confluence/pages/viewpage.action?pageId=179741921 for more information.