{"id":24241829,"url":"https://github.com/danielsaidi/swiftpackagescripts","last_synced_at":"2025-12-12T11:53:32.129Z","repository":{"id":264993919,"uuid":"867355858","full_name":"danielsaidi/SwiftPackageScripts","owner":"danielsaidi","description":"A collection of Swift Package-related shell scripts.","archived":false,"fork":false,"pushed_at":"2025-09-11T11:20:29.000Z","size":2647,"stargazers_count":73,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-18T01:00:04.417Z","etag":null,"topics":["shell","swift","swiftpackage","swiftpackagemanager","terminal"],"latest_commit_sha":null,"homepage":"https://danielsaidi.com/opensource","language":"Shell","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/danielsaidi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["danielsaidi"]}},"created_at":"2024-10-03T22:54:40.000Z","updated_at":"2025-09-14T20:07:20.000Z","dependencies_parsed_at":"2025-01-14T14:19:23.285Z","dependency_job_id":"be476d83-eca4-4b6b-b820-0b7ee3896378","html_url":"https://github.com/danielsaidi/SwiftPackageScripts","commit_stats":null,"previous_names":["danielsaidi/swiftpackagescripts"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/danielsaidi/SwiftPackageScripts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsaidi%2FSwiftPackageScripts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsaidi%2FSwiftPackageScripts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsaidi%2FSwiftPackageScripts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsaidi%2FSwiftPackageScripts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielsaidi","download_url":"https://codeload.github.com/danielsaidi/SwiftPackageScripts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsaidi%2FSwiftPackageScripts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276164319,"owners_count":25596021,"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-09-20T02:00:10.207Z","response_time":63,"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":["shell","swift","swiftpackage","swiftpackagemanager","terminal"],"created_at":"2025-01-14T21:47:26.341Z","updated_at":"2025-12-12T11:53:32.116Z","avatar_url":"https://github.com/danielsaidi.png","language":"Shell","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"Resources/Icon.png\" alt=\"Project Icon\" width=\"250\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/danielsaidi/SwiftPackageScripts?color=%2300550\u0026sort=semver\" alt=\"Version\" title=\"Version\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/swift-6.0-orange.svg\" alt=\"Swift 6.1\" title=\"Swift 6.0\" /\u003e\n    \u003ca href=\"https://danielsaidi.github.io/SwiftPackageScripts\"\u003e\u003cimg src=\"https://img.shields.io/badge/documentation-web-blue.svg\" alt=\"Documentation\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/danielsaidi/SwiftPackageScripts/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/danielsaidi/SwiftPackageScripts\" alt=\"MIT License\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n# Swift Package Scripts\n\nSwift Package Scripts has Terminal scripts that can be used to build and test your package, build DocC and deploy it to GitHub Pages, generate XCFramework binary artifacts, create new semantic versions, etc.\n\nSwift Package Scripts also has a collection of GitHub Actions workflows that can run some scripts from the GitHub Actions dashboard.\n\n\n## Installation\n\nSwift Package Scripts can be installed to your computer by cloning the repository:\n\n```\ngit clone https://github.com/danielsaidi/SwiftPackageScripts.git\n```\n\nYou can then navigate to the folder and sync the scripts to any older folder, using the `/sync-to.sh` script.\n\n```shell\n./sync-to.sh ../AnotherPackage [--github-workflows 1]\n```\n\nThis will replace any existing scripts with the latest versions. After this, you can use `scripts/sync-from.sh` in that project folder.\n\n\n## Scripts\n\nThe `scripts` folder contains Swift Package-related scripts, that can all be customized with their own parameters:\n\n* `build.sh` - Build a target for all or some platforms.\n* `chmod-all.sh` - Runs `chmod +x` on all scripts in the script folder.\n* `docc.sh` - Build DocC documentation for all or some platforms.\n* `git-default-branch.sh` - Get the default git branch name.\n* `l10n-gen.sh` - Generate public translation key wrappers from an Xcode 26 string catalog.\n* `package-name.sh` - Get the name of the main Swift package.\n* `release.sh` - Make a release build with several validation steps.\n* `release-validate-git.sh` - Validate the git repo for release.\n* `release-validate-package.sh` - Validate the package for release.\n* `sync-from.sh` - Sync `scripts` and `.github/workflows` from a Swift Package Scripts folder.\n* `sync-to.sh` - Sync `scripts` and `.github/workflows` to another package folder.\n* `test.sh` - Test a target on all or some platforms.\n* `version-bump.sh` - Bump the current version number and create a new tag.\n* `version-number.sh` - Get the current version number from the latest tag.\n* `xcframework.sh` - Build an XCFramework for all or some platforms.\n\nAll scripts have a `--help` command, e.g. `./scripts/build.sh --help`. Note that you have to run `chmod +x \u003cSCRIPT\u003e` to be able to run a script for the first time.\n\n\n## GitHub Action Workflows\n\nThe `.github` folder contains the following GitHub Actions workflows:\n\n* `build.yml` - Build the package for all or some platforms.\n* `docc.yml` - Build DocC documentation and deploy it to GitHub Pages.\n* `test.yml` - Test the package on all or some platforms.\n* `version_bump.yml` - Bump the current version number and create a new tag.\n* `xcframework.yml` - Build an XCFramework and dSYMs for all or some platforms.\n\nHave a look at each file for workflow-specific information and if there is anything you need to do to make it work.\n\n\n## String Catalog Support\n\nSwiftPackageScripts has an `l10n-gen.sh` script that can generate public, namespaced key wrappers from any Xcode string catalog.\n\nOnce generated, these public keys can be used from any package and app, wherever a `LocalizedStringResource` is expected:\n\n```swift\nText(.l10n.myapp.onboardings.welcome.title)\n```\n\nYou can read more about this in the [localization][Localization] article.\n\n\n## Sample Package\n\nThis repository has a sample package that is used to test that everything works as expected.\n\n\n## Documentation\n\nFor more information about these scripts, and how to set up project-specific scripts, see the online [here][Documentation].\n\n\n## Support My Work\n\nYou can [become a sponsor][Sponsors] to help me dedicate more time on my various [open-source tools][OpenSource]. Every contribution, no matter the size, makes a real difference in keeping these tools free and actively developed.\n\n\n## Contact\n\nFeel free to reach out if you have questions or if you want to contribute in any way:\n\n* Website: [danielsaidi.com][Website]\n* Mastodon: [@danielsaidi@mastodon.social][Mastodon]\n* Twitter: [@danielsaidi][Twitter]\n* E-mail: [daniel.saidi@gmail.com][Email]\n\n\n## License\n\nSwift Package Scripts is available under the MIT license. See the [LICENSE][License] file for more info.\n\n\n[Email]: mailto:daniel.saidi@gmail.com\n[Website]: https://www.danielsaidi.com\n[GitHub]: https://www.github.com/danielsaidi\n[Twitter]: https://www.twitter.com/danielsaidi\n[Mastodon]: https://mastodon.social/@danielsaidi\n[Sponsors]: https://github.com/sponsors/danielsaidi\n[OpenSource]: https://www.danielsaidi.com/opensource\n\n[Documentation]: https://danielsaidi.github.io/swiftpackagescripts/\n[Localization]: https://danielsaidi.github.io/swiftpackagescripts/documentation/swiftpackagescripts/localization-article\n[License]: https://github.com/danielsaidi/SystemNotification/blob/master/LICENSE\n","funding_links":["https://github.com/sponsors/danielsaidi"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielsaidi%2Fswiftpackagescripts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielsaidi%2Fswiftpackagescripts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielsaidi%2Fswiftpackagescripts/lists"}