{"id":22972632,"url":"https://github.com/rbedia/circman","last_synced_at":"2025-08-13T13:31:22.562Z","repository":{"id":93007107,"uuid":"607284693","full_name":"rbedia/circman","owner":"rbedia","description":"CircuitPython deployment manager","archived":false,"fork":false,"pushed_at":"2024-11-04T21:56:36.000Z","size":474,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-13T11:46:01.326Z","etag":null,"topics":["circuitpython","python"],"latest_commit_sha":null,"homepage":"https://circman.readthedocs.io/en/stable/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rbedia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-02-27T17:29:35.000Z","updated_at":"2024-11-04T21:56:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"389591f4-aef8-4ee3-b731-325b198fa0ff","html_url":"https://github.com/rbedia/circman","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbedia%2Fcircman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbedia%2Fcircman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbedia%2Fcircman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rbedia%2Fcircman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rbedia","download_url":"https://codeload.github.com/rbedia/circman/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229620136,"owners_count":18099922,"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":["circuitpython","python"],"created_at":"2024-12-14T23:18:14.323Z","updated_at":"2024-12-14T23:18:14.764Z","avatar_url":"https://github.com/rbedia.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CircuitPython Manager\n\n[![PyPI](https://img.shields.io/pypi/v/circman.svg)][pypi status]\n[![Status](https://img.shields.io/pypi/status/circman.svg)][pypi status]\n[![Python Version](https://img.shields.io/pypi/pyversions/circman)][pypi status]\n[![License](https://img.shields.io/pypi/l/circman)][license]\n\n[![Read the documentation at https://circman.readthedocs.io/](https://img.shields.io/readthedocs/circman/latest.svg?label=Read%20the%20Docs)][read the docs]\n[![Tests](https://github.com/rbedia/circman/workflows/Tests/badge.svg)][tests]\n[![Codecov](https://codecov.io/gh/rbedia/circman/branch/main/graph/badge.svg)][codecov]\n\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)][pre-commit]\n[![Black](https://img.shields.io/badge/code%20style-black-000000.svg)][black]\n\n[pypi status]: https://pypi.org/project/circman/\n[read the docs]: https://circman.readthedocs.io/\n[tests]: https://github.com/rbedia/circman/actions?workflow=Tests\n[codecov]: https://app.codecov.io/gh/rbedia/circman\n[pre-commit]: https://github.com/pre-commit/pre-commit\n[black]: https://github.com/psf/black\n\nCircuitPython Manager helps with deploying projects to CircuitPython devices.\n\n## Features\n\n- Automatically detects CircuitPython device path.\n- Backs up the CircuitPython device before deploying to allow recovery.\n- Simple command to restore a backup to the CircuitPython device in case something goes wrong.\n\n## Requirements\n\n- Linux. May work elsewhere but not tested.\n\n## Installation\n\nYou can install _CircuitPython Manager_ via [pip] from [PyPI]:\n\n```console\n$ pip install circman\n```\n\n## Quick Start\n\nConnect your CircuitPython device to your computer using USB and wait for the\nmount to appear.\n\nChange to the directory of your CircuitPython project. The default is for the\nproject source code to be in **src/** relative to the project directory.\n\nThen run the deploy.\n\n```console\n$ circman deploy\n```\n\nA backup of the CircuitPython device will be created and then the project source code will be copied to the CircuitPython device.\n\nIf you need to restore the code from before the deploy use the restore command.\n\n```console\n$ circman restore\n```\n\nTo list all available backups:\n\n```console\n$ circman list\n```\n\nIf you made a change directly on the CircuitPython device you can copy it back\nto the project source directory. The default destination directory is **src/**.\nNo backup of the destination is created prior to copying so use with caution.\nIdeally the destination directory is under version control to identify changes and\nrestore if needed.\n\n```console\n$ circman sync\n```\n\n## Usage\n\nPlease see the [Command-line Reference] for details.\n\n## Contributing\n\nContributions are very welcome.\nTo learn more, see the [Contributor Guide].\n\n## License\n\nDistributed under the terms of the [MIT license][license],\n_CircuitPython Manager_ is free and open source software.\n\n## Issues\n\nIf you encounter any problems,\nplease [file an issue] along with a detailed description.\n\n## Credits\n\nDevice path detection code (`find_device()`) was copied from Adafruit's [circup] project.\n\nThis project was generated from [@rbedia]'s [Hypermodern Python Cookiecutter] template.\n\n[circup]: https://github.com/adafruit/circup\n[@rbedia]: https://github.com/rbedia\n[pypi]: https://pypi.org/\n[hypermodern python cookiecutter]: https://github.com/rbedia/cookiecutter-hypermodern-python\n[file an issue]: https://github.com/rbedia/circman/issues\n[pip]: https://pip.pypa.io/\n\n\u003c!-- github-only --\u003e\n\n[license]: https://github.com/rbedia/circman/blob/main/LICENSE\n[contributor guide]: https://github.com/rbedia/circman/blob/main/CONTRIBUTING.md\n[command-line reference]: https://circman.readthedocs.io/en/latest/usage.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbedia%2Fcircman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frbedia%2Fcircman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frbedia%2Fcircman/lists"}