{"id":17648363,"url":"https://github.com/nguyenvukhang/canvas-sync-cli","last_synced_at":"2025-06-18T22:34:42.071Z","repository":{"id":65217594,"uuid":"588383265","full_name":"nguyenvukhang/canvas-sync-cli","owner":"nguyenvukhang","description":"Keeps local folders up-to-date with folders on canvas","archived":false,"fork":false,"pushed_at":"2023-04-12T14:35:17.000Z","size":414,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-30T08:41:32.429Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/nguyenvukhang.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}},"created_at":"2023-01-13T01:28:55.000Z","updated_at":"2023-01-24T10:19:40.000Z","dependencies_parsed_at":"2024-10-28T04:08:07.021Z","dependency_job_id":null,"html_url":"https://github.com/nguyenvukhang/canvas-sync-cli","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nguyenvukhang/canvas-sync-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nguyenvukhang%2Fcanvas-sync-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nguyenvukhang%2Fcanvas-sync-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nguyenvukhang%2Fcanvas-sync-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nguyenvukhang%2Fcanvas-sync-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nguyenvukhang","download_url":"https://codeload.github.com/nguyenvukhang/canvas-sync-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nguyenvukhang%2Fcanvas-sync-cli/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260645832,"owners_count":23041634,"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":[],"created_at":"2024-10-23T11:18:05.027Z","updated_at":"2025-06-18T22:34:37.060Z","avatar_url":"https://github.com/nguyenvukhang.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# canvas-sync\n\nA barebones CLI tool that keeps local folders up-to-date with online\nfolders on Canvas.\n\n- [Install](#install)\n- [Configuration](#configuration)\n- [Usage](#usage)\n\n## Install\n\nInstalling `canvas-sync` currently requires an installation of\n`cargo`. To install cargo, follow these [awesome\ninstructions][cargo-install]. Once you have cargo installed, you can\nnow install `canvas-sync` with\n\n```sh\ncargo install canvas-sync\n```\n\n## Configuration\n\nDepending on your operating system, `canvas-sync` chooses a different\ndefault configuration file location. To find out this location, run\n\n```\ncanvas-sync config\n```\n\nIf it doesn't exist, then create it and fill it in with this template:\n\n```yaml\n---\naccess_token: a_very_secret_value\nbase_path: /path/to/your/base # optional\nfolders:\n  - url: https://canvas.nus.edu.sg/courses/12345/files/folder/Lecture%20Notes\n    path: MA2101/lec\n  - url: https://canvas.nus.edu.sg/courses/98765/files/folder/Tutorials\n    path: MA2104/tut\n```\n\n1. `access_token` - this is what authenticates into canvas instead of\n   a username and password. This can be found at your [canvas profile\n   settings](https://canvas.nus.edu.sg/profile/settings) and looking\n   around for the 'token' keyword. Generate a fresh one and make sure\n   to save the token string to a safe location.\n\n2. `base_path` - this is an optional parameter that will pre-pend all\n   other paths in your config. Leave this out of your config if you\n   want greater freedom in specifying each path. Otherwise, it's a\n   nice way to shorten all your other paths.\n\n3. `folders` - this is an array of `{ url, path }` objects. `url` points\n   to the folder on canvas that you want to track. `path` points to\n   the local directory on your computer that you want to be synced\n   with that folder online.\n\n### Specifying urls\n\nIn each `{ url, path }` object, is the page that each url should point to:\n\n![canvas-demo](https://user-images.githubusercontent.com/10664455/212221239-1799d6fa-504e-4b69-9908-1235b6f4b2af.jpg)\n\n`path` will then track the contents of this folder.\n\n## Usage\n\nOnce you have specified your [configuration](#configuration), there\nare a few commands that `canvas-sync` supports:\n\n```sh\ncanvas-sync        # ping canvas servers to check if token is valid\ncanvas-sync fetch  # fetch updates without downloading\ncanvas-sync pull   # fetch and download updates\ncanvas-sync config # see where your config.yml is stored.\ncanvas-sync set-token \u003ctoken\u003e  # set your token\n```\n\n[cargo-install]: https://doc.rust-lang.org/cargo/getting-started/installation.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnguyenvukhang%2Fcanvas-sync-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnguyenvukhang%2Fcanvas-sync-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnguyenvukhang%2Fcanvas-sync-cli/lists"}