{"id":17109678,"url":"https://github.com/msimerson/.release","last_synced_at":"2025-04-13T03:22:09.490Z","repository":{"id":39638668,"uuid":"497398310","full_name":"msimerson/.release","owner":"msimerson","description":"bash release scripts for JS modules","archived":false,"fork":false,"pushed_at":"2025-01-31T17:59:23.000Z","size":49,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-26T20:21:28.311Z","etag":null,"topics":["automation","bash-script","git","javascript","release-automation"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/msimerson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2022-05-28T18:25:41.000Z","updated_at":"2025-01-31T17:59:27.000Z","dependencies_parsed_at":"2024-04-23T01:44:59.335Z","dependency_job_id":"052ca3af-907d-40ad-b9e6-5287a06c3832","html_url":"https://github.com/msimerson/.release","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msimerson%2F.release","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msimerson%2F.release/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msimerson%2F.release/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msimerson%2F.release/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/msimerson","download_url":"https://codeload.github.com/msimerson/.release/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248658380,"owners_count":21140933,"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":["automation","bash-script","git","javascript","release-automation"],"created_at":"2024-10-14T16:24:01.671Z","updated_at":"2025-04-13T03:22:09.468Z","avatar_url":"https://github.com/msimerson.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# .release\n\ngit release scripts for NPM modules\n\n## DESCRIPTION\n\nBASH release scripts for NPM modules hosted on GitHub. The scripts automate away much of the tedium of cutting releases while:\n\n- leaving the author(s) in complete control\n- maintaining a very high signal to noise ratio\n\nCutting a release is split into three steps: start, submit, and finish. Each step is documented below and is independent, permitting authors to use only the steps that fit their workflow.\n\n## USAGE\n\nIn your github repo:\n\n```sh\ngit submodule add git@github.com:msimerson/.release.git\n```\n\nIn newly checked out repos where .release exists, checkout the submodule with:\n\n```sh\ngit submodule update --init --recursive\n```\n\nFor each release, run 3 commands:\n\n```sh\n.release/start.sh [ major | minor | patch | prerelease ]\n# do local coding \u0026 commit changes\n.release/submit.sh\n# submit the changes, create PR, see if CI tests pass\n.release/finish.sh\n# cleanup\n```\n\n---\n\n### Start a release\n\n```sh\n.release/start.sh [ major | minor | patch | prerelease ]\n```\n\nThis will:\n\n- create a branch named release-N.N.N\n- bump the version number in package.json\n- add a versioned entry to CHANGELOG with today's date\n- open CHANGELOG in your markdown editor (if `open` exists)\n\n---\n\n### Submit your release\n\nAfter making all your changes, editing your CHANGELOG, and committing all your changes:\n\n```sh\n.release/submit.sh\n```\n\nThis will:\n\n- when defined in package.json[scripts]\n  - run \"format\" (think: autopilot mode)\n    - example: \"format\": \"npm run prettier:fix \u0026\u0026 npm run lint:fix \u0026\u0026 git add . \u0026\u0026 git commit -m format\",\n  - when format not defined, run `npm run format:check` \u0026\u0026 `npm run lint` (check only)\n- push the changes to origin/$branch\n- if `gh` is installed:\n  - create a draft Pull Request\n  - create a draft Release\n\nThe body of the PR and the Release will be the commit messages in your repo since the most recent tag.\n\n---\n\n### Finish\n\nAfter your PR is merged, finish it:\n\n```sh\n.release/finish.sh\n```\n\nThis will:\n\n- if `gh` is installed:\n  - publish the release\n- switch to the main branch\n- pull changes from origin\n- delete the release branch\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsimerson%2F.release","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmsimerson%2F.release","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsimerson%2F.release/lists"}