https://github.com/yojoecapital/goop-cli
The Google Drive Push CLI is a simple tool for syncing files between a local directory and Google Drive.
https://github.com/yojoecapital/goop-cli
Last synced: 4 months ago
JSON representation
The Google Drive Push CLI is a simple tool for syncing files between a local directory and Google Drive.
- Host: GitHub
- URL: https://github.com/yojoecapital/goop-cli
- Owner: yojoecapital
- Created: 2024-12-08T16:26:32.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-08-06T04:15:38.000Z (7 months ago)
- Last Synced: 2025-08-06T05:24:13.508Z (7 months ago)
- Language: C#
- Size: 156 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-cli-apps-in-a-csv - goop-cli - The Google Drive Push CLI is a simple tool for syncing files between a local directory and Google Drive. (<a name="transfer"></a>Data transfer)
- awesome-cli-apps - goop-cli - The Google Drive Push CLI is a simple tool for syncing files between a local directory and Google Drive. (<a name="transfer"></a>Data transfer)
README
# Google Drive Push CLI
The **Google Drive Push CLI** is a tool for syncing files between a local directory and Google Drive. It supports pushing and pulling files, managing remote items, and displaying differences between local and remote files.
## Setup
Before you can use the tool, you'll need to enable the **Google Drive API** and set up OAuth 2.0 credentials. Follow these steps to set it up:
1. Go to the [Google Cloud Console](https://console.cloud.google.com/).
2. Create a new project.
3. Enable the **Google Drive API** for your project:
- Navigate to **APIs & Services > Library**.
- Search for "Google Drive API" and enable it.
4. Create OAuth 2.0 credentials:
- Go to **APIs & Services > Credentials**.
- Click **Create Credentials > OAuth Client ID**.
- Choose **Desktop App** as the application type.
- Download the `credentials.json` file and save it to the configuration directory:
- **Linux**: `/home//.config/goop`
- **Windows**: `C:\Users\\AppData\Roaming\goop`
## Installation
To install or update the Google Drive Push CLI, run:
```bash
curl -L -o /tmp/goop https://github.com/yojoecapital/goop-cli/releases/latest/download/goop && chmod 755 /tmp/goop && sudo mv /tmp/goop /usr/local/bin/
```
## Usage
Run the following command to see all available options and commands:
```bash
goop --help
```
### Commands
- `initialize ` (or `init`): set up a new sync folder by creating a `.goop` file in the current directory
- use `--depth ` to set the maximum folder depth to sync
- if the `` argument is omitted, an interactive prompt will allow users to traverse their Google Drive directories in the terminal and select the folder to sync
- `push`: upload local changes to the associated Google Drive folder
- use `--operations [c|u|d]` (or `-x`) to specify which operations should be pushed. The `c` stands for create, `u` for update, and `d` for delete. The default value for this is `cud` for all the operations
- use `--ignore ` (or `-i`) to ignore [additional glob patterns](#ignoring-glob-patterns) from being processed
- `pull`: download remote changes from Google Drive to the local directory
- the same arguments in `push` are present in `pull`
- `diff`: display the differences between the last modified times of local and remote files
#### Remote item management
You can manage remote items with the `remote` command. If you omit the `` argument, an interactive prompt will be used instead.
- `remote info ` (or `remote information`): get information for a remote item
- `remote list ` (or `remote ls`): list items in a remote folder (default is `/`)
- `remote mkdir `: create a new folder in an existing remote folder
- `remote move ` (or `remote mv`): move or reparent an item
- `remote trash `: move an item to the trash
- `remote download `: download a remote item
### Configuration
The program stores a cache under `~/.config/goop-cli/cache.db`, which can be deleted to clear the cache. Additionally, there are configuration options in `~/.config/goop-cli/config.json`.
Here is an example of the configuration file:
```json
{
"cache": {
"ttl": 300000, // Cache TTL in milliseconds
"enabled": true
},
"auth": {
"max_token_retries": 3, // The max number of times to retry token refreshes
"retry_delay": 1000 // The delay in milliseconds between token refreshes
},
"auto_ignore_list": [ // Files to ignore during sync
".goop",
".goopignore"
],
"default_depth": 3, // Default sync folder depth
"max_depth": 3, // Maximum sync folder depth
}
```
#### Ignoring glob patterns
Create a `.goopignore` file inside a sync folder and use it specify a list of glob patterns that should be ignored.
```
secret-file.txt
secret-items/**
```
## Building
To compile and build the project as a self-contained executable:
```bash
cd GoogleDrivePushCli
dotnet publish -c Release -r linux-x64 --self-contained true /p:PublishSingleFile=true
```
Replace `linux-x64` with the appropriate target platform (e.g. `win-x64`).