0.35.3 • Published 4 years ago

xod-cli v0.35.3

Weekly downloads
2
License
AGPL-3.0
Repository
github
Last release
4 years ago

xod-cli

This package is a part of the XOD project.

The package contains implemetation of xodc command line utility.

Basically it’s a collection of thin wrappers around NodeJS API’s available via other packages. The responsibility of xod-cli is to parse command line arguments, call API, and format the result on stdout/stderr properly.

xodc uses subcommands like git does to perform various functions. The subcommands handling could be found in src/commands/*.js.

Flags, aliases, environment variables

Almost any flag can be replaced with the appropriate environment variable. For example, instead of --username you can declare variable XOD_USERNAME.

FlagAliasEnvironment variable
--apiXOD_API
--board-bXOD_BOARD
--debugXOD_DEBUG
--on-behalfXOD_ONBEHALF
--output-oXOD_OUTPUT
--output-dir-oXOD_OUTPUT
--passwordXOD_PASSWORD
--port-pXOD_PORT
--usernameXOD_USERNAME
--workspace-wXOD_WORKSPACE

Commands

xodc autocomplete [SHELL]

display autocomplete installation instructions

USAGE
  $ xodc autocomplete [SHELL]

ARGUMENTS
  SHELL  shell type

OPTIONS
  -r, --refresh-cache  Refresh cache (ignores displaying instructions)

EXAMPLES
  $ xodc autocomplete
  $ xodc autocomplete bash
  $ xodc autocomplete zsh
  $ xodc autocomplete --refresh-cache

See code: @oclif/plugin-autocomplete

xodc boards [options]

show available boards

USAGE
  $ xodc boards [options]

OPTIONS
  -V, --version         show CLI version
  -h, --help            show CLI help
  -q, --quiet           do not log messages other than errors
  -w, --workspace=path  [default: ~/xod] use the workspace specified, defaults to $HOME/xod

See code: src/commands/boards.js

xodc compile [options] [entrypoint]

compiles (verifies) a XOD program

USAGE
  $ xodc compile [options] [entrypoint]

ARGUMENTS
  ENTRYPOINT
      Project and/or patch to operate on. The project should point to a file or
      directory on the file system. The patch may either point to file system or
      be a XOD patch path. If either is omitted, it is inferred from the current
      working directory or another argument. Examples:

         * ./path/to/proj.xodball main      # xodball + patch name
         * ./path/to/proj/main/patch.xodp   # just full path to a patch
         * main                             # a patch in the current project

OPTIONS
  -V, --version         show CLI version
  -b, --board=fqbn      (required) target board identifier (see `xodc boards` output)
  -h, --help            show CLI help

  -o, --output=path     save the result binary to the directory; the same directory is used for intermediate build
                        artifacts; defaults to `cwd`

  -q, --quiet           do not log messages other than errors

  -w, --workspace=path  [default: ~/xod] use the workspace specified, defaults to $HOME/xod

  --debug               enable debug traces

EXAMPLES
  Compile a program using the current patch as entry point
  $ xodc compile -b arduino:avr:uno

  Compile the patch `main` from the xodball project and save binaries in `bin/uno.hex`
  $ xodc compile -b arduino:arv:uno foo.xodball main -o bin/uno.hex

See code: src/commands/compile.js

xodc help [COMMAND]

display help for xodc

USAGE
  $ xodc help [COMMAND]

ARGUMENTS
  COMMAND  command to show help for

OPTIONS
  --all  see all commands in CLI

See code: @oclif/plugin-help

xodc install:arch [fqbn]

install toolchains

USAGE
  $ xodc install:arch [fqbn]

ARGUMENTS
  FQBN  Board FQBN. `arduino:sam` for example. See `xodc boards` list for the full list.

OPTIONS
  -V, --version         show CLI version
  -h, --help            show CLI help
  -q, --quiet           do not log messages other than errors
  -w, --workspace=path  [default: ~/xod] use the workspace specified, defaults to $HOME/xod

See code: src/commands/install/arch.js

xodc publish [options] [project]

publish a library

USAGE
  $ xodc publish [options] [project]

ARGUMENTS
  PROJECT
      Project to operate on. The project should point to a file or directory
      on file system. If omitted, it is inferred from the current working
      directory. Examples:

         * ./path/to/proj.xodball           # xodball
         * ./path/to/proj                   # just full path to a project

OPTIONS
  -V, --version         show CLI version
  -h, --help            show CLI help
  -q, --quiet           do not log messages other than errors
  -w, --workspace=path  [default: ~/xod] use the workspace specified, defaults to $HOME/xod
  --api=hostname        [default: xod.io] XOD API hostname
  --on-behalf=username  publish on behalf of the username
  --password=password   XOD API password
  --username=username   XOD API username

EXAMPLES
  Publish the current project with the version defined in `project.xod`
  $ xodc publish

  Publish a project saved as xodball
  $ xodc publish foo.xodball

See code: src/commands/publish.js

xodc resave [options] [project]

opens a project and saves it in another location or format

USAGE
  $ xodc resave [options] [project]

ARGUMENTS
  PROJECT
      Project to operate on. The project should point to a file or directory
      on file system. If omitted, it is inferred from the current working
      directory. Examples:

         * ./path/to/proj.xodball           # xodball
         * ./path/to/proj                   # just full path to a project

OPTIONS
  -V, --version         show CLI version
  -h, --help            show CLI help
  -o, --output=path     xodball or multifile directory output path, defaults to stdout
  -q, --quiet           do not log messages other than errors
  -w, --workspace=path  [default: ~/xod] use the workspace specified, defaults to $HOME/xod

EXAMPLES
  Exports the current multifile project to a xodball
  $ xodc resave . -o ~/foo.xodball

  Outputs the current multifile project as a xodball to stdout
  $ xodc resave

  Resaves one xodball into another (useful for applying migrations)
  $ xodc resave foo.xodball -o bar.xodball

  Converts a xodball to a multifile project
  $ xodc resave foo.xodball -o /some/new/dir

See code: src/commands/resave.js

xodc tabtest [options] [entrypoint]

tabtest project

USAGE
  $ xodc tabtest [options] [entrypoint]

ARGUMENTS
  ENTRYPOINT
      Project and/or patch to operate on. The project should point to a file or
      directory on the file system. The patch may either point to file system or
      be a XOD patch path. If either is omitted, it is inferred from the current
      working directory or another argument. Examples:

         * ./path/to/proj.xodball main      # xodball + patch name
         * ./path/to/proj/main/patch.xodp   # just full path to a patch
         * main                             # a patch in the current project

OPTIONS
  -V, --version          show CLI version
  -h, --help             show CLI help
  -o, --output-dir=path  [default: /tmp/xod-tabtest] path to directory where to save tabtest data
  -q, --quiet            do not log messages other than errors
  -w, --workspace=path   [default: ~/xod] use the workspace specified, defaults to $HOME/xod
  --no-build             do not build

EXAMPLES
  Build tabtests for project in current working directory
  $ xodc tabtest

  Specify target directory and project, only generate tests
  $ xodc tabtest --no-build --output-dir=/tmp/xod-tabtest ./workspace/__lib__/xod/net

See code: src/commands/tabtest.js

xodc transpile [options] [entrypoint]

transpiles (generates C++) a XOD program

USAGE
  $ xodc transpile [options] [entrypoint]

ARGUMENTS
  ENTRYPOINT
      Project and/or patch to operate on. The project should point to a file or
      directory on the file system. The patch may either point to file system or
      be a XOD patch path. If either is omitted, it is inferred from the current
      working directory or another argument. Examples:

         * ./path/to/proj.xodball main      # xodball + patch name
         * ./path/to/proj/main/patch.xodp   # just full path to a patch
         * main                             # a patch in the current project

OPTIONS
  -V, --version         show CLI version
  -h, --help            show CLI help
  -o, --output=path     C++ output file path, default to stdout
  -q, --quiet           do not log messages other than errors
  -w, --workspace=path  [default: ~/xod] use the workspace specified, defaults to $HOME/xod
  --debug               enable debug traces

EXAMPLES
  Transpile a program using the cwd patch as entry point, print to stdout
  $ xodc transpile

  Transpile the current project with `main` patch as entry point, save the output in `x.cpp`
  $ xodc transpile main -o x.cpp

  Transpile a project in the xodball with `main` patch as entry point
  $ xodc transpile foo.xodball main

See code: src/commands/transpile.js

xodc upload [options] [entrypoint]

uploads a XOD program to the board

USAGE
  $ xodc upload [options] [entrypoint]

ARGUMENTS
  ENTRYPOINT
      Project and/or patch to operate on. The project should point to a file or
      directory on the file system. The patch may either point to file system or
      be a XOD patch path. If either is omitted, it is inferred from the current
      working directory or another argument. Examples:

         * ./path/to/proj.xodball main      # xodball + patch name
         * ./path/to/proj/main/patch.xodp   # just full path to a patch
         * main                             # a patch in the current project

OPTIONS
  -V, --version         show CLI version
  -b, --board=fqbn      (required) target board identifier (see `xodc boards` output)
  -h, --help            show CLI help
  -p, --port=port       (required) port to use for upload
  -q, --quiet           do not log messages other than errors
  -w, --workspace=path  [default: ~/xod] use the workspace specified, defaults to $HOME/xod
  --debug               enable debug traces

EXAMPLE
  Compile a program using the current patch as entry point, upload to ttyACM1
  $ xodc upload -b arduino:avr:uno -p /dev/ttyACM1

See code: src/commands/upload.js