{"id":3192,"url":"https://github.com/gabrielrobert/xavtool","last_synced_at":"2025-08-04T02:32:09.198Z","repository":{"id":64304854,"uuid":"122751098","full_name":"gabrielrobert/xavtool","owner":"gabrielrobert","description":"Xplat Automating Version Tool","archived":false,"fork":false,"pushed_at":"2018-12-19T21:38:41.000Z","size":1653,"stargazers_count":35,"open_issues_count":9,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-12-07T09:32:08.381Z","etag":null,"topics":["android","cli","ios","semver","uwp","xamarin"],"latest_commit_sha":null,"homepage":"https://gabrielrobert.github.io/xavtool/","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/gabrielrobert.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":"2018-02-24T15:11:55.000Z","updated_at":"2024-05-15T10:14:54.000Z","dependencies_parsed_at":"2023-01-15T10:15:37.890Z","dependency_job_id":null,"html_url":"https://github.com/gabrielrobert/xavtool","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/gabrielrobert/xavtool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielrobert%2Fxavtool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielrobert%2Fxavtool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielrobert%2Fxavtool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielrobert%2Fxavtool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabrielrobert","download_url":"https://codeload.github.com/gabrielrobert/xavtool/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielrobert%2Fxavtool/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268639931,"owners_count":24282678,"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","status":"online","status_checked_at":"2025-08-04T02:00:09.867Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["android","cli","ios","semver","uwp","xamarin"],"created_at":"2024-01-05T20:16:34.053Z","updated_at":"2025-08-04T02:32:08.869Z","avatar_url":"https://github.com/gabrielrobert.png","language":"Go","readme":"![Header](https://i.imgur.com/ndlN2v3.png \"Header\")\n\n# Xplat Automating Version Tool\n\n[![Build status](https://ci.appveyor.com/api/projects/status/6lfimg1j4pw9f807?svg=true)](https://ci.appveyor.com/project/grobert092/xavtool)\n[![Build Status](https://travis-ci.org/gabrielrobert/xavtool.svg?branch=master)](https://travis-ci.org/gabrielrobert/xavtool)\n\nCommand-line utility to automatically increase iOS / Android / UWP applications version written in [Go](https://golang.org/). It follows [Semantic Versioning](https://semver.org/).\n\n## Installation\n\n### Windows:\n\nUsing [Chocolatey](https://chocolatey.org/):\n\n```bash\n$ choco install xavtool -version 1.2.1\n$ xavtool --version\n```\n\nUsing [scoop](http://scoop.sh/):\n\n```bash\n$ scoop bucket add gabrielrobert-bucket https://github.com/gabrielrobert/scoop-bucket\n$ scoop install xavtool\n```\n\n### macOS:\n\nUsing [brew](https://brew.sh/):\n\n```bash\n$ brew install gabrielrobert/tap/xavtool\n$ xavtool --version\n```\n\n### Binaries\n\nDownload executables on the [release page](https://github.com/gabrielrobert/xavtool/releases/latest).\n\n### From source:\n\n```bash\n$ go build\n$ go test -v\n$ go install\n$ xavtool --version\n```\n\n## Usage\n\n```bash\n$ xavtool\n\nNAME:\n   xavtool - Command-line utility to automatically increase applications version\n\nUSAGE:\n   xavtool [global options] command [command options] [arguments...]\n\nVERSION:\n   1.2.1\n\nAUTHOR:\n   Gabriel Robert \u003cg.robert092@gmail.com\u003e\n\nCOMMANDS:\n     current, c    List current versions\n     increment, i  Increment to next version\n     set, s        Set the current project version\n     help, h       Shows a list of commands or help for one command\n\nGLOBAL OPTIONS:\n   --help, -h     show help\n   --version, -v  print the version\n```\n\n### increment\n```bash\n$ xavtool increment --help\n\nNAME:\n   xavtool increment - Increment to next version\n\nUSAGE:\n   xavtool increment [command options] [arguments...]\n\nOPTIONS:\n   --type value, -t value  major, minor, patch (default: \"minor\")\n```\n\n### set\n```bash\n$ xavtool set --help\n\nNAME:\n   xavtool set - Set the current project version\n\nUSAGE:\n   xavtool set [arguments...]\n```\n\n## Typical flow\n\n```bash\n$ xavtool current\n1.0.1 - androidApp (...\\test\\AndroidManifest.xml)\n1.0.1 - iOSApp (...\\test\\Info.plist)\n1.0.1.0 - uwpApp (...\\test\\Package.appxmanifest)\n\n$ git flow release start '1.1.0'\n\n$ xavtool i\n1.0.1: New version: 1.1.0 (...\\test\\AndroidManifest.xml)\n1.0.1: New version: 1.1.0 (...\\test\\Info.plist)\n1.0.1.0: New version: 1.1.0.0 (...\\test\\Package.appxmanifest)\n\n$ git commit -am \"Version bump to 1.1.0\"\n$ git flow release finish -p\n```\n\nIt will update these files:\n\n- `Info.plist`\n- `AndroidManifest.xml`\n- `Package.appxmanifest`\n\n## Results\n\n### Info.plist (iOS)\n\nOnly these values will be edited:\n\n1) `CFBundleShortVersionString` (new version)\n2) `CFBundleVersion` (new version)\n\nBefore:\n```plist\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003c!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"\u003e\n\u003cplist version=\"1.0\"\u003e\n    \u003cdict\u003e\n        \u003c!-- ... --\u003e\n        \u003ckey\u003eCFBundleShortVersionString\u003c/key\u003e\n        \u003cstring\u003e1.0.1\u003c/string\u003e\n        \u003ckey\u003eCFBundleVersion\u003c/key\u003e\n        \u003cstring\u003e1.0.1\u003c/string\u003e\n        \u003c!-- ... --\u003e\n    \u003c/dict\u003e\n\u003c/plist\u003e\n```\n\nAfter:\n```plist\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003c!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"\u003e\n\u003cplist version=\"1.0\"\u003e\n    \u003cdict\u003e\n        \u003c!-- ... --\u003e\n        \u003ckey\u003eCFBundleShortVersionString\u003c/key\u003e\n        \u003cstring\u003e1.1.0\u003c/string\u003e\n        \u003ckey\u003eCFBundleVersion\u003c/key\u003e\n        \u003cstring\u003e1.1.0\u003c/string\u003e\n        \u003c!-- ... --\u003e\n    \u003c/dict\u003e\n\u003c/plist\u003e\n```\n\n### AndroidManifest.xml (Android)\n\nOnly these values will be edited:\n\n1) `manifest/@android:versionName` (new version)\n2) `manifest/@android:versionCode` (integer computed this way: `(major * 1000000) + (minor * 10000) + (patch * 100)`)        \n\nBefore:\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cmanifest\n    xmlns:android=\"http://schemas.android.com/apk/res/android\" \n    package=\"com.example.xavtool\" \n    android:versionCode=\"1000100\"\n    android:versionName=\"1.0.1\"\u003e\n    \u003c!-- ... --\u003e\n\u003c/manifest\u003e\n```\n\nAfter:\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cmanifest\n    xmlns:android=\"http://schemas.android.com/apk/res/android\" \n        package=\"com.example.xavtool\" \n        android:versionCode=\"1010000\" \n        android:versionName=\"1.1.0\"\u003e\n    \u003c!-- ... --\u003e\n\u003c/manifest\u003e\n```\n\n### Package.appxmanifest (UWP)\n\nOnly these values will be edited:\n\n1) `Package/Identity/@Version` (new version with a revision number set to 0)\n\nBefore:\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cPackage\n    xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n    xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n    xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\" IgnorableNamespaces=\"uap mp\"\u003e\n    \n    \u003c!-- ... --\u003e\n    \u003cIdentity Name=\"95748d56-342b-4dae-93f5-aeda0587a1c0\" Publisher=\"CN=gabrielrobert\" Version=\"1.0.1.0\"/\u003e\n    \u003c!-- ... --\u003e\n    \n\u003c/Package\u003e\n```\n\nAfter:\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cPackage\n    xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\"\n    xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\"\n    xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\" IgnorableNamespaces=\"uap mp\"\u003e\n    \n    \u003c!-- ... --\u003e\n    \u003cIdentity Name=\"95748d56-342b-4dae-93f5-aeda0587a1c0\" Publisher=\"CN=gabrielrobert\" Version=\"1.1.0.0\"/\u003e\n    \u003c!-- ... --\u003e\n    \n\u003c/Package\u003e\n```\n\n### config.xml (Cordova)\n\nOnly these values will be edited:\n\n1) `widget/@version` (new version)\n2) `widget/@ios-CFBundleVersion` (new version)\n3) `widget/@android-versionCode` (integer computed this way: `(major * 1000000) + (minor * 10000) + (patch * 100)`)        \n\nBefore:\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cwidget \n    id=\"com.example.xavtool\" \n    android-versionCode=\"1000100\" \n    ios-CFBundleVersion=\"1.0.1\" \n    version=\"1.0.1\" \n    xmlns=\"http://www.w3.org/ns/widgets\"\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:cdv=\"http://cordova.apache.org/ns/1.0\"\u003e\n  \u003c!-- ... --\u003e\n\u003c/widget\u003e\n```\n\nAfter:\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cwidget \n    id=\"com.example.xavtool\" \n    android-versionCode=\"1010000\" \n    ios-CFBundleVersion=\"1.1.0\" \n    version=\"1.1.0\" \n    xmlns=\"http://www.w3.org/ns/widgets\"\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:cdv=\"http://cordova.apache.org/ns/1.0\"\u003e\n  \u003c!-- ... --\u003e\n\u003c/widget\u003e\n```\n\n## Support\n\nPlease [open an issue](https://github.com/gabrielrobert/xavtool/issues/new) for support.\n\n## Contributing\n\nPlease contribute using [Github Flow](https://guides.github.com/introduction/flow/). Create a branch, add commits, and [open a pull request](https://github.com/gabrielrobert/xavtool/compare).\n","funding_links":[],"categories":["Tools"],"sub_categories":["Web View"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrielrobert%2Fxavtool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabrielrobert%2Fxavtool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrielrobert%2Fxavtool/lists"}