{"id":20557021,"url":"https://github.com/sharpvik/sema","last_synced_at":"2025-04-14T13:20:33.122Z","repository":{"id":41268742,"uuid":"385362069","full_name":"sharpvik/sema","owner":"sharpvik","description":"Semantic commit tool","archived":false,"fork":false,"pushed_at":"2024-01-29T12:06:23.000Z","size":655,"stargazers_count":56,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T02:24:09.098Z","etag":null,"topics":["cli","git","semantic-commits"],"latest_commit_sha":null,"homepage":"","language":"Go","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/sharpvik.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":"2021-07-12T19:33:49.000Z","updated_at":"2025-01-05T05:46:37.000Z","dependencies_parsed_at":"2024-06-19T01:42:31.526Z","dependency_job_id":null,"html_url":"https://github.com/sharpvik/sema","commit_stats":{"total_commits":60,"total_committers":3,"mean_commits":20.0,"dds":0.06666666666666665,"last_synced_commit":"ced3636e136ba51a7dbb75dd536231d755e11c4b"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharpvik%2Fsema","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharpvik%2Fsema/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharpvik%2Fsema/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharpvik%2Fsema/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sharpvik","download_url":"https://codeload.github.com/sharpvik/sema/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248886334,"owners_count":21177645,"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":["cli","git","semantic-commits"],"created_at":"2024-11-16T03:34:20.163Z","updated_at":"2025-04-14T13:20:33.094Z","avatar_url":"https://github.com/sharpvik.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `sema` - semantic commit tool\n\nThis is a simple command line tool inspired by [this gist][gist] about semantic\ncommit messages. In short, it proposed to use labelled commit messages that\nderive their format from [Angular's commit rules][angular].\n\n[gist]: https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716\n[angular]: https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#commits\n\nThe `sema` command will help you follow these guidelines with no effort on your\npart to memorise labels or double-check things.\n\n## 🌎 Contents\n\n1. [Format](#format)\n2. [Installation](#install)\n3. [Usage](#usage)\n4. [Screenshots](#demo)\n\n## \u003ca name=\"format\"\u003e\u003c/a\u003e 🍭 Format\n\nEach commit message is supposed to be formatted in the following way:\n\n```\nTYPE(SCOPE): MESSAGE\n```\n\nWhere `SCOPE` tells you about the scope of changes, `MESSAGE` summarises those\nin a concise way, and `TYPE` is a short label from the following:\n\n- `feat`: new feature for the user\n- `fix`: bug fix for the user\n- `docs`: changes to the documentation\n- `style`: formatting with no production code change\n- `refactor`: refactoring production code\n- `test`: adding missing tests, refactoring tests\n- `perf`: performance improvements\n- `chore`: updating grunt tasks\n- `infra`: infrastructural changes\n\n## \u003ca name=\"install\"\u003e\u003c/a\u003e 🚀 Installation\n\n### Mage (Recommended)\n\nInstall [Mage](https://magefile.org/) whichever way you like, then run the\nfollowing:\n\n```bash\ngit clone git@github.com:sharpvik/sema.git\ncd sema\nmage install\n```\n\n\u003e This way is recommended because my automated publishing pipelines for Homebrew\n\u003e and AUR may break but with `mage` you can always get the latest version no\n\u003e matter what and cross-platform. The builds are fast and clean.\n\n### Homebrew\n\n```bash\nbrew install sharpvik/sema/sema\n```\n\n### AUR (for Arch-based Linux)\n\n```bash\nyay -S sema\n```\n\n### Using the `go` tool\n\nThis will not insert the latest version into the binary, so `sema --version`\nwill give you nothing, but it's simpler than the recommended `mage` install.\n\n```bash\ngo install github.com/sharpvik/sema/v3\n```\n\n\u003e Both `yay` and `go` put `sema` binary into your `$GOPATH/bin` during\n\u003e installation so make sure that your `$GOPATH/bin` is in `$PATH`!\n\n## \u003ca name=\"usage\"\u003e\u003c/a\u003e 🔭 Usage\n\n### Overview\n\n```bash\nNAME:\n   sema - Semantic commits made simple\n\nUSAGE:\n   sema [global options] command [command options] [arguments...]\n\nCOMMANDS:\n   github   Open sema GitHub repository in browser\n   help, h  Shows a list of commands or help for one command\n\nGLOBAL OPTIONS:\n   --add, -a       begin by running 'git add' (default: false)\n   --push, -p      run 'git push' on successful commit (default: false)\n   --force, -f     force push changes with 'git push -f' (default: false)\n   --long, -l      open editor to elaborate commit message (default: false)\n   --breaking, -b  mark commit as introducing breaking changes (default: false)\n   --tags, -t      push tags along with commits (default: false)\n   --help, -h      show help\n   --version, -v   print the version\n```\n\n### Flag Combos\n\n#### Add \u0026 Push\n\nThe `--push` and `--add` flags can be combined (or `-ap`), which will be\nequivalent to running the following:\n\n```bash\ngit add .\ngit commit -m \"feat(*): commit description\"\ngit push\n```\n\n#### Force Push\n\nAdding the `--force` flag to `--push` (or `-pf`) runs forceful push:\n\n```bash\ngit push -f\n```\n\n\u003e The `--force` used without `--push` will be ignored.\n\n#### Breaking Changes\n\nThe `--breaking` flag will append an exclamation point to the end of your commit\nlabel like so:\n\n```bash\nfix!(server): critical API change\n```\n\nOn top of that, using `--breaking` with the [`--long`](#long) flag (or `-bl`),\nappends `BREAKING CHANGE` suffix to the commit template file for your\nconvenience as follows:\n\n```bash\nfix!(server): critical API change\n\nBREAKING CHANGE: [elaborate on this breaking change here]\n```\n\n### \u003ca name=\"long\"\u003e\u003c/a\u003e Long Commits\n\nBy default, `git commit` opens an editor in your terminal where you can write a\ncommit message. For shorter commits, one could use `git commit -m \"*****\"`,\nwhich is the default mode of operation for `sema`.\n\nHowever, sometimes it is very beneficial to be able to elaborate your commit\nmessage instead of just posting a semantic title. For this use case, meet the\nnew `--long` execution flag: after helping you come up with a semantic commit\ntitle, it will open an editor (with your title prepended at the top) and let you\nwrite some prose or poetry (whatever helps you get promotions).\n\n## \u003ca name=\"demo\"\u003e\u003c/a\u003e 🌌 Demo\n\nhttps://github.com/sharpvik/sema/assets/23066595/37274ab5-7d50-4c43-b4ea-ab048e434674\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsharpvik%2Fsema","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsharpvik%2Fsema","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsharpvik%2Fsema/lists"}