-
-
Notifications
You must be signed in to change notification settings - Fork 34
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
#35: Add a check for update solution
- Add a basic check for update solution
- Loading branch information
Showing
12 changed files
with
770 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<Scheme | ||
LastUpgradeVersion = "1530" | ||
version = "1.7"> | ||
<BuildAction | ||
parallelizeBuildables = "YES" | ||
buildImplicitDependencies = "YES" | ||
buildArchitectures = "Automatic"> | ||
<BuildActionEntries> | ||
<BuildActionEntry | ||
buildForTesting = "YES" | ||
buildForRunning = "YES" | ||
buildForProfiling = "YES" | ||
buildForArchiving = "YES" | ||
buildForAnalyzing = "YES"> | ||
<BuildableReference | ||
BuildableIdentifier = "primary" | ||
BlueprintIdentifier = "FA53906720EF5F7F00BA9AF7" | ||
BuildableName = "VPNApp.app" | ||
BlueprintName = "VPNApp" | ||
ReferencedContainer = "container:VPN.xcodeproj"> | ||
</BuildableReference> | ||
</BuildActionEntry> | ||
</BuildActionEntries> | ||
</BuildAction> | ||
<TestAction | ||
buildConfiguration = "Debug" | ||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
shouldUseLaunchSchemeArgsEnv = "YES" | ||
shouldAutocreateTestPlan = "YES"> | ||
<Testables> | ||
<TestableReference | ||
skipped = "NO" | ||
parallelizable = "YES"> | ||
<BuildableReference | ||
BuildableIdentifier = "primary" | ||
BlueprintIdentifier = "024D90052BC71C04005BF977" | ||
BuildableName = "VPNAppTests.xctest" | ||
BlueprintName = "VPNAppTests" | ||
ReferencedContainer = "container:VPN.xcodeproj"> | ||
</BuildableReference> | ||
</TestableReference> | ||
</Testables> | ||
</TestAction> | ||
<LaunchAction | ||
buildConfiguration = "Debug" | ||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
launchStyle = "0" | ||
useCustomWorkingDirectory = "NO" | ||
ignoresPersistentStateOnLaunch = "NO" | ||
debugDocumentVersioning = "YES" | ||
debugServiceExtension = "internal" | ||
allowLocationSimulation = "YES"> | ||
<BuildableProductRunnable | ||
runnableDebuggingMode = "0"> | ||
<BuildableReference | ||
BuildableIdentifier = "primary" | ||
BlueprintIdentifier = "FA53906720EF5F7F00BA9AF7" | ||
BuildableName = "VPNApp.app" | ||
BlueprintName = "VPNApp" | ||
ReferencedContainer = "container:VPN.xcodeproj"> | ||
</BuildableReference> | ||
</BuildableProductRunnable> | ||
</LaunchAction> | ||
<ProfileAction | ||
buildConfiguration = "Release" | ||
shouldUseLaunchSchemeArgsEnv = "YES" | ||
savedToolIdentifier = "" | ||
useCustomWorkingDirectory = "NO" | ||
debugDocumentVersioning = "YES"> | ||
<BuildableProductRunnable | ||
runnableDebuggingMode = "0"> | ||
<BuildableReference | ||
BuildableIdentifier = "primary" | ||
BlueprintIdentifier = "FA53906720EF5F7F00BA9AF7" | ||
BuildableName = "VPNApp.app" | ||
BlueprintName = "VPNApp" | ||
ReferencedContainer = "container:VPN.xcodeproj"> | ||
</BuildableReference> | ||
</BuildableProductRunnable> | ||
</ProfileAction> | ||
<AnalyzeAction | ||
buildConfiguration = "Debug"> | ||
</AnalyzeAction> | ||
<ArchiveAction | ||
buildConfiguration = "Release" | ||
revealArchiveInOrganizer = "YES"> | ||
</ArchiveAction> | ||
</Scheme> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<Scheme | ||
LastUpgradeVersion = "1530" | ||
version = "1.7"> | ||
<BuildAction | ||
parallelizeBuildables = "YES" | ||
buildImplicitDependencies = "YES" | ||
buildArchitectures = "Automatic"> | ||
<BuildActionEntries> | ||
<BuildActionEntry | ||
buildForTesting = "YES" | ||
buildForRunning = "YES" | ||
buildForProfiling = "YES" | ||
buildForArchiving = "YES" | ||
buildForAnalyzing = "YES"> | ||
<BuildableReference | ||
BuildableIdentifier = "primary" | ||
BlueprintIdentifier = "02619DE320F7DF2200099652" | ||
BuildableName = "VPNStatus.app" | ||
BlueprintName = "VPNStatus" | ||
ReferencedContainer = "container:VPN.xcodeproj"> | ||
</BuildableReference> | ||
</BuildActionEntry> | ||
</BuildActionEntries> | ||
</BuildAction> | ||
<TestAction | ||
buildConfiguration = "Debug" | ||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
shouldUseLaunchSchemeArgsEnv = "YES" | ||
shouldAutocreateTestPlan = "YES"> | ||
</TestAction> | ||
<LaunchAction | ||
buildConfiguration = "Debug" | ||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
launchStyle = "0" | ||
useCustomWorkingDirectory = "NO" | ||
ignoresPersistentStateOnLaunch = "NO" | ||
debugDocumentVersioning = "YES" | ||
debugServiceExtension = "internal" | ||
allowLocationSimulation = "YES"> | ||
<BuildableProductRunnable | ||
runnableDebuggingMode = "0"> | ||
<BuildableReference | ||
BuildableIdentifier = "primary" | ||
BlueprintIdentifier = "02619DE320F7DF2200099652" | ||
BuildableName = "VPNStatus.app" | ||
BlueprintName = "VPNStatus" | ||
ReferencedContainer = "container:VPN.xcodeproj"> | ||
</BuildableReference> | ||
</BuildableProductRunnable> | ||
</LaunchAction> | ||
<ProfileAction | ||
buildConfiguration = "Release" | ||
shouldUseLaunchSchemeArgsEnv = "YES" | ||
savedToolIdentifier = "" | ||
useCustomWorkingDirectory = "NO" | ||
debugDocumentVersioning = "YES"> | ||
<BuildableProductRunnable | ||
runnableDebuggingMode = "0"> | ||
<BuildableReference | ||
BuildableIdentifier = "primary" | ||
BlueprintIdentifier = "02619DE320F7DF2200099652" | ||
BuildableName = "VPNStatus.app" | ||
BlueprintName = "VPNStatus" | ||
ReferencedContainer = "container:VPN.xcodeproj"> | ||
</BuildableReference> | ||
</BuildableProductRunnable> | ||
</ProfileAction> | ||
<AnalyzeAction | ||
buildConfiguration = "Debug"> | ||
</AnalyzeAction> | ||
<ArchiveAction | ||
buildConfiguration = "Release" | ||
revealArchiveInOrganizer = "YES"> | ||
</ArchiveAction> | ||
</Scheme> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
import XCTest | ||
|
||
final class GitHubReleaseTests: XCTestCase { | ||
|
||
func testGitHubReleaseComparison() throws { | ||
let release_1_0 = GitHubRelease(name: "1.0", prerelease: false, draft: false) | ||
let release_1_1 = GitHubRelease(name: "1.1", prerelease: false, draft: false) | ||
let release_1_2 = GitHubRelease(name: "1.2", prerelease: false, draft: false) | ||
let release_1_10 = GitHubRelease(name: "1.10", prerelease: false, draft: false) | ||
let release_1_0_0 = GitHubRelease(name: "1.0.0", prerelease: false, draft: false) | ||
let release_1_0_1 = GitHubRelease(name: "1.0.1", prerelease: false, draft: false) | ||
let release_1_1_1 = GitHubRelease(name: "1.1.1", prerelease: false, draft: false) | ||
let release_1_10_1 = GitHubRelease(name: "1.10.1", prerelease: false, draft: false) | ||
let release_2_0 = GitHubRelease(name: "2.0", prerelease: false, draft: false) | ||
let release_3_0 = GitHubRelease(name: "3.0", prerelease: false, draft: false) | ||
|
||
|
||
XCTAssertTrue(release_1_0 < release_1_1) | ||
XCTAssertTrue(release_1_1 < release_1_2) | ||
XCTAssertTrue(release_1_2 < release_1_10) | ||
XCTAssertTrue(release_1_1 < release_1_10) | ||
XCTAssertTrue(release_1_0 < release_1_10) | ||
|
||
XCTAssertTrue(release_1_0_0 == release_1_0) | ||
XCTAssertTrue(release_1_0_0 == release_1_0_0) | ||
XCTAssertTrue(release_1_0_0 < release_1_1) | ||
XCTAssertTrue(release_1_0_0 < release_1_2) | ||
XCTAssertTrue(release_1_0_0 < release_1_0_1) | ||
XCTAssertTrue(release_1_0_0 < release_1_1_1) | ||
XCTAssertTrue(release_1_0_0 < release_1_10_1) | ||
XCTAssertTrue(release_1_0_0 < release_2_0) | ||
XCTAssertTrue(release_1_0_0 < release_3_0) | ||
|
||
XCTAssertTrue(release_1_0_1 < release_1_1) | ||
XCTAssertTrue(release_1_0_1 < release_1_2) | ||
XCTAssertTrue(release_1_0_1 == release_1_0_1) | ||
XCTAssertTrue(release_1_0_1 < release_1_1_1) | ||
XCTAssertTrue(release_1_0_1 < release_1_10_1) | ||
XCTAssertTrue(release_1_0_1 < release_2_0) | ||
XCTAssertTrue(release_1_0_1 < release_3_0) | ||
|
||
XCTAssertTrue(release_1_10_1 > release_1_1) | ||
XCTAssertTrue(release_1_10_1 > release_1_2) | ||
XCTAssertTrue(release_1_10_1 == release_1_10_1) | ||
XCTAssertTrue(release_1_10_1 > release_1_1_1) | ||
XCTAssertTrue(release_1_10_1 == release_1_10_1) | ||
XCTAssertTrue(release_1_10_1 < release_2_0) | ||
XCTAssertTrue(release_1_10_1 < release_3_0) | ||
|
||
XCTAssertTrue(release_2_0 > release_1_0) | ||
XCTAssertTrue(release_2_0 > release_1_1) | ||
XCTAssertTrue(release_2_0 > release_1_2) | ||
XCTAssertTrue(release_2_0 > release_1_10) | ||
XCTAssertTrue(release_2_0 > release_1_0_0) | ||
XCTAssertTrue(release_2_0 > release_1_0_1) | ||
XCTAssertTrue(release_2_0 > release_1_1_1) | ||
XCTAssertTrue(release_2_0 > release_1_10_1) | ||
XCTAssertTrue(release_2_0 == release_2_0) | ||
XCTAssertTrue(release_2_0 < release_3_0) | ||
} | ||
|
||
func testGitHubReleasePrereleaseDraft() throws { | ||
let release_1_0 = GitHubRelease(name: "1.0", prerelease: false, draft: false) | ||
let release_1_1 = GitHubRelease(name: "1.1", prerelease: true, draft: false) | ||
let release_1_2 = GitHubRelease(name: "1.2", prerelease: true, draft: false) | ||
|
||
XCTAssertTrue(release_1_0 < release_1_1) | ||
XCTAssertTrue(release_1_1 < release_1_2) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> | ||
<dependencies> | ||
<deployment identifier="macosx"/> | ||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22689"/> | ||
<capability name="Image references" minToolsVersion="12.0"/> | ||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||
</dependencies> | ||
<objects> | ||
<customObject id="-2" userLabel="File's Owner" customClass="ACCheckForUpdateWindow"> | ||
<connections> | ||
<outlet property="versionsLabel" destination="w3a-Pv-huV" id="cQ4-fy-0eN"/> | ||
<outlet property="window" destination="xOd-HO-29H" id="JIz-fz-R2o"/> | ||
</connections> | ||
</customObject> | ||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> | ||
<customObject id="-3" userLabel="Application" customClass="NSObject"/> | ||
<window title="Software Update" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" tabbingMode="disallowed" id="xOd-HO-29H" userLabel="Window"> | ||
<windowStyleMask key="styleMask" titled="YES" closable="YES"/> | ||
<rect key="contentRect" x="133" y="235" width="471" height="158"/> | ||
<rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/> | ||
<value key="minSize" type="size" width="471" height="303"/> | ||
<value key="maxSize" type="size" width="471" height="303"/> | ||
<value key="minFullScreenContentSize" type="size" width="471" height="303"/> | ||
<value key="maxFullScreenContentSize" type="size" width="471" height="303"/> | ||
<view key="contentView" id="gIp-Ho-8D9"> | ||
<rect key="frame" x="0.0" y="0.0" width="471" height="158"/> | ||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
<subviews> | ||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Gbf-gn-mXu"> | ||
<rect key="frame" x="20" y="74" width="64" height="64"/> | ||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> | ||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="aLR-qG-YKm"> | ||
<imageReference key="image" image="VPNStatus" symbolScale="large"/> | ||
</imageCell> | ||
<color key="contentTintColor" name="systemPinkColor" catalog="System" colorSpace="catalog"/> | ||
</imageView> | ||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Zeg-Ha-1do"> | ||
<rect key="frame" x="90" y="107" width="363" height="24"/> | ||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> | ||
<textFieldCell key="cell" lineBreakMode="clipping" title="A new version of VPNStatus is available!" id="yQk-ZW-ZYH"> | ||
<font key="font" textStyle="headline" name=".SFNS-Bold"/> | ||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> | ||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> | ||
</textFieldCell> | ||
</textField> | ||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="w3a-Pv-huV"> | ||
<rect key="frame" x="90" y="90" width="363" height="16"/> | ||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> | ||
<textFieldCell key="cell" lineBreakMode="clipping" title="VPNStatus %@ is now available, you have %@." id="Ndp-hu-NOz"> | ||
<font key="font" metaFont="system"/> | ||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> | ||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> | ||
</textFieldCell> | ||
</textField> | ||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fUp-dY-kQg"> | ||
<rect key="frame" x="340" y="13" width="118" height="32"/> | ||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> | ||
<buttonCell key="cell" type="push" title="Install Update" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="yZc-ae-Ne3"> | ||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> | ||
<font key="font" metaFont="system"/> | ||
<string key="keyEquivalent" base64-UTF8="YES"> | ||
DQ | ||
</string> | ||
</buttonCell> | ||
<connections> | ||
<action selector="doInstallUpdate:" target="-2" id="fUk-8P-npy"/> | ||
</connections> | ||
</button> | ||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SNV-n7-UZ0"> | ||
<rect key="frame" x="205" y="13" width="137" height="32"/> | ||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> | ||
<buttonCell key="cell" type="push" title="Remind Me Later" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="rNz-5F-3FG"> | ||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> | ||
<font key="font" metaFont="system"/> | ||
</buttonCell> | ||
<connections> | ||
<action selector="doRemindMeLater:" target="-2" id="Wfk-2f-YyX"/> | ||
</connections> | ||
</button> | ||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hxV-Fc-CXR"> | ||
<rect key="frame" x="13" y="13" width="135" height="32"/> | ||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> | ||
<buttonCell key="cell" type="push" title="Skip this Version" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="NJD-tK-Kd9"> | ||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> | ||
<font key="font" metaFont="system"/> | ||
</buttonCell> | ||
<connections> | ||
<action selector="doSkipThisVersion:" target="-2" id="D69-c9-m1W"/> | ||
</connections> | ||
</button> | ||
</subviews> | ||
</view> | ||
<connections> | ||
<outlet property="delegate" destination="-2" id="0bl-1N-x8E"/> | ||
</connections> | ||
<point key="canvasLocation" x="-61.5" y="-78"/> | ||
</window> | ||
</objects> | ||
<resources> | ||
<image name="VPNStatus" width="256" height="256"/> | ||
</resources> | ||
</document> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
#import <Cocoa/Cocoa.h> | ||
|
||
@interface ACCheckForUpdateWindow : NSWindowController | ||
|
||
+ (ACCheckForUpdateWindow *)sharedWindowController; | ||
-(void)showUpdateAvailable:(NSString *)oldVersion newVersion:(NSString*)newVersion; | ||
|
||
@end | ||
|
Oops, something went wrong.