{"id":3109,"url":"https://github.com/SvenTiigi/SwiftKit","last_synced_at":"2025-08-06T12:31:45.072Z","repository":{"id":63920753,"uuid":"183790191","full_name":"SvenTiigi/SwiftKit","owner":"SvenTiigi","description":"Start your next Open-Source Swift Framework 📦","archived":true,"fork":false,"pushed_at":"2022-10-22T23:16:25.000Z","size":3169,"stargazers_count":825,"open_issues_count":1,"forks_count":48,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-11-10T20:49:46.884Z","etag":null,"topics":["brew","cli","framework","generate","script","swift","xcode"],"latest_commit_sha":null,"homepage":"https://sventiigi.github.io/SwiftKit/","language":"Swift","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/SvenTiigi.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},"funding":{"custom":["https://www.paypal.me/SvenTiigi"]}},"created_at":"2019-04-27T15:29:24.000Z","updated_at":"2024-10-31T07:47:56.000Z","dependencies_parsed_at":"2023-01-14T14:00:53.448Z","dependency_job_id":null,"html_url":"https://github.com/SvenTiigi/SwiftKit","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SvenTiigi%2FSwiftKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SvenTiigi%2FSwiftKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SvenTiigi%2FSwiftKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SvenTiigi%2FSwiftKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SvenTiigi","download_url":"https://codeload.github.com/SvenTiigi/SwiftKit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228898281,"owners_count":17988651,"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":["brew","cli","framework","generate","script","swift","xcode"],"created_at":"2024-01-05T20:16:31.640Z","updated_at":"2024-12-09T13:30:33.509Z","avatar_url":"https://github.com/SvenTiigi.png","language":"Swift","readme":"\u003cp align=\"center\"\u003e\n   \u003cimg width=\"750\" src=\"https://raw.githubusercontent.com/SvenTiigi/SwiftKit/gh-pages/readMeAssets/SwiftKit.png\" alt=\"SwiftKit Header Logo\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n   \u003ca href=\"https://developer.apple.com/swift/\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Swift-5.1-orange.svg?style=flat\" alt=\"Swift 5.1\"\u003e\n   \u003c/a\u003e\n   \u003ca href=\"https://github.com/SvenTiigi/SwiftKit/actions?query=workflow%3ACI\"\u003e\n      \u003cimg src=\"https://github.com/SvenTiigi/SwiftKit/workflows/CI/badge.svg\" alt=\"CI Status\"\u003e\n   \u003c/a\u003e\n   \u003ca href=\"https://github.com/SvenTiigi/SwiftKit/releases\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/release/SvenTiigi/SwiftKit.svg\" alt=\"Version\"\u003e\n   \u003c/a\u003e\n   \u003ca href=\"https://sventiigi.github.io/SwiftKit\"\u003e\n      \u003cimg src=\"https://github.com/SvenTiigi/SwiftKit/blob/gh-pages/badge.svg\" alt=\"Documentation\"\u003e\n   \u003c/a\u003e\n   \u003cbr/\u003e\n   \u003ca href=\"https://github.com/yonaskolb/Mint\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Mint-compatible-brightgreen.svg\" alt=\"Mint\"\u003e\n   \u003c/a\u003e\n   \u003ca href=\"https://brew.sh\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Homebrew-compatible-brightgreen.svg\" alt=\"brew\"\u003e\n   \u003c/a\u003e\n   \u003ca href=\"https://twitter.com/SvenTiigi/\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Twitter-@SvenTiigi-blue.svg?style=flat\" alt=\"Twitter\"\u003e\n   \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr/\u003e\n\n\u003cp align=\"center\"\u003e\nSwiftKit enables you to easily generate a cross platform Swift Framework from your command line.\u003cbr/\u003e\nIt is the best way to start your next Open-Source Swift Framework 📦.\u003cbr/\u003e\nSwiftKit is inspired by \u003ca href=\"https://github.com/JohnSundell/SwiftPlate\"\u003eSwiftPlate\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr/\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"800\" src=\"https://raw.githubusercontent.com/SvenTiigi/SwiftKit/gh-pages/readMeAssets/SwiftKitTerminalDemo.gif\" alt=\"SwiftKit Terminal Demo\"\u003e\n\u003c/p\u003e\n\n## Features\n\n- [x] Generated Kit supports `iOS`, `tvOS`, `watchOS` and `macOS`\n- [x] `CocoaPods`, `Carthage` and `Swift Package Manager` compatibility\n- [x] `README.md` template\n- [x] Fastlane already integrated for `tests` and `release`\n- [x] `Jazzy` to generate documentation\n- [x] `SwiftLint` Build-Phase integrated\n- [x] `CI-Service` configuration templates included (GitHub, Travis, GitLab, Azure Pipelines)\n- [x] Automatically checks if the Kit name is already taken on `CocoaPods`\n- [x] GitHub issue templates for `Bug reports` and `Feature requests`\n\n## Installation\n\n### Mint 🌱\n\n[Mint](https://github.com/yonaskolb/Mint) is a package manager that installs and runs Swift command line tool packages.\n\n```bash\n$ mint install SvenTiigi/SwiftKit\n```\n\n### Homebrew 🍺\n\n[Homebrew](https://brew.sh/) is a free and open-source software package management system that simplifies the installation of software on Apple's macOS operating system.\n\n```bash\n$ brew tap SvenTiigi/SwiftKit\n$ brew install swiftkit\n```\n\n## Update\n\nTo update SwiftKit to the latest version simply run:\n\n```bash\n$ swiftkit update\n```\n\u003e The `update` command will only work if SwiftKit is installed either via Mint 🌱  or Homebrew 🍺\n\n## Usage 👨‍💻\n\nTo create a new Kit simply run:\n\n```bash\n$ swiftkit new MyAwesomeKit\n```\n\u003e This will create a new folder in your current directory named by the name of your Kit\n\nTo create a Kit inside the current directory simply run:\n\n```bash\n$ swiftkit new\n```\n\u003e This will infer the Kit name based on your directory name\n\nIf you wish to open the Xcode project after your Kit has been generated simply run:\n\n```bash\n$ swiftkit new MyAwesomeKit --open\n```\n\u003e Head over to the [`Arguments`](https://github.com/SvenTiigi/SwiftKit#arguments) section to learn more about the available arguments\n\nIn default SwiftKit will create a Kit that supports `iOS`, `tvOS`, `watchOS`, `macOS`. If you want to support only certain Targets simply run:\n\n```bash\n$ swiftkit new MyAwesomeKit --target iOS --target tvOS\n```\n\u003e This will create a Kit which only supports `iOS` and `tvOS`\n\n## Kit-Structure 📦\n\nThe upcoming sections will explain the structure of your generated Kit in detail.\n\n\u003cimg style=\"float: right\" align=\"right\" width=\"100\" src=\"https://raw.githubusercontent.com/SvenTiigi/SwiftKit/gh-pages/readMeAssets/xcode-logo.png\" alt=\"Xcode Logo\"\u003e\n\n### Xcode Project Structure\n\nIn the generated Xcode project you will find four important directories.\n\n| Directory | Description |\n| --- | --- |\n| [`Sources`](https://github.com/SvenTiigi/SwiftKit/tree/master/Template/Sources) | Where you place your Swift source files |\n| [`Tests`](https://github.com/SvenTiigi/SwiftKit/tree/master/Template/Tests) | Place your Unit-Tests files |\n| [`Example`](https://github.com/SvenTiigi/SwiftKit/tree/master/Template/Example) | The iOS application example for your Kit |\n| [`Configs`](https://github.com/SvenTiigi/SwiftKit/tree/master/Template/Configs) | All config files like Plist, Package.swift, Podspec, etc. |\n\n\u003cimg style=\"float: right\" align=\"right\" width=\"100\" src=\"https://raw.githubusercontent.com/SvenTiigi/SwiftKit/gh-pages/readMeAssets/swift-file-logo.png\" alt=\"Swift File Logo\"\u003e\n\n### Kit.swift\n\nIn the aforementioned `Sources` directory you will find one Swift file which is named by your Kit.\n\n```swift\n// Include Foundation\n@_exported import Foundation\n```\n\n\u003e This [file](https://github.com/SvenTiigi/SwiftKit/blob/master/Template/Sources/KITPROJECT.swift) is used to inherit the import of `Foundation` when importing your Kit.\n\n\u003ca href=\"https://fastlane.tools/\"\u003e\u003cimg style=\"float: right\" align=\"right\" width=\"100\" src=\"https://raw.githubusercontent.com/SvenTiigi/SwiftKit/gh-pages/readMeAssets/fastlane-logo.png\" alt=\"Fastlane Logo\"\u003e\u003c/a\u003e\n\n### Fastlane\n\nEvery generated Kit will come along with a predefined [`Fastfile`](https://github.com/SvenTiigi/SwiftKit/blob/master/Template/fastlane/Fastfile).\n\n##### tests-Lane\n\nThe `tests` lane will run your Unit-Tests.\n\n```bash\n$ fastlane ios tests\n```\n\n##### compatibilityTests-Lane\n\nThe `compatibilityTests` lane will verify that your Kit is `Carthage`, `CocoaPods` and `Swift Package Manager` compatible.\n\n```bash\n$ fastlane ios compatibilityTests\n```\n\n#### release-lane\n\nThe `release` lane will allow you to automatically release a new version of your Kit.\n\n```bash\n$ fastlane ios release version:1.1.0\n```\n\nThe lane verifies various aspects of your Kit.\n\n| Step | Description |\n| --- | --- |\n| 1 | Ensure your are on a clean master branch |\n| 2 | Run `compatibilityTests` lane |\n| 3 | Run `tests` lane |\n| 4 | Increment version |\n| 5 | Add and push Git tag |\n| 6 | Pushes the Podspec via `pod trunk push` |\n\n\u003e ☝️ Please ensure you have registered your machine with [`pod trunk register`](https://guides.cocoapods.org/making/getting-setup-with-trunk.html) in order to successfully push the Podspec to CocoaPods\n\n### ReadMe\n\n\u003cimg style=\"float: right;\" align=\"right\" src=\"https://raw.githubusercontent.com/SvenTiigi/SwiftKit/gh-pages/readMeAssets/TemplateReadMe.png\" width=\"30%\" alt=\"Template ReadMe\"\u003e\n\nA [`README.md`](https://github.com/SvenTiigi/SwiftKit/blob/master/Template/README.md) template file will be automatically created inside your Kit. \n\nThe README comes along with typical sections like:\n\n\u003cbr/\u003e\n\n* Project description\n* Example\n* Installation\n* Usage\n* Contributing\n* License\n\n\u003cbr/\u003e\n\nPlease feel free to update the ReadMe to your needs 👍\n\n## Environment-Configuration\n\nYou can place a JSON environment configuration file in your home directory `~/.swiftkit-env.json` to provide default values for:\n\n| Key | Description |\n| ----------- | ----------- |\n| `authorName` | The author name |\n| `authorEmail` | The author email address |\n| `organizationName` | The organization name |\n| `organizationIdentifier` | The organization identifier |\n\nSwiftKit will use those values and skip the corresponding CLI questions when running `swiftkit new`.\n\n```json\n{\n    \"authorName\": \"Sven Tiigi\",\n    \"authorEmail\": \"sven.tiigi@gmail.com\",\n    \"organizationName\": \"Sven Tiigi\",\n    \"organizationIdentifier\": \"de.tiigi\"   \n}\n```\n\u003e Path: `~/.swiftkit-env.json`\n\nThe environment config values will only be used if no argument for the corresponding value is present.\n\n## Arguments\n\nBeside using the CLI inputs SwiftKit supports arguments when launched. The following arguments are supported:\n\n| Long parameter | Short parameter | Description\n| ----------- | ----------- | -------------- |\n| `--target` | `-t` | The Target that should be included in your Kit 📱 |\n| `--destination` | `-d` | Where the generated Kit should be saved 💾 |\n| `--kit-name` | `-k` | The name of your Kit 📦 |\n| `--name` | `-n` | Your name 👨‍💻 |\n| `--email` | `-e` | Your email address 📫 |\n| `--url` | `-u` | The repository url 🌎 |\n| `--ci-service` | `-c` | The CI-Service 🛠 \u003cbr/\u003e `1 = Travis CI - macOS only` \u003cbr/\u003e `2 = Travis CI - macOS \u0026 Linux` \u003cbr/\u003e `3 = GitLab CI` \u003cbr/\u003e `4 = Azure Pipelines` \u003cbr/\u003e `5 = GitHub CI` |\n| `--organization` | `-o` | The name of your organization 🏢 |\n| `--organization-identifier` | `-i` | The organization identifier 🖋 |\n| `--repository` | `-r` | The SwiftKit template repository url 🌎 |\n| `--force` | `-f` | Generate the Kit without confirmation ✅ |\n| `--open` | `-o` | Open the Xcode project after your Kit has been generated 📂 |\n\nExample with all arguments been set.\n\n```bash\nswiftkit new \\\n\t--target iOS \\\n\t--target tvOS \\\n\t--target watchOS \\\n\t--target macOS \\\n\t--destination ~/Desktop/MyAwesomeKit \\\n\t--kit-name MyAwesomeKit \\\n\t--name SvenTiigi \\\n\t--email sven.tiigi@gmail.com \\\n\t--url https://github.com/SvenTiigi/MyAwesomeKit \\\n\t--ci-service 1 \\\n\t--organization SvenTiigi \\\n\t--organization-identifier com.tiigi \\\n\t--repository https://github.com/SvenTiigi/SwiftKit.git \\\n\t--force \\\n\t--open\n```\n\n## Featured on\n\n* [Swift Weekly](http://digest.swiftweekly.com/issues/swift-weekly-issue-157-175911)\n* [iOS Goodies](https://ios-goodies.com/post/184763118641/week-281)\n* [Mybridge - Swift Open Source for the Past Month (v.May 2019)](https://medium.mybridge.co/swift-open-source-for-the-past-month-v-may-2019-c0f6a0d61e34)\n\n## Contributing\nContributions are very welcome 🙌 🤓\n\n## Credits\nSwiftKit is inspired by [`SwiftPlate`](https://github.com/JohnSundell/SwiftPlate) from [JohnSundell](https://twitter.com/johnsundell)\n\n## License\n\n```\nSwiftKit\nCopyright (c) 2021 Sven Tiigi \u003csven.tiigi@gmail.com\u003e\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n```\n","funding_links":["https://www.paypal.me/SvenTiigi"],"categories":["Project setup","Misc","Misc [🔝](#readme)"],"sub_categories":["Other Parsing","Vim","Web View"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSvenTiigi%2FSwiftKit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSvenTiigi%2FSwiftKit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSvenTiigi%2FSwiftKit/lists"}