Extract PainlessInjectionLoader

This commit is contained in:
Yaroslav Zhurakovskiy 2016-07-18 16:49:53 +03:00
parent b69aff4997
commit 780877b9f0
35 changed files with 191 additions and 250 deletions

View File

@ -1,7 +1,4 @@
language: objective-c
osx_image: xcode7.1
branches:
only:
- master
script:
- xcodebuild test -project PainlessInjection.xcodeproj -scheme PainlessInjection -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty
- xcodebuild clean test -workspace PainlessInjection/PainlessInjection.xcworkspace -scheme PainlessInjection -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty

View File

@ -5,6 +5,7 @@ Pod::Spec.new do |s|
s.summary = "PainlessInjection is a lightweight dependency injection framework for Swift."
s.description = <<-DESC
PainlessInjection is a lightweight dependency injection framework for Swift.
DESC
s.homepage = "https://github.com/yaroslav-zhurakovskiy/PainlessInjection"
@ -14,14 +15,11 @@ Pod::Spec.new do |s|
s.author = { "yaroslav-zhurakovskiy" => "yaroslav.zhurakovskiy@gmail.com" }
s.platform = :ios, "8.0"
s.requires_arc = true
s.source = { :git => "https://github.com/yaroslav-zhurakovskiy/PainlessInjection.git"}
s.source_files = "PainlessInjection",
"PainlessInjection/**/*.swift",
"PainlessInjectionLoader",
"PainlessInjectionLoader/**/*.{h,m}"
s.requires_arc = true
s.source_files = "PainlessInjection/**/*.swift"
s.dependency 'PainlessInjectionLoader'
end

View File

@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
AC6EADA9EBA97184DE28B03D /* Pods_PainlessInjectionTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B0BD30D1500DF9B76584172F /* Pods_PainlessInjectionTests.framework */; };
C4A0CFCB1D3CF88F00BCEC00 /* ArgumentList.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A0CFBC1D3CF88F00BCEC00 /* ArgumentList.swift */; };
C4A0CFCC1D3CF88F00BCEC00 /* CacheDependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A0CFBD1D3CF88F00BCEC00 /* CacheDependency.swift */; };
C4A0CFCD1D3CF88F00BCEC00 /* Container.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A0CFBE1D3CF88F00BCEC00 /* Container.swift */; };
@ -21,10 +22,6 @@
C4A0CFD71D3CF88F00BCEC00 /* StandardTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A0CFC81D3CF88F00BCEC00 /* StandardTimer.swift */; };
C4A0CFD81D3CF88F00BCEC00 /* TimeInteval.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A0CFC91D3CF88F00BCEC00 /* TimeInteval.swift */; };
C4A0CFD91D3CF88F00BCEC00 /* Timer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A0CFCA1D3CF88F00BCEC00 /* Timer.swift */; };
C4A0D0051D3CF9EC00BCEC00 /* PainlessInjectionLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = C4A0CFFE1D3CF9E100BCEC00 /* PainlessInjectionLoader.h */; settings = {ATTRIBUTES = (Public, ); }; };
C4A0D0061D3CF9EC00BCEC00 /* PIModuleLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = C4A0CFFF1D3CF9E100BCEC00 /* PIModuleLoader.h */; settings = {ATTRIBUTES = (Public, ); }; };
C4A0D0071D3CF9EC00BCEC00 /* PIModuleLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = C4A0D0001D3CF9E100BCEC00 /* PIModuleLoader.m */; };
C4A0D00A1D3CFAA500BCEC00 /* PainlessInjectionLoader.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4A6EE5B1D34294900CB7442 /* PainlessInjectionLoader.framework */; };
C4A0D00B1D3CFB8E00BCEC00 /* ArgumentListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A0CFDB1D3CF89700BCEC00 /* ArgumentListTests.swift */; };
C4A0D00C1D3CFB8E00BCEC00 /* ContainerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A0CFDC1D3CF89700BCEC00 /* ContainerTests.swift */; };
C4A0D00D1D3CFB8E00BCEC00 /* FataErrorNotifierTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A0CFDD1D3CF89700BCEC00 /* FataErrorNotifierTests.swift */; };
@ -33,17 +30,10 @@
C4A0D0101D3CFB8E00BCEC00 /* TimeIntervalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A0CFE11D3CF89700BCEC00 /* TimeIntervalTests.swift */; };
C4A0D0111D3CFB8E00BCEC00 /* TimerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A0CFE21D3CF89700BCEC00 /* TimerTests.swift */; };
C4A0D0161D3CFC0B00BCEC00 /* PainlessInjection.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4A6EE271D340F3F00CB7442 /* PainlessInjection.framework */; };
C4A0D0171D3CFC0B00BCEC00 /* PainlessInjectionLoader.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4A6EE5B1D34294900CB7442 /* PainlessInjectionLoader.framework */; };
E3F23086F51374FD32E609CF /* Pods_PainlessInjection.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58A74C19AFD18668B2E3B816 /* Pods_PainlessInjection.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
C4A0D0081D3CF9FD00BCEC00 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = C4A6EE1E1D340F3F00CB7442 /* Project object */;
proxyType = 1;
remoteGlobalIDString = C4A6EE5A1D34294900CB7442;
remoteInfo = PainlessInjectionLoader;
};
C4A0D0121D3CFC0400BCEC00 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = C4A6EE1E1D340F3F00CB7442 /* Project object */;
@ -51,16 +41,14 @@
remoteGlobalIDString = C4A6EE261D340F3F00CB7442;
remoteInfo = PainlessInjection;
};
C4A0D0141D3CFC0700BCEC00 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = C4A6EE1E1D340F3F00CB7442 /* Project object */;
proxyType = 1;
remoteGlobalIDString = C4A6EE5A1D34294900CB7442;
remoteInfo = PainlessInjectionLoader;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
2B7D81E275AA97BC7719C596 /* Pods-PainlessInjectionTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PainlessInjectionTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-PainlessInjectionTests/Pods-PainlessInjectionTests.debug.xcconfig"; sourceTree = "<group>"; };
58A74C19AFD18668B2E3B816 /* Pods_PainlessInjection.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PainlessInjection.framework; sourceTree = BUILT_PRODUCTS_DIR; };
787ECEDC091457827435C113 /* Pods-PainlessInjection.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PainlessInjection.release.xcconfig"; path = "Pods/Target Support Files/Pods-PainlessInjection/Pods-PainlessInjection.release.xcconfig"; sourceTree = "<group>"; };
B0BD30D1500DF9B76584172F /* Pods_PainlessInjectionTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PainlessInjectionTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BDCB1A6D29DE071BDF94F1BC /* Pods-PainlessInjection.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PainlessInjection.debug.xcconfig"; path = "Pods/Target Support Files/Pods-PainlessInjection/Pods-PainlessInjection.debug.xcconfig"; sourceTree = "<group>"; };
C4A0CFBC1D3CF88F00BCEC00 /* ArgumentList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ArgumentList.swift; sourceTree = "<group>"; };
C4A0CFBD1D3CF88F00BCEC00 /* CacheDependency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CacheDependency.swift; sourceTree = "<group>"; };
C4A0CFBE1D3CF88F00BCEC00 /* Container.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Container.swift; sourceTree = "<group>"; };
@ -84,13 +72,9 @@
C4A0CFE01D3CF89700BCEC00 /* ModuleLoadingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModuleLoadingTests.swift; sourceTree = "<group>"; };
C4A0CFE11D3CF89700BCEC00 /* TimeIntervalTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimeIntervalTests.swift; sourceTree = "<group>"; };
C4A0CFE21D3CF89700BCEC00 /* TimerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimerTests.swift; sourceTree = "<group>"; };
C4A0CFFD1D3CF9E100BCEC00 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
C4A0CFFE1D3CF9E100BCEC00 /* PainlessInjectionLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PainlessInjectionLoader.h; sourceTree = "<group>"; };
C4A0CFFF1D3CF9E100BCEC00 /* PIModuleLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PIModuleLoader.h; sourceTree = "<group>"; };
C4A0D0001D3CF9E100BCEC00 /* PIModuleLoader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PIModuleLoader.m; sourceTree = "<group>"; };
C4A6EE271D340F3F00CB7442 /* PainlessInjection.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PainlessInjection.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C4A6EE311D340F3F00CB7442 /* PainlessInjectionTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PainlessInjectionTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
C4A6EE5B1D34294900CB7442 /* PainlessInjectionLoader.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PainlessInjectionLoader.framework; sourceTree = BUILT_PRODUCTS_DIR; };
F743561BC63384EDDE974B0C /* Pods-PainlessInjectionTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PainlessInjectionTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-PainlessInjectionTests/Pods-PainlessInjectionTests.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -98,7 +82,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
C4A0D00A1D3CFAA500BCEC00 /* PainlessInjectionLoader.framework in Frameworks */,
E3F23086F51374FD32E609CF /* Pods_PainlessInjection.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -107,20 +91,33 @@
buildActionMask = 2147483647;
files = (
C4A0D0161D3CFC0B00BCEC00 /* PainlessInjection.framework in Frameworks */,
C4A0D0171D3CFC0B00BCEC00 /* PainlessInjectionLoader.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
C4A6EE571D34294900CB7442 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
AC6EADA9EBA97184DE28B03D /* Pods_PainlessInjectionTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
1754E88A2474805A8B2536B2 /* Pods */ = {
isa = PBXGroup;
children = (
BDCB1A6D29DE071BDF94F1BC /* Pods-PainlessInjection.debug.xcconfig */,
787ECEDC091457827435C113 /* Pods-PainlessInjection.release.xcconfig */,
2B7D81E275AA97BC7719C596 /* Pods-PainlessInjectionTests.debug.xcconfig */,
F743561BC63384EDDE974B0C /* Pods-PainlessInjectionTests.release.xcconfig */,
);
name = Pods;
sourceTree = "<group>";
};
380BC610FAD37AE06915060D /* Frameworks */ = {
isa = PBXGroup;
children = (
58A74C19AFD18668B2E3B816 /* Pods_PainlessInjection.framework */,
B0BD30D1500DF9B76584172F /* Pods_PainlessInjectionTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
C4A0CFBB1D3CF88F00BCEC00 /* PainlessInjection */ = {
isa = PBXGroup;
children = (
@ -158,24 +155,14 @@
path = PainlessInjectionTests;
sourceTree = "<group>";
};
C4A0CFFC1D3CF9E100BCEC00 /* PainlessInjectionLoader */ = {
isa = PBXGroup;
children = (
C4A0CFFD1D3CF9E100BCEC00 /* Info.plist */,
C4A0CFFE1D3CF9E100BCEC00 /* PainlessInjectionLoader.h */,
C4A0CFFF1D3CF9E100BCEC00 /* PIModuleLoader.h */,
C4A0D0001D3CF9E100BCEC00 /* PIModuleLoader.m */,
);
path = PainlessInjectionLoader;
sourceTree = "<group>";
};
C4A6EE1D1D340F3F00CB7442 = {
isa = PBXGroup;
children = (
C4A0CFBB1D3CF88F00BCEC00 /* PainlessInjection */,
C4A0CFDA1D3CF89700BCEC00 /* PainlessInjectionTests */,
C4A0CFFC1D3CF9E100BCEC00 /* PainlessInjectionLoader */,
C4A6EE281D340F3F00CB7442 /* Products */,
1754E88A2474805A8B2536B2 /* Pods */,
380BC610FAD37AE06915060D /* Frameworks */,
);
sourceTree = "<group>";
};
@ -184,7 +171,6 @@
children = (
C4A6EE271D340F3F00CB7442 /* PainlessInjection.framework */,
C4A6EE311D340F3F00CB7442 /* PainlessInjectionTests.xctest */,
C4A6EE5B1D34294900CB7442 /* PainlessInjectionLoader.framework */,
);
name = Products;
sourceTree = "<group>";
@ -200,15 +186,6 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
C4A6EE581D34294900CB7442 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
C4A0D0061D3CF9EC00BCEC00 /* PIModuleLoader.h in Headers */,
C4A0D0051D3CF9EC00BCEC00 /* PainlessInjectionLoader.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
@ -216,15 +193,16 @@
isa = PBXNativeTarget;
buildConfigurationList = C4A6EE3B1D340F3F00CB7442 /* Build configuration list for PBXNativeTarget "PainlessInjection" */;
buildPhases = (
A81A98406FD0CD16BBF96C8A /* [CP] Check Pods Manifest.lock */,
C4A6EE221D340F3F00CB7442 /* Sources */,
C4A6EE231D340F3F00CB7442 /* Frameworks */,
C4A6EE241D340F3F00CB7442 /* Headers */,
C4A6EE251D340F3F00CB7442 /* Resources */,
34B8FE998E4BE2DA701C36C1 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
C4A0D0091D3CF9FD00BCEC00 /* PBXTargetDependency */,
);
name = PainlessInjection;
productName = PainlessInjector;
@ -235,14 +213,16 @@
isa = PBXNativeTarget;
buildConfigurationList = C4A6EE3E1D340F3F00CB7442 /* Build configuration list for PBXNativeTarget "PainlessInjectionTests" */;
buildPhases = (
F6004F2A99D7298CFBF8FE1F /* [CP] Check Pods Manifest.lock */,
C4A6EE2D1D340F3F00CB7442 /* Sources */,
C4A6EE2E1D340F3F00CB7442 /* Frameworks */,
C4A6EE2F1D340F3F00CB7442 /* Resources */,
AB22B23EA722F19293738940 /* [CP] Embed Pods Frameworks */,
2C2712CD08F3C9C04C15C902 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
C4A0D0151D3CFC0700BCEC00 /* PBXTargetDependency */,
C4A0D0131D3CFC0400BCEC00 /* PBXTargetDependency */,
);
name = PainlessInjectionTests;
@ -250,24 +230,6 @@
productReference = C4A6EE311D340F3F00CB7442 /* PainlessInjectionTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
C4A6EE5A1D34294900CB7442 /* PainlessInjectionLoader */ = {
isa = PBXNativeTarget;
buildConfigurationList = C4A6EE601D34294A00CB7442 /* Build configuration list for PBXNativeTarget "PainlessInjectionLoader" */;
buildPhases = (
C4A6EE561D34294900CB7442 /* Sources */,
C4A6EE571D34294900CB7442 /* Frameworks */,
C4A6EE581D34294900CB7442 /* Headers */,
C4A6EE591D34294900CB7442 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = PainlessInjectionLoader;
productName = PainlessInjectorLoader;
productReference = C4A6EE5B1D34294900CB7442 /* PainlessInjectionLoader.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@ -284,9 +246,6 @@
C4A6EE301D340F3F00CB7442 = {
CreatedOnToolsVersion = 7.3.1;
};
C4A6EE5A1D34294900CB7442 = {
CreatedOnToolsVersion = 7.3.1;
};
};
};
buildConfigurationList = C4A6EE211D340F3F00CB7442 /* Build configuration list for PBXProject "PainlessInjection" */;
@ -303,7 +262,6 @@
targets = (
C4A6EE261D340F3F00CB7442 /* PainlessInjection */,
C4A6EE301D340F3F00CB7442 /* PainlessInjectionTests */,
C4A6EE5A1D34294900CB7442 /* PainlessInjectionLoader */,
);
};
/* End PBXProject section */
@ -323,14 +281,85 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
C4A6EE591D34294900CB7442 /* Resources */ = {
isa = PBXResourcesBuildPhase;
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
2C2712CD08F3C9C04C15C902 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PainlessInjectionTests/Pods-PainlessInjectionTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXResourcesBuildPhase section */
34B8FE998E4BE2DA701C36C1 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PainlessInjection/Pods-PainlessInjection-resources.sh\"\n";
showEnvVarsInLog = 0;
};
A81A98406FD0CD16BBF96C8A /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
showEnvVarsInLog = 0;
};
AB22B23EA722F19293738940 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PainlessInjectionTests/Pods-PainlessInjectionTests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
F6004F2A99D7298CFBF8FE1F /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
C4A6EE221D340F3F00CB7442 /* Sources */ = {
@ -367,32 +396,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
C4A6EE561D34294900CB7442 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
C4A0D0071D3CF9EC00BCEC00 /* PIModuleLoader.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
C4A0D0091D3CF9FD00BCEC00 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = C4A6EE5A1D34294900CB7442 /* PainlessInjectionLoader */;
targetProxy = C4A0D0081D3CF9FD00BCEC00 /* PBXContainerItemProxy */;
};
C4A0D0131D3CFC0400BCEC00 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = C4A6EE261D340F3F00CB7442 /* PainlessInjection */;
targetProxy = C4A0D0121D3CFC0400BCEC00 /* PBXContainerItemProxy */;
};
C4A0D0151D3CFC0700BCEC00 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = C4A6EE5A1D34294900CB7442 /* PainlessInjectionLoader */;
targetProxy = C4A0D0141D3CFC0700BCEC00 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
@ -489,6 +500,7 @@
};
C4A6EE3C1D340F3F00CB7442 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = BDCB1A6D29DE071BDF94F1BC /* Pods-PainlessInjection.debug.xcconfig */;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
DEFINES_MODULE = YES;
@ -508,6 +520,7 @@
};
C4A6EE3D1D340F3F00CB7442 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 787ECEDC091457827435C113 /* Pods-PainlessInjection.release.xcconfig */;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
DEFINES_MODULE = YES;
@ -526,6 +539,7 @@
};
C4A6EE3F1D340F3F00CB7442 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 2B7D81E275AA97BC7719C596 /* Pods-PainlessInjectionTests.debug.xcconfig */;
buildSettings = {
INFOPLIST_FILE = PainlessInjectionTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@ -536,6 +550,7 @@
};
C4A6EE401D340F3F00CB7442 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F743561BC63384EDDE974B0C /* Pods-PainlessInjectionTests.release.xcconfig */;
buildSettings = {
INFOPLIST_FILE = PainlessInjectionTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
@ -544,40 +559,6 @@
};
name = Release;
};
C4A6EE611D34294A00CB7442 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/PainlessInjectionLoader/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "yaroslav-zhurakovskiy.PainlessInjectionLoader";
PRODUCT_NAME = PainlessInjectionLoader;
SKIP_INSTALL = YES;
};
name = Debug;
};
C4A6EE621D34294A00CB7442 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/PainlessInjectionLoader/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "yaroslav-zhurakovskiy.PainlessInjectionLoader";
PRODUCT_NAME = PainlessInjectionLoader;
SKIP_INSTALL = YES;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@ -608,15 +589,6 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C4A6EE601D34294A00CB7442 /* Build configuration list for PBXNativeTarget "PainlessInjectionLoader" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C4A6EE611D34294A00CB7442 /* Debug */,
C4A6EE621D34294A00CB7442 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = C4A6EE1E1D340F3F00CB7442 /* Project object */;

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:PainlessInjection.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

View File

@ -0,0 +1,30 @@
{
"DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "01CA3043DE9DDFA2AA448D5B0D3364FE5C3175B2",
"DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
},
"DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
"01CA3043DE9DDFA2AA448D5B0D3364FE5C3175B2" : 0,
"FC0943ECA55740D82EB10C8BA54A6238F225C8C7" : 0
},
"DVTSourceControlWorkspaceBlueprintIdentifierKey" : "1A649834-AA24-4188-909A-37EC0D4E83BE",
"DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
"01CA3043DE9DDFA2AA448D5B0D3364FE5C3175B2" : "PainlessInjection\/",
"FC0943ECA55740D82EB10C8BA54A6238F225C8C7" : "PainlessInjectionLoader\/"
},
"DVTSourceControlWorkspaceBlueprintNameKey" : "PainlessInjection",
"DVTSourceControlWorkspaceBlueprintVersion" : 204,
"DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "PainlessInjection\/PainlessInjection.xcworkspace",
"DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
{
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/yaroslav-zhurakovskiy\/PainlessInjection.git",
"DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "01CA3043DE9DDFA2AA448D5B0D3364FE5C3175B2"
},
{
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/yaroslav-zhurakovskiy\/PainlessInjectionLoader.git",
"DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
"DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "FC0943ECA55740D82EB10C8BA54A6238F225C8C7"
}
]
}

15
PainlessInjection/Podfile Normal file
View File

@ -0,0 +1,15 @@
platform :ios, '8.0'
target 'PainlessInjection' do
use_frameworks!
pod 'PainlessInjectionLoader', :path=>'../../PainlessInjectionLoader'
target 'PainlessInjectionTests' do
inherit! :search_paths
pod 'PainlessInjectionLoader', :path=>'../../PainlessInjectionLoader'
end
end

View File

@ -0,0 +1,16 @@
PODS:
- PainlessInjectionLoader (0.0.1)
DEPENDENCIES:
- PainlessInjectionLoader (from `../../PainlessInjectionLoader`)
EXTERNAL SOURCES:
PainlessInjectionLoader:
:path: "../../PainlessInjectionLoader"
SPEC CHECKSUMS:
PainlessInjectionLoader: 9981887828a1f0e0829807d71b1b27a557809914
PODFILE CHECKSUM: 07b186c489cacdd6421596e8480214e4dc3a6dc7
COCOAPODS: 1.0.1

View File

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>

View File

@ -1,15 +0,0 @@
//
// PIModuleLoader.h
// PainlessInjection
//
// Created by Yaroslav Zhurakovskiy on 7/11/16.
// Copyright © 2016 Yaroslav Zhurakovskiy. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface PIModuleLoader : NSObject
+ (nonnull NSArray *)listWithType:(nonnull Class)cls;
@end

View File

@ -1,39 +0,0 @@
//
// PIModuleLoader.m
// PainlessInjection
//
// Created by Yaroslav Zhurakovskiy on 7/11/16.
// Copyright © 2016 Yaroslav Zhurakovskiy. All rights reserved.
//
#include <objc/objc.h>
#include <objc/runtime.h>
#import "PIModuleLoader.h"
@implementation PIModuleLoader
+ ( NSArray *)listWithType:(Class)inCls
{
NSMutableArray *temp = [[NSMutableArray alloc] init];
int numberOfClasses = objc_getClassList(NULL, 0);
if (numberOfClasses > 0) {
Class *classes = (__unsafe_unretained Class *)malloc(numberOfClasses * sizeof(Class));
objc_getClassList(classes, numberOfClasses);
for (int index = 0; index < numberOfClasses; ++index) {
Class cls = classes[index];
if (class_getSuperclass(cls) == inCls) {
id module = [[cls alloc] init];
[temp addObject:module];
}
}
free(classes);
}
return [temp copy];
}
@end

View File

@ -1,17 +0,0 @@
//
// PainlessInjectionLoader.h
// PainlessInjectionLoader
//
// Created by Yaroslav Zhurakovskiy on 7/11/16.
// Copyright © 2016 Yaroslav Zhurakovskiy. All rights reserved.
//
#import <UIKit/UIKit.h>
//! Project version number for PainlessInjectionLoader.
FOUNDATION_EXPORT double PainlessInjectionLoaderVersionNumber;
//! Project version string for PainlessInjectionLoader.
FOUNDATION_EXPORT const unsigned char PainlessInjectionLoaderVersionString[];
#import <PainlessInjectionLoader/PIModuleLoader.h>