Skip to content

Commit

Permalink
Merge pull request #3 from ra1028/1.0.0
Browse files Browse the repository at this point in the history
1.0.0
  • Loading branch information
ra1028 authored Jan 24, 2018
2 parents b4846fc + 3b8c0ae commit 0657a06
Show file tree
Hide file tree
Showing 79 changed files with 2,530 additions and 1,951 deletions.
10 changes: 9 additions & 1 deletion .swiftlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,15 @@ excluded:
- Tests
- Examples/RxExample/Carthage

disabled_rules:
- multiple_closures_with_trailing_closure
- identifier_name

trailing_whitespace:
ignores_empty_lines: true

line_length: 160
nesting:
type_level:
warning: 2

line_length: 180
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ matrix:
language: objective-c
osx_image: xcode9
before_install:
- ./install_swiftlint.sh
- ./scripts/install_swiftlint.sh
script:
- swiftlint
- set -o pipefail
Expand Down
Binary file removed Assets/VueFlux.png
Binary file not shown.
24 changes: 24 additions & 0 deletions Configurations/Universal.xcconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
IPHONEOS_DEPLOYMENT_TARGET = 9.0
MACOSX_DEPLOYMENT_TARGET = 10.9
TVOS_DEPLOYMENT_TARGET = 9.0
WATCHOS_DEPLOYMENT_TARGET = 2.0

SDKROOT =
SUPPORTED_PLATFORMS = macosx iphoneos iphonesimulator watchos watchsimulator appletvos appletvsimulator
TARGETED_DEVICE_FAMILY = 1,2,3,4
VALID_ARCHS[sdk=macosx*] = i386 x86_64
VALID_ARCHS[sdk=iphoneos*] = arm64 armv7 armv7s
VALID_ARCHS[sdk=iphonesimulator*] = i386 x86_64
VALID_ARCHS[sdk=watchos*] = armv7k
VALID_ARCHS[sdk=watchsimulator*] = i386
VALID_ARCHS[sdk=appletv*] = arm64
VALID_ARCHS[sdk=appletvsimulator*] = x86_64

APPLICATION_EXTENSION_API_ONLY = YES
INSTALL_PATH = $(LOCAL_LIBRARY_DIR)/Frameworks
SKIP_INSTALL = YES
DYLIB_COMPATIBILITY_VERSION = 1
DYLIB_CURRENT_VERSION = 1
DYLIB_INSTALL_NAME_BASE = @rpath
LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/../Frameworks @loader_path/Frameworks @loader_path/../Frameworks
DEFINES_MODULE = YES
Original file line number Diff line number Diff line change
Expand Up @@ -7,39 +7,55 @@
objects = {

/* Begin PBXBuildFile section */
6BEDA6001FBA1EFD00F03699 /* VueFlux.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BEDA5FF1FBA1EFD00F03699 /* VueFlux.framework */; };
6BEDA6011FBA1EFD00F03699 /* VueFlux.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BEDA5FF1FBA1EFD00F03699 /* VueFlux.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
6B81ADBC2018B35C000B141F /* CounterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B81ADB82018B35C000B141F /* CounterView.swift */; };
6BB30C352018B5D500C52C76 /* CounterView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6B81ADBB2018B35C000B141F /* CounterView.xib */; };
6BB30C442018B75E00C52C76 /* VueFlux.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BB30C3F2018B74300C52C76 /* VueFlux.framework */; };
6BB30C452018B75E00C52C76 /* VueFlux.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BB30C3F2018B74300C52C76 /* VueFlux.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
6BB30C482018B75E00C52C76 /* VueFluxReactive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BB30C412018B74300C52C76 /* VueFluxReactive.framework */; };
6BB30C492018B75E00C52C76 /* VueFluxReactive.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BB30C412018B74300C52C76 /* VueFluxReactive.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
6BEDA6031FBA1F0800F03699 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BEDA5F81FBA1E2700F03699 /* AppDelegate.swift */; };
6BEDA6041FBA1F0800F03699 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6BEDA5F91FBA1E2700F03699 /* Assets.xcassets */; };
6BEDA6051FBA1F0800F03699 /* CounterActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BEDA5FA1FBA1E2700F03699 /* CounterActions.swift */; };
6BEDA6061FBA1F0800F03699 /* CounterState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BEDA5FB1FBA1E2700F03699 /* CounterState.swift */; };
6BEDA6071FBA1F0800F03699 /* CounterViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6BEDA5FC1FBA1E2700F03699 /* CounterViewController.storyboard */; };
6BEDA6081FBA1F0800F03699 /* CounterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BEDA5FD1FBA1E2700F03699 /* CounterViewController.swift */; };
6BEDA6191FBA219700F03699 /* GenericComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BEDA6181FBA219700F03699 /* GenericComponents.framework */; };
6BEDA61A1FBA219700F03699 /* GenericComponents.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6BEDA6181FBA219700F03699 /* GenericComponents.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
6B9F51D41FBF2F3800252804 /* PBXContainerItemProxy */ = {
6BB30C3E2018B74300C52C76 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6B9F51D01FBF2F3800252804 /* GenericComponents.xcodeproj */;
containerPortal = 6BB30C382018B74200C52C76 /* VueFlux.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 6BF9DEEF1FBA1BCA00C4BCFD;
remoteInfo = GenericComponents;
remoteGlobalIDString = 6B9E32811FA639DF000B24D4;
remoteInfo = VueFlux;
};
6B9F51E11FBF2F4F00252804 /* PBXContainerItemProxy */ = {
6BB30C402018B74300C52C76 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6B9F51DC1FBF2F4F00252804 /* VueFlux.xcodeproj */;
containerPortal = 6BB30C382018B74200C52C76 /* VueFlux.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 6B9E32811FA639DF000B24D4;
remoteInfo = VueFlux;
remoteGlobalIDString = 6B9EB2361FCB157C009F0659;
remoteInfo = VueFluxReactive;
};
6B9F51E31FBF2F4F00252804 /* PBXContainerItemProxy */ = {
6BB30C422018B74300C52C76 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6B9F51DC1FBF2F4F00252804 /* VueFlux.xcodeproj */;
containerPortal = 6BB30C382018B74200C52C76 /* VueFlux.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 6B9E328A1FA639DF000B24D4;
remoteInfo = VueFluxTests;
remoteInfo = Tests;
};
6BB30C462018B75E00C52C76 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6BB30C382018B74200C52C76 /* VueFlux.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 6B9E32801FA639DF000B24D4;
remoteInfo = VueFlux;
};
6BB30C4A2018B75E00C52C76 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6BB30C382018B74200C52C76 /* VueFlux.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 6B9EB2251FCB157C009F0659;
remoteInfo = VueFluxReactive;
};
/* End PBXContainerItemProxy section */

Expand All @@ -50,17 +66,18 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
6BEDA61A1FBA219700F03699 /* GenericComponents.framework in Embed Frameworks */,
6BEDA6011FBA1EFD00F03699 /* VueFlux.framework in Embed Frameworks */,
6BB30C452018B75E00C52C76 /* VueFlux.framework in Embed Frameworks */,
6BB30C492018B75E00C52C76 /* VueFluxReactive.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
6B9F51D01FBF2F3800252804 /* GenericComponents.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = GenericComponents.xcodeproj; path = ../GenericComponents/GenericComponents.xcodeproj; sourceTree = "<group>"; };
6B9F51DC1FBF2F4F00252804 /* VueFlux.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VueFlux.xcodeproj; path = ../../VueFlux.xcodeproj; sourceTree = "<group>"; };
6B81ADB82018B35C000B141F /* CounterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CounterView.swift; sourceTree = "<group>"; };
6B81ADBB2018B35C000B141F /* CounterView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CounterView.xib; sourceTree = "<group>"; };
6BB30C382018B74200C52C76 /* VueFlux.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VueFlux.xcodeproj; path = ../VueFlux.xcodeproj; sourceTree = "<group>"; };
6BEDA5E21FBA1DFE00F03699 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
6BEDA5F81FBA1E2700F03699 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
6BEDA5F91FBA1E2700F03699 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
Expand All @@ -70,47 +87,37 @@
6BEDA5FD1FBA1E2700F03699 /* CounterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CounterViewController.swift; sourceTree = "<group>"; };
6BEDA5FE1FBA1E2700F03699 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6BEDA5FF1FBA1EFD00F03699 /* VueFlux.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = VueFlux.framework; sourceTree = BUILT_PRODUCTS_DIR; };
6BEDA6181FBA219700F03699 /* GenericComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GenericComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
6BEDA5DF1FBA1DFE00F03699 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
6BEDA6191FBA219700F03699 /* GenericComponents.framework in Frameworks */,
6BEDA6001FBA1EFD00F03699 /* VueFlux.framework in Frameworks */,
6BB30C442018B75E00C52C76 /* VueFlux.framework in Frameworks */,
6BB30C482018B75E00C52C76 /* VueFluxReactive.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
6B9F51D11FBF2F3800252804 /* Products */ = {
isa = PBXGroup;
children = (
6B9F51D51FBF2F3800252804 /* GenericComponents.framework */,
);
name = Products;
sourceTree = "<group>";
};
6B9F51DD1FBF2F4F00252804 /* Products */ = {
6BB30C392018B74200C52C76 /* Products */ = {
isa = PBXGroup;
children = (
6B9F51E21FBF2F4F00252804 /* VueFlux.framework */,
6B9F51E41FBF2F4F00252804 /* VueFluxTests.xctest */,
6BB30C3F2018B74300C52C76 /* VueFlux.framework */,
6BB30C412018B74300C52C76 /* VueFluxReactive.framework */,
6BB30C432018B74300C52C76 /* Tests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
6BEDA5D91FBA1DFE00F03699 = {
isa = PBXGroup;
children = (
6B9F51DC1FBF2F4F00252804 /* VueFlux.xcodeproj */,
6B9F51D01FBF2F3800252804 /* GenericComponents.xcodeproj */,
6BB30C382018B74200C52C76 /* VueFlux.xcodeproj */,
6BEDA5F71FBA1E2700F03699 /* Sources */,
6BEDA5E31FBA1DFE00F03699 /* Products */,
6BEDA6181FBA219700F03699 /* GenericComponents.framework */,
6BEDA5FF1FBA1EFD00F03699 /* VueFlux.framework */,
);
sourceTree = "<group>";
Expand All @@ -132,6 +139,8 @@
6BEDA5FB1FBA1E2700F03699 /* CounterState.swift */,
6BEDA5FD1FBA1E2700F03699 /* CounterViewController.swift */,
6BEDA5FC1FBA1E2700F03699 /* CounterViewController.storyboard */,
6B81ADB82018B35C000B141F /* CounterView.swift */,
6B81ADBB2018B35C000B141F /* CounterView.xib */,
6BEDA5FE1FBA1E2700F03699 /* Info.plist */,
);
path = Sources;
Expand All @@ -152,6 +161,8 @@
buildRules = (
);
dependencies = (
6BB30C472018B75E00C52C76 /* PBXTargetDependency */,
6BB30C4B2018B75E00C52C76 /* PBXTargetDependency */,
);
name = Example;
productName = Example;
Expand Down Expand Up @@ -187,12 +198,8 @@
projectDirPath = "";
projectReferences = (
{
ProductGroup = 6B9F51D11FBF2F3800252804 /* Products */;
ProjectRef = 6B9F51D01FBF2F3800252804 /* GenericComponents.xcodeproj */;
},
{
ProductGroup = 6B9F51DD1FBF2F4F00252804 /* Products */;
ProjectRef = 6B9F51DC1FBF2F4F00252804 /* VueFlux.xcodeproj */;
ProductGroup = 6BB30C392018B74200C52C76 /* Products */;
ProjectRef = 6BB30C382018B74200C52C76 /* VueFlux.xcodeproj */;
},
);
projectRoot = "";
Expand All @@ -203,25 +210,25 @@
/* End PBXProject section */

/* Begin PBXReferenceProxy section */
6B9F51D51FBF2F3800252804 /* GenericComponents.framework */ = {
6BB30C3F2018B74300C52C76 /* VueFlux.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = GenericComponents.framework;
remoteRef = 6B9F51D41FBF2F3800252804 /* PBXContainerItemProxy */;
path = VueFlux.framework;
remoteRef = 6BB30C3E2018B74300C52C76 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
6B9F51E21FBF2F4F00252804 /* VueFlux.framework */ = {
6BB30C412018B74300C52C76 /* VueFluxReactive.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = VueFlux.framework;
remoteRef = 6B9F51E11FBF2F4F00252804 /* PBXContainerItemProxy */;
path = VueFluxReactive.framework;
remoteRef = 6BB30C402018B74300C52C76 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
6B9F51E41FBF2F4F00252804 /* VueFluxTests.xctest */ = {
6BB30C432018B74300C52C76 /* Tests.xctest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = VueFluxTests.xctest;
remoteRef = 6B9F51E31FBF2F4F00252804 /* PBXContainerItemProxy */;
path = Tests.xctest;
remoteRef = 6BB30C422018B74300C52C76 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
Expand All @@ -231,6 +238,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6BB30C352018B5D500C52C76 /* CounterView.xib in Resources */,
6BEDA6071FBA1F0800F03699 /* CounterViewController.storyboard in Resources */,
6BEDA6041FBA1F0800F03699 /* Assets.xcassets in Resources */,
);
Expand All @@ -247,11 +255,25 @@
6BEDA6081FBA1F0800F03699 /* CounterViewController.swift in Sources */,
6BEDA6051FBA1F0800F03699 /* CounterActions.swift in Sources */,
6BEDA6031FBA1F0800F03699 /* AppDelegate.swift in Sources */,
6B81ADBC2018B35C000B141F /* CounterView.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
6BB30C472018B75E00C52C76 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = VueFlux;
targetProxy = 6BB30C462018B75E00C52C76 /* PBXContainerItemProxy */;
};
6BB30C4B2018B75E00C52C76 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = VueFluxReactive;
targetProxy = 6BB30C4A2018B75E00C52C76 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */

/* Begin XCBuildConfiguration section */
6BEDA5F21FBA1DFE00F03699 /* Debug */ = {
isa = XCBuildConfiguration;
Expand Down Expand Up @@ -363,7 +385,9 @@
6BEDA5F51FBA1DFE00F03699 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
Expand All @@ -379,7 +403,9 @@
6BEDA5F61FBA1DFE00F03699 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist";
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ enum CounterAction {
case increment
case decrement
case reset
case openGitHub
case update(interval: TimeInterval)
}

extension Actions where State == CounterState {
Expand All @@ -25,4 +27,12 @@ extension Actions where State == CounterState {
self.dispatch(action: .reset)
}
}

func openGitHub() {
self.dispatch(action: .openGitHub)
}

func update(interval: TimeInterval) {
dispatch(action: .update(interval: interval))
}
}
Loading

0 comments on commit 0657a06

Please sign in to comment.