{"id":33185525,"url":"https://github.com/yojoecapital/goop-cli","last_synced_at":"2025-11-17T10:01:39.328Z","repository":{"id":267146771,"uuid":"900381348","full_name":"yojoecapital/goop-cli","owner":"yojoecapital","description":"The Google Drive Push CLI is a simple tool for syncing files between a local directory and Google Drive.","archived":false,"fork":false,"pushed_at":"2025-08-06T04:15:38.000Z","size":160,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-06T05:24:13.508Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yojoecapital.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-08T16:26:32.000Z","updated_at":"2025-08-06T04:14:15.000Z","dependencies_parsed_at":"2024-12-08T17:31:50.122Z","dependency_job_id":"c8f6b3c3-13ef-4057-9a07-7b69046acf7f","html_url":"https://github.com/yojoecapital/goop-cli","commit_stats":null,"previous_names":["yojoecapital/goop","yojoecapital/goop-cli"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/yojoecapital/goop-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yojoecapital%2Fgoop-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yojoecapital%2Fgoop-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yojoecapital%2Fgoop-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yojoecapital%2Fgoop-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yojoecapital","download_url":"https://codeload.github.com/yojoecapital/goop-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yojoecapital%2Fgoop-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284861038,"owners_count":27075155,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-17T02:00:06.431Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-11-16T05:00:20.093Z","updated_at":"2025-11-17T10:01:39.320Z","avatar_url":"https://github.com/yojoecapital.png","language":"C#","funding_links":[],"categories":["\u003ca name=\"transfer\"\u003e\u003c/a\u003eData transfer"],"sub_categories":[],"readme":"# Google Drive Push CLI\n\nThe **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.\n\n## Setup\n\nBefore 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:\n\n1. Go to the [Google Cloud Console](https://console.cloud.google.com/).\n2. Create a new project.\n3. Enable the **Google Drive API** for your project:\n   - Navigate to **APIs \u0026 Services \u003e Library**.\n   - Search for \"Google Drive API\" and enable it.\n4. Create OAuth 2.0 credentials:\n   - Go to **APIs \u0026 Services \u003e Credentials**.\n   - Click **Create Credentials \u003e OAuth Client ID**.\n   - Choose **Desktop App** as the application type.\n   - Download the `credentials.json` file and save it to the configuration directory:\n     - **Linux**: `/home/\u003cuser\u003e/.config/goop`\n     - **Windows**: `C:\\Users\\\u003cuser\u003e\\AppData\\Roaming\\goop`\n\n## Installation\n\nTo install or update the Google Drive Push CLI, run:\n\n```bash\ncurl -L -o /tmp/goop https://github.com/yojoecapital/goop-cli/releases/latest/download/goop \u0026\u0026 chmod 755 /tmp/goop \u0026\u0026 sudo mv /tmp/goop /usr/local/bin/\n```\n\n## Usage\n\nRun the following command to see all available options and commands:\n\n```bash\ngoop --help\n```\n\n### Commands\n\n- `initialize \u003cremote-path\u003e` (or `init`): set up a new sync folder by creating a `.goop` file in the current directory\n  - use `--depth \u003cdepth\u003e` to set the maximum folder depth to sync\n  - if the `\u003cremote-path\u003e` argument is omitted,  an interactive prompt will allow users to traverse their Google Drive directories in the terminal and select the folder to sync\n\n- `push`: upload local changes to the associated Google Drive folder\n  - 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\n  - use `--ignore \u003cglob-pattern\u003e` (or `-i`) to ignore [additional glob patterns](#ignoring-glob-patterns) from being processed\n\n- `pull`: download remote changes from Google Drive to the local directory\n  - the same arguments in `push` are present in `pull`\n\n- `diff`: display the differences between the last modified times of local and remote files\n\n#### Remote item management\n\nYou can manage remote items with the `remote` command. If you omit the `\u003cpath\u003e` argument, an interactive prompt will be used instead.\n\n- `remote info \u003cpath\u003e` (or `remote information`): get information for a remote item\n- `remote list \u003cpath\u003e` (or `remote ls`): list items in a remote folder (default is `/`)\n- `remote mkdir \u003cpath\u003e`: create a new folder in an existing remote folder\n- `remote move \u003cpath\u003e` (or `remote mv`): move or reparent an item\n- `remote trash \u003cpath\u003e`: move an item to the trash\n- `remote download \u003cpath\u003e`: download a remote item\n\n### Configuration\n\nThe 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`.\n\nHere is an example of the configuration file:\n\n```json\n{\n  \"cache\": {\n    \"ttl\": 300000, // Cache TTL in milliseconds\n    \"enabled\": true \n  },\n  \"auth\": {\n    \"max_token_retries\": 3, // The max number of times to retry token refreshes\n    \"retry_delay\": 1000 // The delay in milliseconds between token refreshes\n  },\n  \"auto_ignore_list\": [ // Files to ignore during sync\n    \".goop\",\n    \".goopignore\"\n  ],\n  \"default_depth\": 3, // Default sync folder depth\n  \"max_depth\": 3, // Maximum sync folder depth\n}\n```\n\n#### Ignoring glob patterns\n\nCreate a `.goopignore` file inside a sync folder and use it specify a list of glob patterns that should be ignored.\n\n```\nsecret-file.txt\nsecret-items/**\n```\n\n## Building\n\nTo compile and build the project as a self-contained executable:\n\n```bash\ncd GoogleDrivePushCli\ndotnet publish -c Release -r linux-x64 --self-contained true /p:PublishSingleFile=true\n```\n\nReplace `linux-x64` with the appropriate target platform (e.g. `win-x64`).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyojoecapital%2Fgoop-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyojoecapital%2Fgoop-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyojoecapital%2Fgoop-cli/lists"}