remote-files 0.1.2

a cli/lib wrapper of opendal to download/upload and manage remote files on buckets
Documentation
# Remote Files

A command line and library wrapper of [OpenDAL](https://github.com/apache/opendal), which allows managing remote files on buckets, such as download and download them.

Currently supported buckets are:

- [Google Cloud Storage]https://cloud.google.com/storage
- [Amazon S3]https://aws.amazon.com/s3/

Remote-files may work also with cloud storage providers that offer an API compatible with GCS or S3, but no guarantees are provided.

## Installation

```bash
cargo install remote-files
```

## Configuration

In order to use `remote-files` it is necessary to generate a configuration file that
lists all the connection profiles, alongside their credentials details.

The location of this configuration file is governed through environment variable
`RF_CFG_FILEPATH`, whose default value depends on the operating system.


| OS      | OS Configuration Folder             | Example                                                          |
| ------- | ----------------------------------- | ---------------------------------------------------------------- |
| Linux   | `$HOME/.config`                     | `/home/alice/.config/rf/configuration.json`                      |
| MacOS   | `$HOME/Library/Application Support` | `/Users/Alice/Library/Application Support/rf/configuration.json` |
| Windows | `{FOLDERID_RoamingAppData}`         | `C:\Users\Alice\AppData\Roaming\rf\configuration.json`           |

### Examples

Here is provided an example of configuration file that defines two different connection profiles,
one for Google Cloud Storage and one for Amazon S3.

```json
{
  "my-gcs-bucket": {
    "type": "gcs",
    "configuration": {
      "name": "my-gcs-bucket",
      "credentialPath": "~/.config/gcloud/application_default_credentials.json"
    }
  },
  "my-aws-bucket": {
    "type": "s3",
    "configuration": {
      "name": "my-aws-bucket",
      "endpoint": null,
      "prefix": null,
      "region": "eu-west-1",
      "accessKeyId": "********************",
      "secretAccessKey": "******************************",
      "defaultStorageClass": null
    }
  }
}
```

## Commands

In the following sections are described which commands can be executed with `remote-files`.

### `profiles`

Manage connection profiles

### `list`

List files in selected folder

### `download`

Download selected file from source directory

### `upload`

Upload selected file to target directory