{"id":18380575,"url":"https://github.com/piyueh/yasync-cli","last_synced_at":"2025-10-18T15:17:06.817Z","repository":{"id":79981977,"uuid":"273879392","full_name":"piyueh/YASync-CLI","owner":"piyueh","description":"Yet Another Syncthing CLI Tool","archived":false,"fork":false,"pushed_at":"2020-06-23T02:38:51.000Z","size":37,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-14T20:09:02.710Z","etag":null,"topics":["cli-app","cmdline","command-line-tool","syncthing","syncthing-cli"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/piyueh.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-21T10:12:57.000Z","updated_at":"2020-06-23T02:38:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"8e484f3c-607b-4526-bfec-cc4a8c494398","html_url":"https://github.com/piyueh/YASync-CLI","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/piyueh/YASync-CLI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piyueh%2FYASync-CLI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piyueh%2FYASync-CLI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piyueh%2FYASync-CLI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piyueh%2FYASync-CLI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/piyueh","download_url":"https://codeload.github.com/piyueh/YASync-CLI/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piyueh%2FYASync-CLI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272156199,"owners_count":24883193,"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-08-25T02:00:12.092Z","response_time":1107,"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":["cli-app","cmdline","command-line-tool","syncthing","syncthing-cli"],"created_at":"2024-11-06T00:43:03.879Z","updated_at":"2025-10-18T15:17:01.750Z","avatar_url":"https://github.com/piyueh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"YASync-CLI -- Yet Another Syncthing CLI Tool\n============================================\n\n***YASync-CLI*** provides a command-line tool `yasync-cli` to manipulate a\nSyncthing daemon from a terminal. It is supposed to be useful for headless\nservers.\n\nWhy another Syncthing CLI tool? Because I don't like other similar tools... And\nactually, not many of them are still well maintained. To the best of my knowledge,\n[Syncthing Tray](https://github.com/Martchus/syncthingtray) is the only one that\nis well maintained and has a complete set of features. However, Syncthing Tray\ndoes not separate its CLI tool from GUI components. Its users have to install\nall GUI components even if they only need the CLI tool. So I decided to work on\nmy own version.\n\nThis project is still a WIP. Currently, I only add a feature when I need one as\nI'm the only user. Feature requests are welcome. And feel free to test it.\n`yasync-cli` has never been tested on other machines/systems.\n\n-------------------\n## I. Installation\n\n### 1. Prerequisite\n\n`yasync-cli` is implemented with Python only. So modification and expansion is\neasy. Currently, the only third-party dependency is\n[Requests](https://github.com/psf/requests).\n\n### 2. Installation\n\nIt's recommended to install it to a local searchable path with `pip`:\n\n```\n$ git clone https://github.com/piyueh/yasync-cli\n$ cd yasync-cli\n$ pip install --user .\n```\n\nBy default, the executable, `yasync-cli`, is installed at `~/.local/bin/yasync-cli`.\nIf `~/.local/bin` is already in `PATH`, then the executable can be executed with\njust `$ yasync-cli`. Alternatively, one can choose to use the full path to run\nthe executable, i.e., `$ ~/.local/bin/yasync-cli`.\n\nAnother way to test it without installing is to execute the module with Python:\ngo into the repository root folder and, when executing the tool, replace\n`yasync-cli` with `python -m yasynccli`. But this is not recommended for\nproduction run.\n\n### 3. Removing `pip` installation\n\n```\n$ pip uninstall yasynccli\n```\n\n---------------------\n## II. Example usage\n\n### 1. Help pages\n\nSee help with\n\n```\n$ yasync-cli --help\n```\n\nor see the help of subcommands with\n\n```\n$ yasync-cli \u003csubcommand\u003e --help\n```\n\nCurrently supported subcommands include: `show`, `log`, `check`, `scan`, `get`,\nand `post`.\n\n\n### 2. Show basic info in a configuration file\n\n```\n$ yasync-cli show\n```\n\nThis will print very basic info of the configuration and the monitored folders'\ninformation from the default Syncthing config file (i.e.,\n`${HOME}/.config/syncthing/config.xml`).\n\nTo show the info of a customized configuration file:\n\n```\n$ yasync-cli --config \u003cpath to the config file\u003e show\n```\n\n### 3. Scan a file/directory to force synchronization\n\nIf a monitored folder has many subfolders and files, it may take a while for the\nSyncthing daemon to notice new changes, even with *inotify* enabled. Issusing a\nscan command to a changed directory or a changed file somehow forces the damemon\nto notice the change and synchronize the file/directory with orher devices. The\ncommand is\n\n```\n$ yasync-cli scan \u003cPATH\u003e\n```\nif using the default Syncthing configuration. `\u003cPATH\u003e` is the path to the target\ndirectory or file. If the directory or the file does not belong to any monitored\nfolder, an error is raised.\n\n### 4. GET and POST endpoints\n\n`yasync-cli` also exposes subcommands for sending GET and POST requests to a\nSyncthing server. For example, to rescan a file of a monitored folder (of which\nthe ID is `abcde-12345`) using a POST request:\n\n```\n$ yasync-cli post /db/scan folder=abcde-12345 sub=dir1/dir2/file.txt\n```\n\nThe folder ID can be obtained from the output of `$ yasunc-cli show`. And\n`dir1/dir2/file.txt`is the relative path of the target file to the monitered\nfolder.\n\nThis is just an example usage. Basically, there's no need to use `post` and `get`\nfor simple tasks like re-scanning because `yasync-cli` already has a `scan`\nsubcommand. The `get` and `post` subcommands are mainly for debugging purpose and\nfor my convenience. If anyone finds there's a `get` or `post` request being used\nvery often, it's better to wrap it as a subcommand of `yasync-cli`.\n\n----------------\n## III. Contact\n\nPi-Yueh Chuang ([pychuang@pm.me](pychuang@pm.me))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpiyueh%2Fyasync-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpiyueh%2Fyasync-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpiyueh%2Fyasync-cli/lists"}