timewizard 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NWFmNzU1MzBlZjcwOGQ3OTg2ZGY1MGVhOGYzZGNjZjQzYTljYTgyNw==
4
+ NjBhYmRmM2QxYzZmZDE5ZGE1MWZiNjQ5M2NiOWIyNjYyZjQzNzJiZQ==
5
5
  data.tar.gz: !binary |-
6
- MTczZDllYjdhYTJkMzQzYjQ2NTFjNmZlNTBiNTIyMjhhYTQ5NzMxOQ==
6
+ Njc4MWE1ODFhZThiNGM2YTZhYTEyMzRmOTZhNDU5ODA3MjZjMmFhZg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YjdjYmU2ODMxMjBkYzkyNDcwMzk5MTdhZjMwMGU0ZDk2Y2MyOTZkZTc2ZDVm
10
- YjQ0YzEyOGI3MDk3NDA3MWY0YTVlNjdiNWI3OWZmZDEzMWUzMTMzNjRiYWU3
11
- OWQ1YzQzZGM4NjVhMmVlNWQ3ZDkwMWFkNTZhZWQ5MmVjMGI0MDc=
9
+ M2RjYzdhNmM1Njc3ODIzZDg3ZjZjYmRjMDIwMjBiM2FhYTM3MjFiYjk5MDAy
10
+ ZWFmMmNiMjZjNGI1MGZlN2YzNWFjZGFkNTk4NTM1MTkxZDhjNzZiMDZiNTU0
11
+ YWMxYzk5YTk0MTM2MzJhNjA5NjFkM2M4NzY2ZTk3YzZlMDY0YzM=
12
12
  data.tar.gz: !binary |-
13
- YzEwMzA0NjdiYWM3ZjUwNmIyMTdkMjkzMjllNTU4MTM4MmE5OGU3YjdlNTM5
14
- MjY4NzczOWY0YmRkZGNjMDdkMTg5ODQzNWZiZWY4MzVjMjc2YWFjNGFiZDc2
15
- Zjc4NzZjNmMyNzA0MjQ4N2MzMzBlZDc4MjBkMGNiZDE0MWQzYTY=
13
+ YjgwYTQ2YjY2NWUxMmFiOTdkZjYyOTQ3YzE4ZjJjMGFjMjk1MDMxNGJlZGRl
14
+ OTczNGU4Mjc4Zjk5MWNjNjI0ZTdkYjhjZTg0ZmQxM2Q4MWJmNGJlYjkwZjA4
15
+ ZjE5M2FhZTZkOTc3NGYzYjFkMzM2NWU1ODg1Y2FkNjgxYzFhYzc=
data/.gitignore CHANGED
@@ -94,4 +94,48 @@ com_crashlytics_export_strings.xml
94
94
  crashlytics.properties
95
95
  crashlytics-build.properties
96
96
 
97
+ ### Objective-C template
98
+ # Xcode
99
+ #
100
+ build/
101
+ *.pbxuser
102
+ !default.pbxuser
103
+ *.mode1v3
104
+ !default.mode1v3
105
+ *.mode2v3
106
+ !default.mode2v3
107
+ *.perspectivev3
108
+ !default.perspectivev3
109
+ xcuserdata
110
+ *.xccheckout
111
+ *.moved-aside
112
+ DerivedData
113
+ *.hmap
114
+ *.ipa
115
+ *.xcuserstate
116
+
117
+ # CocoaPods
118
+ #
119
+ # We recommend against adding the Pods directory to your .gitignore. However
120
+ # you should judge for yourself, the pros and cons are mentioned at:
121
+ # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
122
+ #
123
+ #Pods/
124
+
125
+ ### Xcode template
126
+ build/
127
+ *.pbxuser
128
+ !default.pbxuser
129
+ *.mode1v3
130
+ !default.mode1v3
131
+ *.mode2v3
132
+ !default.mode2v3
133
+ *.perspectivev3
134
+ !default.perspectivev3
135
+ xcuserdata
136
+ *.xccheckout
137
+ *.moved-aside
138
+ DerivedData
139
+ *.xcuserstate
140
+
97
141
 
data/.travis.yml CHANGED
@@ -1,15 +1,31 @@
1
- language: ruby
1
+ language: objective-c
2
+ osx_image: xcode6.4
2
3
  rvm:
3
4
  - 2.0.0
4
5
  before_install: gem install bundler -v 1.10.6
6
+ install: bundle install --jobs=3 --retry=3
7
+ script: bundle exec rake
8
+ branches:
9
+ only:
10
+ - master
11
+ - development
5
12
  addons:
6
13
  code_climate:
7
14
  repo_token: 3dadb0fa3dce6a25c5f684b84239182e45fabf0d45c64511f621863e4c89b3fb
8
15
  deploy:
9
- provider: rubygems
10
- api_key:
11
- secure: iUqr4kxkxh5jioaDBjdf2Peu543U8dpaP9bAbkLQ5Lc26hYck8VfqTHzVAveLYsaipsgO7vwTTAKizbAj3eZqnASmb9v+A+Ejgrj6XPnPLpXzRAZsAqx5Qf+zCgiA5gRkI7g653HF160nXje08NpWeXKRpyYZj+oxIEUeGr31SHlffHvMBOVchB9UWl1dfiS2mYLdrFCpBlCgvppO0+Mr3OI8JLfLe3bpA3uES/poFyKFBUbYJZF1p1Hmr1lmIM3vaU6W4rzYWjFzfTxs/LgM6GlhQOgohhsvwD6T+cDNunXGze3V4EzwVtIe5VrzepLaH7DXLaO0PKgv+calXseDeAGTz5nE5eFh+GqKEtYl/FeBz+35m1cDIFYUF7p1uPGM+R+sQmPnUFlu6tFXLrwfDkS/Rorjtl0p922DpZqJnGWDJW1YLFt/OGR5zZ0SY01n/1EkCLyd4K6xVyGU/ErUGgmjmljQyjXd4G/FxFm+ULtCYyS0W0o63wX5EHEU0ftO24H1rM8Vb2ajKRZbF9zy7QnMscnDJRnOsgWUq0IbXecQVxK25wegwA31r/k1ImtKPfeKs92LoQkFZgsi3lh4qJGx2vdqQHnJaQkcZ5ZFuPR4u1tFWnmoFRjNB8eCdiHHrKNLm/zFB6m//C+ebeTpuUf+CoYV1SeWzEBnsiK74c=
12
- gem: timewizard
13
- on:
14
- tags: true
15
- repo: Nunnery/timewizard
16
+ - provider: rubygems
17
+ api_key:
18
+ secure: iUqr4kxkxh5jioaDBjdf2Peu543U8dpaP9bAbkLQ5Lc26hYck8VfqTHzVAveLYsaipsgO7vwTTAKizbAj3eZqnASmb9v+A+Ejgrj6XPnPLpXzRAZsAqx5Qf+zCgiA5gRkI7g653HF160nXje08NpWeXKRpyYZj+oxIEUeGr31SHlffHvMBOVchB9UWl1dfiS2mYLdrFCpBlCgvppO0+Mr3OI8JLfLe3bpA3uES/poFyKFBUbYJZF1p1Hmr1lmIM3vaU6W4rzYWjFzfTxs/LgM6GlhQOgohhsvwD6T+cDNunXGze3V4EzwVtIe5VrzepLaH7DXLaO0PKgv+calXseDeAGTz5nE5eFh+GqKEtYl/FeBz+35m1cDIFYUF7p1uPGM+R+sQmPnUFlu6tFXLrwfDkS/Rorjtl0p922DpZqJnGWDJW1YLFt/OGR5zZ0SY01n/1EkCLyd4K6xVyGU/ErUGgmjmljQyjXd4G/FxFm+ULtCYyS0W0o63wX5EHEU0ftO24H1rM8Vb2ajKRZbF9zy7QnMscnDJRnOsgWUq0IbXecQVxK25wegwA31r/k1ImtKPfeKs92LoQkFZgsi3lh4qJGx2vdqQHnJaQkcZ5ZFuPR4u1tFWnmoFRjNB8eCdiHHrKNLm/zFB6m//C+ebeTpuUf+CoYV1SeWzEBnsiK74c=
19
+ gem: timewizard
20
+ edge: true
21
+ on:
22
+ branch: master
23
+ repo: Nunnery/timewizard
24
+ - provider: rubygems
25
+ api_key:
26
+ secure: iUqr4kxkxh5jioaDBjdf2Peu543U8dpaP9bAbkLQ5Lc26hYck8VfqTHzVAveLYsaipsgO7vwTTAKizbAj3eZqnASmb9v+A+Ejgrj6XPnPLpXzRAZsAqx5Qf+zCgiA5gRkI7g653HF160nXje08NpWeXKRpyYZj+oxIEUeGr31SHlffHvMBOVchB9UWl1dfiS2mYLdrFCpBlCgvppO0+Mr3OI8JLfLe3bpA3uES/poFyKFBUbYJZF1p1Hmr1lmIM3vaU6W4rzYWjFzfTxs/LgM6GlhQOgohhsvwD6T+cDNunXGze3V4EzwVtIe5VrzepLaH7DXLaO0PKgv+calXseDeAGTz5nE5eFh+GqKEtYl/FeBz+35m1cDIFYUF7p1uPGM+R+sQmPnUFlu6tFXLrwfDkS/Rorjtl0p922DpZqJnGWDJW1YLFt/OGR5zZ0SY01n/1EkCLyd4K6xVyGU/ErUGgmjmljQyjXd4G/FxFm+ULtCYyS0W0o63wX5EHEU0ftO24H1rM8Vb2ajKRZbF9zy7QnMscnDJRnOsgWUq0IbXecQVxK25wegwA31r/k1ImtKPfeKs92LoQkFZgsi3lh4qJGx2vdqQHnJaQkcZ5ZFuPR4u1tFWnmoFRjNB8eCdiHHrKNLm/zFB6m//C+ebeTpuUf+CoYV1SeWzEBnsiK74c=
27
+ gem: timewizard
28
+ edge: true
29
+ on:
30
+ branch: development
31
+ repo: Nunnery/timewizard
data/README.md CHANGED
@@ -4,6 +4,7 @@
4
4
  [![Test Coverage](https://codeclimate.com/github/Nunnery/timewizard/badges/coverage.svg)](https://codeclimate.com/github/Nunnery/timewizard/coverage)
5
5
  [![Build Status](https://travis-ci.org/Nunnery/timewizard.svg?branch=master)](https://travis-ci.org/Nunnery/timewizard)
6
6
  [![Dependency Status](https://gemnasium.com/Nunnery/timewizard.svg)](https://gemnasium.com/Nunnery/timewizard)
7
+ [![Gem Version](https://badge.fury.io/rb/timewizard.svg)](http://badge.fury.io/rb/timewizard)
7
8
 
8
9
  ## Installation
9
10
 
@@ -0,0 +1,17 @@
1
+ module Timewizard
2
+ module Utils
3
+ module Wizardry
4
+
5
+ VERSION_REGEX = /((\d+\.)?(\d+\.)?(\*|\d+))(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/
6
+
7
+ def self.to_i(stringy)
8
+ stringy.gsub(/\D/, '').to_i || 0
9
+ end
10
+
11
+ def self.only_version(stringy)
12
+ VERSION_REGEX.match(stringy).to_s
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module Timewizard
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -1,15 +1,18 @@
1
+ require 'timewizard/utils/wizardry'
2
+
1
3
  module Timewizard
2
4
  module Versioner
3
5
  class Android
4
6
  attr_accessor :dir
5
7
  attr_reader :manifest
6
- attr_reader :old_version
7
- attr_accessor :new_version
8
+ attr_reader :old_version_code
9
+ attr_reader :old_version_name
10
+ attr_accessor :new_version_code
11
+ attr_accessor :new_version_name
8
12
 
9
13
  def initialize(dir)
10
14
  @dir = dir
11
15
  @manifest = nil
12
- @last_version = 0
13
16
  end
14
17
 
15
18
  def update(change_to = '-1')
@@ -17,21 +20,31 @@ module Timewizard
17
20
  end
18
21
 
19
22
  def find_manifest()
20
- # check if the directory exists
21
- unless Dir.exist?(@dir)
22
- raise "directory passed in does not exist"
23
- end
24
- temp_file = nil
25
- # check if the directory contains an AndroidManifest.xml
26
- Dir.foreach(@dir.to_s) { |x|
27
- if x == "AndroidManifest.xml"
28
- temp_file = x
29
- end }
30
- if temp_file.nil?
31
- raise "there is no AndroidManifest.xml in the given directory"
23
+ if File.directory?(@dir)
24
+ # check if the directory exists
25
+ unless Dir.exist?(@dir)
26
+ raise "directory passed in does not exist"
27
+ end
28
+ temp_file = nil
29
+ # check if the directory contains an AndroidManifest.xml
30
+ Dir.foreach(@dir.to_s) { |x|
31
+ if x == "AndroidManifest.xml"
32
+ temp_file = x
33
+ end }
34
+ if temp_file.nil?
35
+ raise "there is no AndroidManifest.xml in the given directory"
36
+ end
37
+ @manifest = File.expand_path(temp_file, @dir)
38
+ else
39
+ unless File.exist?(@dir)
40
+ raise "file passed in does not exist"
41
+ end
42
+ unless @dir == "AndroidManifest.xml"
43
+ raise "file must be an AndroidManifest.xml"
44
+ end
45
+ temp_file = File.absolute_path(@dir)
46
+ @manifest = temp_file
32
47
  end
33
-
34
- @manifest = File.expand_path(temp_file, @dir)
35
48
  end
36
49
 
37
50
  def open_manifest()
@@ -49,32 +62,58 @@ module Timewizard
49
62
  end
50
63
 
51
64
  def find_version_code(container)
65
+ codes = find_version_code_and_name(container)
66
+ codes[0]
67
+ end
68
+
69
+ def find_version_name(container)
70
+ codes = find_version_code_and_name(container)
71
+ codes[1]
72
+ end
73
+
74
+ def find_version_code_and_name(container)
52
75
  parts = container.match("android:versionCode=\"(.*)\"")
53
- version_code = parts[1]
54
76
 
55
- puts version_code
77
+ text = parts[0]
78
+ text_split = text.partition /\s+/
56
79
 
57
- @old_version = (version_code.to_i)
58
- @new_version = (version_code.to_i + 1)
80
+ @old_version_code = Timewizard::Utils::Wizardry.to_i text_split[0]
81
+ @new_version_code = (@old_version_code + 1)
59
82
 
60
- puts "Old version " + @old_version
61
- puts "New version " + @new_version
83
+ @old_version_name = Timewizard::Utils::Wizardry.only_version text_split[2]
84
+ @new_version_name = @old_version_name
62
85
 
63
- parts
86
+ codes = [text_split[0], text_split[2]]
64
87
  end
65
88
 
66
89
  def change_version_code(parts, change_to = '-1')
67
- if change_to.to_i >= 0
68
- parts[0].gsub(parts[1], @changeTo.to_s)
90
+ text = parts
91
+ version = Timewizard::Utils::Wizardry.to_i(text).to_s
92
+ if change_to.to_s == '-1'
93
+ text = text.gsub(version, @new_version_code.to_s)
94
+ else
95
+ @new_version_code = change_to.to_i
96
+ text = text.gsub(version, @new_version_code.to_s)
97
+ end
98
+ end
99
+
100
+ def change_version_name(parts, change_to = '-1')
101
+ text = parts
102
+ version = Timewizard::Utils::Wizardry.only_version text
103
+ if change_to.to_s == '-1'
104
+ text = text.gsub(version, @new_version_name.to_s)
69
105
  else
70
- parts[0].gsub(parts[1], @new_version.to_s)
106
+ @new_version_name = Timewizard::Utils::Wizardry.only_version change_to
107
+ text = text.gsub(version, @new_version_name.to_s)
71
108
  end
72
109
  end
73
110
 
74
- def change_manifest(container, change_to = '-1')
75
- version_codes = find_version_code(container)
76
- changed_codes = change_version_code(version_codes, change_to)
77
- container = container.gsub(version_codes[0], changed_codes)
111
+ def change_manifest(container, version_code_change = '-1', version_name_change = '-1')
112
+ version_code = find_version_code(container)
113
+ changed_code = change_version_code(version_code, version_code_change)
114
+ version_name = find_version_name(container)
115
+ changed_name = change_version_name(version_name, version_name_change)
116
+ container = container.gsub(version_code, changed_code).gsub(version_name, changed_name)
78
117
  end
79
118
 
80
119
  def write_manifest(container)
@@ -0,0 +1,117 @@
1
+ require 'xcodeproj'
2
+ require 'find'
3
+ require 'versionomy'
4
+ require 'timewizard/utils/wizardry'
5
+
6
+ module Timewizard
7
+ module Versioner
8
+ class Apple
9
+ attr_accessor :dir
10
+ attr_reader :proj
11
+ attr_reader :plists
12
+ attr_reader :old_bundle_version
13
+ attr_reader :old_build_number
14
+ attr_accessor :new_bundle_version
15
+ attr_accessor :new_build_number
16
+
17
+ def initialize(dir)
18
+ @dir = dir
19
+ @proj = nil
20
+ @plists = []
21
+ end
22
+
23
+ def find_xcode_project()
24
+ if @dir.nil?
25
+ raise "directory cannot be nil"
26
+ end
27
+ if @dir.end_with? ".xcodeproj"
28
+ @proj = File.absolute_path(@dir)
29
+ else
30
+ Find.find(@dir) do |path|
31
+ unless path.to_s.end_with? ".xcodeproj"
32
+ next
33
+ end
34
+ @proj = path
35
+ end
36
+ end
37
+ @proj
38
+ end
39
+
40
+ def find_plists()
41
+ if @proj.nil?
42
+ raise "there is no .xcodeproj"
43
+ end
44
+ directory = File.dirname(@proj.to_s)
45
+ unless Dir.exist?(directory)
46
+ raise "proj is not in a directory"
47
+ end
48
+ @plists = []
49
+ Find.find(directory) do |p|
50
+ if /^.*Info\.plist$/ =~ p
51
+ @plists << p
52
+ end
53
+ end
54
+ @plists
55
+ end
56
+
57
+ def find_bundle_version(lists)
58
+ find_bundle_and_build_version(lists)[0]
59
+ end
60
+
61
+ def find_build_number(lists)
62
+ find_bundle_and_build_version(lists)[1]
63
+ end
64
+
65
+ def change_bundle_version(versions, change_to = '-1')
66
+ unless change_to != '-1'
67
+ @new_bundle_version = versions[0]
68
+ versions
69
+ end
70
+ ver = Timewizard::Utils::Wizardry.only_version change_to
71
+ parsed = Versionomy.parse(ver, Versionomy::Format.get('rubygems'))
72
+ versions[0] = parsed.unparse
73
+ @new_bundle_version = versions[0]
74
+ versions
75
+ end
76
+
77
+ def change_build_number(versions, change_to = '-1')
78
+ if change_to == '-1'
79
+ ver = Timewizard::Utils::Wizardry.only_version @old_build_number.to_s
80
+ parsed = Versionomy.parse(ver, Versionomy::Format.get('rubygems'))
81
+ parsed = parsed.bump(parsed.parts.length - 1)
82
+ versions[1] = parsed.unparse
83
+ @new_build_number = versions[1]
84
+ else
85
+ ver = Timewizard::Utils::Wizardry.only_version change_to
86
+ parsed = Versionomy.parse ver
87
+ versions[1] = parsed.unparse
88
+ @new_build_number = versions[1]
89
+ end
90
+ versions
91
+ end
92
+
93
+ def find_bundle_and_build_version(lists)
94
+ versions = []
95
+ for list in lists do
96
+ list_hash = Xcodeproj::PlistHelper.read list
97
+ versions[0] ||= list_hash["CFBundleShortVersionString"]
98
+ versions[1] ||= list_hash["CFBundleVersion"]
99
+
100
+ @old_bundle_version = versions[0]
101
+ @old_build_number = versions[1]
102
+ end
103
+ versions
104
+ end
105
+
106
+ def write_plists(versions)
107
+ for list in @plists do
108
+ list_hash = Xcodeproj::PlistHelper.read list
109
+ list_hash["CFBundleShortVersionString"] = versions[0] || list_hash["CFBundleShortVersionString"]
110
+ list_hash["CFBundleVersion"] = versions[0] || list_hash["CFBundleVersion"]
111
+ Xcodeproj::PlistHelper.write(list_hash, list)
112
+ end
113
+ end
114
+
115
+ end
116
+ end
117
+ end
@@ -1,5 +1,6 @@
1
1
  module Timewizard
2
2
  module Versioner
3
3
  autoload :Android, 'timewizard/versioner/android'
4
+ autoload :Apple, 'timewizard/versioner/apple'
4
5
  end
5
6
  end
@@ -0,0 +1,17 @@
1
+ //
2
+ // AppDelegate.h
3
+ // TestApp
4
+ //
5
+ // Created by Richard Harrah on 8/17/15.
6
+ // Copyright (c) 2015 Teal Cube Games. All rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+
11
+ @interface AppDelegate : UIResponder <UIApplicationDelegate>
12
+
13
+ @property (strong, nonatomic) UIWindow *window;
14
+
15
+
16
+ @end
17
+
@@ -0,0 +1,45 @@
1
+ //
2
+ // AppDelegate.m
3
+ // TestApp
4
+ //
5
+ // Created by Richard Harrah on 8/17/15.
6
+ // Copyright (c) 2015 Teal Cube Games. All rights reserved.
7
+ //
8
+
9
+ #import "AppDelegate.h"
10
+
11
+ @interface AppDelegate ()
12
+
13
+ @end
14
+
15
+ @implementation AppDelegate
16
+
17
+
18
+ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19
+ // Override point for customization after application launch.
20
+ return YES;
21
+ }
22
+
23
+ - (void)applicationWillResignActive:(UIApplication *)application {
24
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
25
+ // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
26
+ }
27
+
28
+ - (void)applicationDidEnterBackground:(UIApplication *)application {
29
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
30
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
31
+ }
32
+
33
+ - (void)applicationWillEnterForeground:(UIApplication *)application {
34
+ // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
35
+ }
36
+
37
+ - (void)applicationDidBecomeActive:(UIApplication *)application {
38
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
39
+ }
40
+
41
+ - (void)applicationWillTerminate:(UIApplication *)application {
42
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
43
+ }
44
+
45
+ @end
@@ -0,0 +1,41 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6214" systemVersion="14A314h" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
3
+ <dependencies>
4
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6207"/>
5
+ <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
6
+ </dependencies>
7
+ <objects>
8
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
9
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
10
+ <view contentMode="scaleToFill" id="iN0-l3-epB">
11
+ <rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
12
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
13
+ <subviews>
14
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Copyright (c) 2015 Teal Cube Games. All rights reserved." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
15
+ <rect key="frame" x="20" y="439" width="441" height="21"/>
16
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
17
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
18
+ <nil key="highlightedColor"/>
19
+ </label>
20
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TestApp" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
21
+ <rect key="frame" x="20" y="140" width="441" height="43"/>
22
+ <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
23
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
24
+ <nil key="highlightedColor"/>
25
+ </label>
26
+ </subviews>
27
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
28
+ <constraints>
29
+ <constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
30
+ <constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
31
+ <constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/>
32
+ <constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/>
33
+ <constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/>
34
+ <constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
35
+ </constraints>
36
+ <nil key="simulatedStatusBarMetrics"/>
37
+ <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
38
+ <point key="canvasLocation" x="548" y="455"/>
39
+ </view>
40
+ </objects>
41
+ </document>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6211" systemVersion="14A298i" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="vXZ-lx-hvc">
3
+ <dependencies>
4
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6204"/>
5
+ </dependencies>
6
+ <scenes>
7
+ <!--View Controller-->
8
+ <scene sceneID="ufC-wZ-h7g">
9
+ <objects>
10
+ <viewController id="vXZ-lx-hvc" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
11
+ <layoutGuides>
12
+ <viewControllerLayoutGuide type="top" id="jyV-Pf-zRb"/>
13
+ <viewControllerLayoutGuide type="bottom" id="2fi-mo-0CV"/>
14
+ </layoutGuides>
15
+ <view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
16
+ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
17
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
18
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
19
+ </view>
20
+ </viewController>
21
+ <placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
22
+ </objects>
23
+ </scene>
24
+ </scenes>
25
+ </document>
@@ -0,0 +1,38 @@
1
+ {
2
+ "images" : [
3
+ {
4
+ "idiom" : "iphone",
5
+ "size" : "29x29",
6
+ "scale" : "2x"
7
+ },
8
+ {
9
+ "idiom" : "iphone",
10
+ "size" : "29x29",
11
+ "scale" : "3x"
12
+ },
13
+ {
14
+ "idiom" : "iphone",
15
+ "size" : "40x40",
16
+ "scale" : "2x"
17
+ },
18
+ {
19
+ "idiom" : "iphone",
20
+ "size" : "40x40",
21
+ "scale" : "3x"
22
+ },
23
+ {
24
+ "idiom" : "iphone",
25
+ "size" : "60x60",
26
+ "scale" : "2x"
27
+ },
28
+ {
29
+ "idiom" : "iphone",
30
+ "size" : "60x60",
31
+ "scale" : "3x"
32
+ }
33
+ ],
34
+ "info" : {
35
+ "version" : 1,
36
+ "author" : "xcode"
37
+ }
38
+ }
@@ -0,0 +1,40 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>en</string>
7
+ <key>CFBundleExecutable</key>
8
+ <string>$(EXECUTABLE_NAME)</string>
9
+ <key>CFBundleIdentifier</key>
10
+ <string>com.tealcube.$(PRODUCT_NAME:rfc1034identifier)</string>
11
+ <key>CFBundleInfoDictionaryVersion</key>
12
+ <string>6.0</string>
13
+ <key>CFBundleName</key>
14
+ <string>$(PRODUCT_NAME)</string>
15
+ <key>CFBundlePackageType</key>
16
+ <string>APPL</string>
17
+ <key>CFBundleShortVersionString</key>
18
+ <string>1.0</string>
19
+ <key>CFBundleSignature</key>
20
+ <string>????</string>
21
+ <key>CFBundleVersion</key>
22
+ <string>1</string>
23
+ <key>LSRequiresIPhoneOS</key>
24
+ <true/>
25
+ <key>UILaunchStoryboardName</key>
26
+ <string>LaunchScreen</string>
27
+ <key>UIMainStoryboardFile</key>
28
+ <string>Main</string>
29
+ <key>UIRequiredDeviceCapabilities</key>
30
+ <array>
31
+ <string>armv7</string>
32
+ </array>
33
+ <key>UISupportedInterfaceOrientations</key>
34
+ <array>
35
+ <string>UIInterfaceOrientationPortrait</string>
36
+ <string>UIInterfaceOrientationLandscapeLeft</string>
37
+ <string>UIInterfaceOrientationLandscapeRight</string>
38
+ </array>
39
+ </dict>
40
+ </plist>
@@ -0,0 +1,15 @@
1
+ //
2
+ // ViewController.h
3
+ // TestApp
4
+ //
5
+ // Created by Richard Harrah on 8/17/15.
6
+ // Copyright (c) 2015 Teal Cube Games. All rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+
11
+ @interface ViewController : UIViewController
12
+
13
+
14
+ @end
15
+
@@ -0,0 +1,27 @@
1
+ //
2
+ // ViewController.m
3
+ // TestApp
4
+ //
5
+ // Created by Richard Harrah on 8/17/15.
6
+ // Copyright (c) 2015 Teal Cube Games. All rights reserved.
7
+ //
8
+
9
+ #import "ViewController.h"
10
+
11
+ @interface ViewController ()
12
+
13
+ @end
14
+
15
+ @implementation ViewController
16
+
17
+ - (void)viewDidLoad {
18
+ [super viewDidLoad];
19
+ // Do any additional setup after loading the view, typically from a nib.
20
+ }
21
+
22
+ - (void)didReceiveMemoryWarning {
23
+ [super didReceiveMemoryWarning];
24
+ // Dispose of any resources that can be recreated.
25
+ }
26
+
27
+ @end
@@ -0,0 +1,16 @@
1
+ //
2
+ // main.m
3
+ // TestApp
4
+ //
5
+ // Created by Richard Harrah on 8/17/15.
6
+ // Copyright (c) 2015 Teal Cube Games. All rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import "AppDelegate.h"
11
+
12
+ int main(int argc, char * argv[]) {
13
+ @autoreleasepool {
14
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15
+ }
16
+ }
@@ -0,0 +1,431 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 46;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ A966D5701B829963008E004B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A966D56F1B829963008E004B /* main.m */; };
11
+ A966D5731B829963008E004B /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A966D5721B829963008E004B /* AppDelegate.m */; };
12
+ A966D5761B829963008E004B /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A966D5751B829963008E004B /* ViewController.m */; };
13
+ A966D5791B829963008E004B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A966D5771B829963008E004B /* Main.storyboard */; };
14
+ A966D57B1B829963008E004B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A966D57A1B829963008E004B /* Images.xcassets */; };
15
+ A966D57E1B829963008E004B /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = A966D57C1B829963008E004B /* LaunchScreen.xib */; };
16
+ A966D58A1B829963008E004B /* TestAppTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A966D5891B829963008E004B /* TestAppTests.m */; };
17
+ /* End PBXBuildFile section */
18
+
19
+ /* Begin PBXContainerItemProxy section */
20
+ A966D5841B829963008E004B /* PBXContainerItemProxy */ = {
21
+ isa = PBXContainerItemProxy;
22
+ containerPortal = A966D5621B829963008E004B /* Project object */;
23
+ proxyType = 1;
24
+ remoteGlobalIDString = A966D5691B829963008E004B;
25
+ remoteInfo = TestApp;
26
+ };
27
+ /* End PBXContainerItemProxy section */
28
+
29
+ /* Begin PBXFileReference section */
30
+ A966D56A1B829963008E004B /* TestApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TestApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
31
+ A966D56E1B829963008E004B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
32
+ A966D56F1B829963008E004B /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
33
+ A966D5711B829963008E004B /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
34
+ A966D5721B829963008E004B /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
35
+ A966D5741B829963008E004B /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
36
+ A966D5751B829963008E004B /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
37
+ A966D5781B829963008E004B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
38
+ A966D57A1B829963008E004B /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
39
+ A966D57D1B829963008E004B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
40
+ A966D5831B829963008E004B /* TestAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TestAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
41
+ A966D5881B829963008E004B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
42
+ A966D5891B829963008E004B /* TestAppTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TestAppTests.m; sourceTree = "<group>"; };
43
+ /* End PBXFileReference section */
44
+
45
+ /* Begin PBXFrameworksBuildPhase section */
46
+ A966D5671B829963008E004B /* Frameworks */ = {
47
+ isa = PBXFrameworksBuildPhase;
48
+ buildActionMask = 2147483647;
49
+ files = (
50
+ );
51
+ runOnlyForDeploymentPostprocessing = 0;
52
+ };
53
+ A966D5801B829963008E004B /* Frameworks */ = {
54
+ isa = PBXFrameworksBuildPhase;
55
+ buildActionMask = 2147483647;
56
+ files = (
57
+ );
58
+ runOnlyForDeploymentPostprocessing = 0;
59
+ };
60
+ /* End PBXFrameworksBuildPhase section */
61
+
62
+ /* Begin PBXGroup section */
63
+ A966D5611B829963008E004B = {
64
+ isa = PBXGroup;
65
+ children = (
66
+ A966D56C1B829963008E004B /* TestApp */,
67
+ A966D5861B829963008E004B /* TestAppTests */,
68
+ A966D56B1B829963008E004B /* Products */,
69
+ );
70
+ sourceTree = "<group>";
71
+ };
72
+ A966D56B1B829963008E004B /* Products */ = {
73
+ isa = PBXGroup;
74
+ children = (
75
+ A966D56A1B829963008E004B /* TestApp.app */,
76
+ A966D5831B829963008E004B /* TestAppTests.xctest */,
77
+ );
78
+ name = Products;
79
+ sourceTree = "<group>";
80
+ };
81
+ A966D56C1B829963008E004B /* TestApp */ = {
82
+ isa = PBXGroup;
83
+ children = (
84
+ A966D5711B829963008E004B /* AppDelegate.h */,
85
+ A966D5721B829963008E004B /* AppDelegate.m */,
86
+ A966D5741B829963008E004B /* ViewController.h */,
87
+ A966D5751B829963008E004B /* ViewController.m */,
88
+ A966D5771B829963008E004B /* Main.storyboard */,
89
+ A966D57A1B829963008E004B /* Images.xcassets */,
90
+ A966D57C1B829963008E004B /* LaunchScreen.xib */,
91
+ A966D56D1B829963008E004B /* Supporting Files */,
92
+ );
93
+ path = TestApp;
94
+ sourceTree = "<group>";
95
+ };
96
+ A966D56D1B829963008E004B /* Supporting Files */ = {
97
+ isa = PBXGroup;
98
+ children = (
99
+ A966D56E1B829963008E004B /* Info.plist */,
100
+ A966D56F1B829963008E004B /* main.m */,
101
+ );
102
+ name = "Supporting Files";
103
+ sourceTree = "<group>";
104
+ };
105
+ A966D5861B829963008E004B /* TestAppTests */ = {
106
+ isa = PBXGroup;
107
+ children = (
108
+ A966D5891B829963008E004B /* TestAppTests.m */,
109
+ A966D5871B829963008E004B /* Supporting Files */,
110
+ );
111
+ path = TestAppTests;
112
+ sourceTree = "<group>";
113
+ };
114
+ A966D5871B829963008E004B /* Supporting Files */ = {
115
+ isa = PBXGroup;
116
+ children = (
117
+ A966D5881B829963008E004B /* Info.plist */,
118
+ );
119
+ name = "Supporting Files";
120
+ sourceTree = "<group>";
121
+ };
122
+ /* End PBXGroup section */
123
+
124
+ /* Begin PBXNativeTarget section */
125
+ A966D5691B829963008E004B /* TestApp */ = {
126
+ isa = PBXNativeTarget;
127
+ buildConfigurationList = A966D58D1B829963008E004B /* Build configuration list for PBXNativeTarget "TestApp" */;
128
+ buildPhases = (
129
+ A966D5661B829963008E004B /* Sources */,
130
+ A966D5671B829963008E004B /* Frameworks */,
131
+ A966D5681B829963008E004B /* Resources */,
132
+ );
133
+ buildRules = (
134
+ );
135
+ dependencies = (
136
+ );
137
+ name = TestApp;
138
+ productName = TestApp;
139
+ productReference = A966D56A1B829963008E004B /* TestApp.app */;
140
+ productType = "com.apple.product-type.application";
141
+ };
142
+ A966D5821B829963008E004B /* TestAppTests */ = {
143
+ isa = PBXNativeTarget;
144
+ buildConfigurationList = A966D5901B829963008E004B /* Build configuration list for PBXNativeTarget "TestAppTests" */;
145
+ buildPhases = (
146
+ A966D57F1B829963008E004B /* Sources */,
147
+ A966D5801B829963008E004B /* Frameworks */,
148
+ A966D5811B829963008E004B /* Resources */,
149
+ );
150
+ buildRules = (
151
+ );
152
+ dependencies = (
153
+ A966D5851B829963008E004B /* PBXTargetDependency */,
154
+ );
155
+ name = TestAppTests;
156
+ productName = TestAppTests;
157
+ productReference = A966D5831B829963008E004B /* TestAppTests.xctest */;
158
+ productType = "com.apple.product-type.bundle.unit-test";
159
+ };
160
+ /* End PBXNativeTarget section */
161
+
162
+ /* Begin PBXProject section */
163
+ A966D5621B829963008E004B /* Project object */ = {
164
+ isa = PBXProject;
165
+ attributes = {
166
+ LastUpgradeCheck = 0640;
167
+ ORGANIZATIONNAME = "Teal Cube Games";
168
+ TargetAttributes = {
169
+ A966D5691B829963008E004B = {
170
+ CreatedOnToolsVersion = 6.4;
171
+ };
172
+ A966D5821B829963008E004B = {
173
+ CreatedOnToolsVersion = 6.4;
174
+ TestTargetID = A966D5691B829963008E004B;
175
+ };
176
+ };
177
+ };
178
+ buildConfigurationList = A966D5651B829963008E004B /* Build configuration list for PBXProject "TestApp" */;
179
+ compatibilityVersion = "Xcode 3.2";
180
+ developmentRegion = English;
181
+ hasScannedForEncodings = 0;
182
+ knownRegions = (
183
+ en,
184
+ Base,
185
+ );
186
+ mainGroup = A966D5611B829963008E004B;
187
+ productRefGroup = A966D56B1B829963008E004B /* Products */;
188
+ projectDirPath = "";
189
+ projectRoot = "";
190
+ targets = (
191
+ A966D5691B829963008E004B /* TestApp */,
192
+ A966D5821B829963008E004B /* TestAppTests */,
193
+ );
194
+ };
195
+ /* End PBXProject section */
196
+
197
+ /* Begin PBXResourcesBuildPhase section */
198
+ A966D5681B829963008E004B /* Resources */ = {
199
+ isa = PBXResourcesBuildPhase;
200
+ buildActionMask = 2147483647;
201
+ files = (
202
+ A966D5791B829963008E004B /* Main.storyboard in Resources */,
203
+ A966D57E1B829963008E004B /* LaunchScreen.xib in Resources */,
204
+ A966D57B1B829963008E004B /* Images.xcassets in Resources */,
205
+ );
206
+ runOnlyForDeploymentPostprocessing = 0;
207
+ };
208
+ A966D5811B829963008E004B /* Resources */ = {
209
+ isa = PBXResourcesBuildPhase;
210
+ buildActionMask = 2147483647;
211
+ files = (
212
+ );
213
+ runOnlyForDeploymentPostprocessing = 0;
214
+ };
215
+ /* End PBXResourcesBuildPhase section */
216
+
217
+ /* Begin PBXSourcesBuildPhase section */
218
+ A966D5661B829963008E004B /* Sources */ = {
219
+ isa = PBXSourcesBuildPhase;
220
+ buildActionMask = 2147483647;
221
+ files = (
222
+ A966D5761B829963008E004B /* ViewController.m in Sources */,
223
+ A966D5731B829963008E004B /* AppDelegate.m in Sources */,
224
+ A966D5701B829963008E004B /* main.m in Sources */,
225
+ );
226
+ runOnlyForDeploymentPostprocessing = 0;
227
+ };
228
+ A966D57F1B829963008E004B /* Sources */ = {
229
+ isa = PBXSourcesBuildPhase;
230
+ buildActionMask = 2147483647;
231
+ files = (
232
+ A966D58A1B829963008E004B /* TestAppTests.m in Sources */,
233
+ );
234
+ runOnlyForDeploymentPostprocessing = 0;
235
+ };
236
+ /* End PBXSourcesBuildPhase section */
237
+
238
+ /* Begin PBXTargetDependency section */
239
+ A966D5851B829963008E004B /* PBXTargetDependency */ = {
240
+ isa = PBXTargetDependency;
241
+ target = A966D5691B829963008E004B /* TestApp */;
242
+ targetProxy = A966D5841B829963008E004B /* PBXContainerItemProxy */;
243
+ };
244
+ /* End PBXTargetDependency section */
245
+
246
+ /* Begin PBXVariantGroup section */
247
+ A966D5771B829963008E004B /* Main.storyboard */ = {
248
+ isa = PBXVariantGroup;
249
+ children = (
250
+ A966D5781B829963008E004B /* Base */,
251
+ );
252
+ name = Main.storyboard;
253
+ sourceTree = "<group>";
254
+ };
255
+ A966D57C1B829963008E004B /* LaunchScreen.xib */ = {
256
+ isa = PBXVariantGroup;
257
+ children = (
258
+ A966D57D1B829963008E004B /* Base */,
259
+ );
260
+ name = LaunchScreen.xib;
261
+ sourceTree = "<group>";
262
+ };
263
+ /* End PBXVariantGroup section */
264
+
265
+ /* Begin XCBuildConfiguration section */
266
+ A966D58B1B829963008E004B /* Debug */ = {
267
+ isa = XCBuildConfiguration;
268
+ buildSettings = {
269
+ ALWAYS_SEARCH_USER_PATHS = NO;
270
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
271
+ CLANG_CXX_LIBRARY = "libc++";
272
+ CLANG_ENABLE_MODULES = YES;
273
+ CLANG_ENABLE_OBJC_ARC = YES;
274
+ CLANG_WARN_BOOL_CONVERSION = YES;
275
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
276
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
277
+ CLANG_WARN_EMPTY_BODY = YES;
278
+ CLANG_WARN_ENUM_CONVERSION = YES;
279
+ CLANG_WARN_INT_CONVERSION = YES;
280
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
281
+ CLANG_WARN_UNREACHABLE_CODE = YES;
282
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
283
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
284
+ COPY_PHASE_STRIP = NO;
285
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
286
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
287
+ GCC_C_LANGUAGE_STANDARD = gnu99;
288
+ GCC_DYNAMIC_NO_PIC = NO;
289
+ GCC_NO_COMMON_BLOCKS = YES;
290
+ GCC_OPTIMIZATION_LEVEL = 0;
291
+ GCC_PREPROCESSOR_DEFINITIONS = (
292
+ "DEBUG=1",
293
+ "$(inherited)",
294
+ );
295
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
296
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
297
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
298
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
299
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
300
+ GCC_WARN_UNUSED_FUNCTION = YES;
301
+ GCC_WARN_UNUSED_VARIABLE = YES;
302
+ IPHONEOS_DEPLOYMENT_TARGET = 8.4;
303
+ MTL_ENABLE_DEBUG_INFO = YES;
304
+ ONLY_ACTIVE_ARCH = YES;
305
+ SDKROOT = iphoneos;
306
+ };
307
+ name = Debug;
308
+ };
309
+ A966D58C1B829963008E004B /* Release */ = {
310
+ isa = XCBuildConfiguration;
311
+ buildSettings = {
312
+ ALWAYS_SEARCH_USER_PATHS = NO;
313
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
314
+ CLANG_CXX_LIBRARY = "libc++";
315
+ CLANG_ENABLE_MODULES = YES;
316
+ CLANG_ENABLE_OBJC_ARC = YES;
317
+ CLANG_WARN_BOOL_CONVERSION = YES;
318
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
319
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
320
+ CLANG_WARN_EMPTY_BODY = YES;
321
+ CLANG_WARN_ENUM_CONVERSION = YES;
322
+ CLANG_WARN_INT_CONVERSION = YES;
323
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
324
+ CLANG_WARN_UNREACHABLE_CODE = YES;
325
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
326
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
327
+ COPY_PHASE_STRIP = NO;
328
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
329
+ ENABLE_NS_ASSERTIONS = NO;
330
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
331
+ GCC_C_LANGUAGE_STANDARD = gnu99;
332
+ GCC_NO_COMMON_BLOCKS = YES;
333
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
334
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
335
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
336
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
337
+ GCC_WARN_UNUSED_FUNCTION = YES;
338
+ GCC_WARN_UNUSED_VARIABLE = YES;
339
+ IPHONEOS_DEPLOYMENT_TARGET = 8.4;
340
+ MTL_ENABLE_DEBUG_INFO = NO;
341
+ SDKROOT = iphoneos;
342
+ VALIDATE_PRODUCT = YES;
343
+ };
344
+ name = Release;
345
+ };
346
+ A966D58E1B829963008E004B /* Debug */ = {
347
+ isa = XCBuildConfiguration;
348
+ buildSettings = {
349
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
350
+ INFOPLIST_FILE = TestApp/Info.plist;
351
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
352
+ PRODUCT_NAME = "$(TARGET_NAME)";
353
+ };
354
+ name = Debug;
355
+ };
356
+ A966D58F1B829963008E004B /* Release */ = {
357
+ isa = XCBuildConfiguration;
358
+ buildSettings = {
359
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
360
+ INFOPLIST_FILE = TestApp/Info.plist;
361
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
362
+ PRODUCT_NAME = "$(TARGET_NAME)";
363
+ };
364
+ name = Release;
365
+ };
366
+ A966D5911B829963008E004B /* Debug */ = {
367
+ isa = XCBuildConfiguration;
368
+ buildSettings = {
369
+ BUNDLE_LOADER = "$(TEST_HOST)";
370
+ FRAMEWORK_SEARCH_PATHS = (
371
+ "$(SDKROOT)/Developer/Library/Frameworks",
372
+ "$(inherited)",
373
+ );
374
+ GCC_PREPROCESSOR_DEFINITIONS = (
375
+ "DEBUG=1",
376
+ "$(inherited)",
377
+ );
378
+ INFOPLIST_FILE = TestAppTests/Info.plist;
379
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
380
+ PRODUCT_NAME = "$(TARGET_NAME)";
381
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApp.app/TestApp";
382
+ };
383
+ name = Debug;
384
+ };
385
+ A966D5921B829963008E004B /* Release */ = {
386
+ isa = XCBuildConfiguration;
387
+ buildSettings = {
388
+ BUNDLE_LOADER = "$(TEST_HOST)";
389
+ FRAMEWORK_SEARCH_PATHS = (
390
+ "$(SDKROOT)/Developer/Library/Frameworks",
391
+ "$(inherited)",
392
+ );
393
+ INFOPLIST_FILE = TestAppTests/Info.plist;
394
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
395
+ PRODUCT_NAME = "$(TARGET_NAME)";
396
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TestApp.app/TestApp";
397
+ };
398
+ name = Release;
399
+ };
400
+ /* End XCBuildConfiguration section */
401
+
402
+ /* Begin XCConfigurationList section */
403
+ A966D5651B829963008E004B /* Build configuration list for PBXProject "TestApp" */ = {
404
+ isa = XCConfigurationList;
405
+ buildConfigurations = (
406
+ A966D58B1B829963008E004B /* Debug */,
407
+ A966D58C1B829963008E004B /* Release */,
408
+ );
409
+ defaultConfigurationIsVisible = 0;
410
+ defaultConfigurationName = Release;
411
+ };
412
+ A966D58D1B829963008E004B /* Build configuration list for PBXNativeTarget "TestApp" */ = {
413
+ isa = XCConfigurationList;
414
+ buildConfigurations = (
415
+ A966D58E1B829963008E004B /* Debug */,
416
+ A966D58F1B829963008E004B /* Release */,
417
+ );
418
+ defaultConfigurationIsVisible = 0;
419
+ };
420
+ A966D5901B829963008E004B /* Build configuration list for PBXNativeTarget "TestAppTests" */ = {
421
+ isa = XCConfigurationList;
422
+ buildConfigurations = (
423
+ A966D5911B829963008E004B /* Debug */,
424
+ A966D5921B829963008E004B /* Release */,
425
+ );
426
+ defaultConfigurationIsVisible = 0;
427
+ };
428
+ /* End XCConfigurationList section */
429
+ };
430
+ rootObject = A966D5621B829963008E004B /* Project object */;
431
+ }
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Workspace
3
+ version = "1.0">
4
+ <FileRef
5
+ location = "self:TestApp.xcodeproj">
6
+ </FileRef>
7
+ </Workspace>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>en</string>
7
+ <key>CFBundleExecutable</key>
8
+ <string>$(EXECUTABLE_NAME)</string>
9
+ <key>CFBundleIdentifier</key>
10
+ <string>com.tealcube.$(PRODUCT_NAME:rfc1034identifier)</string>
11
+ <key>CFBundleInfoDictionaryVersion</key>
12
+ <string>6.0</string>
13
+ <key>CFBundleName</key>
14
+ <string>$(PRODUCT_NAME)</string>
15
+ <key>CFBundlePackageType</key>
16
+ <string>BNDL</string>
17
+ <key>CFBundleShortVersionString</key>
18
+ <string>1.0</string>
19
+ <key>CFBundleSignature</key>
20
+ <string>????</string>
21
+ <key>CFBundleVersion</key>
22
+ <string>1</string>
23
+ </dict>
24
+ </plist>
@@ -0,0 +1,40 @@
1
+ //
2
+ // TestAppTests.m
3
+ // TestAppTests
4
+ //
5
+ // Created by Richard Harrah on 8/17/15.
6
+ // Copyright (c) 2015 Teal Cube Games. All rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import <XCTest/XCTest.h>
11
+
12
+ @interface TestAppTests : XCTestCase
13
+
14
+ @end
15
+
16
+ @implementation TestAppTests
17
+
18
+ - (void)setUp {
19
+ [super setUp];
20
+ // Put setup code here. This method is called before the invocation of each test method in the class.
21
+ }
22
+
23
+ - (void)tearDown {
24
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
25
+ [super tearDown];
26
+ }
27
+
28
+ - (void)testExample {
29
+ // This is an example of a functional test case.
30
+ XCTAssert(YES, @"Pass");
31
+ }
32
+
33
+ - (void)testPerformanceExample {
34
+ // This is an example of a performance test case.
35
+ [self measureBlock:^{
36
+ // Put the code you want to measure the time of here.
37
+ }];
38
+ }
39
+
40
+ @end
data/timewizard.gemspec CHANGED
@@ -6,7 +6,7 @@ require 'timewizard/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "timewizard"
8
8
  spec.version = Timewizard::VERSION
9
- spec.version = "#{spec.version}-alpha-#{ENV['TRAVIS_BUILD_NUMBER']}" if ENV['TRAVIS'] && ENV['TRAVIS_BRANCH'] == 'master'
9
+ spec.version = "#{spec.version}-alpha-#{ENV['TRAVIS_BUILD_NUMBER']}" if ENV['TRAVIS'] && ENV['TRAVIS_BRANCH'] == 'development'
10
10
  spec.authors = ["Richard Harrah"]
11
11
  spec.email = ["topplethenunnery@gmail.com"]
12
12
 
@@ -23,4 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
24
  spec.add_development_dependency "codeclimate-test-reporter", "~> 0.4"
25
25
  spec.add_development_dependency "minitest", "~> 5.8"
26
+
27
+ spec.add_dependency "versionomy", "~> 0.4"
28
+ spec.add_dependency "xcodeproj", "~> 0.26"
26
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timewizard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Harrah
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-13 00:00:00.000000000 Z
11
+ date: 2015-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,34 @@ dependencies:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '5.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: versionomy
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '0.4'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '0.4'
83
+ - !ruby/object:Gem::Dependency
84
+ name: xcodeproj
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '0.26'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '0.26'
69
97
  description:
70
98
  email:
71
99
  - topplethenunnery@gmail.com
@@ -84,10 +112,25 @@ files:
84
112
  - bin/console
85
113
  - bin/setup
86
114
  - lib/timewizard.rb
115
+ - lib/timewizard/utils/wizardry.rb
87
116
  - lib/timewizard/version.rb
88
117
  - lib/timewizard/versioner.rb
89
118
  - lib/timewizard/versioner/android.rb
90
- - resources/AndroidManifest.xml
119
+ - lib/timewizard/versioner/apple.rb
120
+ - resources/android/AndroidManifest.xml
121
+ - resources/apple/TestApp/TestApp.xcodeproj/project.pbxproj
122
+ - resources/apple/TestApp/TestApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata
123
+ - resources/apple/TestApp/TestApp/AppDelegate.h
124
+ - resources/apple/TestApp/TestApp/AppDelegate.m
125
+ - resources/apple/TestApp/TestApp/Base.lproj/LaunchScreen.xib
126
+ - resources/apple/TestApp/TestApp/Base.lproj/Main.storyboard
127
+ - resources/apple/TestApp/TestApp/Images.xcassets/AppIcon.appiconset/Contents.json
128
+ - resources/apple/TestApp/TestApp/Info.plist
129
+ - resources/apple/TestApp/TestApp/ViewController.h
130
+ - resources/apple/TestApp/TestApp/ViewController.m
131
+ - resources/apple/TestApp/TestApp/main.m
132
+ - resources/apple/TestApp/TestAppTests/Info.plist
133
+ - resources/apple/TestApp/TestAppTests/TestAppTests.m
91
134
  - timewizard.gemspec
92
135
  homepage: https://github.com/Nunnery/timewizard
93
136
  licenses:
@@ -109,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
152
  version: '0'
110
153
  requirements: []
111
154
  rubyforge_project:
112
- rubygems_version: 2.4.5
155
+ rubygems_version: 2.4.6
113
156
  signing_key:
114
157
  specification_version: 4
115
158
  summary: A gem for incrementing and decrementing iOS and Android app versions.