The official balena CLI tool.
Go to file
Thodoris Greasidis f60d857c93 utils/promote: Do not rely on the user to always be there
Change-type: minor
Depends-on: https://github.com/resin-io/resin-sdk/pull/595
Signed-off-by: Thodoris Greasidis <thodoris@balena.io>
2018-10-29 22:29:02 +01:00
.github Create ISSUE_TEMPLATE.md 2017-09-04 20:18:23 +03:00
automation Remove explicit anchor links in CLI docs 2018-03-20 13:10:07 -05:00
bin chore: Add on the fly transpiled bin 2018-10-24 13:05:02 +03:00
doc Add support for the Opensource provisioning flow 2018-10-29 22:29:02 +01:00
lib utils/promote: Do not rely on the user to always be there 2018-10-29 22:29:02 +01:00
tests tests: Add tests for ignore files 2018-10-19 16:43:28 +02:00
typings Support multicontainer local mode in resin push 2018-10-19 16:44:56 +02:00
.editorconfig fix resin local push help message and lint errors 2017-03-21 12:06:05 +03:00
.gitignore Build standalone zips into a separate folder 2017-12-18 15:03:17 +01:00
.hound.yml Change java_script to javascript in hound config 2015-10-19 14:21:10 -04:00
.prettierrc Fix prettier configuration to avoid linting errors 2018-03-05 16:02:09 +01:00
.travis.yml Stop Travis deploying to npm (now handled by concourse) 2018-09-11 13:58:06 +02:00
appveyor.yml Autodeploy built standalone binaries for all platforms to github 2017-12-18 14:55:07 +01:00
capitanodoc.ts Make sure 'resin push' is included in the docs 2018-06-26 19:00:20 +02:00
CHANGELOG.md v8.1.0 2018-10-24 12:44:15 +02:00
coffeelint.json Add Coffeelint support 2014-10-31 09:48:53 -04:00
gulpfile.coffee Use spec test reporter, so we can debug with output 2018-03-29 11:11:25 +02:00
LICENSE Change license to Apache 2.0 2016-01-03 23:58:51 -04:00
package.json v8.1.0 2018-10-24 12:44:15 +02:00
README.md README: Add development guidelines section 2018-10-24 13:06:03 +03:00
resin-completion.bash Add bash completions 2018-03-15 18:05:50 +01:00
TROUBLESHOOTING.md Document the case where EACCES is thrown during login 2016-03-09 11:03:45 -04:00
tsconfig.json tconfig: Add skipLibCheck to tsconfig 2018-10-19 16:43:46 +02:00

Resin CLI

The official resin.io CLI tool.

npm version dependencies Gitter

Requisites

If you want to install the CLI directly through npm, you'll need the below. If this looks difficult, we do now have an experimental standalone binary release available, see 'Standalone install' below.

  • NodeJS (>= v6)
  • Git
  • The following executables should be correctly installed in your shell environment:
    • ssh: Any recent version of the OpenSSH ssh client (required by resin sync and resin ssh)
      • if you need ssh to work behind the proxy you also need proxytunnel installed (available as proxytunnel package for Ubuntu, for example)
    • rsync: >= 2.6.9 (required by resin sync)
Windows Support

Before installing resin-cli, you'll need a working node-gyp environment. If you don't already have one you'll see native module build errors during installation. To fix this, run npm install -g --production windows-build-tools in an administrator console (available as 'Command Prompt (Admin)' when pressing windows+x in Windows 7+).

resin sync and resin ssh have not been thoroughly tested on the standard Windows cmd.exe shell. We recommend using bash (or a similar) shell, like Bash for Windows 10 or Git for Windows.

If you still want to use cmd.exe you will have to use a package manager like MinGW or chocolatey. For MinGW the steps are:

  1. Install MinGW.
  2. Install the msys-rsync and msys-openssh packages.
  3. Add MinGW to the %PATH% if this hasn't been done by the installer already. The location where the binaries are places is usually C:\MinGW\msys\1.0\bin, but it can vary if you selected a different location in the installer.
  4. Copy your SSH keys to %homedrive%%homepath\.ssh.
  5. If you need ssh to work behind the proxy you also need to install proxytunnel

Getting Started

NPM install

If you've got all the requirements above, you should be able to install the CLI directly from npm. If not, or if you have any trouble with this, please try the new standalone install steps just below.

This might require elevated privileges in some environments.

$ npm install resin-cli -g --production --unsafe-perm

--unsafe-perm is only required on systems where the global install directory is not user-writable. This allows npm install steps to download and save prebuilt native binaries. You may be able to omit it, especially if you're using a user-managed node install such as nvm.

In some environments, this process will need to build native modules. This may require a more complex build environment, and notably requires Python 2.7. If you hit any problems with this, we recommend you try the alternative standalone install below instead.

Standalone install

If you don't have node or a working pre-gyp environment, you can still install the CLI as a standalone binary. This is experimental and may not work perfectly yet in all environments, but it seems to work well in initial cross-platform testing, so it may be useful, and we'd love your feedback if you hit any issues.

To install the CLI as a standalone binary:

To update in future, simply download a new release and replace the extracted folder.

Have any problems, or see any unexpected behaviour? Please file an issue!

Login

$ resin login

(Typically useful, but not strictly required for all commands)

Run commands

Take a look at the full command documentation at https://docs.resin.io/tools/cli/, or by running resin help.

Bash completions

Optionally you can enable tab completions for the bash shell, enabling the shell to provide additional context and automatically complete arguments toresin. To enable bash completions, copy the resin-completion.bash file to the default bash completions directory (usually /etc/bash_completion.d/) or append it to the end of ~/.bash_completion.

FAQ

Where is my configuration file?

The per-user configuration file lives in $HOME/.resinrc.yml or %UserProfile%\_resinrc.yml, in Unix based operating systems and Windows respectively.

The Resin CLI also attempts to read a resinrc.yml file in the current directory, which takes precedence over the per-user configuration file.

How do I point the Resin CLI to staging?

The easiest way is to set the RESINRC_RESIN_URL=resinstaging.io environment variable.

Alternatively, you can edit your configuration file and set resinUrl: resinstaging.io to persist this setting.

How do I make the Resin CLI persist data in another directory?

The Resin CLI persists your session token, as well as cached images in $HOME/.resin or %UserProfile%\_resin.

Pointing the Resin CLI to persist data in another location is necessary in certain environments, like a server, where there is no home directory, or a device running resinOS, which erases all data after a restart.

You can accomplish this by setting RESINRC_DATA_DIRECTORY=/opt/resin or adding dataDirectory: /opt/resin to your configuration file, replacing /opt/resin with your desired directory.

Support

If you're having any problems, check our troubleshooting guide and if your problem is not addressed there, please raise an issue on GitHub and the resin.io team will be happy to help.

You can also get in touch with us in the resin.io forums.

Development guidelines

After cloning this repository and running npm install you can build the CLI using npm run build. You can then run the generated build using ./bin/resin. In order to ease development:

  • you can build the CLI using the npm run build:fast variant which skips some of the build steps or
  • you can use ./bin/resin-dev which live transpiles the sources of the CLI.

In either case, before opening a PR make sure to also test your changes after doing a full build with npm run build.

License

The project is licensed under the Apache 2.0 license.