diff --git a/.gitignore b/.gitignore index f067d67..68c9f62 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,13 @@ -# OS X +# Mac OS X .DS_Store # Xcode + +## Build generated build/ +DerivedData + +## Various settings *.pbxuser !default.pbxuser *.mode1v3 @@ -12,22 +17,23 @@ build/ *.perspectivev3 !default.perspectivev3 xcuserdata + +## Other *.xccheckout -profile *.moved-aside -DerivedData +*.xcuserstate +*.xcscmblueprint + +## Obj-C/Swift specific *.hmap *.ipa -# Bundler -.bundle - -Carthage -# We recommend against adding the Pods directory to your .gitignore. However -# you should judge for yourself, the pros and cons are mentioned at: -# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control -# -# Note: if you ignore the Pods directory, make sure to uncomment -# `pod install` in .travis.yml -# -# Pods/ +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +.build/ + +# Carthage +Carthage/Build \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9e1a0ad..0000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -# references: -# * http://www.objc.io/issue-6/travis-ci.html -# * https://github.com/supermarin/xcpretty#usage - -language: objective-c -# cache: cocoapods -# podfile: Example/Podfile -# before_install: -# - gem install cocoapods # Since Travis is not always on latest version -# - pod install --project-directory=Example -script: -- set -o pipefail && xcodebuild test -workspace Example/SwiftCompressor.xcworkspace -scheme SwiftCompressor-Example -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO | xcpretty -- pod lib lint diff --git a/Example/Podfile.lock b/Example/Podfile.lock new file mode 100644 index 0000000..96ce8a9 --- /dev/null +++ b/Example/Podfile.lock @@ -0,0 +1,14 @@ +PODS: + - SwiftCompressor (0.1.0) + +DEPENDENCIES: + - SwiftCompressor (from `../`) + +EXTERNAL SOURCES: + SwiftCompressor: + :path: "../" + +SPEC CHECKSUMS: + SwiftCompressor: 614c5343250571586e7adca83ab775e7f300b870 + +COCOAPODS: 0.39.0 diff --git a/Example/Pods/Local Podspecs/SwiftCompressor.podspec.json b/Example/Pods/Local Podspecs/SwiftCompressor.podspec.json new file mode 100644 index 0000000..e1dc481 --- /dev/null +++ b/Example/Pods/Local Podspecs/SwiftCompressor.podspec.json @@ -0,0 +1,25 @@ +{ + "name": "SwiftCompressor", + "version": "0.1.0", + "summary": "A short description of SwiftCompressor.", + "description": "", + "homepage": "https://github.com//SwiftCompressor", + "license": "MIT", + "authors": { + "Piotr Sochalewski": "piotr.sochalewski@droidsonroids.pl" + }, + "source": { + "git": "https://github.com//SwiftCompressor.git", + "tag": "0.1.0" + }, + "platforms": { + "ios": "8.0" + }, + "requires_arc": true, + "source_files": "Pod/Classes/**/*", + "resource_bundles": { + "SwiftCompressor": [ + "Pod/Assets/*.png" + ] + } +} diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock new file mode 100644 index 0000000..96ce8a9 --- /dev/null +++ b/Example/Pods/Manifest.lock @@ -0,0 +1,14 @@ +PODS: + - SwiftCompressor (0.1.0) + +DEPENDENCIES: + - SwiftCompressor (from `../`) + +EXTERNAL SOURCES: + SwiftCompressor: + :path: "../" + +SPEC CHECKSUMS: + SwiftCompressor: 614c5343250571586e7adca83ab775e7f300b870 + +COCOAPODS: 0.39.0 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..922b8e4 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,737 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 34A5320E27FEECA1DE36D576048C5E28 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */; }; + 39F77AEFD8A67D94FE5293227BEB755D /* SwiftCompressor.bundle in Resources */ = {isa = PBXBuildFile; fileRef = AE46AAA330B61D4CD4A5BC510A94A6E0 /* SwiftCompressor.bundle */; }; + 414F655DCA5DACC5BD2C72981C2573B6 /* Pods-SwiftCompressor_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AB3EF6EE706D6201B54E9F5E2B3C11CE /* Pods-SwiftCompressor_Example-dummy.m */; }; + 50FE16BFA8CE7DDC7C0559C678A37026 /* Pods-SwiftCompressor_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DCC4BE66C97ED8A3054964A6C4057BD5 /* Pods-SwiftCompressor_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 71B3FA9022CB4D24995E902368825D5B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */; }; + 735D77A2DB5F3CAA75E04084B92BB70A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */; }; + 855D7081D0758CDBC8FAF19C9FB9EC92 /* Pods-SwiftCompressor_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F193137091A73C07BC62997D7D50359 /* Pods-SwiftCompressor_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8C07771C161BD7029E9FA39749DBA21C /* Pods-SwiftCompressor_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B7AEF95A1CBC6592C96AF68CEAC70BE5 /* Pods-SwiftCompressor_Tests-dummy.m */; }; + AE6D77381C7DD197007D5ECC /* NSData+Compressor.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6D77371C7DD197007D5ECC /* NSData+Compressor.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 4E337E2D4718C297D4401FAC4C497753 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 170A9DF2A275515788C3E999D8C82BD8; + remoteInfo = SwiftCompressor; + }; + 6ABAB69D530172B4D90582011BC39C3B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 170A9DF2A275515788C3E999D8C82BD8; + remoteInfo = SwiftCompressor; + }; + D5BE0EE89A1876CA5E4336DF92ED4D25 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 36953B69C5FCBB8495FEBE8CB9D7DB99; + remoteInfo = "SwiftCompressor-SwiftCompressor"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0BBCAE9523D652E4248288FDCB3F1E8E /* Pods_SwiftCompressor_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftCompressor_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1FCF0DE3DB0D781254D7DABC0A9A6058 /* Pods-SwiftCompressor_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwiftCompressor_Example.modulemap"; sourceTree = ""; }; + 2470168D6CF45024FC9DBB21796DA0CA /* Pods-SwiftCompressor_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftCompressor_Tests-acknowledgements.plist"; sourceTree = ""; }; + 2C94DE81E1DB8F60B04E2599D1CCB8F3 /* Pods-SwiftCompressor_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwiftCompressor_Example-acknowledgements.markdown"; sourceTree = ""; }; + 3991F56D56B51FA15217A9608A30DAD1 /* SwiftCompressor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftCompressor.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 3F3416E8C520C9822ABAB86D7393CF33 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 60624DF63F5CDD53A42BD59E3887628B /* Pods-SwiftCompressor_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwiftCompressor_Tests.modulemap"; sourceTree = ""; }; + 60B0266F9D5524F9D6BF231F5ED1F076 /* Pods-SwiftCompressor_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwiftCompressor_Example-acknowledgements.plist"; sourceTree = ""; }; + 7236FB310A9F2F338377CBCDBC8C1C59 /* Pods-SwiftCompressor_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftCompressor_Example-frameworks.sh"; sourceTree = ""; }; + 7F193137091A73C07BC62997D7D50359 /* Pods-SwiftCompressor_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwiftCompressor_Example-umbrella.h"; sourceTree = ""; }; + 8B73DE12E74CF23602C423ED255687D9 /* Pods-SwiftCompressor_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftCompressor_Tests-frameworks.sh"; sourceTree = ""; }; + 8BCA0D3E6623B3E8C1905B4A648C009E /* Pods-SwiftCompressor_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftCompressor_Example.debug.xcconfig"; sourceTree = ""; }; + 9D3F2692B0513BD5A5E46E3618DAAFF0 /* Pods-SwiftCompressor_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwiftCompressor_Tests-acknowledgements.markdown"; sourceTree = ""; }; + AB3EF6EE706D6201B54E9F5E2B3C11CE /* Pods-SwiftCompressor_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwiftCompressor_Example-dummy.m"; sourceTree = ""; }; + AE46AAA330B61D4CD4A5BC510A94A6E0 /* SwiftCompressor.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftCompressor.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + AE6D77371C7DD197007D5ECC /* NSData+Compressor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSData+Compressor.swift"; sourceTree = ""; }; + AFE488D0CBB8133247E5E78097356BE9 /* Pods_SwiftCompressor_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftCompressor_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B7AEF95A1CBC6592C96AF68CEAC70BE5 /* Pods-SwiftCompressor_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwiftCompressor_Tests-dummy.m"; sourceTree = ""; }; + B92C45B8B19DAB3A0F937D785C57CD60 /* Pods-SwiftCompressor_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftCompressor_Tests.release.xcconfig"; sourceTree = ""; }; + BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + D78A7F47067DE0BF6C2BA18652D64F79 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D98C1D043F13192CEB14631416DBF6EB /* Pods-SwiftCompressor_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftCompressor_Example-resources.sh"; sourceTree = ""; }; + DCC4BE66C97ED8A3054964A6C4057BD5 /* Pods-SwiftCompressor_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwiftCompressor_Tests-umbrella.h"; sourceTree = ""; }; + E7A54F41F5DEBC25AA67073F43240475 /* Pods-SwiftCompressor_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftCompressor_Tests.debug.xcconfig"; sourceTree = ""; }; + ED162AADB051E24D0719E303FDDD822C /* Pods-SwiftCompressor_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwiftCompressor_Tests-resources.sh"; sourceTree = ""; }; + EDA9656CEE5D2BEB0843A751A30361F5 /* Pods-SwiftCompressor_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwiftCompressor_Example.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 572276C0FD5C83314D0F372DB560DB17 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 71B3FA9022CB4D24995E902368825D5B /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6053F57C2CAA6EEE6187865BC4142995 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 735D77A2DB5F3CAA75E04084B92BB70A /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7119E5356AB343FABFA31A29C85E5F89 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 34A5320E27FEECA1DE36D576048C5E28 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9EE6E45AE5303B3E3DAEEEF2119D788E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 63B1A2907A6145F7FAEF851023666679 /* Pods-SwiftCompressor_Tests */ = { + isa = PBXGroup; + children = ( + D78A7F47067DE0BF6C2BA18652D64F79 /* Info.plist */, + 60624DF63F5CDD53A42BD59E3887628B /* Pods-SwiftCompressor_Tests.modulemap */, + 9D3F2692B0513BD5A5E46E3618DAAFF0 /* Pods-SwiftCompressor_Tests-acknowledgements.markdown */, + 2470168D6CF45024FC9DBB21796DA0CA /* Pods-SwiftCompressor_Tests-acknowledgements.plist */, + B7AEF95A1CBC6592C96AF68CEAC70BE5 /* Pods-SwiftCompressor_Tests-dummy.m */, + 8B73DE12E74CF23602C423ED255687D9 /* Pods-SwiftCompressor_Tests-frameworks.sh */, + ED162AADB051E24D0719E303FDDD822C /* Pods-SwiftCompressor_Tests-resources.sh */, + DCC4BE66C97ED8A3054964A6C4057BD5 /* Pods-SwiftCompressor_Tests-umbrella.h */, + E7A54F41F5DEBC25AA67073F43240475 /* Pods-SwiftCompressor_Tests.debug.xcconfig */, + B92C45B8B19DAB3A0F937D785C57CD60 /* Pods-SwiftCompressor_Tests.release.xcconfig */, + ); + name = "Pods-SwiftCompressor_Tests"; + path = "Target Support Files/Pods-SwiftCompressor_Tests"; + sourceTree = ""; + }; + 6A492ED78FD97A5CAC43FF43DEF23949 /* Products */ = { + isa = PBXGroup; + children = ( + AFE488D0CBB8133247E5E78097356BE9 /* Pods_SwiftCompressor_Example.framework */, + 0BBCAE9523D652E4248288FDCB3F1E8E /* Pods_SwiftCompressor_Tests.framework */, + AE46AAA330B61D4CD4A5BC510A94A6E0 /* SwiftCompressor.bundle */, + 3991F56D56B51FA15217A9608A30DAD1 /* SwiftCompressor.framework */, + ); + name = Products; + sourceTree = ""; + }; + 7DB346D0F39D3F0E887471402A8071AB = { + isa = PBXGroup; + children = ( + BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, + 818FD705FACFB8C324B42DEF9CCDECDD /* Development Pods */, + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, + 6A492ED78FD97A5CAC43FF43DEF23949 /* Products */, + FB5427D13D5DBA044B7A295712F8A8B1 /* Targets Support Files */, + ); + sourceTree = ""; + }; + 818FD705FACFB8C324B42DEF9CCDECDD /* Development Pods */ = { + isa = PBXGroup; + children = ( + F061B32C658E4712BC867AA95779CBE9 /* SwiftCompressor */, + ); + name = "Development Pods"; + sourceTree = ""; + }; + BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { + isa = PBXGroup; + children = ( + BF6342C8B29F4CEEA088EFF7AB4DE362 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + BF6342C8B29F4CEEA088EFF7AB4DE362 /* iOS */ = { + isa = PBXGroup; + children = ( + 3E4E89230EF59BC255123B67864ACF77 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + F061B32C658E4712BC867AA95779CBE9 /* SwiftCompressor */ = { + isa = PBXGroup; + children = ( + AE6D77371C7DD197007D5ECC /* NSData+Compressor.swift */, + ); + name = SwiftCompressor; + path = ../..; + sourceTree = ""; + }; + F8254BAD5B1F22DBA25C820BA26281AB /* Pods-SwiftCompressor_Example */ = { + isa = PBXGroup; + children = ( + 3F3416E8C520C9822ABAB86D7393CF33 /* Info.plist */, + 1FCF0DE3DB0D781254D7DABC0A9A6058 /* Pods-SwiftCompressor_Example.modulemap */, + 2C94DE81E1DB8F60B04E2599D1CCB8F3 /* Pods-SwiftCompressor_Example-acknowledgements.markdown */, + 60B0266F9D5524F9D6BF231F5ED1F076 /* Pods-SwiftCompressor_Example-acknowledgements.plist */, + AB3EF6EE706D6201B54E9F5E2B3C11CE /* Pods-SwiftCompressor_Example-dummy.m */, + 7236FB310A9F2F338377CBCDBC8C1C59 /* Pods-SwiftCompressor_Example-frameworks.sh */, + D98C1D043F13192CEB14631416DBF6EB /* Pods-SwiftCompressor_Example-resources.sh */, + 7F193137091A73C07BC62997D7D50359 /* Pods-SwiftCompressor_Example-umbrella.h */, + 8BCA0D3E6623B3E8C1905B4A648C009E /* Pods-SwiftCompressor_Example.debug.xcconfig */, + EDA9656CEE5D2BEB0843A751A30361F5 /* Pods-SwiftCompressor_Example.release.xcconfig */, + ); + name = "Pods-SwiftCompressor_Example"; + path = "Target Support Files/Pods-SwiftCompressor_Example"; + sourceTree = ""; + }; + FB5427D13D5DBA044B7A295712F8A8B1 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + F8254BAD5B1F22DBA25C820BA26281AB /* Pods-SwiftCompressor_Example */, + 63B1A2907A6145F7FAEF851023666679 /* Pods-SwiftCompressor_Tests */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 66995A35889AC7D0EEAB69852B5F01B1 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 50FE16BFA8CE7DDC7C0559C678A37026 /* Pods-SwiftCompressor_Tests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9BEBC1FB769EF693445F26C14C8FA35D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BED118C2EF21205100C4E1F54EC1D603 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 855D7081D0758CDBC8FAF19C9FB9EC92 /* Pods-SwiftCompressor_Example-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 170A9DF2A275515788C3E999D8C82BD8 /* SwiftCompressor */ = { + isa = PBXNativeTarget; + buildConfigurationList = CCD174E4FAC1825D1EC5F74E6F942700 /* Build configuration list for PBXNativeTarget "SwiftCompressor" */; + buildPhases = ( + 1D01BFC98C7703A540C99BD4F2AFE02A /* Sources */, + 6053F57C2CAA6EEE6187865BC4142995 /* Frameworks */, + 1F8CF5F3A4C4DC5A8B2C913C3C2E399D /* Resources */, + 9BEBC1FB769EF693445F26C14C8FA35D /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 0B9807E4A8C808671C7F6CE398942094 /* PBXTargetDependency */, + ); + name = SwiftCompressor; + productName = SwiftCompressor; + productReference = 3991F56D56B51FA15217A9608A30DAD1 /* SwiftCompressor.framework */; + productType = "com.apple.product-type.framework"; + }; + 36953B69C5FCBB8495FEBE8CB9D7DB99 /* SwiftCompressor-SwiftCompressor */ = { + isa = PBXNativeTarget; + buildConfigurationList = 92ED1C82912BC85AC17EDBA9D080BD71 /* Build configuration list for PBXNativeTarget "SwiftCompressor-SwiftCompressor" */; + buildPhases = ( + C81D21DD7E1E759E1B3DB04CEF551F28 /* Sources */, + 9EE6E45AE5303B3E3DAEEEF2119D788E /* Frameworks */, + 7E8CAB5B1B23BD33F32BBF1853E1FE45 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SwiftCompressor-SwiftCompressor"; + productName = "SwiftCompressor-SwiftCompressor"; + productReference = AE46AAA330B61D4CD4A5BC510A94A6E0 /* SwiftCompressor.bundle */; + productType = "com.apple.product-type.bundle"; + }; + 8D12F15E989E0B2232A8991FFD46D718 /* Pods-SwiftCompressor_Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B8E08446AADAB0942DD300E290C151DA /* Build configuration list for PBXNativeTarget "Pods-SwiftCompressor_Tests" */; + buildPhases = ( + 2EF4AF99AD198252C7A919DB3E7EDC63 /* Sources */, + 7119E5356AB343FABFA31A29C85E5F89 /* Frameworks */, + 66995A35889AC7D0EEAB69852B5F01B1 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 900ADE20763F86F452B9D28190E525E1 /* PBXTargetDependency */, + ); + name = "Pods-SwiftCompressor_Tests"; + productName = "Pods-SwiftCompressor_Tests"; + productReference = 0BBCAE9523D652E4248288FDCB3F1E8E /* Pods_SwiftCompressor_Tests.framework */; + productType = "com.apple.product-type.framework"; + }; + D3C1B357F41E9528E976A53C411ADD5B /* Pods-SwiftCompressor_Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = BFB1B0943A518006CC80AFBF24D6DD7E /* Build configuration list for PBXNativeTarget "Pods-SwiftCompressor_Example" */; + buildPhases = ( + 663019F9BF0173DCA55C6E0CAA69EE32 /* Sources */, + 572276C0FD5C83314D0F372DB560DB17 /* Frameworks */, + BED118C2EF21205100C4E1F54EC1D603 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 31A6ECD379FE2893A02A0AE8E0A51217 /* PBXTargetDependency */, + ); + name = "Pods-SwiftCompressor_Example"; + productName = "Pods-SwiftCompressor_Example"; + productReference = AFE488D0CBB8133247E5E78097356BE9 /* Pods_SwiftCompressor_Example.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0720; + LastUpgradeCheck = 0700; + }; + buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7DB346D0F39D3F0E887471402A8071AB; + productRefGroup = 6A492ED78FD97A5CAC43FF43DEF23949 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D3C1B357F41E9528E976A53C411ADD5B /* Pods-SwiftCompressor_Example */, + 8D12F15E989E0B2232A8991FFD46D718 /* Pods-SwiftCompressor_Tests */, + 170A9DF2A275515788C3E999D8C82BD8 /* SwiftCompressor */, + 36953B69C5FCBB8495FEBE8CB9D7DB99 /* SwiftCompressor-SwiftCompressor */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1F8CF5F3A4C4DC5A8B2C913C3C2E399D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 39F77AEFD8A67D94FE5293227BEB755D /* SwiftCompressor.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7E8CAB5B1B23BD33F32BBF1853E1FE45 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1D01BFC98C7703A540C99BD4F2AFE02A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2EF4AF99AD198252C7A919DB3E7EDC63 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8C07771C161BD7029E9FA39749DBA21C /* Pods-SwiftCompressor_Tests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 663019F9BF0173DCA55C6E0CAA69EE32 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 414F655DCA5DACC5BD2C72981C2573B6 /* Pods-SwiftCompressor_Example-dummy.m in Sources */, + AE6D77381C7DD197007D5ECC /* NSData+Compressor.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C81D21DD7E1E759E1B3DB04CEF551F28 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 0B9807E4A8C808671C7F6CE398942094 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "SwiftCompressor-SwiftCompressor"; + target = 36953B69C5FCBB8495FEBE8CB9D7DB99 /* SwiftCompressor-SwiftCompressor */; + targetProxy = D5BE0EE89A1876CA5E4336DF92ED4D25 /* PBXContainerItemProxy */; + }; + 31A6ECD379FE2893A02A0AE8E0A51217 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SwiftCompressor; + target = 170A9DF2A275515788C3E999D8C82BD8 /* SwiftCompressor */; + targetProxy = 4E337E2D4718C297D4401FAC4C497753 /* PBXContainerItemProxy */; + }; + 900ADE20763F86F452B9D28190E525E1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SwiftCompressor; + target = 170A9DF2A275515788C3E999D8C82BD8 /* SwiftCompressor */; + targetProxy = 6ABAB69D530172B4D90582011BC39C3B /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 10DE1947DAC0ED28F6C0A9F9BD75D546 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 12763BCA74B91BBD8674AEE775EAC6BA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + PRODUCT_NAME = SwiftCompressor; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 1C1B99D18D37EE89373CD167DBDE4064 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B92C45B8B19DAB3A0F937D785C57CD60 /* Pods-SwiftCompressor_Tests.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + INFOPLIST_FILE = "Target Support Files/Pods-SwiftCompressor_Tests/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_SwiftCompressor_Tests; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 3E2E95DA8C57329C2B77D6578941B0B0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8BCA0D3E6623B3E8C1905B4A648C009E /* Pods-SwiftCompressor_Example.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + INFOPLIST_FILE = "Target Support Files/Pods-SwiftCompressor_Example/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_SwiftCompressor_Example; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 552D02D5BA751AC2E8790D2811D496CA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + ONLY_ACTIVE_ARCH = YES; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + 578548222097EA31BB92B3E12BD15E63 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E7A54F41F5DEBC25AA67073F43240475 /* Pods-SwiftCompressor_Tests.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + INFOPLIST_FILE = "Target Support Files/Pods-SwiftCompressor_Tests/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_SwiftCompressor_Tests; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B4A43F0B1A482C8AEC57446D45836935 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + PRODUCT_NAME = SwiftCompressor; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + BC38E31C66A51DA05D2CC082FD947D77 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/SwiftCompressor/SwiftCompressor-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwiftCompressor/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SwiftCompressor/SwiftCompressor.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = SwiftCompressor; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + C2DEE576CEAEA3FE00AE7501379CFBA1 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EDA9656CEE5D2BEB0843A751A30361F5 /* Pods-SwiftCompressor_Example.release.xcconfig */; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + INFOPLIST_FILE = "Target Support Files/Pods-SwiftCompressor_Example/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_SwiftCompressor_Example; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + E7EDE08A65D3DAAAF40EC07348867692 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/SwiftCompressor/SwiftCompressor-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwiftCompressor/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SwiftCompressor/SwiftCompressor.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = SwiftCompressor; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 552D02D5BA751AC2E8790D2811D496CA /* Debug */, + 10DE1947DAC0ED28F6C0A9F9BD75D546 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 92ED1C82912BC85AC17EDBA9D080BD71 /* Build configuration list for PBXNativeTarget "SwiftCompressor-SwiftCompressor" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 12763BCA74B91BBD8674AEE775EAC6BA /* Debug */, + B4A43F0B1A482C8AEC57446D45836935 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B8E08446AADAB0942DD300E290C151DA /* Build configuration list for PBXNativeTarget "Pods-SwiftCompressor_Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 578548222097EA31BB92B3E12BD15E63 /* Debug */, + 1C1B99D18D37EE89373CD167DBDE4064 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BFB1B0943A518006CC80AFBF24D6DD7E /* Build configuration list for PBXNativeTarget "Pods-SwiftCompressor_Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E2E95DA8C57329C2B77D6578941B0B0 /* Debug */, + C2DEE576CEAEA3FE00AE7501379CFBA1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + CCD174E4FAC1825D1EC5F74E6F942700 /* Build configuration list for PBXNativeTarget "SwiftCompressor" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E7EDE08A65D3DAAAF40EC07348867692 /* Debug */, + BC38E31C66A51DA05D2CC082FD947D77 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; +} diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/SwiftCompressor.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/SwiftCompressor.xcscheme new file mode 100644 index 0000000..323e2c9 --- /dev/null +++ b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/SwiftCompressor.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Info.plist b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Info.plist new file mode 100644 index 0000000..6974542 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-acknowledgements.markdown new file mode 100644 index 0000000..352d6b0 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-acknowledgements.markdown @@ -0,0 +1,26 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## SwiftCompressor + +Copyright (c) 2016 Piotr Sochalewski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +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 OR COPYRIGHT HOLDERS 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. + +Generated by CocoaPods - http://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-acknowledgements.plist new file mode 100644 index 0000000..ce3ffde --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-acknowledgements.plist @@ -0,0 +1,56 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2016 Piotr Sochalewski <piotr.sochalewski@droidsonroids.pl> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +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 OR COPYRIGHT HOLDERS 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. + + Title + SwiftCompressor + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - http://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-dummy.m b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-dummy.m new file mode 100644 index 0000000..c7afdf0 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwiftCompressor_Example : NSObject +@end +@implementation PodsDummy_Pods_SwiftCompressor_Example +@end diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-frameworks.sh new file mode 100755 index 0000000..8c55037 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-frameworks.sh @@ -0,0 +1,91 @@ +#!/bin/sh +set -e + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # use filter instead of exclude so missing patterns dont' throw errors + echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current file + archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + stripped="" + for arch in $archs; do + if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "Pods-SwiftCompressor_Example/SwiftCompressor.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "Pods-SwiftCompressor_Example/SwiftCompressor.framework" +fi diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-resources.sh b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-resources.sh new file mode 100755 index 0000000..16774fb --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-resources.sh @@ -0,0 +1,95 @@ +#!/bin/sh +set -e + +mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +realpath() { + DIRECTORY="$(cd "${1%/*}" && pwd)" + FILENAME="${1##*/}" + echo "$DIRECTORY/$FILENAME" +} + +install_resource() +{ + case $1 in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.framework) + echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" + xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + /*) + echo "$1" + echo "$1" >> "$RESOURCES_TO_COPY" + ;; + *) + echo "${PODS_ROOT}/$1" + echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; + esac + + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-umbrella.h b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-umbrella.h new file mode 100644 index 0000000..f8d677a --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double Pods_SwiftCompressor_ExampleVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_SwiftCompressor_ExampleVersionString[]; + diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example.debug.xcconfig new file mode 100644 index 0000000..548a907 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example.debug.xcconfig @@ -0,0 +1,8 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/SwiftCompressor.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "SwiftCompressor" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwiftCompressor_Example +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example.modulemap b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example.modulemap new file mode 100644 index 0000000..72cacbe --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example.modulemap @@ -0,0 +1,6 @@ +framework module Pods_SwiftCompressor_Example { + umbrella header "Pods-SwiftCompressor_Example-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example.release.xcconfig new file mode 100644 index 0000000..548a907 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Example/Pods-SwiftCompressor_Example.release.xcconfig @@ -0,0 +1,8 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/SwiftCompressor.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "SwiftCompressor" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwiftCompressor_Example +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Info.plist b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Info.plist new file mode 100644 index 0000000..6974542 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-acknowledgements.markdown new file mode 100644 index 0000000..352d6b0 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-acknowledgements.markdown @@ -0,0 +1,26 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## SwiftCompressor + +Copyright (c) 2016 Piotr Sochalewski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +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 OR COPYRIGHT HOLDERS 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. + +Generated by CocoaPods - http://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-acknowledgements.plist new file mode 100644 index 0000000..ce3ffde --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-acknowledgements.plist @@ -0,0 +1,56 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2016 Piotr Sochalewski <piotr.sochalewski@droidsonroids.pl> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +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 OR COPYRIGHT HOLDERS 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. + + Title + SwiftCompressor + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - http://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-dummy.m b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-dummy.m new file mode 100644 index 0000000..d5ca5f5 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwiftCompressor_Tests : NSObject +@end +@implementation PodsDummy_Pods_SwiftCompressor_Tests +@end diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-frameworks.sh new file mode 100755 index 0000000..74f48c3 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-frameworks.sh @@ -0,0 +1,91 @@ +#!/bin/sh +set -e + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # use filter instead of exclude so missing patterns dont' throw errors + echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current file + archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + stripped="" + for arch in $archs; do + if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "Pods-SwiftCompressor_Tests/SwiftCompressor.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "Pods-SwiftCompressor_Tests/SwiftCompressor.framework" +fi diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-resources.sh b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-resources.sh new file mode 100755 index 0000000..16774fb --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-resources.sh @@ -0,0 +1,95 @@ +#!/bin/sh +set -e + +mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +realpath() { + DIRECTORY="$(cd "${1%/*}" && pwd)" + FILENAME="${1##*/}" + echo "$DIRECTORY/$FILENAME" +} + +install_resource() +{ + case $1 in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.framework) + echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" + xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + /*) + echo "$1" + echo "$1" >> "$RESOURCES_TO_COPY" + ;; + *) + echo "${PODS_ROOT}/$1" + echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; + esac + + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-umbrella.h b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-umbrella.h new file mode 100644 index 0000000..a796e86 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double Pods_SwiftCompressor_TestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_SwiftCompressor_TestsVersionString[]; + diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests.debug.xcconfig new file mode 100644 index 0000000..bf1efbf --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests.debug.xcconfig @@ -0,0 +1,8 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/SwiftCompressor.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "SwiftCompressor" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwiftCompressor_Tests +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests.modulemap b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests.modulemap new file mode 100644 index 0000000..4e4f537 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_SwiftCompressor_Tests { + umbrella header "Pods-SwiftCompressor_Tests-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests.release.xcconfig new file mode 100644 index 0000000..bf1efbf --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-SwiftCompressor_Tests/Pods-SwiftCompressor_Tests.release.xcconfig @@ -0,0 +1,8 @@ +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$CONFIGURATION_BUILD_DIR/SwiftCompressor.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "SwiftCompressor" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwiftCompressor_Tests +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/SwiftCompressor.xcworkspace/contents.xcworkspacedata b/Example/SwiftCompressor.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..b18999b --- /dev/null +++ b/Example/SwiftCompressor.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Example/SwiftCompressor/AppDelegate.swift b/Example/SwiftCompressor/AppDelegate.swift index be9e1b0..b2539e8 100644 --- a/Example/SwiftCompressor/AppDelegate.swift +++ b/Example/SwiftCompressor/AppDelegate.swift @@ -2,8 +2,8 @@ // AppDelegate.swift // SwiftCompressor // -// Created by Piotr Sochalewski on 02/24/2016. -// Copyright (c) 2016 Piotr Sochalewski. All rights reserved. +// Created by Piotr Sochalewski on 24.02.2016. +// Copyright (c) 2016 Droids on Roids. All rights reserved. // import UIKit @@ -13,7 +13,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. return true @@ -41,6 +40,4 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } - -} - +} \ No newline at end of file diff --git a/Example/SwiftCompressor/ViewController.swift b/Example/SwiftCompressor/ViewController.swift index 685b12a..ce02726 100644 --- a/Example/SwiftCompressor/ViewController.swift +++ b/Example/SwiftCompressor/ViewController.swift @@ -2,23 +2,36 @@ // ViewController.swift // SwiftCompressor // -// Created by Piotr Sochalewski on 02/24/2016. -// Copyright (c) 2016 Piotr Sochalewski. All rights reserved. +// Created by Piotr Sochalewski on 24.02.2016. +// Copyright (c) 2016 Droids on Roids. All rights reserved. // import UIKit +import SwiftCompressor class ViewController: UIViewController { - override func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loading the view, typically from a nib. + override func viewDidAppear(animated: Bool) { + super.viewDidAppear(animated) + + let path = NSBundle.mainBundle().pathForResource("lorem", ofType: "txt") + let loremData = NSData(contentsOfFile: path!) + print("Raw length: \(loremData?.length)") + + let compressedLoremDataLZFSE = try? loremData?.compress() + print("LZFSE length: \(compressedLoremDataLZFSE??.length)") + + let compressedLoremDataZLIB = try? loremData?.compress(algorithm: .ZLIB) + print("ZLIB length: \(compressedLoremDataZLIB??.length)") + + let compressedLoremDataLZ4 = try? loremData?.compress(algorithm: .LZ4) + print("LZ4 length: \(compressedLoremDataLZ4??.length)") + + let compressedLoremDataLZMA = try? loremData?.compress(algorithm: .LZMA) + print("LZMA length: \(compressedLoremDataLZMA??.length)") + + let decompressedLoremData = try? compressedLoremDataLZFSE??.decompress() + print("Decompressed length: \(decompressedLoremData??.length)") } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - -} - + +} \ No newline at end of file diff --git a/Example/Tests/Tests.swift b/Example/Tests/Tests.swift index 5edd666..c84ccc8 100644 --- a/Example/Tests/Tests.swift +++ b/Example/Tests/Tests.swift @@ -1,29 +1,53 @@ -import UIKit import XCTest import SwiftCompressor class Tests: XCTestCase { + var path = NSBundle.mainBundle().pathForResource("lorem", ofType: "txt") + var loremData: NSData! + override func setUp() { super.setUp() - // Put setup code here. This method is called before the invocation of each test method in the class. + loremData = NSData(contentsOfFile: path!) } - override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. - super.tearDown() + // MARK: - Compression and decompression + + func testCompressionAndDecompression() { + let compressedLoremData = try? loremData.compress() + let uncompressedLoremData = try? compressedLoremData??.decompress() + + XCTAssertGreaterThan(uncompressedLoremData!!.length, compressedLoremData!!.length, "The compressed data should be smaller than the uncompressed data.") + XCTAssertEqual(loremData, uncompressedLoremData!, "The data before compression and after decompression should be the same.") } - func testExample() { - // This is an example of a functional test case. - XCTAssert(true, "Pass") + // MARK: - Buffer size performance comparision + + func testPerformance4096() { + measureBlock { + for _ in 0...10000 { + let compressedLoremData = try? self.loremData.compress(algorithm: .ZLIB, bufferSize: 4096) + let _ = try? compressedLoremData??.decompress(algorithm: .ZLIB, bufferSize: 4096) + } + } + } + + func testPerformance8192() { + measureBlock { + for _ in 0...10000 { + let compressedLoremData = try? self.loremData.compress(algorithm: .ZLIB, bufferSize: 8192) + let _ = try? compressedLoremData??.decompress(algorithm: .ZLIB, bufferSize: 8192) + } + } } - func testPerformanceExample() { - // This is an example of a performance test case. - self.measureBlock() { - // Put the code you want to measure the time of here. + func testPerformance16384() { + measureBlock { + for _ in 0...10000 { + let compressedLoremData = try? self.loremData.compress(algorithm: .ZLIB, bufferSize: 16384) + let _ = try? compressedLoremData??.decompress(algorithm: .ZLIB, bufferSize: 16384) + } } } -} +} \ No newline at end of file diff --git a/LICENSE b/LICENSE index 8117e23..b3b48d0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2016 Piotr Sochalewski +Copyright (c) 2016 Droids on Roids LLC Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/NSData+Compressor.swift b/NSData+Compressor.swift new file mode 100644 index 0000000..41c9c12 --- /dev/null +++ b/NSData+Compressor.swift @@ -0,0 +1,208 @@ +// +// NSData+Compressor.swift +// SwiftCompressor +// +// Created by Piotr Sochalewski on 22.02.2016. +// Copyright © Droids on Roids. All rights reserved. +// + +import Foundation +import Compression + +/** + Compression algorithm + - `.LZ4`: Fast compression + - `.ZLIB`: Balances between speed and compression + - `.LZMA`: High compression + - `.LZFSE`: Apple-specific high performance compression + */ +@available(iOS 9.0, OSX 10.11, *) +public enum CompressionAlgorithm { + + /** + LZ4 is an extremely high-performance compressor. + */ + case LZ4 + + /** + ZLIB encoder at level 5 only. This compression level provides a good balance between compression speed and compression ratio. The ZLIB decoder supports decoding data compressed with any compression level. + */ + case ZLIB + + /** + LZMA encoder at level 6 only. This is the default compression level for open source LZMA, and provides excellent compression. The LZMA decoder supports decoding data compressed with any compression level. + */ + case LZMA + + /** + Apple’s proprietary compression algorithm. LZFSE is a new algorithm, matching the compression ratio of ZLIB level 5, but with much higher energy efficiency and speed (between 2x and 3x) for both encode and decode operations. + + LZFSE is only present in iOS and OS X, so it can’t be used when the compressed payload has to be shared to other platforms (Linux, Windows). In all other cases, LZFSE is recommended as a replacement for ZLIB. + */ + case LZFSE + +} + +public enum CompressionError: ErrorType { + + case EmptyData + case InitError + case ProcessError + +} + +extension NSData { + + /** + Returns a `NSData` object created by compressing the receiver using the LZFSE algorithm. + - returns: A `NSData` object created by encoding the receiver's contents using the LZFSE algorithm. + */ + @available(iOS 9.0, OSX 10.11, *) + public func compress() throws -> NSData? { + return try compress(algorithm: .LZFSE, bufferSize: 4096) + } + + /** + Returns a `NSData` object created by compressing the receiver using the given compression algorithm. + - parameter algorithm: one of four compression algorithms to use during compression + - returns: A `NSData` object created by encoding the receiver's contents using the provided compression algorithm. + */ + @available(iOS 9.0, OSX 10.11, *) + public func compress(algorithm compression: CompressionAlgorithm) throws -> NSData? { + return try compress(algorithm: compression, bufferSize: 4096) + } + + /** + Returns a NSData object created by compressing the receiver using the given compression algorithm. + - parameter algorithm: one of four compression algorithms to use during compression + - parameter bufferSize: the size of buffer in bytes to use during compression + - returns: A `NSData` object created by encoding the receiver's contents using the provided compression algorithm. + */ + @available(iOS 9.0, OSX 10.11, *) + public func compress(algorithm compression: CompressionAlgorithm, bufferSize: size_t) throws -> NSData? { + return try compress(compression, operation: .Compression, bufferSize: bufferSize) + } + + /** + Returns a `NSData` object by uncompressing the receiver using the LZFSE algorithm. + - returns: A `NSData` object created by decoding the receiver's contents using the LZFSE algorithm. + */ + @available(iOS 9.0, OSX 10.11, *) + public func decompress() throws -> NSData? { + return try decompress(algorithm: .LZFSE, bufferSize: 4096) + } + + /** + Returns a `NSData` object by uncompressing the receiver using the given compression algorithm. + - parameter algorithm: one of four compression algorithms to use during decompression + - returns: A `NSData` object created by decoding the receiver's contents using the provided compression algorithm. + */ + @available(iOS 9.0, OSX 10.11, *) + public func decompress(algorithm compression: CompressionAlgorithm) throws -> NSData? { + return try decompress(algorithm: compression, bufferSize: 4096) + } + + /** + Returns a `NSData` object by uncompressing the receiver using the given compression algorithm. + - parameter algorithm: one of four compression algorithms to use during decompression + - parameter bufferSize: the size of buffer in bytes to use during decompression + - returns: A `NSData` object created by decoding the receiver's contents using the provided compression algorithm. + */ + @available(iOS 9.0, OSX 10.11, *) + public func decompress(algorithm compression: CompressionAlgorithm, bufferSize: size_t) throws -> NSData? { + return try compress(compression, operation: .Decompression, bufferSize: bufferSize) + } + + private enum Operation { + case Compression + case Decompression + } + + @available(iOS 9.0, OSX 10.11, *) + private func compress(compression: CompressionAlgorithm, operation: Operation, bufferSize: size_t) throws -> NSData? { + // Throw an error when data to (de)compress is empty. + guard length > 0 else { + throw CompressionError.EmptyData + } + + // Variables + var status: compression_status + var op: compression_stream_operation + var flags: Int32 + var algorithm: compression_algorithm + + // Output data + let outputData = NSMutableData() + + switch compression { + case .LZ4: + algorithm = COMPRESSION_LZ4 + case .ZLIB: + algorithm = COMPRESSION_ZLIB + case .LZMA: + algorithm = COMPRESSION_LZMA + case .LZFSE: + algorithm = COMPRESSION_LZFSE + } + + // Setup stream operation and flags depending on compress/decompress operation type + switch operation { + case .Compression: + op = COMPRESSION_STREAM_ENCODE + flags = Int32(COMPRESSION_STREAM_FINALIZE.rawValue) + case .Decompression: + op = COMPRESSION_STREAM_DECODE + flags = 0 + } + + // Allocate memory for one object of type compression_stream + let streamPointer = UnsafeMutablePointer.alloc(1) + + // Stream and its buffer + var stream = streamPointer.memory + let dstBufferPointer = UnsafeMutablePointer.alloc(bufferSize) + + // Create the compression_stream and throw an error if failed + status = compression_stream_init(&stream, op, algorithm) + guard status != COMPRESSION_STATUS_ERROR else { + throw CompressionError.InitError + } + + // Stream setup after compression_stream_init + stream.src_ptr = UnsafePointer(bytes) + stream.src_size = length + stream.dst_ptr = dstBufferPointer + stream.dst_size = bufferSize + + repeat { + status = compression_stream_process(&stream, flags) + + switch status { + case COMPRESSION_STATUS_OK: + if stream.dst_size == 0 { + outputData.appendBytes(dstBufferPointer, length: bufferSize) + + stream.dst_ptr = dstBufferPointer + stream.dst_size = bufferSize + } + + case COMPRESSION_STATUS_END: + if stream.dst_ptr > dstBufferPointer { + outputData.appendBytes(dstBufferPointer, length: stream.dst_ptr - dstBufferPointer) + } + + case COMPRESSION_STATUS_ERROR: + throw CompressionError.ProcessError + + default: + break + } + + } while status == COMPRESSION_STATUS_OK + + compression_stream_destroy(&stream) + + return outputData.copy() as? NSData + } + +} \ No newline at end of file diff --git a/Pod/Classes/ReplaceMe.swift b/Pod/Classes/ReplaceMe.swift deleted file mode 100644 index e69de29..0000000 diff --git a/README.md b/README.md index 28bad51..03143b5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ # SwiftCompressor -[![CI Status](http://img.shields.io/travis/Piotr Sochalewski/SwiftCompressor.svg?style=flat)](https://travis-ci.org/Piotr Sochalewski/SwiftCompressor) [![Version](https://img.shields.io/cocoapods/v/SwiftCompressor.svg?style=flat)](http://cocoapods.org/pods/SwiftCompressor) [![License](https://img.shields.io/cocoapods/l/SwiftCompressor.svg?style=flat)](http://cocoapods.org/pods/SwiftCompressor) [![Platform](https://img.shields.io/cocoapods/p/SwiftCompressor.svg?style=flat)](http://cocoapods.org/pods/SwiftCompressor) @@ -11,6 +10,8 @@ To run the example project, clone the repo, and run `pod install` from the Examp ## Requirements +iOS 9.0+ or OS X 10.11+, Swift 2.x + ## Installation SwiftCompressor is available through [CocoaPods](http://cocoapods.org). To install @@ -20,9 +21,29 @@ it, simply add the following line to your Podfile: pod "SwiftCompressor" ``` +## Usage + +SwiftCompression is a `NSData` extension. It lets you easily compress/decompress `NSData` objects this way: + +```swift +// Create NSData from file +let path = NSBundle.mainBundle().pathForResource("lorem", ofType: "txt") +let loremData = NSData(contentsOfFile: path!) + +// Compress and then decompress it! +let compressedData = try? loremData?.compress() +let decompressedData = try? compressedData??.decompress() + +// You can also choose one of four algorithms and set a buffer size if you want. +// Available algorithms are LZFSE, LZMA, ZLIB and LZ4. +// Compress without parameters uses LZFSE compression. Default buffer size is 4096 bytes. +let compressWithLZ4 = try? loremData?.compress(algorithm: .LZ4) +let compressWithLZMAReallyBigBuffer = try? loremData?.compress(algorithm: .LZMA, bufferSize: 65_536) +``` + ## Author -Piotr Sochalewski, piotr.sochalewski@droidsonroids.pl +Piotr Sochalewski, piotr.sochalewski@droidsonroids.com ## License diff --git a/SwiftCompressor.podspec b/SwiftCompressor.podspec index 88d8673..52ed01d 100644 --- a/SwiftCompressor.podspec +++ b/SwiftCompressor.podspec @@ -1,40 +1,17 @@ -# -# Be sure to run `pod lib lint SwiftCompressor.podspec' to ensure this is a -# valid spec before submitting. -# -# Any lines starting with a # are optional, but their use is encouraged -# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html -# - Pod::Spec.new do |s| s.name = "SwiftCompressor" s.version = "0.1.0" - s.summary = "A short description of SwiftCompressor." - -# This description is used to generate tags and improve search results. -# * Think: What does it do? Why did you write it? What is the focus? -# * Try to keep it short, snappy and to the point. -# * Write the description between the DESC delimiters below. -# * Finally, don't worry about the indent, CocoaPods strips it! - s.description = <<-DESC - DESC - - s.homepage = "https://github.com//SwiftCompressor" - # s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" + s.summary = "Compression framework easily" + s.description = "SwiftCompressor lets you use Compression framework easily" + s.homepage = "https://github.com/sochalewski/SwiftCompression" s.license = 'MIT' - s.author = { "Piotr Sochalewski" => "piotr.sochalewski@droidsonroids.pl" } - s.source = { :git => "https://github.com//SwiftCompressor.git", :tag => s.version.to_s } - # s.social_media_url = 'https://twitter.com/' - - s.platform = :ios, '8.0' + s.author = { "Piotr Sochalewski" => "piotr.sochalewski@droidsonroids.com" } + s.source = { :git => "https://github.com/DroidsOnRoids/SwiftCompression.git", :tag => s.version.to_s } + s.ios.deployment_target = "9.0" + s.osx.deployment_target = "10.11" s.requires_arc = true - - s.source_files = 'Pod/Classes/**/*' - s.resource_bundles = { - 'SwiftCompressor' => ['Pod/Assets/*.png'] - } - - # s.public_header_files = 'Pod/Classes/**/*.h' - # s.frameworks = 'UIKit', 'MapKit' - # s.dependency 'AFNetworking', '~> 2.3' + s.source_files = '*.swift' + # .tbd linking doesn't work well + # s.library = 'compression' + s.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-lcompression' } end diff --git a/_Pods.xcodeproj b/_Pods.xcodeproj deleted file mode 120000 index 3c5a8e7..0000000 --- a/_Pods.xcodeproj +++ /dev/null @@ -1 +0,0 @@ -Example/Pods/Pods.xcodeproj \ No newline at end of file