├── .github ├── example.png └── schemes.png ├── .travis.yml ├── LICENSE ├── README.md ├── cookiecutter.json ├── hooks └── post_gen_project.sh └── {{ cookiecutter.name }} ├── .gitattributes ├── .github ├── CODEOWNERS └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .swiftlint.yml ├── Cartfile ├── Classes ├── AppDelegate.swift ├── BusinessLogic │ ├── AppConfigurator.swift │ ├── Models │ │ └── .gitkeep │ └── Services │ │ └── .gitkeep ├── Core │ └── .gitkeep └── Presentation │ └── Modules │ ├── .gitkeep │ └── ViewController.swift ├── Makefile ├── README.md ├── Rambafile ├── Resources ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json ├── LaunchScreen.storyboard └── en.lproj │ └── Localizable.strings ├── Scripts └── swiftlint_script.sh ├── bin ├── bootstrap.sh ├── common.sh ├── firebase.sh └── init.sh ├── {{ cookiecutter.name }}.xcodeproj ├── .xcodesamplecode.plist ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings └── xcshareddata │ ├── IDETemplateMacros.plist │ └── xcschemes │ ├── {{ cookiecutter.name }} AdHoc Development.xcscheme │ ├── {{ cookiecutter.name }} AdHoc Production.xcscheme │ ├── {{ cookiecutter.name }} AdHoc Staging.xcscheme │ ├── {{ cookiecutter.name }} AppStore.xcscheme │ ├── {{ cookiecutter.name }} Debug Development.xcscheme │ ├── {{ cookiecutter.name }} Debug Production.xcscheme │ └── {{ cookiecutter.name }} Debug Staging.xcscheme └── {{ cookiecutter.name }} ├── Info.plist └── Settings.bundle └── Root.plist /.github/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artemnovichkov/swift-project-template/2d6068b4b658143b06145ab4160244999d02ed0a/.github/example.png -------------------------------------------------------------------------------- /.github/schemes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artemnovichkov/swift-project-template/2d6068b4b658143b06145ab4160244999d02ed0a/.github/schemes.png -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: objective-c 2 | osx_image: xcode11 3 | before_install: 4 | - brew update 5 | - brew install cookiecutter 6 | script: 7 | - cookiecutter --no-input gh:artemnovichkov/swift-project-template firebase="NO" 8 | - cd Project 9 | - xcodebuild clean analyze -project Project.xcodeproj -scheme 'Project Debug Development' CODE_SIGNING_ALLOWED=NO 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 Artem Novichkov 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # swift-project-template 2 | [![Build Status](https://travis-ci.org/artemnovichkov/swift-project-template.svg?branch=master)](https://travis-ci.org/artemnovichkov/swift-project-template) 3 | 4 | 🍪 Cookiecutter template for Swift iOS projects. 5 | 6 | ![swift-project-template](.github/example.png) 7 | 8 | ## Features: 9 | * Xcode 11 and Swift 5.0 support 10 | * AppCode support 11 | * Custom project structure (the same in the project and on the disk) 12 | * Configurations and schemes: 13 | 14 | ![swift-project-template](.github/schemes.png) 15 | 16 | * Custom scripts for [Carthage](https://github.com/Carthage/Carthage) and [SwiftLint](https://github.com/realm/SwiftLint) 17 | * iOS Deployment Target - 12.0 18 | * Optional integrations: 19 | * [Firebase](https://firebase.google.com). Don't forget to add Google-Services.plist and related frameworks manually. 20 | * [SwiftGen](https://github.com/SwiftGen/SwiftGen) 21 | * [LicensePlist](https://github.com/mono0926/LicensePlist) 22 | * Template for Github pull requests 23 | * `Settings.bundle` with app version 24 | * Disabled automatic code signing (sorry, Apple 🤷‍♂️) 25 | * `-Xfrontend -debug-time-function-bodies` flags for [profiling compilation times](https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode) 26 | * `.gitattributes` for correct repo language detection via [linguist](https://github.com/github/linguist) 27 | 28 | ## Usage 29 | 1. Install [Cookiecutter](https://github.com/audreyr/cookiecutter): 30 | 31 | `brew install cookiecutter` 32 | 4. Run `cookiecutter gh:artemnovichkov/swift-project-template`. No need to create project folder manually, cookiecutter does it for you. 33 | 34 | For future runs you can shorten the command to `cookiecutter swift-project-template`. However, if you want to use the most recent template you should still run the full command above. Or just create an alias: 35 | ```bash 36 | alias template="cookiecutter gh:artemnovichkov/swift-project-template" 37 | ``` 38 | 39 | ## Author 40 | 41 | Artem Novichkov, novichkoff93@gmail.com 42 | 43 | ## License 44 | 45 | swift-project-template is available under the MIT license. See the LICENSE file for more info. 46 | -------------------------------------------------------------------------------- /cookiecutter.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Project", 3 | "organization_name" : "Rosberry", 4 | "bundle_identifier" : "com.{{ cookiecutter.organization_name | replace(' ', '-') | lower }}.{{ cookiecutter.name | replace(' ', '-') | lower }}", 5 | "firebase" : ["Yes", "No"], 6 | "swiftgen" : ["Yes", "No"], 7 | "licenseplist" : ["Yes", "No"] 8 | } 9 | -------------------------------------------------------------------------------- /hooks/post_gen_project.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | # Configure Swiftgen if needed 6 | {% if cookiecutter.swiftgen == "Yes" %} 7 | echo "input_dir: Resources\n 8 | output_dir: Resources 9 | strings: 10 | inputs: en.lproj/Localizable.strings 11 | outputs: 12 | - templateName: structured-swift4 13 | output: Strings.swift 14 | xcassets: 15 | inputs: 16 | - Assets.xcassets 17 | outputs: 18 | - templateName: swift4 19 | output: Assets.swift" > swiftgen.yml 20 | 21 | echo "if [ \$CONFIGURATION = \"Analyze\" ]; then 22 | if which swiftgen >/dev/null; then 23 | if [ -f Resources/Assets.swift ]; then 24 | chmod +w Resources/Assets.swift 25 | fi 26 | if [ -f Resources/Strings.swift ]; then 27 | chmod +w Resources/Strings.swift 28 | fi 29 | swiftgen 30 | if [ -f Resources/Assets.swift ]; then 31 | chmod -w Resources/Assets.swift 32 | fi 33 | if [ -f Resources/Strings.swift ]; then 34 | chmod -w Resources/Strings.swift 35 | fi 36 | else 37 | echo \"warning: Swiftgen not installed, download from https://github.com/SwiftGen/SwiftGen\" 38 | exit 1 39 | fi 40 | fi" > Scripts/swiftgen_script.sh 41 | 42 | chmod +x Scripts/swiftgen_script.sh 43 | {% endif %} 44 | 45 | # Configure LicensePlist if needed 46 | {% if cookiecutter.licenseplist == "Yes" %} 47 | echo "#!/bin/bash 48 | 49 | if [ $CONFIGURATION = \"Analyze\" ]; then 50 | if which license-plist >/dev/null; then 51 | license-plist --output-path $PRODUCT_NAME/Settings.bundle --suppress-opening-directory 52 | else 53 | echo \"warning: LicensePlist not installed, download from https://github.com/mono0926/LicensePlist\" 54 | exit 1 55 | fi 56 | fi" > Scripts/licenseplist_script.sh 57 | chmod +x Scripts/licenseplist_script.sh 58 | {% endif %} 59 | 60 | make init 61 | 62 | # Initialize Firebase if needed 63 | {% if cookiecutter.firebase == "Yes" %} 64 | chmod +x bin/firebase.sh 65 | make firebase_init 66 | carthage update --platform iOS 67 | {% endif %} 68 | 69 | # Open Xcode 70 | xed . >/dev/null 71 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/.gitattributes: -------------------------------------------------------------------------------- 1 | # excluded from language stats and suppressed in diffs 2 | .idea linguist-generated 3 | 4 | # excluded from language stats 5 | fastlane/* linguist-vendored 6 | Templates/* linguist-vendored 7 | *.yml linguist-vendored 8 | *.sh linguist-vendored 9 | Podfile linguist-vendored 10 | 11 | # excluded from language stats 12 | *.md linguist-documentation -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @antowkos @artemnovichkov @disabled @medvedzzz @ntunin @reshetove @stason314 @zhvrnkov 2 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | 3 | 4 | ## Related tasks 5 | 6 | 7 | ## Screenshots 8 | 13 | 14 | ## TODOs 15 | 16 | 17 | ## Checklist 18 | 19 | - [ ] Have merged develop branch 20 | - [ ] Develop branch is chosen as a merge branch 21 | - [ ] The appropriate pull request label is selected (Ready | WIP) 22 | - [ ] Follows code style 23 | - [ ] Has no SwiftLint warnings 24 | - [ ] Checked UI layout on iPhone X and iPads 25 | - [ ] Retain cycles were checked 26 | - [ ] Increase database scheme version if there are changes in any models 27 | - [ ] Has no force unwraps 28 | - [ ] Access control words were checked 29 | - [ ] Checked that the app correctly handles `background` and `foreground` states 30 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .AppleDouble 3 | .LSOverride 4 | 5 | # Icon must end with two \r 6 | Icon 7 | 8 | 9 | # Thumbnails 10 | ._* 11 | 12 | # Files that might appear in the root of a volume 13 | .DocumentRevisions-V100 14 | .fseventsd 15 | .Spotlight-V100 16 | .TemporaryItems 17 | .Trashes 18 | .VolumeIcon.icns 19 | 20 | # Directories potentially created on remote AFP share 21 | .AppleDB 22 | .AppleDesktop 23 | Network Trash Folder 24 | Temporary Items 25 | .apdisk 26 | 27 | # Xcode 28 | # 29 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 30 | 31 | ## Build generated 32 | build/ 33 | DerivedData/ 34 | 35 | ## Various settings 36 | *.pbxuser 37 | !default.pbxuser 38 | *.mode1v3 39 | !default.mode1v3 40 | *.mode2v3 41 | !default.mode2v3 42 | *.perspectivev3 43 | !default.perspectivev3 44 | xcuserdata/ 45 | 46 | ## Other 47 | *.moved-aside 48 | *.xcuserstate 49 | 50 | ## Obj-C/Swift specific 51 | *.hmap 52 | *.ipa 53 | 54 | # CocoaPods 55 | # 56 | # We recommend against adding the Pods directory to your .gitignore. However 57 | # you should judge for yourself, the pros and cons are mentioned at: 58 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 59 | # 60 | # Pods/ 61 | 62 | # Carthage 63 | # 64 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 65 | 66 | Carthage/Checkouts 67 | Carthage/Build 68 | 69 | # fastlane 70 | # 71 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 72 | # screenshots whenever they are needed. 73 | # For more information about the recommended setup visit: 74 | # https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md 75 | 76 | fastlane/report.xml 77 | fastlane/screenshots 78 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/.swiftlint.yml: -------------------------------------------------------------------------------- 1 | # paths to ignore during linting. Takes precedence over `included`. 2 | 3 | excluded: 4 | - Carthage/ 5 | - Pods/ 6 | 7 | # Rules 8 | 9 | opt_in_rules: 10 | - conditional_returns_on_newline 11 | - fatal_error_message 12 | - overridden_super_call 13 | - closure_end_indentation 14 | - closure_spacing 15 | - empty_string 16 | - explicit_init 17 | - first_where 18 | - joined_default_parameter 19 | - multiline_parameters 20 | - prohibited_super_call 21 | - sorted_first_last 22 | - untyped_error_in_catch 23 | - file_header 24 | 25 | force_cast: error 26 | force_try: error 27 | 28 | colon: 29 | apply_to_dictionaries: false 30 | 31 | identifier_name: 32 | excluded: 33 | - id 34 | - URL 35 | 36 | statement_position: 37 | statement_mode: uncuddled_else 38 | 39 | # Constants 40 | 41 | file_length: 42 | warning: 1000 43 | error: 1500 44 | 45 | type_body_length: 46 | warning: 800 47 | error: 1000 48 | 49 | line_length: 140 50 | 51 | function_parameter_count: 4 52 | 53 | type_name: 54 | min_length: 2 # only warning 55 | 56 | type_contents_order: 57 | order: 58 | - case 59 | - associated_type 60 | - type_alias 61 | - subtype 62 | - [type_property, instance_property] 63 | - [initializer, type_method, view_life_cycle_method, subscript, other_method, ib_action] 64 | 65 | file_header: 66 | required_pattern: | 67 | \/\/ 68 | \/\/ Copyright © \d{4}\ .*?. All rights reserved. 69 | \/\/ 70 | 71 | # Custom rules 72 | 73 | custom_rules: 74 | enum_cases_on_newline: 75 | name: "Enum cases on newline" 76 | regex: "^\\s*case[\\h\\S]*,(?![^(]*\\))[^:|,]+$" 77 | message: "Enum cases should always start with a newline." 78 | accessors_and_observers_on_newline: 79 | name: "Property accessors and observers on newline" 80 | regex: "^\\s*(get|set|didSet|willSet)[\\h\\S]\\{[\\h\\S]+$" 81 | message: "Property accessors and observers should always start with a newline." 82 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Cartfile: -------------------------------------------------------------------------------- 1 | {% if cookiecutter.firebase == "Yes" %}binary "https://building42.github.io/Specs/Carthage/iOS/Fabric.json" 2 | binary "https://building42.github.io/Specs/Carthage/iOS/Crashlytics.json" 3 | binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json" 4 | {% endif %} -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Classes/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright © {% now 'local', '%Y' %} {{ cookiecutter.organization_name }}. All rights reserved. 3 | // 4 | 5 | import UIKit 6 | 7 | typealias LaunchOptions = [UIApplication.LaunchOptionsKey: Any] 8 | 9 | @UIApplicationMain 10 | class AppDelegate: UIResponder, UIApplicationDelegate { 11 | 12 | var window: UIWindow? 13 | 14 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: LaunchOptions?) -> Bool { 15 | window = UIWindow(frame: UIScreen.main.bounds) 16 | window?.rootViewController = ViewController() 17 | window?.makeKeyAndVisible() 18 | 19 | AppConfigurator.configure() 20 | 21 | return true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Classes/BusinessLogic/AppConfigurator.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright © {% now 'local', '%Y' %} {{ cookiecutter.organization_name }}. All rights reserved. 3 | // 4 | 5 | import Foundation{% if cookiecutter.firebase == "Yes" %} 6 | import Firebase 7 | {% endif %} 8 | final class AppConfigurator { 9 | 10 | static func configure() { 11 | guard let appInfo = Bundle.main.infoDictionary, 12 | let shortVersionString = appInfo["CFBundleShortVersionString"] as? String, 13 | let bundleVersion = appInfo["CFBundleVersion"] as? String else { 14 | return 15 | } 16 | let appVersion = "\(shortVersionString) (\(bundleVersion))" 17 | UserDefaults.standard.appVersion = appVersion{% if cookiecutter.firebase == "Yes" %} 18 | FirebaseApp.configure(){% endif %} 19 | } 20 | } 21 | 22 | private extension UserDefaults { 23 | 24 | var appVersion: String? { 25 | get { 26 | return string(forKey: #function) 27 | } 28 | set { 29 | set(newValue, forKey: #function) 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Classes/BusinessLogic/Models/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artemnovichkov/swift-project-template/2d6068b4b658143b06145ab4160244999d02ed0a/{{ cookiecutter.name }}/Classes/BusinessLogic/Models/.gitkeep -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Classes/BusinessLogic/Services/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artemnovichkov/swift-project-template/2d6068b4b658143b06145ab4160244999d02ed0a/{{ cookiecutter.name }}/Classes/BusinessLogic/Services/.gitkeep -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Classes/Core/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artemnovichkov/swift-project-template/2d6068b4b658143b06145ab4160244999d02ed0a/{{ cookiecutter.name }}/Classes/Core/.gitkeep -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Classes/Presentation/Modules/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/artemnovichkov/swift-project-template/2d6068b4b658143b06145ab4160244999d02ed0a/{{ cookiecutter.name }}/Classes/Presentation/Modules/.gitkeep -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Classes/Presentation/Modules/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright © {% now 'local', '%Y' %} {{ cookiecutter.organization_name }}. All rights reserved. 3 | // 4 | 5 | import UIKit 6 | 7 | final class ViewController: UIViewController { 8 | 9 | override func viewDidLoad() { 10 | super.viewDidLoad() 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Makefile: -------------------------------------------------------------------------------- 1 | PROJECT_NAME = "{{ cookiecutter.name }}" 2 | BUNDLE_ID = "{{ cookiecutter.bundle_identifier }}" 3 | 4 | # phony targets 5 | .PHONY: all bootstrap init firebase_init 6 | 7 | # default target 8 | all: bootstrap 9 | 10 | bootstrap: 11 | bin/bootstrap.sh 12 | 13 | init: bootstrap 14 | bin/init.sh ${PROJECT_NAME} 15 | 16 | firebase_init: 17 | bin/firebase.sh ${BUNDLE_ID} -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/README.md: -------------------------------------------------------------------------------- 1 | # {{ cookiecutter.name }} 2 | 3 | ## Building 4 | 1. Run a command in a project directory: 5 | 6 | ```bash 7 | make bootstrap 8 | ``` 9 | 2. Open `{{ cookiecutter.name }}.xcodeproj` in last Xcode version. 10 | 3. Press `Cmd+R` or select `Product > Run` in menu. 11 | 12 | ## Analyzing 13 | 14 | 1. Install [Swiftlint](https://github.com/realm/swiftlint): 15 | 16 | ```bash 17 | brew install swiftlint 18 | ``` 19 | 20 | 2. Press `⌘+Shift+B` or select `Product > Analyze` in menu. 21 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Rambafile: -------------------------------------------------------------------------------- 1 | ### Headers settings 2 | company: {{ cookiecutter.organization_name }} 3 | 4 | ### Xcode project settings 5 | project_name: {{ cookiecutter.name }} 6 | xcodeproj_path: {{ cookiecutter.name }}.xcodeproj 7 | 8 | ### Code generation settings section 9 | # The main project target name 10 | project_target: {{ cookiecutter.name }} 11 | 12 | # The file path for new modules 13 | project_file_path: Classes/ 14 | 15 | # The xcodeproj group path to new modules 16 | project_group_path: Classes/ 17 | 18 | ### Dependencies settings section 19 | 20 | cartfile_path: Cartfile 21 | 22 | ### Templates 23 | catalogs: 24 | - 'https://github.com/rosberry/rosberry-generamba-templates' 25 | templates: 26 | # - {name: rsb_swift_service} 27 | 28 | 29 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Resources/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Resources/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright © {% now 'local', '%Y' %} {{ cookiecutter.organization_name }}. All rights reserved. 3 | // 4 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/Scripts/swiftlint_script.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $CONFIGURATION = "Analyze" ]; then 4 | if which swiftlint >/dev/null; then 5 | swiftlint 6 | else 7 | echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint" 8 | exit 1 9 | fi 10 | fi 11 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/bin/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | DIR=`dirname $0` 4 | . $DIR/common.sh 5 | 6 | echo "Check requirements" 7 | 8 | install_brew_dependencies_if_needed git-flow carthage swiftlint swiftgen license-plist artemnovichkov/projects/fastfood 9 | install_gem_dependencies_if_needed generamba 10 | 11 | carthage bootstrap --platform iOS -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/bin/common.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | install_brew_dependency_if_needed () { 4 | name="$(basename $1)" 5 | if command -v $1 >/dev/null; then 6 | echo "✅ $1 is installed" 7 | else 8 | echo "⚙️ Installing $1" 9 | brew install $1 10 | fi 11 | } 12 | 13 | install_brew_dependencies_if_needed () { 14 | dependencies=("$@") 15 | for dependency in "${dependencies[@]}"; 16 | do 17 | install_brew_dependency_if_needed $dependency 18 | done 19 | } 20 | 21 | install_gem_dependency_if_needed () { 22 | name="$(basename $1)" 23 | if command -v $1 >/dev/null; then 24 | echo "✅ $1 is installed" 25 | else 26 | echo "⚙️ Installing $1" 27 | gem install $1 28 | fi 29 | } 30 | 31 | install_gem_dependencies_if_needed () { 32 | dependencies=("$@") 33 | for dependency in "${dependencies[@]}"; 34 | do 35 | install_gem_dependency_if_needed $dependency 36 | done 37 | } 38 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/bin/firebase.sh: -------------------------------------------------------------------------------- 1 | if ! command -v firebase >/dev/null; then 2 | curl -sL firebase.tools | bash 3 | firebase login 4 | fi 5 | 6 | echo "Please specify a unique project id (warning: cannot be modified afterward) [6-30 characters, lowercase]:" 7 | read project_id 8 | firebase projects:create $project_id 9 | echo "Waiting before creation iOS app in Firebase project 😴" 10 | sleep 5 11 | firebase apps:create iOS --bundle-id $1 --project $project_id 12 | firebase apps:sdkconfig iOS -o Resources/GoogleService-Info.plist --project $project_id 13 | echo "Firebase project was successfully created 🎉 Don't forget to add GoogleService-Info.plist and related frameworks to Xcode project" -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/bin/init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | uncomment_env_flag() { 4 | sed -i '' "/$1/s/^# //g" fastlane/.env 5 | } 6 | 7 | uncomment_env_flags() { 8 | flags=("$@") 9 | for flag in "${flags[@]}"; 10 | do 11 | uncomment_env_flag $flag 12 | done 13 | } 14 | 15 | swiftgen >/dev/null 16 | 17 | # Download fastlane and update .env 18 | fastfood update 19 | sed -i '' "s|project_name|$1|g" fastlane/.env 20 | uncomment_env_flags GYM_SCHEME GYM_PROJECT CONFIGURATION_ADHOC CONFIGURATION_APPSTORE 21 | 22 | # Initialize git 23 | git init >/dev/null 24 | git add -A . >/dev/null 25 | git commit -m "Initial Commit" >/dev/null 26 | git flow init -d >/dev/null 27 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/.xcodesamplecode.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 060F086D1E4D6C9200D9166F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 060F085B1E4D6C9200D9166F /* AppDelegate.swift */; }; 11 | 060F08711E4D6C9200D9166F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 060F08651E4D6C9200D9166F /* Assets.xcassets */; }; 12 | 060F08731E4D6C9200D9166F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 060F08691E4D6C9200D9166F /* LaunchScreen.storyboard */; }; 13 | 063834571F6F62AC0057A831 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 063834561F6F62AC0057A831 /* ViewController.swift */; }; 14 | 066238161F879B4D00AA6B14 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 066238181F879B4D00AA6B14 /* Localizable.strings */; };{% if cookiecutter.swiftgen == "Yes" %} 15 | 0679BEDF205A4DEC0058E8F3 /* Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0679BEDE205A4DEC0058E8F3 /* Strings.swift */; }; 16 | C3D08F4F2101B9B600FDC15E /* Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3D08F4D2101B9B500FDC15E /* Assets.swift */; };{% endif %} 17 | 06DAD03A1F4E95B700FD62BD /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 06DAD0391F4E95B700FD62BD /* Settings.bundle */; }; 18 | 06E0EBD11FAC0BB4002715AE /* AppConfigurator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06E0EBD01FAC0BB4002715AE /* AppConfigurator.swift */; };{% if cookiecutter.firebase == "Yes" %} 19 | 06A255DA2020B0BC00C33704 /* Fabric.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06A255D82020B0BC00C33704 /* Fabric.framework */; }; 20 | 06A255DB2020B0BC00C33704 /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06A255D92020B0BC00C33704 /* Crashlytics.framework */; };{% endif %} 21 | /* End PBXBuildFile section */ 22 | 23 | /* Begin PBXFileReference section */ 24 | 060F08441E4D6B3900D9166F /* {{ cookiecutter.name }}.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = {{ cookiecutter.name }}.app; sourceTree = BUILT_PRODUCTS_DIR; }; 25 | 060F085B1E4D6C9200D9166F /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 26 | 060F08691E4D6C9200D9166F /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; 27 | 060F087C1E4D702C00D9166F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 28 | 063834561F6F62AC0057A831 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 29 | 066238171F879B4D00AA6B14 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; };{% if cookiecutter.swiftgen == "Yes" %} 30 | 0679BEDE205A4DEC0058E8F3 /* Strings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Strings.swift; sourceTree = ""; }; 31 | C3D08F4D2101B9B500FDC15E /* Assets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Assets.swift; sourceTree = ""; };{% endif %}{% if cookiecutter.firebase == "Yes" %} 32 | 06A255D82020B0BC00C33704 /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = Carthage/Build/iOS/Fabric.framework; sourceTree = ""; }; 33 | 06A255D92020B0BC00C33704 /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = Carthage/Build/iOS/Crashlytics.framework; sourceTree = ""; };{% endif %} 34 | 06DAD0391F4E95B700FD62BD /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 35 | 06E0EBD01FAC0BB4002715AE /* AppConfigurator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppConfigurator.swift; sourceTree = ""; }; 36 | 06E0EBD21FAC0D4B002715AE /* Cartfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Cartfile; sourceTree = SOURCE_ROOT; }; 37 | 06E0EBD41FAC0D97002715AE /* .swiftlint.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .swiftlint.yml; sourceTree = SOURCE_ROOT; }; 38 | 060F08651E4D6C9200D9166F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 39 | 06997E8B23FF7D0000F37EA1 /* swiftgen.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = swiftgen.yml; sourceTree = SOURCE_ROOT; }; 40 | /* End PBXFileReference section */ 41 | 42 | /* Begin PBXFrameworksBuildPhase section */ 43 | 060F08411E4D6B3900D9166F /* Frameworks */ = { 44 | isa = PBXFrameworksBuildPhase; 45 | buildActionMask = 2147483647; 46 | files = ({% if cookiecutter.firebase == "Yes" %} 47 | 06A255DA2020B0BC00C33704 /* Fabric.framework in Frameworks */, 48 | 06A255DB2020B0BC00C33704 /* Crashlytics.framework in Frameworks */,{% endif %} 49 | ); 50 | runOnlyForDeploymentPostprocessing = 0; 51 | }; 52 | /* End PBXFrameworksBuildPhase section */ 53 | 54 | /* Begin PBXGroup section */ 55 | 060F083B1E4D6B3900D9166F = { 56 | isa = PBXGroup; 57 | children = ( 58 | 060F08591E4D6C9200D9166F /* Classes */, 59 | 060F08641E4D6C9200D9166F /* Resources */, 60 | 060F087B1E4D702C00D9166F /* {{ cookiecutter.name }} */,{% if cookiecutter.firebase == "Yes" %} 61 | 06A610D91FAC373B009A918A /* Frameworks */,{% endif %} 62 | 060F08451E4D6B3900D9166F /* Products */, 63 | ); 64 | sourceTree = ""; 65 | }; 66 | 060F08451E4D6B3900D9166F /* Products */ = { 67 | isa = PBXGroup; 68 | children = ( 69 | 060F08441E4D6B3900D9166F /* {{ cookiecutter.name }}.app */, 70 | ); 71 | name = Products; 72 | sourceTree = ""; 73 | }; 74 | 060F08591E4D6C9200D9166F /* Classes */ = { 75 | isa = PBXGroup; 76 | children = ( 77 | 060F085B1E4D6C9200D9166F /* AppDelegate.swift */, 78 | 060F085C1E4D6C9200D9166F /* BusinessLogic */, 79 | 060F089C1E4D79C000D9166F /* Core */, 80 | 060F08611E4D6C9200D9166F /* Presentation */, 81 | ); 82 | path = Classes; 83 | sourceTree = ""; 84 | }; 85 | 060F085C1E4D6C9200D9166F /* BusinessLogic */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | 06E0EBD01FAC0BB4002715AE /* AppConfigurator.swift */, 89 | 060F08761E4D6CDF00D9166F /* Models */, 90 | 060F085F1E4D6C9200D9166F /* Services */, 91 | ); 92 | path = BusinessLogic; 93 | sourceTree = ""; 94 | }; 95 | 060F085F1E4D6C9200D9166F /* Services */ = { 96 | isa = PBXGroup; 97 | children = ( 98 | ); 99 | path = Services; 100 | sourceTree = ""; 101 | }; 102 | 060F08611E4D6C9200D9166F /* Presentation */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 060F08621E4D6C9200D9166F /* Modules */, 106 | ); 107 | path = Presentation; 108 | sourceTree = ""; 109 | }; 110 | 060F08621E4D6C9200D9166F /* Modules */ = { 111 | isa = PBXGroup; 112 | children = ( 113 | 063834561F6F62AC0057A831 /* ViewController.swift */, 114 | ); 115 | path = Modules; 116 | sourceTree = ""; 117 | }; 118 | 060F08641E4D6C9200D9166F /* Resources */ = { 119 | isa = PBXGroup; 120 | children = ( 121 | 060F08691E4D6C9200D9166F /* LaunchScreen.storyboard */, 122 | 060F08651E4D6C9200D9166F /* Assets.xcassets */, 123 | 066238181F879B4D00AA6B14 /* Localizable.strings */,{% if cookiecutter.swiftgen == "Yes" %} 124 | 0679BEDE205A4DEC0058E8F3 /* Strings.swift */, 125 | C3D08F4D2101B9B500FDC15E /* Assets.swift */,{% endif %} 126 | ); 127 | path = Resources; 128 | sourceTree = ""; 129 | }; 130 | 060F08761E4D6CDF00D9166F /* Models */ = { 131 | isa = PBXGroup; 132 | children = ( 133 | ); 134 | path = Models; 135 | sourceTree = ""; 136 | }; 137 | 060F087B1E4D702C00D9166F /* {{ cookiecutter.name }} */ = { 138 | isa = PBXGroup; 139 | children = ( 140 | 06E0EBD21FAC0D4B002715AE /* Cartfile */, 141 | 06E0EBD41FAC0D97002715AE /* .swiftlint.yml */, 142 | 06997E8B23FF7D0000F37EA1 /* swiftgen.yml */, 143 | 060F087C1E4D702C00D9166F /* Info.plist */, 144 | 06DAD0391F4E95B700FD62BD /* Settings.bundle */, 145 | ); 146 | path = "{{ cookiecutter.name }}"; 147 | sourceTree = ""; 148 | }; 149 | 060F089C1E4D79C000D9166F /* Core */ = { 150 | isa = PBXGroup; 151 | children = ( 152 | ); 153 | path = Core; 154 | sourceTree = ""; 155 | };{% if cookiecutter.firebase == "Yes" %} 156 | 06A610D91FAC373B009A918A /* Frameworks */ = { 157 | isa = PBXGroup; 158 | children = ( 159 | 06A255D92020B0BC00C33704 /* Crashlytics.framework */, 160 | 06A255D82020B0BC00C33704 /* Fabric.framework */, 161 | ); 162 | name = Frameworks; 163 | sourceTree = ""; 164 | };{% endif %} 165 | /* End PBXGroup section */ 166 | 167 | /* Begin PBXNativeTarget section */ 168 | 060F08431E4D6B3900D9166F /* {{ cookiecutter.name }} */ = { 169 | isa = PBXNativeTarget; 170 | buildConfigurationList = 060F08561E4D6B3900D9166F /* Build configuration list for PBXNativeTarget "{{ cookiecutter.name }}" */; 171 | buildPhases = ({% if cookiecutter.swiftgen == "Yes" %} 172 | 061C7AE8213859B800D16625 /* Swiftgen */,{% endif %} 173 | 060F08401E4D6B3900D9166F /* Sources */, 174 | 060F08411E4D6B3900D9166F /* Frameworks */, 175 | 060F08421E4D6B3900D9166F /* Resources */, 176 | 060F08791E4D6CF100D9166F /* SwiftLint */, 177 | 060F087A1E4D6D2100D9166F /* Carthage */,{% if cookiecutter.firebase == "Yes" %} 178 | 06A610D31FAC2694009A918A /* Fabric */,{% endif %}{% if cookiecutter.licenseplist == "Yes" %} 179 | 06433404210076020075667E /* LicensePlist */,{% endif %} 180 | ); 181 | buildRules = ( 182 | ); 183 | dependencies = ( 184 | ); 185 | name = "{{ cookiecutter.name }}"; 186 | productName = {{ cookiecutter.name }}; 187 | productReference = 060F08441E4D6B3900D9166F /* {{ cookiecutter.name }}.app */; 188 | productType = "com.apple.product-type.application"; 189 | }; 190 | /* End PBXNativeTarget section */ 191 | 192 | /* Begin PBXProject section */ 193 | 060F083C1E4D6B3900D9166F /* Project object */ = { 194 | isa = PBXProject; 195 | attributes = { 196 | LastSwiftUpdateCheck = 0820; 197 | LastUpgradeCheck = 1000; 198 | ORGANIZATIONNAME = "{{ cookiecutter.organization_name }}"; 199 | TargetAttributes = { 200 | 060F08431E4D6B3900D9166F = { 201 | CreatedOnToolsVersion = 8.2.1; 202 | LastSwiftMigration = 1020; 203 | ProvisioningStyle = Manual; 204 | }; 205 | }; 206 | }; 207 | buildConfigurationList = 060F083F1E4D6B3900D9166F /* Build configuration list for PBXProject "{{ cookiecutter.name }}" */; 208 | compatibilityVersion = "Xcode 3.2"; 209 | developmentRegion = en; 210 | hasScannedForEncodings = 0; 211 | knownRegions = ( 212 | en, 213 | Base, 214 | ); 215 | mainGroup = 060F083B1E4D6B3900D9166F; 216 | productRefGroup = 060F08451E4D6B3900D9166F /* Products */; 217 | projectDirPath = ""; 218 | projectRoot = ""; 219 | targets = ( 220 | 060F08431E4D6B3900D9166F /* {{ cookiecutter.name }} */, 221 | ); 222 | }; 223 | /* End PBXProject section */ 224 | 225 | /* Begin PBXResourcesBuildPhase section */ 226 | 060F08421E4D6B3900D9166F /* Resources */ = { 227 | isa = PBXResourcesBuildPhase; 228 | buildActionMask = 2147483647; 229 | files = ( 230 | 060F08731E4D6C9200D9166F /* LaunchScreen.storyboard in Resources */, 231 | 066238161F879B4D00AA6B14 /* Localizable.strings in Resources */, 232 | 060F08711E4D6C9200D9166F /* Assets.xcassets in Resources */, 233 | 06DAD03A1F4E95B700FD62BD /* Settings.bundle in Resources */, 234 | ); 235 | runOnlyForDeploymentPostprocessing = 0; 236 | }; 237 | /* End PBXResourcesBuildPhase section */ 238 | 239 | /* Begin PBXShellScriptBuildPhase section */ 240 | 060F08791E4D6CF100D9166F /* SwiftLint */ = { 241 | isa = PBXShellScriptBuildPhase; 242 | buildActionMask = 2147483647; 243 | files = ( 244 | ); 245 | inputPaths = ( 246 | ); 247 | name = SwiftLint; 248 | outputPaths = ( 249 | ); 250 | runOnlyForDeploymentPostprocessing = 0; 251 | shellPath = /bin/sh; 252 | shellScript = ./Scripts/swiftlint_script.sh; 253 | showEnvVarsInLog = 0; 254 | }; 255 | 060F087A1E4D6D2100D9166F /* Carthage */ = { 256 | isa = PBXShellScriptBuildPhase; 257 | buildActionMask = 2147483647; 258 | files = ( 259 | ); 260 | inputPaths = ( 261 | ); 262 | name = Carthage; 263 | outputPaths = ( 264 | ); 265 | runOnlyForDeploymentPostprocessing = 0; 266 | shellPath = /bin/sh; 267 | shellScript = "/usr/local/bin/carthage copy-frameworks"; 268 | showEnvVarsInLog = 0; 269 | };{% if cookiecutter.firebase == "Yes" %} 270 | 06A610D31FAC2694009A918A /* Fabric */ = { 271 | isa = PBXShellScriptBuildPhase; 272 | buildActionMask = 2147483647; 273 | files = ( 274 | ); 275 | inputPaths = ( 276 | "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", 277 | ); 278 | name = Fabric; 279 | outputPaths = ( 280 | ); 281 | runOnlyForDeploymentPostprocessing = 1; 282 | shellPath = /bin/sh; 283 | shellScript = "./Carthage/Build/iOS/Fabric.framework/run"; 284 | showEnvVarsInLog = 0; 285 | };{% endif %}{% if cookiecutter.licenseplist == "Yes" %} 286 | 06433404210076020075667E /* LicensePlist */ = { 287 | isa = PBXShellScriptBuildPhase; 288 | buildActionMask = 2147483647; 289 | files = ( 290 | ); 291 | inputPaths = ( 292 | ); 293 | name = LicensePlist; 294 | outputPaths = ( 295 | ); 296 | runOnlyForDeploymentPostprocessing = 0; 297 | shellPath = /bin/sh; 298 | shellScript = ./Scripts/licenseplist_script.sh; 299 | showEnvVarsInLog = 0; 300 | };{% endif %}{% if cookiecutter.swiftgen == "Yes" %} 301 | 061C7AE8213859B800D16625 /* Swiftgen */ = { 302 | isa = PBXShellScriptBuildPhase; 303 | buildActionMask = 2147483647; 304 | files = ( 305 | ); 306 | inputPaths = ( 307 | ); 308 | name = Swiftgen; 309 | outputPaths = ( 310 | ); 311 | runOnlyForDeploymentPostprocessing = 0; 312 | shellPath = /bin/sh; 313 | shellScript = ./Scripts/swiftgen_script.sh; 314 | showEnvVarsInLog = 0; 315 | };{% endif %} 316 | 317 | /* End PBXShellScriptBuildPhase section */ 318 | 319 | /* Begin PBXSourcesBuildPhase section */ 320 | 060F08401E4D6B3900D9166F /* Sources */ = { 321 | isa = PBXSourcesBuildPhase; 322 | buildActionMask = 2147483647; 323 | files = ({% if cookiecutter.swiftgen == "Yes" %} 324 | 0679BEDF205A4DEC0058E8F3 /* Strings.swift in Sources */, 325 | C3D08F4F2101B9B600FDC15E /* Assets.swift in Sources */,{% endif %} 326 | 063834571F6F62AC0057A831 /* ViewController.swift in Sources */, 327 | 060F086D1E4D6C9200D9166F /* AppDelegate.swift in Sources */, 328 | 06E0EBD11FAC0BB4002715AE /* AppConfigurator.swift in Sources */, 329 | ); 330 | runOnlyForDeploymentPostprocessing = 0; 331 | }; 332 | /* End PBXSourcesBuildPhase section */ 333 | 334 | /* Begin PBXVariantGroup section */ 335 | 066238181F879B4D00AA6B14 /* Localizable.strings */ = { 336 | isa = PBXVariantGroup; 337 | children = ( 338 | 066238171F879B4D00AA6B14 /* en */, 339 | ); 340 | name = Localizable.strings; 341 | sourceTree = ""; 342 | }; 343 | /* End PBXVariantGroup section */ 344 | 345 | /* Begin XCBuildConfiguration section */ 346 | 060F08541E4D6B3900D9166F /* Debug Development */ = { 347 | isa = XCBuildConfiguration; 348 | buildSettings = { 349 | ALWAYS_SEARCH_USER_PATHS = NO; 350 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 351 | CLANG_ANALYZER_NONNULL = YES; 352 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 353 | CLANG_CXX_LIBRARY = "libc++"; 354 | CLANG_ENABLE_MODULES = YES; 355 | CLANG_ENABLE_OBJC_ARC = YES; 356 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 357 | CLANG_WARN_BOOL_CONVERSION = YES; 358 | CLANG_WARN_COMMA = YES; 359 | CLANG_WARN_CONSTANT_CONVERSION = YES; 360 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 361 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 362 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 363 | CLANG_WARN_EMPTY_BODY = YES; 364 | CLANG_WARN_ENUM_CONVERSION = YES; 365 | CLANG_WARN_INFINITE_RECURSION = YES; 366 | CLANG_WARN_INT_CONVERSION = YES; 367 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 368 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 369 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 370 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 371 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 372 | CLANG_WARN_STRICT_PROTOTYPES = YES; 373 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 374 | CLANG_WARN_UNREACHABLE_CODE = YES; 375 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 376 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 377 | COPY_PHASE_STRIP = NO; 378 | DEBUG_INFORMATION_FORMAT = dwarf; 379 | ENABLE_STRICT_OBJC_MSGSEND = YES; 380 | ENABLE_TESTABILITY = YES; 381 | GCC_C_LANGUAGE_STANDARD = gnu99; 382 | GCC_DYNAMIC_NO_PIC = NO; 383 | GCC_NO_COMMON_BLOCKS = YES; 384 | GCC_OPTIMIZATION_LEVEL = 0; 385 | GCC_PREPROCESSOR_DEFINITIONS = ( 386 | "DEBUG=1", 387 | "$(inherited)", 388 | ); 389 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 390 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 391 | GCC_WARN_UNDECLARED_SELECTOR = YES; 392 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 393 | GCC_WARN_UNUSED_FUNCTION = YES; 394 | GCC_WARN_UNUSED_VARIABLE = YES; 395 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 396 | MTL_ENABLE_DEBUG_INFO = YES; 397 | ONLY_ACTIVE_ARCH = YES; 398 | SDKROOT = iphoneos; 399 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 400 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 401 | TARGETED_DEVICE_FAMILY = "1,2"; 402 | }; 403 | name = "Debug Development"; 404 | }; 405 | 060F08551E4D6B3900D9166F /* AdHoc Development */ = { 406 | isa = XCBuildConfiguration; 407 | buildSettings = { 408 | ALWAYS_SEARCH_USER_PATHS = NO; 409 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 410 | CLANG_ANALYZER_NONNULL = YES; 411 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 412 | CLANG_CXX_LIBRARY = "libc++"; 413 | CLANG_ENABLE_MODULES = YES; 414 | CLANG_ENABLE_OBJC_ARC = YES; 415 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 416 | CLANG_WARN_BOOL_CONVERSION = YES; 417 | CLANG_WARN_COMMA = YES; 418 | CLANG_WARN_CONSTANT_CONVERSION = YES; 419 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 420 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 421 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 422 | CLANG_WARN_EMPTY_BODY = YES; 423 | CLANG_WARN_ENUM_CONVERSION = YES; 424 | CLANG_WARN_INFINITE_RECURSION = YES; 425 | CLANG_WARN_INT_CONVERSION = YES; 426 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 427 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 428 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 429 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 430 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 431 | CLANG_WARN_STRICT_PROTOTYPES = YES; 432 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 433 | CLANG_WARN_UNREACHABLE_CODE = YES; 434 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 435 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 436 | COPY_PHASE_STRIP = NO; 437 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 438 | ENABLE_NS_ASSERTIONS = NO; 439 | ENABLE_STRICT_OBJC_MSGSEND = YES; 440 | ENABLE_TESTABILITY = YES; 441 | GCC_C_LANGUAGE_STANDARD = gnu99; 442 | GCC_NO_COMMON_BLOCKS = YES; 443 | GCC_PREPROCESSOR_DEFINITIONS = "ADHOC=1"; 444 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 445 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 446 | GCC_WARN_UNDECLARED_SELECTOR = YES; 447 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 448 | GCC_WARN_UNUSED_FUNCTION = YES; 449 | GCC_WARN_UNUSED_VARIABLE = YES; 450 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 451 | MTL_ENABLE_DEBUG_INFO = NO; 452 | ONLY_ACTIVE_ARCH = YES; 453 | SDKROOT = iphoneos; 454 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = ADHOC; 455 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 456 | TARGETED_DEVICE_FAMILY = "1,2"; 457 | VALIDATE_PRODUCT = YES; 458 | }; 459 | name = "AdHoc Development"; 460 | }; 461 | 060F08571E4D6B3900D9166F /* Debug Development */ = { 462 | isa = XCBuildConfiguration; 463 | buildSettings = { 464 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 465 | "DEBUG_INFORMATION_FORMAT[sdk=iphoneos*]" = "dwarf-with-dsym"; 466 | "DEBUG_INFORMATION_FORMAT[sdk=iphonesimulator*]" = dwarf; 467 | DEVELOPMENT_TEAM = "";{% if cookiecutter.firebase == "Yes" %} 468 | FRAMEWORK_SEARCH_PATHS = ( 469 | "$(inherited)", 470 | "$(PROJECT_DIR)/Carthage/Build/iOS", 471 | );{% endif %} 472 | INFOPLIST_FILE = "{{ cookiecutter.name }}/Info.plist"; 473 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 474 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 475 | OTHER_SWIFT_FLAGS = "-Xfrontend -debug-time-function-bodies"; 476 | PRODUCT_BUNDLE_IDENTIFIER = "{{ cookiecutter.bundle_identifier }}"; 477 | PRODUCT_NAME = "$(TARGET_NAME)"; 478 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEV_SERVER DEBUG"; 479 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 480 | SWIFT_VERSION = 5.0; 481 | }; 482 | name = "Debug Development"; 483 | }; 484 | 060F08581E4D6B3900D9166F /* AdHoc Development */ = { 485 | isa = XCBuildConfiguration; 486 | buildSettings = { 487 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 488 | DEVELOPMENT_TEAM = "";{% if cookiecutter.firebase == "Yes" %} 489 | FRAMEWORK_SEARCH_PATHS = ( 490 | "$(inherited)", 491 | "$(PROJECT_DIR)/Carthage/Build/iOS", 492 | );{% endif %} 493 | INFOPLIST_FILE = "{{ cookiecutter.name }}/Info.plist"; 494 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 495 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 496 | PRODUCT_BUNDLE_IDENTIFIER = "{{ cookiecutter.bundle_identifier }}"; 497 | PRODUCT_NAME = "$(TARGET_NAME)"; 498 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEV_SERVER ADHOC"; 499 | SWIFT_VERSION = 5.0; 500 | }; 501 | name = "AdHoc Development"; 502 | }; 503 | 0638EED6205B9D780079330B /* Debug Staging */ = { 504 | isa = XCBuildConfiguration; 505 | buildSettings = { 506 | ALWAYS_SEARCH_USER_PATHS = NO; 507 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 508 | CLANG_ANALYZER_NONNULL = YES; 509 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 510 | CLANG_CXX_LIBRARY = "libc++"; 511 | CLANG_ENABLE_MODULES = YES; 512 | CLANG_ENABLE_OBJC_ARC = YES; 513 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 514 | CLANG_WARN_BOOL_CONVERSION = YES; 515 | CLANG_WARN_COMMA = YES; 516 | CLANG_WARN_CONSTANT_CONVERSION = YES; 517 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 518 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 519 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 520 | CLANG_WARN_EMPTY_BODY = YES; 521 | CLANG_WARN_ENUM_CONVERSION = YES; 522 | CLANG_WARN_INFINITE_RECURSION = YES; 523 | CLANG_WARN_INT_CONVERSION = YES; 524 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 525 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 526 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 527 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 528 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 529 | CLANG_WARN_STRICT_PROTOTYPES = YES; 530 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 531 | CLANG_WARN_UNREACHABLE_CODE = YES; 532 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 533 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 534 | COPY_PHASE_STRIP = NO; 535 | DEBUG_INFORMATION_FORMAT = dwarf; 536 | ENABLE_STRICT_OBJC_MSGSEND = YES; 537 | ENABLE_TESTABILITY = YES; 538 | GCC_C_LANGUAGE_STANDARD = gnu99; 539 | GCC_DYNAMIC_NO_PIC = NO; 540 | GCC_NO_COMMON_BLOCKS = YES; 541 | GCC_OPTIMIZATION_LEVEL = 0; 542 | GCC_PREPROCESSOR_DEFINITIONS = ( 543 | "DEBUG=1", 544 | "$(inherited)", 545 | ); 546 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 547 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 548 | GCC_WARN_UNDECLARED_SELECTOR = YES; 549 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 550 | GCC_WARN_UNUSED_FUNCTION = YES; 551 | GCC_WARN_UNUSED_VARIABLE = YES; 552 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 553 | MTL_ENABLE_DEBUG_INFO = YES; 554 | ONLY_ACTIVE_ARCH = YES; 555 | SDKROOT = iphoneos; 556 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 557 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 558 | TARGETED_DEVICE_FAMILY = "1,2"; 559 | }; 560 | name = "Debug Staging"; 561 | }; 562 | 0638EED7205B9D780079330B /* Debug Staging */ = { 563 | isa = XCBuildConfiguration; 564 | buildSettings = { 565 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 566 | "DEBUG_INFORMATION_FORMAT[sdk=iphoneos*]" = "dwarf-with-dsym"; 567 | "DEBUG_INFORMATION_FORMAT[sdk=iphonesimulator*]" = dwarf; 568 | DEVELOPMENT_TEAM = "";{% if cookiecutter.firebase == "Yes" %} 569 | FRAMEWORK_SEARCH_PATHS = ( 570 | "$(inherited)", 571 | "$(PROJECT_DIR)/Carthage/Build/iOS", 572 | );{% endif %} 573 | INFOPLIST_FILE = "{{ cookiecutter.name }}/Info.plist"; 574 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 575 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 576 | OTHER_SWIFT_FLAGS = "-Xfrontend -debug-time-function-bodies"; 577 | PRODUCT_BUNDLE_IDENTIFIER = "{{ cookiecutter.bundle_identifier }}"; 578 | PRODUCT_NAME = "$(TARGET_NAME)"; 579 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "STAGING_SERVER DEBUG"; 580 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 581 | SWIFT_VERSION = 5.0; 582 | }; 583 | name = "Debug Staging"; 584 | }; 585 | 0638EEDA205B9D880079330B /* Debug Production */ = { 586 | isa = XCBuildConfiguration; 587 | buildSettings = { 588 | ALWAYS_SEARCH_USER_PATHS = NO; 589 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 590 | CLANG_ANALYZER_NONNULL = YES; 591 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 592 | CLANG_CXX_LIBRARY = "libc++"; 593 | CLANG_ENABLE_MODULES = YES; 594 | CLANG_ENABLE_OBJC_ARC = YES; 595 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 596 | CLANG_WARN_BOOL_CONVERSION = YES; 597 | CLANG_WARN_COMMA = YES; 598 | CLANG_WARN_CONSTANT_CONVERSION = YES; 599 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 600 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 601 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 602 | CLANG_WARN_EMPTY_BODY = YES; 603 | CLANG_WARN_ENUM_CONVERSION = YES; 604 | CLANG_WARN_INFINITE_RECURSION = YES; 605 | CLANG_WARN_INT_CONVERSION = YES; 606 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 607 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 608 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 609 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 610 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 611 | CLANG_WARN_STRICT_PROTOTYPES = YES; 612 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 613 | CLANG_WARN_UNREACHABLE_CODE = YES; 614 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 615 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 616 | COPY_PHASE_STRIP = NO; 617 | DEBUG_INFORMATION_FORMAT = dwarf; 618 | ENABLE_STRICT_OBJC_MSGSEND = YES; 619 | ENABLE_TESTABILITY = YES; 620 | GCC_C_LANGUAGE_STANDARD = gnu99; 621 | GCC_DYNAMIC_NO_PIC = NO; 622 | GCC_NO_COMMON_BLOCKS = YES; 623 | GCC_OPTIMIZATION_LEVEL = 0; 624 | GCC_PREPROCESSOR_DEFINITIONS = ( 625 | "DEBUG=1", 626 | "$(inherited)", 627 | ); 628 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 629 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 630 | GCC_WARN_UNDECLARED_SELECTOR = YES; 631 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 632 | GCC_WARN_UNUSED_FUNCTION = YES; 633 | GCC_WARN_UNUSED_VARIABLE = YES; 634 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 635 | MTL_ENABLE_DEBUG_INFO = YES; 636 | ONLY_ACTIVE_ARCH = YES; 637 | SDKROOT = iphoneos; 638 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 639 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 640 | TARGETED_DEVICE_FAMILY = "1,2"; 641 | }; 642 | name = "Debug Production"; 643 | }; 644 | 0638EEDB205B9D880079330B /* Debug Production */ = { 645 | isa = XCBuildConfiguration; 646 | buildSettings = { 647 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 648 | "DEBUG_INFORMATION_FORMAT[sdk=iphoneos*]" = "dwarf-with-dsym"; 649 | "DEBUG_INFORMATION_FORMAT[sdk=iphonesimulator*]" = dwarf; 650 | DEVELOPMENT_TEAM = "";{% if cookiecutter.firebase == "Yes" %} 651 | FRAMEWORK_SEARCH_PATHS = ( 652 | "$(inherited)", 653 | "$(PROJECT_DIR)/Carthage/Build/iOS", 654 | );{% endif %} 655 | INFOPLIST_FILE = "{{ cookiecutter.name }}/Info.plist"; 656 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 657 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 658 | OTHER_SWIFT_FLAGS = "-Xfrontend -debug-time-function-bodies"; 659 | PRODUCT_BUNDLE_IDENTIFIER = "{{ cookiecutter.bundle_identifier }}"; 660 | PRODUCT_NAME = "$(TARGET_NAME)"; 661 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "PRODUCTION_SERVER DEBUG"; 662 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 663 | SWIFT_VERSION = 5.0; 664 | }; 665 | name = "Debug Production"; 666 | }; 667 | 0638EEDE205B9DA50079330B /* AdHoc Staging */ = { 668 | isa = XCBuildConfiguration; 669 | buildSettings = { 670 | ALWAYS_SEARCH_USER_PATHS = NO; 671 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 672 | CLANG_ANALYZER_NONNULL = YES; 673 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 674 | CLANG_CXX_LIBRARY = "libc++"; 675 | CLANG_ENABLE_MODULES = YES; 676 | CLANG_ENABLE_OBJC_ARC = YES; 677 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 678 | CLANG_WARN_BOOL_CONVERSION = YES; 679 | CLANG_WARN_COMMA = YES; 680 | CLANG_WARN_CONSTANT_CONVERSION = YES; 681 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 682 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 683 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 684 | CLANG_WARN_EMPTY_BODY = YES; 685 | CLANG_WARN_ENUM_CONVERSION = YES; 686 | CLANG_WARN_INFINITE_RECURSION = YES; 687 | CLANG_WARN_INT_CONVERSION = YES; 688 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 689 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 690 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 691 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 692 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 693 | CLANG_WARN_STRICT_PROTOTYPES = YES; 694 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 695 | CLANG_WARN_UNREACHABLE_CODE = YES; 696 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 697 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 698 | COPY_PHASE_STRIP = NO; 699 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 700 | ENABLE_NS_ASSERTIONS = NO; 701 | ENABLE_STRICT_OBJC_MSGSEND = YES; 702 | GCC_C_LANGUAGE_STANDARD = gnu99; 703 | GCC_NO_COMMON_BLOCKS = YES; 704 | GCC_PREPROCESSOR_DEFINITIONS = "ADHOC=1"; 705 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 706 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 707 | GCC_WARN_UNDECLARED_SELECTOR = YES; 708 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 709 | GCC_WARN_UNUSED_FUNCTION = YES; 710 | GCC_WARN_UNUSED_VARIABLE = YES; 711 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 712 | MTL_ENABLE_DEBUG_INFO = NO; 713 | SDKROOT = iphoneos; 714 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = ADHOC; 715 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 716 | TARGETED_DEVICE_FAMILY = "1,2"; 717 | VALIDATE_PRODUCT = YES; 718 | }; 719 | name = "AdHoc Staging"; 720 | }; 721 | 0638EEDF205B9DA50079330B /* AdHoc Staging */ = { 722 | isa = XCBuildConfiguration; 723 | buildSettings = { 724 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 725 | DEVELOPMENT_TEAM = "";{% if cookiecutter.firebase == "Yes" %} 726 | FRAMEWORK_SEARCH_PATHS = ( 727 | "$(inherited)", 728 | "$(PROJECT_DIR)/Carthage/Build/iOS", 729 | );{% endif %} 730 | INFOPLIST_FILE = "{{ cookiecutter.name }}/Info.plist"; 731 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 732 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 733 | PRODUCT_BUNDLE_IDENTIFIER = "{{ cookiecutter.bundle_identifier }}"; 734 | PRODUCT_NAME = "$(TARGET_NAME)"; 735 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "STAGING_SERVER ADHOC"; 736 | SWIFT_VERSION = 5.0; 737 | }; 738 | name = "AdHoc Staging"; 739 | }; 740 | 0638EEE0205B9DB00079330B /* AdHoc Production */ = { 741 | isa = XCBuildConfiguration; 742 | buildSettings = { 743 | ALWAYS_SEARCH_USER_PATHS = NO; 744 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 745 | CLANG_ANALYZER_NONNULL = YES; 746 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 747 | CLANG_CXX_LIBRARY = "libc++"; 748 | CLANG_ENABLE_MODULES = YES; 749 | CLANG_ENABLE_OBJC_ARC = YES; 750 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 751 | CLANG_WARN_BOOL_CONVERSION = YES; 752 | CLANG_WARN_COMMA = YES; 753 | CLANG_WARN_CONSTANT_CONVERSION = YES; 754 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 755 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 756 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 757 | CLANG_WARN_EMPTY_BODY = YES; 758 | CLANG_WARN_ENUM_CONVERSION = YES; 759 | CLANG_WARN_INFINITE_RECURSION = YES; 760 | CLANG_WARN_INT_CONVERSION = YES; 761 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 762 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 763 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 764 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 765 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 766 | CLANG_WARN_STRICT_PROTOTYPES = YES; 767 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 768 | CLANG_WARN_UNREACHABLE_CODE = YES; 769 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 770 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 771 | COPY_PHASE_STRIP = NO; 772 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 773 | ENABLE_NS_ASSERTIONS = NO; 774 | ENABLE_STRICT_OBJC_MSGSEND = YES; 775 | GCC_C_LANGUAGE_STANDARD = gnu99; 776 | GCC_NO_COMMON_BLOCKS = YES; 777 | GCC_PREPROCESSOR_DEFINITIONS = "ADHOC=1"; 778 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 779 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 780 | GCC_WARN_UNDECLARED_SELECTOR = YES; 781 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 782 | GCC_WARN_UNUSED_FUNCTION = YES; 783 | GCC_WARN_UNUSED_VARIABLE = YES; 784 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 785 | MTL_ENABLE_DEBUG_INFO = NO; 786 | SDKROOT = iphoneos; 787 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = ADHOC; 788 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 789 | TARGETED_DEVICE_FAMILY = "1,2"; 790 | VALIDATE_PRODUCT = YES; 791 | }; 792 | name = "AdHoc Production"; 793 | }; 794 | 0638EEE1205B9DB00079330B /* AdHoc Production */ = { 795 | isa = XCBuildConfiguration; 796 | buildSettings = { 797 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 798 | DEVELOPMENT_TEAM = "";{% if cookiecutter.firebase == "Yes" %} 799 | FRAMEWORK_SEARCH_PATHS = ( 800 | "$(inherited)", 801 | "$(PROJECT_DIR)/Carthage/Build/iOS", 802 | );{% endif %} 803 | INFOPLIST_FILE = "{{ cookiecutter.name }}/Info.plist"; 804 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 805 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 806 | PRODUCT_BUNDLE_IDENTIFIER = "{{ cookiecutter.bundle_identifier }}"; 807 | PRODUCT_NAME = "$(TARGET_NAME)"; 808 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "PRODUCTION_SERVER ADHOC"; 809 | SWIFT_VERSION = 5.0; 810 | }; 811 | name = "AdHoc Production"; 812 | }; 813 | 06A25BF61F94C68100A72AAF /* AppStore */ = { 814 | isa = XCBuildConfiguration; 815 | buildSettings = { 816 | ALWAYS_SEARCH_USER_PATHS = NO; 817 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 818 | CLANG_ANALYZER_NONNULL = YES; 819 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 820 | CLANG_CXX_LIBRARY = "libc++"; 821 | CLANG_ENABLE_MODULES = YES; 822 | CLANG_ENABLE_OBJC_ARC = YES; 823 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 824 | CLANG_WARN_BOOL_CONVERSION = YES; 825 | CLANG_WARN_COMMA = YES; 826 | CLANG_WARN_CONSTANT_CONVERSION = YES; 827 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 828 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 829 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 830 | CLANG_WARN_EMPTY_BODY = YES; 831 | CLANG_WARN_ENUM_CONVERSION = YES; 832 | CLANG_WARN_INFINITE_RECURSION = YES; 833 | CLANG_WARN_INT_CONVERSION = YES; 834 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 835 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 836 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 837 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 838 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 839 | CLANG_WARN_STRICT_PROTOTYPES = YES; 840 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 841 | CLANG_WARN_UNREACHABLE_CODE = YES; 842 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 843 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 844 | COPY_PHASE_STRIP = NO; 845 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 846 | ENABLE_NS_ASSERTIONS = NO; 847 | ENABLE_STRICT_OBJC_MSGSEND = YES; 848 | GCC_C_LANGUAGE_STANDARD = gnu99; 849 | GCC_NO_COMMON_BLOCKS = YES; 850 | GCC_PREPROCESSOR_DEFINITIONS = "APPSTORE=1"; 851 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 852 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 853 | GCC_WARN_UNDECLARED_SELECTOR = YES; 854 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 855 | GCC_WARN_UNUSED_FUNCTION = YES; 856 | GCC_WARN_UNUSED_VARIABLE = YES; 857 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 858 | MTL_ENABLE_DEBUG_INFO = NO; 859 | SDKROOT = iphoneos; 860 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = APPSTORE; 861 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 862 | TARGETED_DEVICE_FAMILY = "1,2"; 863 | VALIDATE_PRODUCT = YES; 864 | }; 865 | name = AppStore; 866 | }; 867 | 06A25BF71F94C68100A72AAF /* AppStore */ = { 868 | isa = XCBuildConfiguration; 869 | buildSettings = { 870 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 871 | DEVELOPMENT_TEAM = "";{% if cookiecutter.firebase == "Yes" %} 872 | FRAMEWORK_SEARCH_PATHS = ( 873 | "$(inherited)", 874 | "$(PROJECT_DIR)/Carthage/Build/iOS", 875 | );{% endif %} 876 | INFOPLIST_FILE = "{{ cookiecutter.name }}/Info.plist"; 877 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 878 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 879 | PRODUCT_BUNDLE_IDENTIFIER = "{{ cookiecutter.bundle_identifier }}"; 880 | PRODUCT_NAME = "$(TARGET_NAME)"; 881 | SWIFT_VERSION = 5.0; 882 | }; 883 | name = AppStore; 884 | }; 885 | 06E0EBD51FAC0E39002715AE /* Analyze */ = { 886 | isa = XCBuildConfiguration; 887 | buildSettings = { 888 | ALWAYS_SEARCH_USER_PATHS = NO; 889 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 890 | CLANG_ANALYZER_NONNULL = YES; 891 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 892 | CLANG_CXX_LIBRARY = "libc++"; 893 | CLANG_ENABLE_MODULES = YES; 894 | CLANG_ENABLE_OBJC_ARC = YES; 895 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 896 | CLANG_WARN_BOOL_CONVERSION = YES; 897 | CLANG_WARN_COMMA = YES; 898 | CLANG_WARN_CONSTANT_CONVERSION = YES; 899 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 900 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 901 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 902 | CLANG_WARN_EMPTY_BODY = YES; 903 | CLANG_WARN_ENUM_CONVERSION = YES; 904 | CLANG_WARN_INFINITE_RECURSION = YES; 905 | CLANG_WARN_INT_CONVERSION = YES; 906 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 907 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 908 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 909 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 910 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 911 | CLANG_WARN_STRICT_PROTOTYPES = YES; 912 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 913 | CLANG_WARN_UNREACHABLE_CODE = YES; 914 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 915 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 916 | COPY_PHASE_STRIP = NO; 917 | DEBUG_INFORMATION_FORMAT = dwarf; 918 | ENABLE_STRICT_OBJC_MSGSEND = YES; 919 | ENABLE_TESTABILITY = YES; 920 | GCC_C_LANGUAGE_STANDARD = gnu99; 921 | GCC_DYNAMIC_NO_PIC = NO; 922 | GCC_NO_COMMON_BLOCKS = YES; 923 | GCC_OPTIMIZATION_LEVEL = 0; 924 | GCC_PREPROCESSOR_DEFINITIONS = "ANALYZE=1"; 925 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 926 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 927 | GCC_WARN_UNDECLARED_SELECTOR = YES; 928 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 929 | GCC_WARN_UNUSED_FUNCTION = YES; 930 | GCC_WARN_UNUSED_VARIABLE = YES; 931 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 932 | MTL_ENABLE_DEBUG_INFO = YES; 933 | ONLY_ACTIVE_ARCH = YES; 934 | SDKROOT = iphoneos; 935 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = ANALYZE; 936 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 937 | TARGETED_DEVICE_FAMILY = "1,2"; 938 | }; 939 | name = Analyze; 940 | }; 941 | 06E0EBD61FAC0E39002715AE /* Analyze */ = { 942 | isa = XCBuildConfiguration; 943 | buildSettings = { 944 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 945 | DEVELOPMENT_TEAM = "";{% if cookiecutter.firebase == "Yes" %} 946 | FRAMEWORK_SEARCH_PATHS = ( 947 | "$(inherited)", 948 | "$(PROJECT_DIR)/Carthage/Build/iOS", 949 | );{% endif %} 950 | INFOPLIST_FILE = "{{ cookiecutter.name }}/Info.plist"; 951 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 952 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 953 | OTHER_SWIFT_FLAGS = "-Xfrontend -debug-time-function-bodies -Xfrontend -warn-long-function-bodies=100 -Xfrontend -warn-long-expression-type-checking=100"; 954 | PRODUCT_BUNDLE_IDENTIFIER = "{{ cookiecutter.bundle_identifier }}"; 955 | PRODUCT_NAME = "$(TARGET_NAME)"; 956 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 957 | SWIFT_VERSION = 5.0; 958 | }; 959 | name = Analyze; 960 | }; 961 | /* End XCBuildConfiguration section */ 962 | 963 | /* Begin XCConfigurationList section */ 964 | 060F083F1E4D6B3900D9166F /* Build configuration list for PBXProject "{{ cookiecutter.name }}" */ = { 965 | isa = XCConfigurationList; 966 | buildConfigurations = ( 967 | 060F08541E4D6B3900D9166F /* Debug Development */, 968 | 0638EED6205B9D780079330B /* Debug Staging */, 969 | 0638EEDA205B9D880079330B /* Debug Production */, 970 | 06E0EBD51FAC0E39002715AE /* Analyze */, 971 | 060F08551E4D6B3900D9166F /* AdHoc Development */, 972 | 0638EEDE205B9DA50079330B /* AdHoc Staging */, 973 | 0638EEE0205B9DB00079330B /* AdHoc Production */, 974 | 06A25BF61F94C68100A72AAF /* AppStore */, 975 | ); 976 | defaultConfigurationIsVisible = 0; 977 | defaultConfigurationName = "Debug Development"; 978 | }; 979 | 060F08561E4D6B3900D9166F /* Build configuration list for PBXNativeTarget "{{ cookiecutter.name }}" */ = { 980 | isa = XCConfigurationList; 981 | buildConfigurations = ( 982 | 060F08571E4D6B3900D9166F /* Debug Development */, 983 | 0638EED7205B9D780079330B /* Debug Staging */, 984 | 0638EEDB205B9D880079330B /* Debug Production */, 985 | 06E0EBD61FAC0E39002715AE /* Analyze */, 986 | 060F08581E4D6B3900D9166F /* AdHoc Development */, 987 | 0638EEDF205B9DA50079330B /* AdHoc Staging */, 988 | 0638EEE1205B9DB00079330B /* AdHoc Production */, 989 | 06A25BF71F94C68100A72AAF /* AppStore */, 990 | ); 991 | defaultConfigurationIsVisible = 0; 992 | defaultConfigurationName = "Debug Development"; 993 | }; 994 | /* End XCConfigurationList section */ 995 | }; 996 | rootObject = 060F083C1E4D6B3900D9166F /* Project object */; 997 | } 998 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Latest 7 | 8 | 9 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // Copyright © ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | // 9 | 10 | 11 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/xcshareddata/xcschemes/{{ cookiecutter.name }} AdHoc Development.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/xcshareddata/xcschemes/{{ cookiecutter.name }} AdHoc Production.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/xcshareddata/xcschemes/{{ cookiecutter.name }} AdHoc Staging.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/xcshareddata/xcschemes/{{ cookiecutter.name }} AppStore.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/xcshareddata/xcschemes/{{ cookiecutter.name }} Debug Development.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/xcshareddata/xcschemes/{{ cookiecutter.name }} Debug Production.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}.xcodeproj/xcshareddata/xcschemes/{{ cookiecutter.name }} Debug Staging.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleURLTypes 20 | 21 | 22 | CFBundleTypeRole 23 | Editor 24 | CFBundleURLSchemes 25 | 26 | {{ cookiecutter.organization_name | replace(' ', '-') | lower }}.{{ cookiecutter.name | replace(' ', '-') | lower }} 27 | 28 | 29 | 30 | CFBundleVersion 31 | 1 32 | LSRequiresIPhoneOS 33 | 34 | UILaunchStoryboardName 35 | LaunchScreen 36 | UIRequiredDeviceCapabilities 37 | 38 | armv7 39 | 40 | UISupportedInterfaceOrientations 41 | 42 | UIInterfaceOrientationPortrait 43 | 44 | UISupportedInterfaceOrientations~ipad 45 | 46 | UIInterfaceOrientationPortrait 47 | UIInterfaceOrientationPortraitUpsideDown 48 | UIInterfaceOrientationLandscapeLeft 49 | UIInterfaceOrientationLandscapeRight 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /{{ cookiecutter.name }}/{{ cookiecutter.name }}/Settings.bundle/Root.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | StringsTable 6 | Root 7 | PreferenceSpecifiers 8 | 9 | 10 | Type 11 | PSTitleValueSpecifier 12 | DefaultValue 13 | 1.0 14 | Title 15 | Version 16 | Key 17 | appVersion 18 | 19 | 20 | 21 | 22 | --------------------------------------------------------------------------------