A template for new Swift iOS / macOS / tvOS / watchOS Framework project ready with travis-ci, cocoapods, Carthage, SwiftPM and a Readme file

Overview

Swift Framework Template

A template for new Swift Framework.

Platforms License

Swift Package Manager Carthage compatible CocoaPods compatible

Travis

Join the chat at https://gitter.im/RahulKatariya/SwiftFrameworkTemplate Twitter

Template

What's in the template?

  • Deployment Targets - iOS 9.0 / Mac OS X 10.10 / tvOS 9.0 / watchOS 2.0
  • Xcode 10
  • Swift 4.2
  • Dependency Managers - CocoaPods / Carthage / Swift Package Manager
  • Readme
  • SwiftFormat
  • Dangerfile / Gemfile / Jazzy
  • Github Templates (CODE_OF_CONDUCT, CONTRIBUTING, ISSUE_TEMPLATE, PULL_REQUEST_TEMPLATE)
  • TravisCI
  • MIT LICENSE
  • Testing Dependencies - Quick and Nimble

Usage

  1. Install carthage (brew install carthage on macOS).
  2. Install cookiecutter (brew install cookiecutter on macOS).

Xcode 10

  • Run cookiecutter -c xcode10 https://github.com/RahulKatariya/SwiftFrameworkTemplate

Xcode 9

  • Run cookiecutter -c xcode9 https://github.com/RahulKatariya/SwiftFrameworkTemplate

For future runs you can shorten the command to cookiecutter SwiftFrameworkTemplate. However, if you want to use the most recent template you should still run the full command above.

Additional instructions

This template attempts to provide you an easy setup of your framework repository with many third-party services, however some of them require additional steps such as register and authentication. Below you can find instructions in case this is the first time you set any of these:

CocoaPods

If this is the first time submitting to CocoaPods a framework named like yours, you need to register your e-mail to CocoaPods system in order to receive owner access to it. You can do so using the following command:

$ pod trunk register [email protected] --description='My Mac'

Make sure to replace [email protected] by a valid email since the next step is to access a verification link that CocoaPods is going to send to that address.

The register process will install a token to your machine which can be read with the following command:

$ grep -A2 'trunk.cocoapods.org' ~/.netrc
machine trunk.cocoapods.org
  login [email protected]
  password ef9bb4c41a4459ba92645a85b3c9cd88

If you're using this template, the CocoaPods deploy commands are already in your .travis.yml file, so all you need now is to make sure the Travis CI machines are able to use that token. In order to do it securely, we recommend to do it by setting an environment variable and not allowing its value to be displayed in build logs.

In your repository build settings on Travis, add an environment variable named COCOAPODS_TRUNK_TOKEN with value ef9bb4c41a4459ba92645a85b3c9cd88 - replacing this value by the password you've obtained from ~/.netrc

References:

GitHub releases

In order to have the Travis CI submitting archives to the Releases tab in your framework's GitHub page, you need to adjust .travis.yml with your personal access token.

An easy way to obtain this token is by using the travis gem. You can install it and obtain a token with the following command, which will prompt you with a few questions and automatically modify your .travis.yml file:

$ gem install travis && travis setup releases
Detected repository as <your github username>/<your repository name>, is this correct? |yes|
Username: <your github username>
Password for <your github username>: ************
File to Upload: <the file name you want to upload>
Deploy only from <your github username>/<your repository name>? |yes|
Encrypt API key? |yes|

If you're using this template, part of these questions are not necessary for you, and the changes to .travis.yml will be mostly unhelpful, however among the changes you'll find this:

          api_key:
            secure: qtPP9xa5uU4F0TJFeYjRWISv0fdPMj6xe9TXQ/CyTXJIYwLVAZ8O1aawrE7yLY0lfKXOwV7hmgMs7sS39LudoQ6ElbT6n1tKzTNaoBRc7X2GkbZiLlXSuX+plwhvMU46evkSwNIJz1g4b5CxNdUCy4Or4eXqxyhhjv4Y4kC+TxmBC5kyrDBL6oHStiIB+VEPVjPMkml0nzb6KposkSXHTEffSyDNT4+vo+bv5QFBzUYW0l42shUmr+/biHDF6eIJjW8RePEgl0ydVhcWYedEMCulfmWgVPsJu+IkZ86M0ZPIfzlhQosMboWjcWZGv559MV6L4+cGl9ZCy4ro+Mj903yUqlm8RHELsgr/T1IpsZ2CyATWdshfnTcfEv8YgZdoNfm0qJ+77HIjPPGrFlbCfQDOlTncQWMiLAps8+iM0ijUL3mR1F79OHP+nAjdnVA+Adux/FkBRy48KJE87jNk9C6vEjP25HmXWfhI3YEBexu7Ys6W+EZeg4z/10rXFIJLMFaJJbWN/LwUmmTPpX7qIU3Rv0v+zDVwl4YvpM6UewGUuC+Db/vKSHr6o+E4n1BfolJYclFhkdzFaDockG4ijMgDLw8q4DLnF0e+eIMflLkLHKiDDNGvQWqm9UDZowQdlhhY1ig1BC+2LNzd1A/9IcRYz/oV5eHxgq3wwHT4cME=

Using this template, you can revert all changes created by travis, but save the generated base64 512 bytes secure key from the previous step before doing so, and add it to your .travis.yml at the corresponding spot.

References:

Built With SwiftFrameworkTemplate

Credits

Some of the ideas and wording for the statements above were based on work by the Alamofire and ReactiveCocoa communities. We commend them for their efforts.

Contributing

Issues and pull requests are welcome!

Author

Rahul Katariya @rahulkatariya91

License

SwiftFrameworkTemplate is released under the MIT license. See LICENSE for details.

Comments
  • Add documentation for auto-deployment

    Add documentation for auto-deployment

    The meaning of “tags: true” in the Travis config and example of tags that are valid according to the regex (for non-regex experts)

    @RahulKatariya I can grab this one too but I have a question: if I push —tags then only the tag is pushed, which will run the deployment scripts but won’t update my master branch. If I push master then it won’t deploy because it’s not a tagged build... so my newbie solution was to push —tags, then push master and cancel the master build (because 2 builds are triggered, one for the tag and another for the branch). What is a more appropriate way to do this? Thanks!

    opened by gobetti 11
  • Carthage is not using the cache on Travis at each build stage

    Carthage is not using the cache on Travis at each build stage

    Hi! I noticed each build stage on Travis was rebuilding every dependency on Cartfile from scratch, leading each build stage to take around 25 minutes in my framework.

    I was outdated myself with the integration between Carthage and Travis, but then I found that it is already possible to use the cache successfully: https://github.com/travis-ci/travis-ci/issues/6348

    Notice that what's suggested there is very close to what we have in this template, the only difference being that they run the Carthage command before_install rather than before_script. I made that change and it worked great for me - ~it takes around 5 minutes now~. edit: I must say my 2 first build stages took around 5 minutes, but the 3rd one is rebuilding all dependencies again. Maybe because yesterday I cancelled after the first 2 and it is creating individual caches per stage?

    While this was a great improvement for my case, I don't know what were the reasons behind doing it on before_script, so I'm not sure if moving to before_install will be a good change. Let me know if I can open a PR!

    Thanks! :D

    enhancement help wanted 
    opened by gobetti 8
  • Naming of .xcodeproj

    Naming of .xcodeproj

    Hi, Rahul! I have a stupid simple question. I want to create own template for Xcode project. And I've tried to create project with default name and replace it by {{ cookiecutter.name }} key. How you did it?

    opened by artemnovichkov 4
  • ERROR: Stopping generation because post_gen_project hook script didn't exit successfully

    ERROR: Stopping generation because post_gen_project hook script didn't exit successfully

    Lucass-MacBook-Air:documents lucasfarah$ cookiecutter https://github.com/cookiecutter-swift/FrameworkTemplate
    name [Framework]: Test
    summary [cookiecutter bootstrap template for swift framework]: Will test cookiecutter
    bundle_identifier [me.rahulkatariya]: com.test.cookiecutter.llf
    full_name [Rahul Katariya]: Lucas Farah
    email [[email protected]]: [email protected]
    organization_name [cookiecutter-swift]: Awesome Labs
    homepage [http://rahulkatariya.me]: lucasfarah.me
    version [0.0.1]: 0.0.1
    twitter [rahulkatariya91]: 7farah7
    Initialized empty Git repository in /Users/lucasfarah/Documents/Test/.git/
    scripts/bootstrap: line 1: carthage: command not found
    ERROR: Stopping generation because post_gen_project hook script didn't exit successfully
    Hook script failed (exit status: 127)
    
    enhancement 
    opened by lfarah 4
  • Swift Package Manager fixes

    Swift Package Manager fixes

    • Moved unit tests file to an inner folder inside Tests, which is used by swift to make a "tests target"
    • Updated Package to package (new syntax) in README
    • Added targets section in README demonstrating how to link the dependency
    • Several updates to Package.swift

    Example of public repo where these changes are working: https://github.com/gobetti/RxCocoaNetworking/commit/67af2653625bd00d58c330539faab212b13a8642

    opened by gobetti 3
  • Make framework version customizable

    Make framework version customizable

    Hi! As currently is, it seems that the framework version is hardcoded to 0.0.1 in the podspec and Info.plist files, and to 3.0.0 in the README file. Is it possible to make it customizable during setup? If not, then we could perhaps at least edit it to be the same number in all files. Thanks!

    enhancement 
    opened by gobetti 3
  • Adding external framework dependency

    Adding external framework dependency

    I am curious about what is a good practice to add a Framework dependency in this Template, for example AlamoFire. For more details, I posted a question about that in SO.

    opened by spinach 2
  • Adding an Example to the project

    Adding an Example to the project

    When adding an example Project, I can't seem to get it to recognize classes the Framework provides.

    import MyFramework works, but I get no type names 'SomeType' in module MyFramework when I try to use the framework (for example, MyFramework.Something)

    I've tried to copy how Restofire is setup, but had no luck.

    My Example project has the framework added to Embedded Binaries andLinked Frameworks and Libraries` in Xcode.

    I'm wondering if somehow the .framework isn't including my source files? They're in the Compile Sources build phase - so I'm not sure where to look.

    Also, is the bridging header for Objective-C compatibility, or should I remove it if I have a 100% Swift project?

    opened by rudedogg 2
  • Bump kramdown from 2.1.0 to 2.3.0 in /{{ cookiecutter.name }}

    Bump kramdown from 2.1.0 to 2.3.0 in /{{ cookiecutter.name }}

    Bumps kramdown from 2.1.0 to 2.3.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump kramdown from 2.1.0 to 2.3.0 in /FRAMEWORKNAME

    Bump kramdown from 2.1.0 to 2.3.0 in /FRAMEWORKNAME

    Bumps kramdown from 2.1.0 to 2.3.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump addressable from 2.5.2 to 2.8.0 in /{{ cookiecutter.name }}

    Bump addressable from 2.5.2 to 2.8.0 in /{{ cookiecutter.name }}

    Bumps addressable from 2.5.2 to 2.8.0.

    Changelog

    Sourced from addressable's changelog.

    Addressable 2.8.0

    • fixes ReDoS vulnerability in Addressable::Template#match
    • no longer replaces + with spaces in queries for non-http(s) schemes
    • fixed encoding ipv6 literals
    • the :compacted flag for normalized_query now dedupes parameters
    • fix broken escape_component alias
    • dropping support for Ruby 2.0 and 2.1
    • adding Ruby 3.0 compatibility for development tasks
    • drop support for rack-mount and remove Addressable::Template#generate
    • performance improvements
    • switch CI/CD to GitHub Actions

    Addressable 2.7.0

    • added :compacted flag to normalized_query
    • heuristic_parse handles mailto: more intuitively
    • dropped explicit support for JRuby 9.0.5.0
    • compatibility w/ public_suffix 4.x
    • performance improvements

    Addressable 2.6.0

    • added tld= method to allow assignment to the public suffix
    • most heuristic_parse patterns are now case-insensitive
    • heuristic_parse handles more file:// URI variations
    • fixes bug in heuristic_parse when uri starts with digit
    • fixes bug in request_uri= with query strings
    • fixes template issues with nil and ? operator
    • frozen_string_literal pragmas added
    • minor performance improvements in regexps
    • fixes to eliminate warnings
    Commits
    • 6469a23 Updating gemspec again
    • 2433638 Merge branch 'main' of github.com:sporkmonger/addressable into main
    • e9c76b8 Merge pull request #378 from ashmaroli/flat-map
    • 56c5cf7 Update the gemspec
    • c1fed1c Require a non-vulnerable rake
    • 0d8a312 Adding note about ReDoS vulnerability
    • 89c7613 Merge branch 'template-regexp' into main
    • cf8884f Note about alias fix
    • bb03f71 Merge pull request #371 from charleystran/add_missing_encode_component_doc_entry
    • 6d1d809 Adding note about :compacted normalization
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump addressable from 2.5.2 to 2.8.0 in /FRAMEWORKNAME

    Bump addressable from 2.5.2 to 2.8.0 in /FRAMEWORKNAME

    Bumps addressable from 2.5.2 to 2.8.0.

    Changelog

    Sourced from addressable's changelog.

    Addressable 2.8.0

    • fixes ReDoS vulnerability in Addressable::Template#match
    • no longer replaces + with spaces in queries for non-http(s) schemes
    • fixed encoding ipv6 literals
    • the :compacted flag for normalized_query now dedupes parameters
    • fix broken escape_component alias
    • dropping support for Ruby 2.0 and 2.1
    • adding Ruby 3.0 compatibility for development tasks
    • drop support for rack-mount and remove Addressable::Template#generate
    • performance improvements
    • switch CI/CD to GitHub Actions

    Addressable 2.7.0

    • added :compacted flag to normalized_query
    • heuristic_parse handles mailto: more intuitively
    • dropped explicit support for JRuby 9.0.5.0
    • compatibility w/ public_suffix 4.x
    • performance improvements

    Addressable 2.6.0

    • added tld= method to allow assignment to the public suffix
    • most heuristic_parse patterns are now case-insensitive
    • heuristic_parse handles more file:// URI variations
    • fixes bug in heuristic_parse when uri starts with digit
    • fixes bug in request_uri= with query strings
    • fixes template issues with nil and ? operator
    • frozen_string_literal pragmas added
    • minor performance improvements in regexps
    • fixes to eliminate warnings
    Commits
    • 6469a23 Updating gemspec again
    • 2433638 Merge branch 'main' of github.com:sporkmonger/addressable into main
    • e9c76b8 Merge pull request #378 from ashmaroli/flat-map
    • 56c5cf7 Update the gemspec
    • c1fed1c Require a non-vulnerable rake
    • 0d8a312 Adding note about ReDoS vulnerability
    • 89c7613 Merge branch 'template-regexp' into main
    • cf8884f Note about alias fix
    • bb03f71 Merge pull request #371 from charleystran/add_missing_encode_component_doc_entry
    • 6d1d809 Adding note about :compacted normalization
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump kramdown from 2.1.0 to 2.3.1 in /{{ cookiecutter.name }}

    Bump kramdown from 2.1.0 to 2.3.1 in /{{ cookiecutter.name }}

    Bumps kramdown from 2.1.0 to 2.3.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump kramdown from 2.1.0 to 2.3.1 in /FRAMEWORKNAME

    Bump kramdown from 2.1.0 to 2.3.1 in /FRAMEWORKNAME

    Bumps kramdown from 2.1.0 to 2.3.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Owner
Rahul Katariya
Senior iOS Engineer
Rahul Katariya
Carthage cache for S3, Minio, Ceph, Google Storage, Artifactory and many others

Rome Rome is a tool that allows developers on Apple platforms to use: Amazon's S3 Minio Ceph other S3 compatible object stores or/and a local folder y

Tommaso Piazza 792 Jan 4, 2023
Gradle plugin for managing Swift by enhancing Carthage with Maven repository

Works presents Athena Preface As a mobile application engineer that develops iOS and Android applications, I found that in Android, dependencies can b

Yunarta Kartawahyudi 1 Nov 3, 2020
🚀 Create XCFrameworks with ease! A Command Line Tool to create XCFramework for multiple platforms at one shot! The better way to deal with XCFrameworks for iOS, Mac Catalyst, tvOS, macOS, and watchOS.

Surmagic ?? Create XCFramework with ease! A Command Line Tool to create XCFramework for multiple platforms at one shot! The better way to deal with XC

Muhammed Gurhan Yerlikaya 260 Dec 28, 2022
Go Flashcards for iOS and WatchOS - Official repository

Go Flashcards for iOS and WatchOS Go Flashcards for iOS and WatchOS is an application that allows users to create stacks of flashcards and review them

Roy 60 Dec 8, 2022
Pjmgmt - Pentest project management script

pjmgmt Managing pentest projects is a painful task, it often leads to files and

JxTx 0 Dec 31, 2021
JKUI - a package included in this project that provides UIComponents

JKUI JKUI is a package included in this project that provides UIComponents. Befo

Juan Vasquez 2 Feb 11, 2022
NFCMate - A NFC Companion built using Swift with CoreNFC Framework

NFCMate NFCMate NFCMate is a NFC app written in Swift for iOS devices. Moreover,

Navemics 7 Nov 21, 2022
A framework for writing terminal applications in Swift.

Ashen A framework for writing terminal applications in Swift. Based on The Elm Architecture. As a tutorial of Ashen, let's consider an application tha

Colin T.A. Gray 79 Dec 5, 2022
A package manager that installs and runs executable Swift packages

Mint ?? A package manager that installs and runs Swift command line tool packages. $ mint run realm/[email protected] This would install and run SwiftL

Yonas Kolb 2k Jan 7, 2023
Awesome-ios-app - Suitable for beginners iOS development small app

awesome-ios-app Suitable for beginners iOS development small app. Table of Conte

Ryan 1 Feb 11, 2022
Swift Modules, a swift module (or package) manager

Swift Modules The Swift Modules manager similar to the JavaScript world's npm and bower

Jan Kuča 60 Jun 3, 2021
A script to fetch packages via Github search and diff them against SPI

spi-package-importer importer is a command line utility with three subcommands: fetch package lists from Github via search and save them to JSON files

Swift Package Index 1 Jan 17, 2022
A curated list of awesome SwiftUI tutorials, libraries, videos and articles.

Awesome SwiftUI ??️ A curated list of awesome SwiftUI tutorials, libraries, sessions and articles. Contributing Found a SwiftUI library or snippet tha

Chinsyo 607 Jan 3, 2023
The Package Manager for the Swift Programming Language

Swift Package Manager Project The Swift Package Manager is a tool for managing distribution of source code, aimed at making it easy to share your code

Apple 9.1k Dec 29, 2022
Helping you find inner peace when comparing version numbers in Swift

Helping you find inner peace when comparing version numbers in Swift. Comparing with the current applications version couldn't be easier. // App.versi

Christoffer Winterkvist 207 Jun 29, 2022
iOS project template with fastlane lanes, Travis CI jobs and GitHub integrations of Codecov, HoundCI for SwiftLint and Danger

iOS project template This repository contains a template for iOS projects with a framework-oriented architecture approach, preconfigured fastlane lane

Sebastian Messingfeld 390 Nov 9, 2022
A dependency manager driven by SwiftPM that works for iOS/tvOS/watchOS/macOS projects.

Installation • Usage • Supporting Accio • Contributing • License ⚠️ Deprecation Notice ⚠️ With the release of Xcode 12 which includes Swift 5.3, we fe

Jamit Labs 647 Dec 25, 2022
The template for SwiftPM-based highly modularized (iOS) applications

basic-ios-template Getting started Fork the repo as a template. Create a local folder for your app and navigate to it mkdir <YourAppName> cd <YourAppN

capturecontext 32 Jan 1, 2023
LinkedLog is a Xcode plugin that includes a Xcode PCH header file template that adds the macros `LLog` and `LLogF` and parses their output to link from the console to the corresponding file and line.

LinkedLog Xcode Plugin LinkedLog is a Xcode plugin that includes a Xcode PCH file template that adds the macros LLog and LLogF. The LLog macro will wo

Julian F. Weinert 22 Nov 14, 2022
An Adobe .ase (Adobe Swatch Exchange File), .aco (Photoshop swatch file) reader/writer package for Swift (macOS, iOS, tvOS, macCatalyst)

ColorPaletteCodable A palette reader/editor/writer package for iOS, macOS, watchOS and tvOS, supporting the following formats Adobe Swatch Exchange (.

Darren Ford 11 Nov 29, 2022