{"id":13784530,"url":"https://github.com/reeseschultz/ubump","last_synced_at":"2025-05-11T19:33:19.946Z","repository":{"id":38426137,"uuid":"241747062","full_name":"reeseschultz/ubump","owner":"reeseschultz","description":"SemVer bumping for Unity projects and UPM packages.","archived":true,"fork":false,"pushed_at":"2022-06-20T20:43:11.000Z","size":537,"stargazers_count":20,"open_issues_count":13,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-19T19:45:46.687Z","etag":null,"topics":["git","release-automation","semver","unity","upm"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"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/reeseschultz.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}},"created_at":"2020-02-19T23:12:23.000Z","updated_at":"2023-08-19T14:36:19.000Z","dependencies_parsed_at":"2022-09-02T05:22:45.859Z","dependency_job_id":null,"html_url":"https://github.com/reeseschultz/ubump","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reeseschultz%2Fubump","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reeseschultz%2Fubump/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reeseschultz%2Fubump/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reeseschultz%2Fubump/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reeseschultz","download_url":"https://codeload.github.com/reeseschultz/ubump/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253621393,"owners_count":21937517,"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":["git","release-automation","semver","unity","upm"],"created_at":"2024-08-03T19:00:47.189Z","updated_at":"2025-05-11T19:33:19.559Z","avatar_url":"https://github.com/reeseschultz.png","language":"JavaScript","funding_links":[],"categories":["UPM Utilities"],"sub_categories":[],"readme":"# ubump\n\n\u003e This project has been **archived**! It is no longer maintained.\n\nSemVer bumping for Unity projects and UPM packages.\n\n## Why?\n\nYou have a Unity project, package, or monorepo of packages that you want to bump using automated release processes. `ubump` can do that for you, both as a platform-agnostic CLI and Node-based API. The interative CLI mode will even do all the committing, pushing, tagging, and changelog generation for you. `ubump` additionally remembers to sync package dependencies with those of the containing project. But you're in control: configure and use `ubump` however you like; orchestrate it in CI if you want.\n\n## Install \u0026 Run\n\n1. Get a reasonably modern version of [Git](https://git-scm.com/downloads).\n2. Get [Node.js](https://nodejs.org) \u003e= v10.0.0, which should include `npx`, [the Node package runner](https://www.npmjs.com/package/npx).\n3. Run `ubump` with `npx ubump`.\n\n*Optionally* you can run `npm i -g ubump` to permanently install `ubump` on a global basis. Otherwise `npx` will download a new copy of `ubump` each time it's run. Having `ubump` pre-installed makes startup faster, but the tradeoff is remembering to update it occasionally with `npm i -g ubump`.\n\n### Create an Alias\n\nMaybe `npx ubump` is too verbose. If you're using a Unix-like operating system or subsystem, run this one-liner to create a permanent alias called `ubump`:\n\n```sh\np=$HOME/.bashrc \u0026\u0026 touch $p \u0026\u0026 echo -e '\\nalias ubump=\"npx ubump\"' \u003e\u003e $p \u0026\u0026 source $p\n```\n\n## Windows Note\n\nOn Windows (specifically 10), `ubump` is only confirmed to fully work with PowerShell. This appears to be a [Node.js](https://nodejs.org) and/or [Inquirer.js](https://www.npmjs.com/package/inquirer) problem. Please reach out by submitting an issue if you can help improve the Windows experience.\n\n## Usage\n\nFor the `ubump` CLI to find a Unity project, either run it from the project's root directory, *or* specify the path, relative or absolute, with the `--project-path` option.\n\n### Interactive CLI\n\nRunning `ubump` without any commands will result in output similar to the following:\n\n```\n        __                                    \n       /\\ \\                                   \n __  __\\ \\ \\____  __  __    ___ ___   _____   \n/\\ \\/\\ \\\\ \\ '__`\\/\\ \\/\\ \\ /' __` __`\\/\\ '__`\\ \n\\ \\ \\_\\ \\\\ \\ \\L\\ \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\L\\ \\\n \\ \\____/ \\ \\_,__/\\ \\____/\\ \\_\\ \\_\\ \\_\\ \\ ,__/\n  \\/___/   \\/___/  \\/___/  \\/_/\\/_/\\/_/\\ \\ \\/ \n                                        \\ \\_\\ \n                                         \\/_/ \n\n\n? What is the type of change for the ReeseUnityDemos project as a whole? (Use arrow keys)\n❯ No Change \n  Patch       0.5.10 \n  Minor       0.6.0 \n  Major       1.0.0 \n  Prepatch    0.5.10-prerelease.0 \n  Preminor    0.6.0-prerelease.0 \n  Premajor    1.0.0-prerelease.0 \n(Move up and down to reveal more choices)\n```\n\nAnd that's just the tip of the iceberg. `ubump` sanity-checks your project for unstaged and staged changes. It also lets you know when you're not in the `master` branch. Not to mention, when you select a `pre` bump type, you will be further prompted for a specific prerelease identifier—the default is the existing one if it exists—otherwise it's just `prerelease`.\n\n**Vim users:** You can also use the `j` and `k` keys to move up and down.\n\n#### Options\n\nThese are options specific to the interactive CLI:\n\n**Option**|**Description**|**Default**\n:-----:|:-----:|:-----:\n`--project-tag-prefix`|The prefix of the project tag (also used in commit messages by default).|`v`\n`--package-tag-prefix`|The prefix for package tags (also used in commit messages by default).|`v`\n`--skip-commit`|Skips file I/O, staging, and committing associated with version changes (useful if you're only interested in tagging).|`false`\n`--skip-project`|Skips asking about the project if `true`.|`false`\n`--skip-packages`|Skips asking about packages if `true`.|`false`\n`--skip-project-tagging`|Skips project tagging if `true`.|`false`\n`--skip-package-tagging`|Skips package tagging if `true`.|`false`\n`--skip-project-tagging-changelog`|Skips changelog generation in project tags if `true`.|`false`\n`--skip-package-tagging-changelog`|Skips changelog generation in package tags if `true`.|`false`\n`--skip-locally-unchanged-packages`|Skips all packages but those that have changed locally.|`false`\n`--skip-internal-ref-syncing`|Skips synchronizing internal references.|`false`\n\n### Non-Interactive CLI\n\nThe best way to learn the non-interactive CLI is to pass the `--help` option to `ubump`, but you also might want to look at the commands below:\n\n#### Commands\n\n**Command**|**Positional Parameters**|**Description**\n:-----:|:-----:|:-----:\n`package-name`| `\u003cpackage-path\u003e`|Gets a package name at the provided path.\n`package-version`| `\u003cpackage-path\u003e`|Gets a package version at the provided path.\n`project-name`| |Gets a project name.\n`project-version`| |Gets a project version.\n`bump-version`|`\u003csome-version\u003e` `\u003cbump-type\u003e` `[preid]`|Bumps a version with the provided bump type—with an optional prerelease identifier.\n`bump-package`|`\u003cpackage-path\u003e` `\u003cbump-type\u003e` `[preid]`|Bumps a package's version with the provided bump type and package path—with an optional prerelease identifier.\n`bump-project`|`\u003cbump-type\u003e` `[preid]`|Bumps a project's version with the provided bump type—with an optional prerelease identifier.\n`sync-package-deps`|`\u003cpackage-path\u003e`|Synchronizes package dependencies with those of the project, including the editor version.\n`sync-internal-refs`||Synchronizes all packages internally referencing each other in the project so that the latest version is specified in their respective dependencies.\n\n### API\n\nUsing `ubump` as an API? Install it as a dependency in your Node project like so:\n\n```sh\nnpm i ubump\n```\n\nThen you can import it in a file via:\n\n```sh\nconst ubump = require('ubump')\n```\n\n#### Bump Types\n\nThe API has a helper object literal called `bumpType` with the following properties:\n\n* `patch`\n* `minor`\n* `major`\n* `prepatch`\n* `preminor`\n* `premajor`\n* `prerelease`\n\nThese are meant to be passed to some functions listed below:\n\n#### Functions\n\n**Function**|**Positional Parameters**|**Description**\n:-----:|:-----:|:-----:\n`isPre`| `\u003cbumpType\u003e`|`true` if passed bump type is 'prepatch,' 'preminor,' 'premajor,' or 'prerelease.' Case is irrelevant.\n`versionIsValid`| `\u003cversion\u003e`|`true` if passed version is loosely considered to be valid in terms of SemVer. Permits prerelease identifiers.\n`bumpVersion`| `\u003cversion\u003e \u003cbumpType\u003e [preid]`|Bumps a version with the bump type and optional prerelease identifier.\n`getPackageName`| `\u003cpjson\u003e`|Gets a package's (display) name.\n`getUnfriendlyPackageName`| `\u003cpjson\u003e`|Gets a package's (unfriendly) name, e.g. a package with a `name` property set as `com.reese.spawning` would have an unfriendly name of `spawning`.\n`getPackageVersion`| `\u003cpjson\u003e`|Gets a package's version.\n`getProjectVersion`| `\u003cpsettings\u003e`|Gets a project's version.\n`getManifest`| `\u003cprojectPath\u003e`|Gets a project's manifest (Packages/manifest.json) file as a string.\n`getProjectSettings`| `\u003cprojectPath\u003e`|Gets the project settings (ProjectSettings/ProjectSettings.asset) file as a string.\n`getProjectName`| `\u003cpsettings\u003e`|Gets a project's (product) name.\n`setProjectVersion`| `\u003cversion\u003e \u003cprojectPath\u003e`|Sets a project version.\n`getPackageSettings`| `\u003cpackagePath\u003e`|Gets the package settings (package.json) file as a string.\n`hasPackageDepsToSync`| `\u003cpackagePath\u003e \u003cprojectPath\u003e`|`true` if the passed package has dependencies to synchronize with the containing project, or if the editor version should be synchronized.\n`setPackageVersion`| `\u003cversion\u003e \u003cpackagePath\u003e`|Sets a package's version.\n`syncPackageDeps`| `\u003cpackagePath\u003e \u003cprojectPath\u003e`|Synchronizes package dependencies with those of the project, including the editor version.\n`syncInternalRefs`||Synchronizes all packages internally referencing each other in the project so that the latest version is specified in their respective dependencies.\n\n## License\n\nAll contributions to this repository are licensed under [MIT](https://github.com/reeseschultz/ubump/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freeseschultz%2Fubump","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freeseschultz%2Fubump","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freeseschultz%2Fubump/lists"}