{"id":13305653,"url":"https://github.com/marccarre/todo.txt-googletasks","last_synced_at":"2025-04-14T19:21:59.212Z","repository":{"id":57496561,"uuid":"155983461","full_name":"marccarre/todo.txt-googletasks","owner":"marccarre","description":"A todo.txt CLI addon to synchronise tasks with Google Tasks","archived":false,"fork":false,"pushed_at":"2018-11-13T23:19:51.000Z","size":1834,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T07:41:37.509Z","etag":null,"topics":["google-tasks","todotxt"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marccarre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-03T13:00:01.000Z","updated_at":"2023-09-07T18:55:00.000Z","dependencies_parsed_at":"2022-09-02T01:21:18.343Z","dependency_job_id":null,"html_url":"https://github.com/marccarre/todo.txt-googletasks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marccarre%2Ftodo.txt-googletasks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marccarre%2Ftodo.txt-googletasks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marccarre%2Ftodo.txt-googletasks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marccarre%2Ftodo.txt-googletasks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marccarre","download_url":"https://codeload.github.com/marccarre/todo.txt-googletasks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248943415,"owners_count":21186958,"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","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":["google-tasks","todotxt"],"created_at":"2024-07-29T17:53:56.536Z","updated_at":"2025-04-14T19:21:59.167Z","avatar_url":"https://github.com/marccarre.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CircleCI](https://circleci.com/gh/marccarre/todo.txt-googletasks/tree/master.svg?style=shield)](https://circleci.com/gh/marccarre/todo.txt-googletasks/tree/master)\n[![Go Report Card](https://goreportcard.com/badge/github.com/marccarre/todo.txt-googletasks)](https://goreportcard.com/report/github.com/marccarre/todo.txt-googletasks)\n[![Coverage Status](https://coveralls.io/repos/github/marccarre/todo.txt-googletasks/badge.svg)](https://coveralls.io/github/marccarre/todo.txt-googletasks)\n[![codecov](https://codecov.io/gh/marccarre/todo.txt-googletasks/branch/master/graph/badge.svg)](https://codecov.io/gh/marccarre/todo.txt-googletasks)\n[![Docker Repository on Quay](https://quay.io/repository/marccarre/todo.txt-googletasks/status)](https://quay.io/repository/marccarre/todo.txt-googletasks)\n\n# todo.txt-googletasks\n\n## Features\n\n- Batteries included: no need to install any 3rd party dependency since the plugin is compiled as a static Go binary, with all dependencies inside it already.\n- Caching of Google OAuth token: once authenticated you can run things in a head-less way in scripts, via `cron`, etc.\n- Supported operations:\n  - Delete all tasks in all lists.\n\n## Installation\n\n### Enable Google Tasks API\n\n- Go to [Google APIs' console](http://code.google.com/apis/console).\n- Click on \"_Create project_\" and give it whichever name you like, e.g.: `todotxt-googletasks`\n- Click on \"[_Dashboard_](https://console.developers.google.com/apis/dashboard?supportedpurview=project)\", and then \"[_Enable APIs and services_](https://console.developers.google.com/apis/library?supportedpurview=project)\":\n\n  - filter APIs by typing \"_task_\" in the search box,\n  - click on \"[_Tasks API_](https://console.developers.google.com/apis/library/tasks.googleapis.com)\",\n  - click \"_Enable_\".\n\n- After a few seconds, you should see the message \"_To use this API, you may need credentials. Click 'Create credentials' to get started._\". Click on \"[_Create credentials_](https://console.developers.google.com/apis/credentials/wizard)\":\n\n  - under \"_Which API are you using?_\", select \"_Tasks API_\",\n  - under \"_Where will you be calling the API from?_\", select \"_Other UI (e.g. Windows, CLI tool)_\",\n  - under \"_What data will you be accessing?_\", select \"_User data_\",\n  - click \"_What credentials do I need?_\". You should arrive on a page saying \"_Create an OAuth 2.0 client ID_\".\n\n- Enter `todotxt-googletasks` under \"_Name_\", click \"_Create OAuth client ID_\".\n- Select your email address, enter `todotxt-googletasks` under \"_Product name_\" , click \"_Continue_\".\n- Click \"_Download_\". This should download a JSON file with your client ID and client secret in it.\n- Place this file under your home directory (`~`), and rename it to `.todo.txt-googletasks_credentials.json`. This is where the addon will look for your credentials.\n\n## Development\n\n### Setup\n\n- Install [`docker`](https://store.docker.com/search?type=edition\u0026offering=community)\n- Install `make`\n\nThat's all folks!\nAll other tools are packaged in build Docker images (see `Dockerfile`) to ensure any machine can build easily, hence avoiding the \"[_it works on my machine_](http://www.codinghorror.com/blog/2007/03/the-works-on-my-machine-certification-program.html)\" syndrome.\n\n### Build\n\n```console\nmake\n```\n\n### Testing\n\n```console\nmake test\n```\n\nNote that the above will not run integration tests.\nTo do so, since one cannot authenticate within the container (no browser), you will need to pass the following environment variables in:\n\n- `CLIENT_ID`: your Google client ID. This can be found in the JSON file downloaded from Google.\n- `CLIENT_SECRET`: your Google client secret. This can be found in the JSON file downloaded from Google.\n- `BASE64_ENCODED_OAUTH_TOKEN`: the content of your cached OAuth token, `base64`-encoded. The location of this file is printed when running `gtasks`.\n\n```console\nexport CLIENT_ID=yourid.apps.googleusercontent.com\nexport CLIENT_SECRET=yoursecret\nexport BASE64_ENCODED_OAUTH_TOKEN=\"$(cat /path/to/your/oauth/token | base64 -w 0)\"\nmake \\\n    CLIENT_ID=$(CLIENT_ID) \\\n    CLIENT_SECRET=$(CLIENT_ID) \\\n    BASE64_ENCODED_OAUTH_TOKEN=$(BASE64_ENCODED_OAUTH_TOKEN) \\\n    test\n```\n\nN.B.: using [`direnv`](https://direnv.net/) and an `.envrc` file to automatically set and export the above environment variables may be convenient.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarccarre%2Ftodo.txt-googletasks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarccarre%2Ftodo.txt-googletasks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarccarre%2Ftodo.txt-googletasks/lists"}