diff --git a/.travis.yml b/.travis.yml index a1c4805..5034c55 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,5 @@ language: objective-c +osx_image: xcode7 env: global: diff --git a/CrushBootstrap.xcodeproj/project.pbxproj b/CrushBootstrap.xcodeproj/project.pbxproj index 955d18a..c684f2f 100644 --- a/CrushBootstrap.xcodeproj/project.pbxproj +++ b/CrushBootstrap.xcodeproj/project.pbxproj @@ -54,13 +54,14 @@ BD304C8218E77F7E0034105E /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; BD35136419BE274A00A19841 /* CRBSConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CRBSConstants.h; sourceTree = ""; }; BD35136519BE274A00A19841 /* CRBSConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CRBSConstants.m; sourceTree = ""; }; - BD3570BB19929359006C5409 /* CrushBootstrap-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "CrushBootstrap-Debug.xcconfig"; sourceTree = ""; }; - BD3570BC199293C2006C5409 /* CrushBootstrap-Profile.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "CrushBootstrap-Profile.xcconfig"; sourceTree = ""; }; - BD3570BD19929436006C5409 /* CrushBootstrap-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "CrushBootstrap-Release.xcconfig"; sourceTree = ""; }; BD49EA2C18EC842B00F73350 /* CrushBootstrap-Environment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CrushBootstrap-Environment.h"; sourceTree = ""; }; + BD4E49501B8AC7BE004C140F /* CrushBootstrap-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "CrushBootstrap-Debug.xcconfig"; sourceTree = ""; }; + BD4E49511B8AC7BE004C140F /* CrushBootstrap-Profile.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "CrushBootstrap-Profile.xcconfig"; sourceTree = ""; }; + BD4E49521B8AC7BE004C140F /* CrushBootstrap-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "CrushBootstrap-Release.xcconfig"; sourceTree = ""; }; + BD4E49531B8AC7BE004C140F /* CrushBootstrap-Test.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "CrushBootstrap-Test.xcconfig"; sourceTree = ""; }; + BD4E49541B8AC7BE004C140F /* CrushBootstrap.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = CrushBootstrap.xcconfig; sourceTree = ""; }; + BD4E49731B8AC7DC004C140F /* jspahrsummers-xcconfigs */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "jspahrsummers-xcconfigs"; sourceTree = ""; }; BD574AFE18EA481500EDD66F /* CrushBootstrap-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CrushBootstrap-Prefix.pch"; sourceTree = ""; }; - BD574AFF18EA481500EDD66F /* CrushBootstrap-Test.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "CrushBootstrap-Test.xcconfig"; sourceTree = ""; }; - BD574B0018EA481500EDD66F /* CrushBootstrap.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = CrushBootstrap.xcconfig; sourceTree = ""; }; BD6951CE18EA4B0800F2F410 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; BD6951EA18EA54A800F2F410 /* CrushBootstrap-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CrushBootstrap-Info.plist"; sourceTree = ""; }; BD934CD019C211F600B48551 /* AssetCatalogIdentifiers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AssetCatalogIdentifiers.h; sourceTree = ""; }; @@ -138,6 +139,19 @@ path = Resources; sourceTree = ""; }; + BD4E494F1B8AC7BE004C140F /* Configuration */ = { + isa = PBXGroup; + children = ( + BD4E49731B8AC7DC004C140F /* jspahrsummers-xcconfigs */, + BD4E49501B8AC7BE004C140F /* CrushBootstrap-Debug.xcconfig */, + BD4E49511B8AC7BE004C140F /* CrushBootstrap-Profile.xcconfig */, + BD4E49521B8AC7BE004C140F /* CrushBootstrap-Release.xcconfig */, + BD4E49531B8AC7BE004C140F /* CrushBootstrap-Test.xcconfig */, + BD4E49541B8AC7BE004C140F /* CrushBootstrap.xcconfig */, + ); + path = Configuration; + sourceTree = ""; + }; BD574AFA18EA47FA00EDD66F /* Library */ = { isa = PBXGroup; children = ( @@ -155,15 +169,11 @@ BD574AFC18EA481500EDD66F /* Other Sources */ = { isa = PBXGroup; children = ( + BD4E494F1B8AC7BE004C140F /* Configuration */, BD934CCF19C211F600B48551 /* Generated */, BD35136419BE274A00A19841 /* CRBSConstants.h */, BD35136519BE274A00A19841 /* CRBSConstants.m */, BD6951EA18EA54A800F2F410 /* CrushBootstrap-Info.plist */, - BD574B0018EA481500EDD66F /* CrushBootstrap.xcconfig */, - BD3570BB19929359006C5409 /* CrushBootstrap-Debug.xcconfig */, - BD574AFF18EA481500EDD66F /* CrushBootstrap-Test.xcconfig */, - BD3570BC199293C2006C5409 /* CrushBootstrap-Profile.xcconfig */, - BD3570BD19929436006C5409 /* CrushBootstrap-Release.xcconfig */, BD49EA2C18EC842B00F73350 /* CrushBootstrap-Environment.h */, ); name = "Other Sources"; @@ -327,7 +337,7 @@ isa = PBXProject; attributes = { CLASSPREFIX = CRBS; - LastUpgradeCheck = 0700; + LastUpgradeCheck = 0710; ORGANIZATIONNAME = "Crush & Lovely"; TargetAttributes = { BDDB997218C3943B003EBC42 = { @@ -548,8 +558,9 @@ /* Begin XCBuildConfiguration section */ BD49EA2018EC611D00F73350 /* Debug_Production */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD3570BB19929359006C5409 /* CrushBootstrap-Debug.xcconfig */; + baseConfigurationReference = BD4E49501B8AC7BE004C140F /* CrushBootstrap-Debug.xcconfig */; buildSettings = { + ENABLE_TESTABILITY = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -563,9 +574,11 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; BUNDLE_ID_SUFFIX = .prod; BUNDLE_NAME_SUFFIX = " (Prod)"; + CODE_SIGN_IDENTITY = "iPhone Developer"; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "CrushBootstrap/Application/CrushBootstrap-Prefix.pch"; INFOPLIST_FILE = "CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier:lower}${BUNDLE_ID_SUFFIX}"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug_Production; @@ -583,6 +596,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Specs/Specs-Prefix.pch"; INFOPLIST_FILE = "Specs/Specs-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; @@ -591,7 +605,7 @@ }; BD49EA2318EC612E00F73350 /* Test_Production */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD574AFF18EA481500EDD66F /* CrushBootstrap-Test.xcconfig */; + baseConfigurationReference = BD4E49531B8AC7BE004C140F /* CrushBootstrap-Test.xcconfig */; buildSettings = { IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; @@ -606,9 +620,11 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; BUNDLE_ID_SUFFIX = .prod; BUNDLE_NAME_SUFFIX = " (Prod)"; + CODE_SIGN_IDENTITY = "iPhone Developer"; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "CrushBootstrap/Application/CrushBootstrap-Prefix.pch"; INFOPLIST_FILE = "CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier:lower}${BUNDLE_ID_SUFFIX}"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Test_Production; @@ -626,6 +642,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Specs/Specs-Prefix.pch"; INFOPLIST_FILE = "Specs/Specs-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; @@ -634,12 +651,11 @@ }; BD49EA2618EC614F00F73350 /* AdHoc_Production */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD3570BD19929436006C5409 /* CrushBootstrap-Release.xcconfig */; + baseConfigurationReference = BD4E49521B8AC7BE004C140F /* CrushBootstrap-Release.xcconfig */; buildSettings = { IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; name = AdHoc_Production; }; @@ -650,10 +666,11 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; BUNDLE_ID_SUFFIX = .prod; BUNDLE_NAME_SUFFIX = " (Prod)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_IDENTITY = "iPhone Distribution"; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "CrushBootstrap/Application/CrushBootstrap-Prefix.pch"; INFOPLIST_FILE = "CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier:lower}${BUNDLE_ID_SUFFIX}"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = AdHoc_Production; @@ -671,6 +688,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Specs/Specs-Prefix.pch"; INFOPLIST_FILE = "Specs/Specs-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; @@ -679,12 +697,11 @@ }; BD49EA2918EC62DD00F73350 /* Profile_Production */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD3570BC199293C2006C5409 /* CrushBootstrap-Profile.xcconfig */; + baseConfigurationReference = BD4E49511B8AC7BE004C140F /* CrushBootstrap-Profile.xcconfig */; buildSettings = { IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; name = Profile_Production; }; @@ -695,9 +712,11 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; BUNDLE_ID_SUFFIX = .prod; BUNDLE_NAME_SUFFIX = " (Prod)"; + CODE_SIGN_IDENTITY = "iPhone Developer"; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "CrushBootstrap/Application/CrushBootstrap-Prefix.pch"; INFOPLIST_FILE = "CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier:lower}${BUNDLE_ID_SUFFIX}"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile_Production; @@ -715,6 +734,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Specs/Specs-Prefix.pch"; INFOPLIST_FILE = "Specs/Specs-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; @@ -723,12 +743,11 @@ }; BDD67CDB18DFAB85008ECBBD /* AdHoc_Staging */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD3570BD19929436006C5409 /* CrushBootstrap-Release.xcconfig */; + baseConfigurationReference = BD4E49521B8AC7BE004C140F /* CrushBootstrap-Release.xcconfig */; buildSettings = { IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; name = AdHoc_Staging; }; @@ -739,10 +758,11 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; BUNDLE_ID_SUFFIX = .staging; BUNDLE_NAME_SUFFIX = " (Staging)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_IDENTITY = "iPhone Distribution"; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "CrushBootstrap/Application/CrushBootstrap-Prefix.pch"; INFOPLIST_FILE = "CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier:lower}${BUNDLE_ID_SUFFIX}"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = AdHoc_Staging; @@ -760,6 +780,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Specs/Specs-Prefix.pch"; INFOPLIST_FILE = "Specs/Specs-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; @@ -768,8 +789,9 @@ }; BDDB998218C3943B003EBC42 /* Debug_Staging */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD3570BB19929359006C5409 /* CrushBootstrap-Debug.xcconfig */; + baseConfigurationReference = BD4E49501B8AC7BE004C140F /* CrushBootstrap-Debug.xcconfig */; buildSettings = { + ENABLE_TESTABILITY = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -778,12 +800,11 @@ }; BDDB998318C3943B003EBC42 /* Distribution */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD3570BD19929436006C5409 /* CrushBootstrap-Release.xcconfig */; + baseConfigurationReference = BD4E49521B8AC7BE004C140F /* CrushBootstrap-Release.xcconfig */; buildSettings = { IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; name = Distribution; }; @@ -794,9 +815,11 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; BUNDLE_ID_SUFFIX = .staging; BUNDLE_NAME_SUFFIX = " (Staging)"; + CODE_SIGN_IDENTITY = "iPhone Developer"; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "CrushBootstrap/Application/CrushBootstrap-Prefix.pch"; INFOPLIST_FILE = "CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier:lower}${BUNDLE_ID_SUFFIX}"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug_Staging; @@ -808,10 +831,11 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; BUNDLE_ID_SUFFIX = ""; BUNDLE_NAME_SUFFIX = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_IDENTITY = "iPhone Distribution"; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "CrushBootstrap/Application/CrushBootstrap-Prefix.pch"; INFOPLIST_FILE = "CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier:lower}${BUNDLE_ID_SUFFIX}"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Distribution; @@ -829,6 +853,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Specs/Specs-Prefix.pch"; INFOPLIST_FILE = "Specs/Specs-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; @@ -848,6 +873,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Specs/Specs-Prefix.pch"; INFOPLIST_FILE = "Specs/Specs-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; @@ -856,12 +882,11 @@ }; BDF1757A18C3986D008BD9C6 /* Profile_Staging */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD3570BC199293C2006C5409 /* CrushBootstrap-Profile.xcconfig */; + baseConfigurationReference = BD4E49511B8AC7BE004C140F /* CrushBootstrap-Profile.xcconfig */; buildSettings = { IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; name = Profile_Staging; }; @@ -872,9 +897,11 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; BUNDLE_ID_SUFFIX = .staging; BUNDLE_NAME_SUFFIX = " (Staging)"; + CODE_SIGN_IDENTITY = "iPhone Developer"; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "CrushBootstrap/Application/CrushBootstrap-Prefix.pch"; INFOPLIST_FILE = "CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier:lower}${BUNDLE_ID_SUFFIX}"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile_Staging; @@ -892,6 +919,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Specs/Specs-Prefix.pch"; INFOPLIST_FILE = "Specs/Specs-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; @@ -900,7 +928,7 @@ }; BDF1757D18C39BD3008BD9C6 /* Test_Staging */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD574AFF18EA481500EDD66F /* CrushBootstrap-Test.xcconfig */; + baseConfigurationReference = BD4E49531B8AC7BE004C140F /* CrushBootstrap-Test.xcconfig */; buildSettings = { IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; @@ -915,9 +943,11 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; BUNDLE_ID_SUFFIX = .staging; BUNDLE_NAME_SUFFIX = " (Staging)"; + CODE_SIGN_IDENTITY = "iPhone Developer"; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "CrushBootstrap/Application/CrushBootstrap-Prefix.pch"; INFOPLIST_FILE = "CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier:lower}${BUNDLE_ID_SUFFIX}"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Test_Staging; @@ -935,6 +965,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "Specs/Specs-Prefix.pch"; INFOPLIST_FILE = "Specs/Specs-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "com.crushlovely.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; diff --git a/CrushBootstrap.xcodeproj/xcshareddata/xcschemes/CrushBootstrap-AppStore.xcscheme b/CrushBootstrap.xcodeproj/xcshareddata/xcschemes/CrushBootstrap-AppStore.xcscheme index 5913b4f..495e23f 100644 --- a/CrushBootstrap.xcodeproj/xcshareddata/xcschemes/CrushBootstrap-AppStore.xcscheme +++ b/CrushBootstrap.xcodeproj/xcshareddata/xcschemes/CrushBootstrap-AppStore.xcscheme @@ -1,6 +1,6 @@ - + - + + @@ -15,6 +16,7 @@ + diff --git a/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Debug.xcconfig b/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Debug.xcconfig new file mode 100644 index 0000000..cc17945 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Debug.xcconfig @@ -0,0 +1,5 @@ +// Build settings for debug builds. + +#include "jspahrsummers-xcconfigs/iOS/iOS-Application.xcconfig" +#include "jspahrsummers-xcconfigs/Base/Configurations/Debug.xcconfig" +#include "CrushBootstrap.xcconfig" diff --git a/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Profile.xcconfig b/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Profile.xcconfig new file mode 100644 index 0000000..faec63d --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Profile.xcconfig @@ -0,0 +1,7 @@ +// Build settings for profile builds. + +#include "jspahrsummers-xcconfigs/iOS/iOS-Application.xcconfig" +#include "jspahrsummers-xcconfigs/Base/Configurations/Profile.xcconfig" +#include "CrushBootstrap.xcconfig" + +ONLY_ACTIVE_ARCH = YES diff --git a/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Release.xcconfig b/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Release.xcconfig new file mode 100644 index 0000000..8c50a4b --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Release.xcconfig @@ -0,0 +1,5 @@ +// Build settings for ad-hoc and app store builds. + +#include "jspahrsummers-xcconfigs/iOS/iOS-Application.xcconfig" +#include "jspahrsummers-xcconfigs/Base/Configurations/Release.xcconfig" +#include "CrushBootstrap.xcconfig" diff --git a/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Test.xcconfig b/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Test.xcconfig new file mode 100644 index 0000000..45f377f --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap-Test.xcconfig @@ -0,0 +1,6 @@ +// Build settings for testing builds. + +#include "jspahrsummers-xcconfigs/iOS/iOS-Application.xcconfig" +#include "jspahrsummers-xcconfigs/Base/Configurations/Test.xcconfig" +#include "CrushBootstrap.xcconfig" + diff --git a/CrushBootstrap/Other-Sources/CrushBootstrap.xcconfig b/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap.xcconfig similarity index 95% rename from CrushBootstrap/Other-Sources/CrushBootstrap.xcconfig rename to CrushBootstrap/Other-Sources/Configuration/CrushBootstrap.xcconfig index ad9ac65..b8612fc 100644 --- a/CrushBootstrap/Other-Sources/CrushBootstrap.xcconfig +++ b/CrushBootstrap/Other-Sources/Configuration/CrushBootstrap.xcconfig @@ -15,5 +15,5 @@ CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES WARNING_CFLAGS[config=*] = $(inherited) -Wall -Wextra -Wno-unused-parameter -Wno-unknown-warning-option -// Tone down xcconfigs a touch: +// Tone down jpahrsummers-xcconfigs a touch: GCC_TREAT_WARNINGS_AS_ERRORS = NO diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/.gitignore b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/.gitignore new file mode 100755 index 0000000..b29206a --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/.gitignore @@ -0,0 +1 @@ +Carthage/Build diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Common.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Common.xcconfig new file mode 100755 index 0000000..c88d93d --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Common.xcconfig @@ -0,0 +1,174 @@ +// +// This file defines common settings that should be enabled for every new +// project. Typically, you want to use Debug, Release, or a similar variant +// instead. +// + +// Disable legacy-compatible header searching +ALWAYS_SEARCH_USER_PATHS = NO + +// Architectures to build +ARCHS = $(ARCHS_STANDARD) + +// Whether to warn when a floating-point value is used as a loop counter +CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES + +// Whether to warn about use of rand() and random() being used instead of arc4random() +CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES + +// Whether to warn about strcpy() and strcat() +CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES + +// Whether to enable module imports +CLANG_ENABLE_MODULES = YES + +// Enable ARC +CLANG_ENABLE_OBJC_ARC = YES + +// Warn about implicit conversions to boolean values that are suspicious. +// For example, writing 'if (foo)' with 'foo' being the name a function will trigger a warning. +CLANG_WARN_BOOL_CONVERSION = YES + +// Warn about implicit conversions of constant values that cause the constant value to change, +// either through a loss of precision, or entirely in its meaning. +CLANG_WARN_CONSTANT_CONVERSION = YES + +// Whether to warn when overriding deprecated methods +CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES + +// Warn about direct accesses to the Objective-C 'isa' pointer instead of using a runtime API. +CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR + +// Warn about declaring the same method more than once within the same @interface. +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES + +// Warn about loop bodies that are suspiciously empty. +CLANG_WARN_EMPTY_BODY = YES + +// Warn about implicit conversions between different kinds of enum values. +// For example, this can catch issues when using the wrong enum flag as an argument to a function or method. +CLANG_WARN_ENUM_CONVERSION = YES + +// Whether to warn on implicit conversions between signed/unsigned types +CLANG_WARN_IMPLICIT_SIGN_CONVERSION = NO + +// Warn about implicit conversions between pointers and integers. +// For example, this can catch issues when one incorrectly intermixes using NSNumbers and raw integers. +CLANG_WARN_INT_CONVERSION = YES + +// Don't warn about repeatedly using a weak reference without assigning the weak reference to a strong reference. Too many false positives. +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = NO + +// Warn about classes that unintentionally do not subclass a root class (such as NSObject). +CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR + +// Whether to warn on suspicious implicit conversions +CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES + +// Warn about potentially unreachable code +CLANG_WARN_UNREACHABLE_CODE = YES + +// The format of debugging symbols +DEBUG_INFORMATION_FORMAT = dwarf-with-dsym + +// Whether to compile assertions in +ENABLE_NS_ASSERTIONS = YES + +// Whether to require objc_msgSend to be cast before invocation +ENABLE_STRICT_OBJC_MSGSEND = YES + +// Which C variant to use +GCC_C_LANGUAGE_STANDARD = gnu99 + +// Whether to enable exceptions for Objective-C +GCC_ENABLE_OBJC_EXCEPTIONS = YES + +// Whether to generate debugging symbols +GCC_GENERATE_DEBUGGING_SYMBOLS = YES + +// Whether to precompile the prefix header (if one is specified) +GCC_PRECOMPILE_PREFIX_HEADER = YES + +// Whether to enable strict aliasing, meaning that two pointers of different +// types (other than void * or any id type) cannot point to the same memory +// location +GCC_STRICT_ALIASING = YES + +// Whether symbols not explicitly exported are hidden by default (this primarily +// only affects C++ code) +GCC_SYMBOLS_PRIVATE_EXTERN = NO + +// Whether static variables are thread-safe by default +GCC_THREADSAFE_STATICS = NO + +// Which compiler to use +GCC_VERSION = com.apple.compilers.llvm.clang.1_0 + +// Whether warnings are treated as errors +GCC_TREAT_WARNINGS_AS_ERRORS = YES + +// Whether to warn about 64-bit values being implicitly shortened to 32 bits +GCC_WARN_64_TO_32_BIT_CONVERSION = YES + +// Whether to warn about fields missing from structure initializers (only if +// designated initializers aren't used) +GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES + +// Whether to warn about missing function prototypes +GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO + +// Whether to warn about implicit conversions in the signedness of the type +// a pointer is pointing to (e.g., 'int *' getting converted to 'unsigned int *') +GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES + +// Whether to warn when the value returned from a function/method/block does not +// match its return type +GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR + +// Whether to warn on a class not implementing all the required methods of +// a protocol it declares conformance to +GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES + +// Whether to warn when switching on an enum value, and all possibilities are +// not accounted for +GCC_WARN_CHECK_SWITCH_STATEMENTS = YES + +// Whether to warn about the use of four-character constants +GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES + +// Whether to warn about an aggregate data type's initializer not being fully +// bracketed (e.g., array initializer syntax) +GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES + +// Whether to warn about missing braces or parentheses that make the meaning of +// the code ambiguous +GCC_WARN_MISSING_PARENTHESES = YES + +// Whether to warn about unsafe comparisons between values of different +// signedness +GCC_WARN_SIGN_COMPARE = YES + +// Whether to warn about the arguments to printf-style functions not matching +// the format specifiers +GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES + +// Warn if a "@selector(...)" expression referring to an undeclared selector is found +GCC_WARN_UNDECLARED_SELECTOR = YES + +// Warn if a variable might be clobbered by a setjmp call or if an automatic variable is used without prior initialization. +GCC_WARN_UNINITIALIZED_AUTOS = YES + +// Whether to warn about static functions that are unused +GCC_WARN_UNUSED_FUNCTION = YES + +// Whether to warn about labels that are unused +GCC_WARN_UNUSED_LABEL = YES + +// Whether to warn about variables that are never used +GCC_WARN_UNUSED_VARIABLE = YES + +// Whether to run the static analyzer with every build +RUN_CLANG_STATIC_ANALYZER = YES + +// Don't treat unknown warnings as errors, and disable GCC compatibility warnings and unused static const variable warnings +WARNING_CFLAGS = -Wno-error=unknown-warning-option -Wno-gcc-compat -Wno-unused-const-variable -Wno-nullability-completeness diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Debug.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Debug.xcconfig new file mode 100755 index 0000000..6ef0040 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Debug.xcconfig @@ -0,0 +1,43 @@ +// +// This file defines the base configuration for a Debug build of any project. +// This should be set at the project level for the Debug configuration. +// + +#include "../Common.xcconfig" + +// Whether to strip debugging symbols when copying resources (like included +// binaries) +COPY_PHASE_STRIP = NO + +// The optimization level (0, 1, 2, 3, s) for the produced binary +GCC_OPTIMIZATION_LEVEL = 0 + +// Preproccessor definitions to apply to each file compiled +GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1 + +// Whether to enable link-time optimizations (such as inlining across translation +// units) +LLVM_LTO = NO + +// Whether to only build the active architecture +ONLY_ACTIVE_ARCH = YES + +// Other compiler flags +// +// These settings catch some errors in integer arithmetic +OTHER_CFLAGS = -ftrapv + +// Other flags to pass to the Swift compiler +// +// This enables conditional compilation with #if DEBUG +OTHER_SWIFT_FLAGS = -D DEBUG + +// Whether to strip debugging symbols when copying the built product to its +// final installation location +STRIP_INSTALLED_PRODUCT = NO + +// The optimization level (-Onone, -O, -Ofast) for the produced Swift binary +SWIFT_OPTIMIZATION_LEVEL = -Onone + +// Disable Developer ID timestamping +OTHER_CODE_SIGN_FLAGS = --timestamp=none diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Profile.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Profile.xcconfig new file mode 100755 index 0000000..0d01553 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Profile.xcconfig @@ -0,0 +1,27 @@ +// +// This file defines the base configuration for an optional profiling-specific +// build of any project. To use these settings, create a Profile configuration +// in your project, and use this file at the project level for the new +// configuration. +// + +// based on the Release configuration, with some stuff related to debugging +// symbols re-enabled +#include "Release.xcconfig" + +// Whether to strip debugging symbols when copying resources (like included +// binaries) +COPY_PHASE_STRIP = NO + +// Whether to only build the active architecture +ONLY_ACTIVE_ARCH = YES + +// Whether to strip debugging symbols when copying the built product to its +// final installation location +STRIP_INSTALLED_PRODUCT = NO + +// Whether to perform App Store validation checks +VALIDATE_PRODUCT = NO + +// Disable Developer ID timestamping +OTHER_CODE_SIGN_FLAGS = --timestamp=none diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Release.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Release.xcconfig new file mode 100755 index 0000000..c83729b --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Release.xcconfig @@ -0,0 +1,34 @@ +// +// This file defines the base configuration for a Release build of any project. +// This should be set at the project level for the Release configuration. +// + +#include "../Common.xcconfig" + +// Whether to strip debugging symbols when copying resources (like included +// binaries) +COPY_PHASE_STRIP = YES + +// The optimization level (0, 1, 2, 3, s) for the produced binary +GCC_OPTIMIZATION_LEVEL = s + +// Preproccessor definitions to apply to each file compiled +GCC_PREPROCESSOR_DEFINITIONS = NDEBUG=1 + +// Whether to enable link-time optimizations (such as inlining across translation +// units) +LLVM_LTO = NO + +// Whether to only build the active architecture +ONLY_ACTIVE_ARCH = NO + +// Whether to strip debugging symbols when copying the built product to its +// final installation location +STRIP_INSTALLED_PRODUCT = YES + +// The optimization level (-Onone, -O, -Owholemodule) for the produced Swift binary +SWIFT_OPTIMIZATION_LEVEL = -Owholemodule + +// Whether to perform App Store validation checks +VALIDATE_PRODUCT = YES + diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Test.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Test.xcconfig new file mode 100755 index 0000000..2da35e8 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Configurations/Test.xcconfig @@ -0,0 +1,10 @@ +// +// This file defines the base configuration for a Test build of any project. +// This should be set at the project level for the Test configuration. +// + +#include "Debug.xcconfig" + +// Sandboxed apps can't be unit tested since they can't load some random +// external bundle. So we disable sandboxing for testing. +CODE_SIGN_ENTITLEMENTS = diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Targets/Application.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Targets/Application.xcconfig new file mode 100755 index 0000000..a91feca --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Targets/Application.xcconfig @@ -0,0 +1,12 @@ +// +// This file defines additional configuration options that are appropriate only +// for an application. Typically, you want to use a platform-specific variant +// instead. +// + +// Whether to strip out code that isn't called from anywhere +DEAD_CODE_STRIPPING = NO + +// Sets the @rpath for the application such that it can include frameworks in +// the application bundle (inside the "Frameworks" folder) +LD_RUNPATH_SEARCH_PATHS = @executable_path/../Frameworks @loader_path/../Frameworks @executable_path/Frameworks diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Targets/Framework.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Targets/Framework.xcconfig new file mode 100755 index 0000000..24ae2e5 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Targets/Framework.xcconfig @@ -0,0 +1,32 @@ +// +// This file defines additional configuration options that are appropriate only +// for a framework. Typically, you want to use a platform-specific variant +// instead. +// + +// Whether to strip out code that isn't called from anywhere +DEAD_CODE_STRIPPING = NO + +// Whether this framework should define an LLVM module +DEFINES_MODULE = YES + +// Whether function calls should be position-dependent (should always be +// disabled for library code) +GCC_DYNAMIC_NO_PIC = NO + +// Default frameworks to the name of the project, instead of any +// platform-specific target +PRODUCT_NAME = $(PROJECT_NAME) + +// Enables the framework to be included from any location as long as the +// loader’s runpath search paths includes it. For example from an application +// bundle (inside the "Frameworks" folder) or shared folder +INSTALL_PATH = @rpath +LD_DYLIB_INSTALL_NAME = @rpath/$(PRODUCT_NAME).$(WRAPPER_EXTENSION)/$(PRODUCT_NAME) +SKIP_INSTALL = YES + +// Disallows use of APIs that are not available +// to app extensions and linking to frameworks +// that have not been built with this setting enabled. +APPLICATION_EXTENSION_API_ONLY = YES + diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Targets/StaticLibrary.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Targets/StaticLibrary.xcconfig new file mode 100755 index 0000000..b3b2b87 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Base/Targets/StaticLibrary.xcconfig @@ -0,0 +1,32 @@ +// +// This file defines additional configuration options that are appropriate only +// for a static library. Typically, you want to use a platform-specific variant +// instead. +// + +// Whether to strip out code that isn't called from anywhere +DEAD_CODE_STRIPPING = NO + +// Whether to strip debugging symbols when copying resources (like included +// binaries). +// +// Overrides Release.xcconfig when used at the target level. +COPY_PHASE_STRIP = NO + +// Whether function calls should be position-dependent (should always be +// disabled for library code) +GCC_DYNAMIC_NO_PIC = NO + +// Copy headers to "include/LibraryName" in the build folder by default. This +// lets consumers use #import syntax even for static +// libraries +PUBLIC_HEADERS_FOLDER_PATH = include/$PRODUCT_NAME + +// Don't include in an xcarchive +SKIP_INSTALL = YES + +// Disallows use of APIs that are not available +// to app extensions and linking to frameworks +// that have not been built with this setting enabled. +APPLICATION_EXTENSION_API_ONLY = YES + diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-Application.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-Application.xcconfig new file mode 100755 index 0000000..2e552c7 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-Application.xcconfig @@ -0,0 +1,15 @@ +// +// This file defines additional configuration options that are appropriate only +// for an application on Mac OS X. This should be set at the target level for +// each project configuration. +// + +// Import base application settings +#include "../Base/Targets/Application.xcconfig" + +// Apply common settings specific to Mac OS X +#include "Mac-Base.xcconfig" + +// Whether function calls should be position-dependent (should always be +// disabled for library code) +GCC_DYNAMIC_NO_PIC = YES diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-Base.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-Base.xcconfig new file mode 100755 index 0000000..8fdeccc --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-Base.xcconfig @@ -0,0 +1,19 @@ +// +// This file defines additional configuration options that are appropriate only +// for Mac OS X. This file is not standalone -- it is meant to be included into +// a configuration file for a specific type of target. +// + +// Whether to combine multiple image resolutions into a multirepresentational +// TIFF +COMBINE_HIDPI_IMAGES = YES + +// Where to find embedded frameworks +LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/../Frameworks @loader_path/../Frameworks + +// The base SDK to use (if no version is specified, the latest version is +// assumed) +SDKROOT = macosx + +// Supported build architectures +VALID_ARCHS = x86_64 diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-DynamicLibrary.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-DynamicLibrary.xcconfig new file mode 100755 index 0000000..1e2a37c --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-DynamicLibrary.xcconfig @@ -0,0 +1,18 @@ +// +// This file defines additional configuration options that are appropriate only +// for a dynamic library on Mac OS X. This should be set at the target level +// for each project configuration. +// + +// Import common settings specific to Mac OS X +#include "Mac-Base.xcconfig" + +// Whether to strip out code that isn't called from anywhere +DEAD_CODE_STRIPPING = NO + +// Whether function calls should be position-dependent (should always be +// disabled for library code) +GCC_DYNAMIC_NO_PIC = NO + +// Don't include in an xcarchive +SKIP_INSTALL = YES diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-Framework.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-Framework.xcconfig new file mode 100755 index 0000000..dd98764 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-Framework.xcconfig @@ -0,0 +1,11 @@ +// +// This file defines additional configuration options that are appropriate only +// for a framework on OS X. This should be set at the target level for each +// project configuration. +// + +// Import base framework settings +#include "../Base/Targets/Framework.xcconfig" + +// Import common settings specific to Mac OS X +#include "Mac-Base.xcconfig" diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-StaticLibrary.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-StaticLibrary.xcconfig new file mode 100755 index 0000000..97d0318 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/Mac OS X/Mac-StaticLibrary.xcconfig @@ -0,0 +1,11 @@ +// +// This file defines additional configuration options that are appropriate only +// for a static library on Mac OS X. This should be set at the target level for +// each project configuration. +// + +// Import base static library settings +#include "../Base/Targets/StaticLibrary.xcconfig" + +// Apply common settings specific to Mac OS X +#include "Mac-Base.xcconfig" diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/README.md b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/README.md new file mode 100755 index 0000000..8b69024 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/README.md @@ -0,0 +1,13 @@ +This project intends to aggregate common or universal Xcode configuration settings, keeping them in hierarchial Xcode configuration files for easy modification and reuse. + +## License + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. + +In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to [unlicense.org](http://unlicense.org). diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/UpdateXCConfigs.sh b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/UpdateXCConfigs.sh new file mode 100755 index 0000000..b9a82e5 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/UpdateXCConfigs.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +set -e + +if [ "$1" == "-q" ]; then + QUIET=true + CURL_QUIET_OPT=s +else + QUIET=false + CURL_QUIET_OPT= +fi + +say() { + $QUIET || echo $* +} + +cd "$(dirname "$0")" + +say "Grabbing latest xcconfigs..." + +curl -fSL#$CURL_QUIET_OPT 'https://github.com/jspahrsummers/xcconfigs/archive/master.zip' | tar xz --strip-components=1 + +# No commit checking stuff in quiet mode +$QUIET && exit 0 + +porcelain_status=$(git status --porcelain .) +if [ -n "$porcelain_status" ]; then + printf "There were updates! Would you like to commit them [Y/n]? " + + REPLY=dummy + until [ -z "$REPLY" -o "$REPLY" == "y" -o "$REPLY" == "n" -o "$REPLY" == "Y" -o "$REPLY" == "N" ]; do + read -n1 -s + done + + [ -z "$REPLY" ] && REPLY=y + + echo $REPLY + + if [ "$REPLY" == "y" -o "$REPLY" == "Y" ]; then + git add . + git commit . -m "Update xcconfigs" + fi +fi diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-Application.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-Application.xcconfig new file mode 100755 index 0000000..a700868 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-Application.xcconfig @@ -0,0 +1,11 @@ +// +// This file defines additional configuration options that are appropriate only +// for an application on iOS. This should be set at the target level for each +// project configuration. +// + +// Import base application settings +#include "../Base/Targets/Application.xcconfig" + +// Apply common settings specific to iOS +#include "iOS-Base.xcconfig" diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-Base.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-Base.xcconfig new file mode 100755 index 0000000..fd15e35 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-Base.xcconfig @@ -0,0 +1,15 @@ +// +// This file defines additional configuration options that are appropriate only +// for iOS. This file is not standalone -- it is meant to be included into +// a configuration file for a specific type of target. +// + +// Xcode needs this to find archived headers if SKIP_INSTALL is set +HEADER_SEARCH_PATHS = $(OBJROOT)/UninstalledProducts/include + +// Where to find embedded frameworks +LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks @loader_path/Frameworks + +// The base SDK to use (if no version is specified, the latest version is +// assumed) +SDKROOT = iphoneos diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-Framework.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-Framework.xcconfig new file mode 100755 index 0000000..e538a7d --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-Framework.xcconfig @@ -0,0 +1,11 @@ +// +// This file defines additional configuration options that are appropriate only +// for a framework on iOS. This should be set at the target level for each +// project configuration. +// + +// Import base framework settings +#include "../Base/Targets/Framework.xcconfig" + +// Import common settings specific to iOS +#include "iOS-Base.xcconfig" diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-StaticLibrary.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-StaticLibrary.xcconfig new file mode 100755 index 0000000..4384570 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/iOS/iOS-StaticLibrary.xcconfig @@ -0,0 +1,14 @@ +// +// This file defines additional configuration options that are appropriate only +// for a static library on iOS. This should be set at the target level for each +// project configuration. +// + +// Import base static library settings +#include "../Base/Targets/StaticLibrary.xcconfig" + +// Apply common settings specific to iOS +#include "iOS-Base.xcconfig" + +// Supported device families (1 is iPhone, 2 is iPad) +TARGETED_DEVICE_FAMILY = 1,2 diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-Application.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-Application.xcconfig new file mode 100755 index 0000000..2998e2b --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-Application.xcconfig @@ -0,0 +1,11 @@ +// +// This file defines additional configuration options that are appropriate only +// for an application on watchOS. This should be set at the target level for +// each project configuration. +// + +// Import base application settings +#include "../Base/Targets/Application.xcconfig" + +// Apply common settings specific to watchOS +#include "tvOS-Base.xcconfig" diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-Base.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-Base.xcconfig new file mode 100755 index 0000000..d830dc9 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-Base.xcconfig @@ -0,0 +1,12 @@ +// +// This file defines additional configuration options that are appropriate only +// for watchOS. This file is not standalone -- it is meant to be included into +// a configuration file for a specific type of target. +// + +// Where to find embedded frameworks +LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks @loader_path/Frameworks + +// The base SDK to use (if no version is specified, the latest version is +// assumed) +SDKROOT = appletvos diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-Framework.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-Framework.xcconfig new file mode 100755 index 0000000..69a23e8 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-Framework.xcconfig @@ -0,0 +1,11 @@ +// +// This file defines additional configuration options that are appropriate only +// for a framework on watchOS. This should be set at the target level for each +// project configuration. +// + +// Import base framework settings +#include "../Base/Targets/Framework.xcconfig" + +// Import common settings specific to iOS +#include "tvOS-Base.xcconfig" diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-StaticLibrary.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-StaticLibrary.xcconfig new file mode 100755 index 0000000..3433fb1 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/tvOS/tvOS-StaticLibrary.xcconfig @@ -0,0 +1,14 @@ +// +// This file defines additional configuration options that are appropriate only +// for a static library on watchOS. This should be set at the target level for +// each project configuration. +// + +// Import base static library settings +#include "../Base/Targets/StaticLibrary.xcconfig" + +// Apply common settings specific to watchOS +#include "tvOS-Base.xcconfig" + +// Supported device families +TARGETED_DEVICE_FAMILY = 3 diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-Application.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-Application.xcconfig new file mode 100755 index 0000000..5d88df9 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-Application.xcconfig @@ -0,0 +1,11 @@ +// +// This file defines additional configuration options that are appropriate only +// for an application on watchOS. This should be set at the target level for +// each project configuration. +// + +// Import base application settings +#include "../Base/Targets/Application.xcconfig" + +// Apply common settings specific to watchOS +#include "watchOS-Base.xcconfig" diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-Base.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-Base.xcconfig new file mode 100755 index 0000000..aae4ca3 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-Base.xcconfig @@ -0,0 +1,12 @@ +// +// This file defines additional configuration options that are appropriate only +// for watchOS. This file is not standalone -- it is meant to be included into +// a configuration file for a specific type of target. +// + +// Where to find embedded frameworks +LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks @loader_path/Frameworks + +// The base SDK to use (if no version is specified, the latest version is +// assumed) +SDKROOT = watchos diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-Framework.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-Framework.xcconfig new file mode 100755 index 0000000..3893494 --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-Framework.xcconfig @@ -0,0 +1,11 @@ +// +// This file defines additional configuration options that are appropriate only +// for a framework on watchOS. This should be set at the target level for each +// project configuration. +// + +// Import base framework settings +#include "../Base/Targets/Framework.xcconfig" + +// Import common settings specific to iOS +#include "watchOS-Base.xcconfig" diff --git a/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-StaticLibrary.xcconfig b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-StaticLibrary.xcconfig new file mode 100755 index 0000000..1bc5b3c --- /dev/null +++ b/CrushBootstrap/Other-Sources/Configuration/jspahrsummers-xcconfigs/watchOS/watchOS-StaticLibrary.xcconfig @@ -0,0 +1,14 @@ +// +// This file defines additional configuration options that are appropriate only +// for a static library on watchOS. This should be set at the target level for +// each project configuration. +// + +// Import base static library settings +#include "../Base/Targets/StaticLibrary.xcconfig" + +// Apply common settings specific to watchOS +#include "watchOS-Base.xcconfig" + +// Supported device families +TARGETED_DEVICE_FAMILY = 4 diff --git a/CrushBootstrap/Other-Sources/CrushBootstrap-Debug.xcconfig b/CrushBootstrap/Other-Sources/CrushBootstrap-Debug.xcconfig deleted file mode 100644 index 63ef49d..0000000 --- a/CrushBootstrap/Other-Sources/CrushBootstrap-Debug.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -// Build settings for debug builds. - -#include "../../External/xcconfigs/iOS/iOS-Application.xcconfig" -#include "../../External/xcconfigs/Base/Configurations/Debug.xcconfig" -#include "CrushBootstrap.xcconfig" diff --git a/CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist b/CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist index 622c431..67673cf 100644 --- a/CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist +++ b/CrushBootstrap/Other-Sources/CrushBootstrap-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.crushlovely.${PRODUCT_NAME:rfc1034identifier:lower}${BUNDLE_ID_SUFFIX} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/CrushBootstrap/Other-Sources/CrushBootstrap-Profile.xcconfig b/CrushBootstrap/Other-Sources/CrushBootstrap-Profile.xcconfig deleted file mode 100644 index f6f5616..0000000 --- a/CrushBootstrap/Other-Sources/CrushBootstrap-Profile.xcconfig +++ /dev/null @@ -1,7 +0,0 @@ -// Build settings for profile builds. - -#include "../../External/xcconfigs/iOS/iOS-Application.xcconfig" -#include "../../External/xcconfigs/Base/Configurations/Profile.xcconfig" -#include "CrushBootstrap.xcconfig" - -ONLY_ACTIVE_ARCH = YES diff --git a/CrushBootstrap/Other-Sources/CrushBootstrap-Release.xcconfig b/CrushBootstrap/Other-Sources/CrushBootstrap-Release.xcconfig deleted file mode 100644 index bdbd174..0000000 --- a/CrushBootstrap/Other-Sources/CrushBootstrap-Release.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -// Build settings for ad-hoc and app store builds. - -#include "../../External/xcconfigs/iOS/iOS-Application.xcconfig" -#include "../../External/xcconfigs/Base/Configurations/Release.xcconfig" -#include "CrushBootstrap.xcconfig" diff --git a/CrushBootstrap/Other-Sources/CrushBootstrap-Test.xcconfig b/CrushBootstrap/Other-Sources/CrushBootstrap-Test.xcconfig deleted file mode 100644 index 01573d2..0000000 --- a/CrushBootstrap/Other-Sources/CrushBootstrap-Test.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -// Build settings for testing builds. - -#include "../../External/xcconfigs/iOS/iOS-Application.xcconfig" -#include "../../External/xcconfigs/Base/Configurations/Test.xcconfig" -#include "CrushBootstrap.xcconfig" - -// Instrument for code coverage: -GCC_GENERATE_TEST_COVERAGE_FILES = YES -GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES diff --git a/CrushBootstrap/Resources/LaunchScreen.xib b/CrushBootstrap/Resources/LaunchScreen.xib index 3335ddd..e6ab74b 100644 --- a/CrushBootstrap/Resources/LaunchScreen.xib +++ b/CrushBootstrap/Resources/LaunchScreen.xib @@ -1,7 +1,8 @@ - + - + + @@ -18,18 +19,21 @@ + + diff --git a/Podfile b/Podfile index cd69b18..fa5d127 100644 --- a/Podfile +++ b/Podfile @@ -2,7 +2,7 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' # Crush Utility Belt -pod 'Sidecar', :path => '~/dev/Sidecar' +pod 'Sidecar', '~> 1.0' # Logging & Analytics pod 'CocoaLumberjack', '~> 2.0' diff --git a/Specs/Specs-Info.plist b/Specs/Specs-Info.plist index 0418f1a..169b6f7 100644 --- a/Specs/Specs-Info.plist +++ b/Specs/Specs-Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.crushlovely.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType diff --git a/bootstrap-scripts/tiramisu-expect b/bootstrap-scripts/tiramisu-expect index 6b789d5..ba5cb10 100755 --- a/bootstrap-scripts/tiramisu-expect +++ b/bootstrap-scripts/tiramisu-expect @@ -27,8 +27,5 @@ send -h "n\r" set timeout 500 -expect -re "Would you like to set up .*? " -send -h "n\r" - expect -re "Would you like to open *? " send -h "n\r" diff --git a/tiramisu b/tiramisu index 5274440..a01735f 100755 --- a/tiramisu +++ b/tiramisu @@ -72,7 +72,7 @@ module AmaroUtils has_changes = anything_to_commit? if error_if_nothing_to_commit && !has_changes - raise AmaroError('Repository Error', 'There should be something to commit at this point, but there\'s not!') + raise AmaroError.new('Repository Error', 'There should be something to commit at this point, but there\'s not!') elsif has_changes sh("git commit -q -m '[Amaro] #{message}'") end @@ -84,7 +84,11 @@ module AmaroUtils end def task(message, failure_is_fatal: true) - print "#{message}...".blue.bold + print "#{message}... ".blue.bold + system('tput sc') + + recall_cursor = `tput rc` + clear_to_end_of_line = `tput el` chars = %w(⣻ ⢿ ⡿ ⣟ ⣯ ⣷ ⣾ ⣽) bg_thread = Thread.new do @@ -95,7 +99,7 @@ module AmaroUtils loop do sleep 0.1 i = (i + 1) % chars.length - print "\b#{chars[i]}" + print "#{recall_cursor}#{chars[i]}#{clear_to_end_of_line}" end ensure system('tput cnorm') @@ -103,25 +107,16 @@ module AmaroUtils end begin - bg_thread.run + bg_thread.run if STDIN.isatty && !ENV['AMARO_EXPECT'] yield rescue AmaroError => e - puts "\b 💀" + puts "#{recall_cursor}💀#{clear_to_end_of_line}" die(e.message, e.details, :fatal => failure_is_fatal) else - puts "\b 👍 " + puts "#{recall_cursor}👍#{clear_to_end_of_line}" ensure bg_thread.kill end - - # begin - # yield - # rescue AmaroError => e - # puts ' 💀' - # die(e.message, e.details, :fatal => failure_is_fatal) - # else - # puts ' 👍' - # end end def replace_in_files(file_list, pattern, replacement) @@ -423,7 +418,7 @@ class Bootstrapper REPLACEMENT_ORGANIZATION = 'Crush & Lovely' REPLACEMENT_DOMAIN = 'com.crushlovely' - BOOTSTRAP_REPO = 'git://github.com/crushlovely/Amaro.git' + BOOTSTRAP_REPO = 'https://github.com/crushlovely/Amaro.git' DEFAULT_BOOTSTRAP_BRANCH = 'master' BOOTSTRAP_WEBSITE = 'https://github.com/crushlovely/Amaro' @@ -434,7 +429,8 @@ class Bootstrapper init_git rename_files update_contents - init_externals + update_xcconfigs + install_pods remove_bootstrap_detritus end @@ -448,10 +444,14 @@ class Bootstrapper sh('which -s pod', 'CocoaPods is not installed. See http://cocoapods.org/#install', :show_output_on_error => false) pod_version = sh('pod --version', 'Error getting CocoaPods version. Make sure the pod binary is functional.').strip - version_is_good = Gem::Dependency.new('pod', '>0.34.0').match?('pod', pod_version) - raise AmaroError.new("Amaro requires version 0.34.1 or later of CocoaPods. You have version #{pod_version}", 'Running "gem update cocoapods" should fix this.') unless version_is_good + pod_version_is_good = Gem::Dependency.new('pod', '>0.34.0').match?('pod', pod_version) + raise AmaroError.new("Amaro requires version 0.34.1 or later of CocoaPods. You have version #{pod_version}", 'Running "gem update cocoapods" should fix this.') unless pod_version_is_good + + dev_tools_path = sh('xcode-select -p', 'The Xcode command line tools don\'t seem to be installed. Running "xcode-select --install" should fix that.', :show_output_on_error => false).strip + xcode_version = sh("/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' '#{dev_tools_path}/../Info.plist'").strip + xcode_version_is_good = Gem::Dependency.new('xcode', '~>7.0').match?('xcode', xcode_version) + raise AmaroError.new("Amaro requires the default Xcode command line tools to point to Xcode 7.0 or later. Yours point to #{xcode_version}.", 'Install Xcode 7.0 or later, and run "xcode-select" to point to that.') unless xcode_version_is_good - sh('xcode-select -p', 'The Xcode command line tools don\'t seem to be installed. Running "xcode-select --install" should fix that.', :show_output_on_error => false) if ARGV.empty? @source_path = nil @@ -468,7 +468,7 @@ class Bootstrapper def puts_source_description if @source_path.nil? - puts 'Repository: '.gray.bold + Bootstrapper::BOOTSTRAP_REPO.gray + puts 'Repository: '.gray.bold + BOOTSTRAP_REPO.gray puts 'Branch: '.gray.bold + @bootstrap_branch.gray else puts 'Using local clone: '.gray.bold + @source_path.gray @@ -516,7 +516,7 @@ class Bootstrapper task 'Cleaning up' do # See issue #21 - sh("git remote rm bootstrap") + sh('git remote rm bootstrap') end end @@ -525,7 +525,6 @@ class Bootstrapper # Note the trailing / appended to source_path. Otherwise rsync will put # a copy of the directory inside the destination, rather than a copy of its contents. sh("rsync -a '#{@source_path}/' . --exclude=/.git --exclude=/README.md") - sh("cp -R '#{@source_path}/.git/modules' .git/") commit 'Bootstrapping' sh('git clean -xdf') # Remove .gitignored files and directories @@ -582,14 +581,30 @@ class Bootstrapper end end - def init_externals + def update_xcconfigs + task 'Pulling latest xcconfigs' do + sh("'%{project_name}/Other-Sources/Configuration/jspahrsummers-xcconfigs/UpdateXCConfigs.sh'" % options) + end + + if anything_to_commit? + task 'Committing' do + commit 'Updated xcconfigs' + end + end + end + + def install_pods edit 'Podfile' if YesNoPrompt.run!('Would you like to edit your Podfile?', :default => false) - task 'Initializing submodules and CocoaPods' do - sh('git submodule -q update --init --recursive') - sh("git submodule --quiet foreach 'git checkout -q master'") + if anything_to_commit? + task 'Committing' do + commit 'Modified Podfile' + end + end + + task 'Installing CocoaPods' do sh('pod install --silent') - commit 'Install pods and submodules' + commit 'Install pods and update subtrees' end end