cloudmount
=====================
Linux util to Mount cloud drives
**Table of Contents**
- [Installation](#installation)
- [Usage](#usage)
- [Example](#example)
- [Cloud services](#cloud-services)
- [Google drive](#google-drive)
- [Dropbox](#dropbox)
- [Signals](#signals)
#### Installation
```bash
$ go get dev.hexasoftware.com/hxs/cloudmount
```
#### Usage
```bash
$ cloudmount -h
cloudmount-0.4-5-gf01e8fb - built: 2017-07-17 05:09:51 UTC
Usage: cloudmount [options] []
Source: can be json/yaml configuration file usually with credentials or cloud specific configuration
Options:
-d Run app in background
-o string
uid=1000,gid=1000,ro=false
-r duration
Timed cloud synchronization interval [if applied] (default 5s)
-t string
which cloud service to use [gdrive] (default "gdrive")
-v Verbose log
-vv
Extra Verbose log
-w string
Work dir, path that holds configurations (default "$HOME/.cloudmount")
```
#### Example
```bash
# will default source file to $HOME/.cloudmount/gdrive.yaml
$ cloudmount -t gdrive /mnt/gdrive
# or
$ cloudmount -t dropbox dropbox.yaml /mnt/gdrive
```
**Source config**
Configuration files/source can be written in following formats:
* yaml
* json
#### Cloud services
* Google Drive
* Dropbox
--------------
### Google Drive
Setup Google client secrets:
https://console.developers.google.com/apis/credentials
> Turn on the Drive API
> 1. Use [this wizard](https://console.developers.google.com/start/api?id=drive) to create or select a project in the Google Developers Console and automatically turn on the API. Click Continue, then Go to credentials.
> 2. On the Add credentials to your project page, click the Cancel button.
> 3. At the top of the page, select the OAuth consent screen tab. Select an Email address, enter a Product name if not already set, and click the Save button.
> 4. Select the Credentials tab, click the Create credentials button and select OAuth client ID.
> 5. Select the application type Other, enter the name "Drive API Quickstart", and click the Create button.
> 6. With the result dialog, copy clientID and client secret and create json file as shown in example (this can be retrieved any time by clicking on the api key)
sample _gdrive.yaml_ config:
```yaml
client_secret:
client_id: *Client ID*
client_secret: *Client Secret*
```
```bash
$ cloudmount gdrive.yaml $HOME/mntpoint
```
Also it's possible to create the yaml file in home directory as
__$HOME/.cloudmount/gdrive.yaml__
if <source> parameter is omitted it will default to this file
cloudmount gdrivefs will retrieve an oauth2 token and save in same file
### Dropbox
Setup Dropbox client secrets:
https://www.dropbox.com/developers/apps
> 1. Click _Create App_
> 2. Select the API, type of access, and App name
> 3. Use the values from _App key_ and _App secret_
sample _dropbox.yaml_ file:
```yaml
client_secret:
client_id: *App Key*
client_secret: *App secret*
```
```bash
$ cloudmount -t dropbox savedfile.yaml /mnt/point
```
On the first run a link will appear and it will request a token resuling from the link
--------------------
#### Signals
Signal | Action | ex
-------|------------------------------------------------------------------------------------------------------|-----------------
USR1 | Refreshes directory tree from file system | killall -USR1 cloudmount
HUP | Perform a GC and shows memory usage Works when its not running in daemon mode | killall -HUP cloudmount
#### TODO & IDEAS:
* Consider using github.com/codegangsta/cli
* Create test suit to implement new packages
* Caching: long term caching, maintain most used files locally until flush/change