https://github.com/somewhatabstract/checksync
A tool for helping folks keep things in sync.
https://github.com/somewhatabstract/checksync
code-quality developer-tools development-utils development-workflow linting synchronization tool tools tools-engineering
Last synced: 4 days ago
JSON representation
A tool for helping folks keep things in sync.
- Host: GitHub
- URL: https://github.com/somewhatabstract/checksync
- Owner: somewhatabstract
- License: mit
- Created: 2019-08-22T20:37:47.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2025-06-21T15:06:56.000Z (18 days ago)
- Last Synced: 2025-06-26T16:09:16.257Z (13 days ago)
- Topics: code-quality, developer-tools, development-utils, development-workflow, linting, synchronization, tool, tools, tools-engineering
- Language: TypeScript
- Homepage:
- Size: 7.56 MB
- Stars: 18
- Watchers: 4
- Forks: 2
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# checksync
[](https://github.com/somewhatabstract/checksync/actions) [](https://codecov.io/gh/somewhatabstract/checksync) [](https://www.npmjs.com/package/checksync) [](https://www.npmjs.com/package/checksync)
## Usage
You can install `checksync` if you want, but the easiest way to use it is via `npx`.
```shell
npx checksync --help
```For detailed usage information, run `npx checksync --help`.
### Example workflow
1. Add synchronization tags to files indicating what sections to synchronize and with which files:
```javascript
// my-javascriptfile.js
// sync-start:mysyncid ./my-pythonfile.py
/**
* Some code that needs to be synchronised.
*/
// sync-end:mysyncid
``````python
# my-pythonfile.py
# sync-start:mysyncid ./my-javascriptfile.js
'''
Some code that needs to be synchronised.
'''
# sync-end:mysyncid
```Use consecutive `sync-start` tags with the same identifier to target multiple files.
```c#
// my-csharpfile.cs
// sync-start:mysyncid ./my-pythonfile.py
// sync-start:mysyncid ./my-javascriptfile.js
/**
* Some code that needs to be synchronised.
*/
// sync-end:mysyncid
```1. Run `checksync` to verify the tags are correct:
```shell
pnpm checksync
```1. Run with `--update-tags` or `-u` to automatically insert the missing checksums:
```shell
pnpm checksync -u
```1. Add a pre-commit step to run `checksync` on commiting changes so that you catch when synchronized blocks change.
You can do this using a package like husky, or pre-commit.1. Commit your tagged files!
To get more information about the various arguments that `checksync` supports as well as information about sync-tags, run `pnpm checksync --help`.
### Target file paths
All target paths are relative to your project root directory. By default, this is determined, using `ancesdir` to be the ancestor directory of the files being processed that contains `package.json`. If you want to specify a different root (for example, if you're syncing across multiple packages in a monorepo) you can specify a custom marker name using the `--root-marker` argument.
## Contributing
For details on contributing to `checksync`, checkout our [contribution guidelines](CONTRIBUTING.md).