UIP
is a Visual Studio Code Extension that enhances the development experience of creating and working with Universal Extensions.
Features
- Provides an IDE wrapper for the
uip-cli
command line utility
- Quickly prototype Extensions using starter Extension Templates
- Build and upload Extensions and/or Universal Templates
- Pull the latest Universal Template source files from the Controller
- Download the full Universal Template package
- Debug Extensions locally without the need of Agent and Controller
Requirements
uip-cli
UIP
requires the uip-cli
command line utility to be installed on the target system where the Universal Extensions will be developed.
If an internet connection is available, the UIP VS Code Extension will detect when a uip-cli
install is required and prompt for automatic installation.
uip-cli
is a Python based utility. To install uip-cli
manually, download it from PyPI and install with pip
.
Refer to the uip-cli
landing page on PyPI for detailed instructions.
Pre-launch task
In 2.2.0, changes were made to how the extension worker process is spawned. A pre-launch task of type uipWorkerProcess
is now required on any launch configurations used to debug extensions.
For example, in .vscode/launch.json:
{
"configurations": [
{
"name": "UIP: Debug Universal Extension",
"type": "python",
"request": "attach",
"redirectOutput": false,
"justMyCode": true,
"showReturnValue": true,
"connect": {
"host": "127.0.0.1",
"port": 5678
},
// A pre-launch task is now required.
"preLaunchTask": {
"type": "uipWorkerProcess"
}
},
]
}
Newly created extension projects will include this pre-launch task by default, but existing projects will need to include it.
If a pre-launch task is already configured, you may create another task which depends on both your already-configured task as well as a uipWorkerProcess
task. For example, in .vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "My existing pre-launch task",
"type": "shell",
"command": "ls"
},
{
"label": "A new pre-launch task",
"type": "uipWorkerProcess",
"dependsOn": [
"My existing pre-launch task",
]
}
]
}
And in .vscode/launch.json:
{
"configurations": [
{
"name": "UIP: Debug Universal Extension",
...
"preLaunchTask": "A new pre-launch task"
}
]
}
In cases where the value of preLaunchTask
is not explicitly { "type": "uipWorkerProcess" }
an error message will appear notifying the user that debugging extensions may not work. This may be dismissed permanently by setting UIP.debug.ignoreMissingPreLaunchTask
to true
.
Note that if a task is defined in dependsOn
inline, this may trigger a bug in vscode, especially in multi-root workspaces. In tasks.json:
{
...
"tasks": [
{
"label": "Don't do this",
...
"dependsOn": [
// Don't do this!
{
"type": "uipWorkerProcess"
}
]
}
]
}
Instead, prefer to give a fully-defined label to a uipWorkerProcess
task, with a dependsOn
field:
{
"label": "Do do this",
"type": "uipWorkerProcess",
"dependsOn": [
"This will work"
]
},
{
"label": "This will work",
...
}
Extension Settings
This extension contributes the following commands:
UIP: Initialize New Project
UIP: Build
UIP: Build All
UIP: Upload
UIP: Upload All
UIP: Push
UIP: Push All
UIP: Pull
UIP: Download
UIP: Clean
UIP: Show Stdout
UIP: Show Stderr
UIP: Show Extension Output
UIP: Show Extension Console
UIP: Select Universal Extension API
UIP: Cancel
UIP: Terminate
UIP: Task Launch
UIP: Task Launch No Wait
UIP: Task Status
UIP: Task Status List
UIP: Task Output
UIP: Task Output for Instance Number
UIP: Set uip-cli Install Source
UIP: Set User ID
UIP: Set Password
UIP: Set URL
UIP: Set Target Task
UIP: Set Task Instance Count
UIP: Clear uip-cli Install Source
UIP: Clear User ID
UIP: Clear Password
UIP: Clear URL
UIP: Clear Environment
UIP: Clear Target Task
UIP: Clear Task Instance Count
UIP: Install uip-cli for the currently selected Python interpreter
UIP: Uninstall uip-cli for the currently selected Python interpreter
UIP: Initialize New Project
Initialize a new project using one of the provided starter Extension templates.
UIP: Build
Build 'Universal Extension' only
UIP: Build All
Build full Universal Extension package
UIP: Upload
Upload 'Universal Extension' only
UIP: Upload All
Upload full Universal Extension package
UIP: Push
Combines the UIP: Build
and UIP: Upload
commands
UIP: Push All
Combines the UIP: Build All
and UIP: Upload All
commands
UIP: Pull
Pull the Universal Template source files template.json
and template_icon.png
from the Controller
UIP: Download
Downloads the full Universal Template from the Controller as a zip file and places it in the ./dist/package_download/ folder
UIP: Clean
Purges build artifacts which includes anything inside the ./dist, ./build, and ./temp folders (including the folders themselves).
UIP: Show Stdout
Used to show the STDOUT output of the most recently debugged Extension instance.
UIP: Show Stderr
Used to show the STDERR output of the most recently debugged Extension instance.
UIP: Show Extension Output
Used to show the EXTENSION output of the most recently debugged Extension instance.
UIP: Show Extension Console
Used to show miscellaneous output of the most recently debugged Extension instance.
UIP: Select Universal Extension API
Used to select the desired Universal Extension API Level for debugging Extensions.
UIP: Cancel
Issues the Cancel command on the currently running Extension instance.
UIP: Terminate
Forcefully terminates the currently running Extension instance.
UIP: Task Launch
Launch a specific Universal Extension task in the Controller, monitor it to completion and return output. The task to launch is specified with the UIP: Set Target Task
command.
UIP: Task Launch No Wait
Launch a specific Universal Extension task in the Controller. The task will not be monitored. The sys_id
of the task instance created in the Controller will be returned as output in the UIP terminal.
UIP: Task Status
Retrieve the status of the last "Target Task" launched in the Controller.
UIP: Task Status List
Retrieve the status of the last instance-count
"Target Tasks" launched in the Controller. The instance-count
value is set with the UIP: Set Task Instance Count
command.
UIP: Task Output
Retrieve the output of the last "Target Task" launched in the Controller.
UIP: Task Output for Instance Number
Retrieve the output associated with the specified instance-number
of the "Target Task" launched in the Controller. The instance-number
is supplied to an input window that pops up upon executing this command.
UIP: Set uip-cli Install Source
Sets the source location of the uip-cli installation package. The default value is simply uip-cli
, which will cause the PyPi repository to be used as the source. The value can be a url or file path to uip-cli packaged as a tar.gz or .whl file.
UIP: Set User ID
Sets the user ID to be used with commands that communicate with the Universal Controller
UIP: Set Password
Sets the password to be used with commands that communicate with the Universal Controller
UIP: Set URL
Sets the URL to be used with commands that communicate with the Universal Controller
UIP: Set Target Task
Sets the "Target Task" to use for UIP task commands. The "Target Task" value should be a Universal Extension task name that exists (or, will exist) in the Universal Controller.
UIP: Set Task Instance Count
Sets the "Instance Count" value to be used with the UIP: Task Status List
command to indicate the number of task instances to return the status for.
UIP: Clear uip-cli Install Source
Removes the "uip-cli Install Source" if it has been set.
UIP: Clear User ID
Removes the UIP user ID environment variable from the project environment
UIP: Clear Password
Removes the UIP password environment variable from the project environment
UIP: Clear URL
Removes the UIP URL environment variable from the project environment
UIP: Clear UIP Environment
Removes the UIP environment variables from the project environment
UIP: Clear Target Task
Removes the "Target Task" if it has been set.
UIP: Clear Task Instance Count
Removes the "Instance Count" if it has been set.
UIP: Install uip-cli for the currently selected Python interpreter
Installs the uip-cli
command line tool to the currently selected Python environment
UIP: Uninstall uip-cli for the currently selected Python interpreter
Uninstalls the uip-cli
command line tool from the currently selected Python environment
Known Issues
No known issues.