57 releases (32 breaking)
0.35.0 | Nov 4, 2024 |
---|---|
0.33.1 | Sep 12, 2024 |
0.29.0 | Jul 26, 2024 |
0.22.2 | Feb 1, 2024 |
0.3.2 | Jul 9, 2020 |
#28 in Machine learning
737 downloads per month
1MB
13K
SLoC
Contains (Cab file, 115KB) tests/samples/unicode.msg, (Cab file, 93KB) tests/samples/non-unicode.msg
Command line interface for Re:infer
re
is the official command line interface for Re:infer. It simplifies managing resources, such as sources and datasets, as well as importing or exporting communications data. Additionally, re
maintains multiple contexts, making it easy to switch between multiple authentication tokens for different users (and endpoints for multiple clusters if needed).
API Library
The api directory contains a Rust client library for reinfer which can be used for API access independently. Please refer to that directory for more information. The rest of the README is about the command line tool for managing reinfer resources.
Features
- Create, get, update and delete operations for sources, datasets, comments and more.
- Context management for multiple endpoints (reinfer clusters) and user tokens.
- Upload new verbatims to a source.
- Easily download raw verbatims from a set of sources and datasets together with human applied annotations. Useful for backups, migrating data or for applying some transformations to the data.
- Basic shell autocompletion for
zsh
andbash
. - Colorized terminal output and progress bars.
Demo
Installation
Binary
Statically linked binaries with no dependencies are provided for selected platforms:
Debian / Ubuntu
You can download a .deb
package here.
From Source
To build from source, you need a recent version of the Rust toolchain installed.
Using cargo install
To install using cargo install
run the following.
cargo install reinfer-cli
Ensure you have the cargo bin directory in your path (typically ~/.cargo/bin
).
Manual
Build it the usual way using cargo
cargo build --release
The binary is located at ../target/release/re
. Move it somewhere suitable, e.g.
sudo mv ../target/release/re /usr/local/bin/
Getting Started
Check the installation and see a full listing of the available commands by running re
with no arguments.
Authentication
Per Session
The simplest way to authenticate is to specify the API token for every command. By default re
will prompt you to enter it interactively. E.g. to list the available datasets
➜ re get datasets
input: Enter API token [none]: MYSUPERSECRETAPITOKEN
Name ID Updated (UTC) Title
InvestmentBank/collateral-triggers aa9dda7c059e5a8d 2019-04-30 17:25:03 IB Collateral Triggers
InvestmentBank/george-test 1aaeacd49dfce8a0 2019-05-10 15:32:34 Test Dataset
InvestmentBank/margin-call b9d50fb2b38c3af5 2019-05-08 07:51:09 IB Margin Call
InvestmentBank/margin-call-large 6d00b9f69ab059f6 2019-05-11 09:23:43 IB Margin Call Large
The token can also be specified using --token
➜ re --token MYSUPERSECRETAPITOKEN get datasets
This is not generally a good idea (e.g. it'll be stored in your shell history). Better to store in a environment variable.
➜ re --token $REINFER_TOKEN get datasets
Even better to use contexts, see further below.
Different Clusters
By default, the endpoint for all commands is https://reinfer.dev
. This can be overidden using --endpoint
, e.g.
re --endpoint http://localhost:8000 --token $REINFER_TOKEN get datasets
Contexts (stateful authentication)
Contexts help avoid having to manually specify the token and endpoint with every command. A context is composed of
- The authentication token (which user?)
- The Re:infer cluster endpoint to talk to, typically
https://reinfer.dev
- (Optional) An HTTP proxy to use for all requests
- A memorable name which serves as an identifier for the "context"
Commands for managing contexts are under re config
and allow one to create, update, set and delete contexts. Run re config -h
to see all the options.
When creating the very first context, this will be set as the active one
➜ re config add --name production --endpoint https://reinfer.dev/
I A new context `production` will be created.
* Enter API token [none]: MYSUPERSECRETTOKEN
W Be careful, API tokens are stored in cleartext in /home/marius/.config/reinfer/contexts.json.
I New context `production` was created.
The current context will be used for all subsequent commands.
➜ re get datasets
Name ID Updated (UTC) Title
InvestmentBank/collateral-triggers aa9dda7c059e5a8d 2019-04-30 17:25:03 IB Collateral Triggers
InvestmentBank/george-test 1aaeacd49dfce8a0 2019-05-10 15:32:34 Test Dataset
InvestmentBank/margin-call b9d50fb2b38c3af5 2019-05-08 07:51:09 IB Margin Call
InvestmentBank/margin-call-large 6d00b9f69ab059f6 2019-05-11 09:23:43 IB Margin Call Large
Any of the context settings can be overwritten as a one off using global flags such as --token
, --endpoint
and --proxy
.
➜ re --proxy http://proxy.example get datasets
Adding a context with a name that already exists will allow you to update any of the saved settings.
Uploading Comments
WIP
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the reinfer-cli
or reinfer-client
crate, as defined in the
Apache-2.0 license, shall be licensed as above, without any additional terms or
conditions.
Release Preparation
- Update repo files to represent the new version
- Bump the version number in both
api/Cargo.toml
andcli/Cargo.toml
.- You will also need to update the version spec in the
cli/Cargo.toml
that points toapi/Cargo.toml
.
- You will also need to update the version spec in the
- Run
cargo build
to update all lockfiles. - Update the
CHANGELOG.md
to mark allUnreleased
changes as part of the new version.- Check the git log since last release to make sure it's not missing anything.
- Update the download links to the static binaries in
README.md
- Commit everything and PR it as usual.
- Bump the version number in both
- Cut a release by creating a new Github release.
- Use the version number as the release title:
v0.10.1
. - Use the relevant changelog section as the release description.
Publish release
will upload build artefacts and tag the relevant commit.- Check the Github actions log to make sure the release was successful.
- Use the version number as the release title:
License
This project is licensed under Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0).
Dependencies
~18–34MB
~591K SLoC