xds-cli: command-line tool for XDS

xds-cli is a command-line tool for X(cross) Development System.

Configuration

xds-cli configuration is defined either by environment variables or by setting command line options.

Configuration through environment variables may also be defined in a file that will be sourced by xds-cli on start-up.

Use --config|-c option or set XDS_CONFIG environment variable to specify the config file to use.

So configuration is driven either by environment variables or by command line options or using a config file knowing that the following priority order is used:

  1. use option value (for example use project ID set by --id option),
  2. else use variable XDS_xxx (for example XDS_PROJECT_ID variable) when a config file is specified with --config|-c option,
  3. else use XDS_xxx (for example XDS_PROJECT_ID) environment variable

Note:

All parameters after a double dash (–) are considered as the command to execute on xds-server.

Global Options / Configuration variables

Following is the list of global options across all sub-commands.

--config|-c option or XDS_CONFIG env variable

Env config file to source on startup

--log|-l option or XDS_LOGLEVEL env variable

Logging level, supported levels are:

  • panic
  • fatal
  • error
  • warn
  • info
  • debug

Default level is “error”.

--rpath option or XDS_PATH env variable

Relative path into project

timestamp|-ts option or XDS_TIMESTAMP env variable

Prefix output with timestamp

url option or XDS_AGENT_URL env variable

Local XDS agent url (default: “localhost:8800”)

Commands

projects

projects (short prj) command should be used to managed XDS projects.

This command supports following sub-commands:

add, a      Add a new project
get         Get a property of a project
list, ls    List existing projects
remove, rm  Remove an existing project
sync        Force synchronization of project sources

Here are some usage examples:

# Create/declare a new project
xds-cli prj add --label "ABeautifulName" --type pm -p /home/seb/xds-workspace/myProject -sp /home/devel/xds-workspace/myProject

# List projects
xds-cli prj ls

# Delete an existing project
xds-cli prj rm 8e49

sdks

sdks (alias sdk) command should be used to managed cross SDKs.

This command supports following sub-commands:

add, a      Add a new SDK
get         Get a property of a SDK
list, ls    List installed SDKs
remove, rm  Remove an existing SDK

Here are some usage examples:

# List existing SDKs
xds-cli sdks ls

# Get SDK info
xds-cli sdks get c64d

exec

exec command should be used to exec command through XDS system.

For example you can use this command to build your project in XDS system.

This command supports following sub-commands:

exec command options are:

--id option or XDS_PROJECT_ID env variable (mandatory option)

project ID you want to build

--rpath (short -p) or XDS_RPATH env variable

relative path into project

--sdkid (alias --sdk) or XDS_SDK_ID env variable (mandatory option)

Cross Sdk ID to use to build project.

Here are some usage examples:

cd $MY_PROJECT_DIR
mkdir build

# Generate build system using cmake
xds-cli exec --id=4021 --sdkid=c226 -- "cd build && cmake .."

# Build the project
xds-cli exec --id=4021 --sdkid=c226 -- "cd build && make all"

In case of xds-agent is not running on default url:port (that is localhost:8800)

You can specify the url using --url option :

xds-cli --url=http://localhost:8800 exec --id=4021 --sdkid=c226 -- "cd build && make all"

misc

misc command allows to execute miscellaneous sub-commands such as:

version, v   Get version of XDS agent and XDS server
status, sts  Get XDS configuration status (including XDS server connection)

Here are some usage examples:

xds-cli misc version --verbose

xds-cli misc sts

How to build

Dependencies

Install Go and some other tools. Refer to Prerequisites chapter for more details.

Building

Clone this repo into your $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds and use delivered Makefile:

 export GOPATH=$(realpath ~/workspace_go)
 mkdir -p $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
 cd $GOPATH/src/gerrit.automotivelinux.org/gerrit/src/xds
 git clone https://gerrit.automotivelinux.org/gerrit/src/xds/xds-cli
 # or git clone ssh://YOUR_USERNAME@gerrit.automotivelinux.org:29418/src/xds/xds-cli
 cd xds-cli
 make

Debug

Visual Studio Code launcher settings can be found into .vscode/launch.json.

Tricks:

To debug both xds-cli and xds-agent (REST API part) or common code xds-common, it may be useful use the same local sources.

So you should replace xds-agent + xds-common in vendor directory by a symlink.

So clone first xds-agent + xds-common sources next to xds-cli directory.

You should have the following tree:

tree -L 5 --charset=ascii src/
src/
`-- gerrit.automotivelinux.org
    `-- gerrit
        `-- src
            `-- xds
                |-- backup.sh
                |-- xds-agent
                |-- xds-cli
                |-- xds-common
                |-- xds-docs
                |-- xds-gdb
                `-- xds-server

Then invoke vendor/debug Makefile rule to create a symlink inside vendor directory :

cd src/gerrit.automotivelinux.org/gerrit/src/xds/xds-cli
make vendor/debug