trip_advisor 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/.gitignore +52 -0
- data/.rspec +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +118 -0
- data/LICENSE.txt +20 -0
- data/README.md +23 -0
- data/Rakefile +7 -0
- data/lib/trip_advisor/api.rb +45 -0
- data/lib/trip_advisor/build.rb +221 -0
- data/lib/trip_advisor/rake_tasks.rb +182 -0
- data/lib/trip_advisor/resource_manager.rb +101 -0
- data/lib/trip_advisor/strings_file.rb +112 -0
- data/lib/trip_advisor/translation.rb +63 -0
- data/lib/trip_advisor/translation_tool.rb +110 -0
- data/lib/trip_advisor/version.rb +3 -0
- data/lib/trip_advisor.rb +5 -0
- data/run_tests.sh +6 -0
- data/spec/api_spec.rb +34 -0
- data/spec/builder_spec.rb +262 -0
- data/spec/fixtures/AndroidStrings.txt +21 -0
- data/spec/fixtures/Strings.txt +47 -0
- data/spec/fixtures/project.git/.gitignore +1 -0
- data/spec/fixtures/project.git/BUILD.json +7 -0
- data/spec/fixtures/project.git/Code/Project.h +0 -0
- data/spec/fixtures/project.git/Code/Project.m +0 -0
- data/spec/fixtures/project.git/Gemfile +3 -0
- data/spec/fixtures/project.git/Gemfile.lock +38 -0
- data/spec/fixtures/project.git/HEAD +1 -0
- data/spec/fixtures/project.git/LICENSE +1 -0
- data/spec/fixtures/project.git/Podfile +6 -0
- data/spec/fixtures/project.git/Podfile.lock +14 -0
- data/spec/fixtures/project.git/Project.podspec +14 -0
- data/spec/fixtures/project.git/TestProject/Images.xcassets/AppIcon.appiconset/Contents.json +23 -0
- data/spec/fixtures/project.git/TestProject/Images.xcassets/LaunchImage.launchimage/Contents.json +23 -0
- data/spec/fixtures/project.git/TestProject/TATPAppDelegate.h +15 -0
- data/spec/fixtures/project.git/TestProject/TATPAppDelegate.m +49 -0
- data/spec/fixtures/project.git/TestProject/TestProject-Info.plist +38 -0
- data/spec/fixtures/project.git/TestProject/TestProject-Prefix.pch +16 -0
- data/spec/fixtures/project.git/TestProject/en.lproj/InfoPlist.strings +1 -0
- data/spec/fixtures/project.git/TestProject/main.m +18 -0
- data/spec/fixtures/project.git/TestProject.xcodeproj/project.pbxproj +1020 -0
- data/spec/fixtures/project.git/TestProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/spec/fixtures/project.git/TestProject.xcodeproj/project.xcworkspace/xcuserdata/blake.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/spec/fixtures/project.git/TestProject.xcodeproj/xcuserdata/blake.xcuserdatad/xcschemes/TestProject.xcscheme +96 -0
- data/spec/fixtures/project.git/TestProject.xcodeproj/xcuserdata/blake.xcuserdatad/xcschemes/xcschememanagement.plist +27 -0
- data/spec/fixtures/project.git/TestProject.xcworkspace/contents.xcworkspacedata +1 -0
- data/spec/fixtures/project.git/TestProjectTests/TestProjectTests-Info.plist +22 -0
- data/spec/fixtures/project.git/TestProjectTests/TestProjectTests.m +34 -0
- data/spec/fixtures/project.git/TestProjectTests/en.lproj/InfoPlist.strings +1 -0
- data/spec/fixtures/project.git/VERSION +1 -0
- data/spec/fixtures/project.git/config +7 -0
- data/spec/fixtures/project.git/description +1 -0
- data/spec/fixtures/project.git/index +0 -0
- data/spec/fixtures/project.git/info/exclude +6 -0
- data/spec/fixtures/project.git/logs/HEAD +1 -0
- data/spec/fixtures/project.git/logs/refs/heads/master +1 -0
- data/spec/fixtures/project.git/objects/00/a6b3f80ebbe4019f03461416061e8805e6eab1 +0 -0
- data/spec/fixtures/project.git/objects/03/c303d5552f29d366d11a13448c3c18e94c3bfa +0 -0
- data/spec/fixtures/project.git/objects/03/ff7c3a95a196ac8ad1d53db2bd4fb4c80507c1 +0 -0
- data/spec/fixtures/project.git/objects/0a/7123364a174ffda52d29a18cdd31fd325bbd6c +0 -0
- data/spec/fixtures/project.git/objects/0d/183cba8b0a5e477ea1d001130c222af19b8324 +0 -0
- data/spec/fixtures/project.git/objects/0e/6ba5232c3c2f8a7e435794e845b5dc9f339d8b +0 -0
- data/spec/fixtures/project.git/objects/25/5b4ee687ed1337cffb10e6d07bb89ee6e5d180 +0 -0
- data/spec/fixtures/project.git/objects/25/60a2b9ab9323ca61a0fdebd3b4af46dbe4c272 +0 -0
- data/spec/fixtures/project.git/objects/2b/f8bd93d56787a7548c7f8960a94f05c269b486 +0 -0
- data/spec/fixtures/project.git/objects/38/439105a884d2556443c7b5c645034e67fb7987 +0 -0
- data/spec/fixtures/project.git/objects/3e/efcb9dd5b38e2c1dc061052455dd97bcd51e6c +0 -0
- data/spec/fixtures/project.git/objects/53/8b3019ab68814604fbc8e017d09b690c22728c +0 -0
- data/spec/fixtures/project.git/objects/59/c178850684e21fafbebedeff15b2b522402af2 +0 -0
- data/spec/fixtures/project.git/objects/62/037867910d9aa803d7e02addc26574e270d3d8 +0 -0
- data/spec/fixtures/project.git/objects/66/05c1af131470a3b635d166f2591917b32f3b82 +0 -0
- data/spec/fixtures/project.git/objects/69/67e396037a52d8300eb9dc8a1e9f7155dd55bf +0 -0
- data/spec/fixtures/project.git/objects/6b/5ad4043aee9bc0936466760665f870d4f2f40f +0 -0
- data/spec/fixtures/project.git/objects/6c/fc746d4ecf2e3ac67bb0cf6c4013e1aff9b1f1 +0 -0
- data/spec/fixtures/project.git/objects/6f/3b0ab36651ca648408c176f81e4b2e202efa0b +0 -0
- data/spec/fixtures/project.git/objects/74/3435c9bee5c433fe166891e698fdc70d81a3de +0 -0
- data/spec/fixtures/project.git/objects/96/81bfb8ec019f74df384cfb66d68e94bd6d9005 +0 -0
- data/spec/fixtures/project.git/objects/99/fa9259e929fe3bee4791ff2a63070fc0358c0a +3 -0
- data/spec/fixtures/project.git/objects/a1/5f8980cfbf126a9a0b3ddf7fb1c3fbd6480934 +2 -0
- data/spec/fixtures/project.git/objects/a3/96706db4ec4cfca4d984d38b90dc8098bded40 +1 -0
- data/spec/fixtures/project.git/objects/b4/42134ccda2b0b1813288e7e04a401a4bef2b59 +0 -0
- data/spec/fixtures/project.git/objects/b9/2732c79e00cf2fad5ceceb61bbc7a9a9739d2c +0 -0
- data/spec/fixtures/project.git/objects/ba/01f5352549018dfdb95423b9e0974443ec0346 +1 -0
- data/spec/fixtures/project.git/objects/ba/8dd7d2162334426facd310f62ed923eb6f4cf5 +0 -0
- data/spec/fixtures/project.git/objects/bf/422763a0101a5971e15d53581acb825b4d38b8 +0 -0
- data/spec/fixtures/project.git/objects/c7/9ebd3ada1309bae694b8e6760592b1254e035c +2 -0
- data/spec/fixtures/project.git/objects/ca/7ced48ee61e517fc57576a33dc9d95f5d4f539 +2 -0
- data/spec/fixtures/project.git/objects/ce/eed5f059b6d374d08e0b1e732463842b3a5a91 +0 -0
- data/spec/fixtures/project.git/objects/d7/89fd591fee7d26c2f40c6614b5a91931377f88 +0 -0
- data/spec/fixtures/project.git/objects/d8/ec4dbb2804f53fd863cd0adb830c5bf4e85a1d +0 -0
- data/spec/fixtures/project.git/objects/dc/680e07f12748657d5a798495f08ce3ad884f0b +0 -0
- data/spec/fixtures/project.git/objects/de/de871ad5691708aca809557a823082a70dde69 +0 -0
- data/spec/fixtures/project.git/objects/e0/30730e56be52e4dc293c829f73e0c586073ad2 +0 -0
- data/spec/fixtures/project.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
- data/spec/fixtures/project.git/objects/e6/f7f8a92eb3177d10a809b96f41905e9be4cc2b +0 -0
- data/spec/fixtures/project.git/objects/ed/7115c4ae4c1885ee75f6ffe946b559546efd28 +0 -0
- data/spec/fixtures/project.git/objects/f1/e01dd1256054d5717ef0c89008f0a22639e273 +2 -0
- data/spec/fixtures/project.git/objects/f9/3e9c03a56aba331bcd98cb2ef00ba0003de285 +0 -0
- data/spec/fixtures/project.git/refs/heads/master +1 -0
- data/spec/fixtures/search.json +14159 -0
- data/spec/fixtures/search_results_1-50.html +1076 -0
- data/spec/fixtures/search_results_101-110.html +476 -0
- data/spec/fixtures/search_results_51-100.html +1076 -0
- data/spec/fixtures/translation_details.html +728 -0
- data/spec/fixtures/translation_details.json +738 -0
- data/spec/spec_helper.rb +28 -0
- data/spec/strings_file_spec.rb +225 -0
- data/spec/translation_spec.rb +21 -0
- data/spec/translation_tool_spec.rb +146 -0
- data/trip_advisor.gemspec +38 -0
- metadata +474 -0
@@ -0,0 +1,262 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'trip_advisor/build'
|
3
|
+
require 'ostruct'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
# Alias out Pod::Spec as an OpenStruct so that we can access its fields
|
7
|
+
module Pod
|
8
|
+
class Spec < OpenStruct
|
9
|
+
def initialize
|
10
|
+
super
|
11
|
+
yield self if block_given?
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
module BuildHelpers
|
17
|
+
def project_path
|
18
|
+
File.join(root_path, 'project.git')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class TestSpecRepo
|
23
|
+
attr_reader :path, :name, :repo
|
24
|
+
|
25
|
+
def initialize
|
26
|
+
@path = Dir.mktmpdir
|
27
|
+
@repo = Rugged::Repository.init_at(@path, :bare)
|
28
|
+
make_initial_commit
|
29
|
+
@name = File.basename(path)
|
30
|
+
end
|
31
|
+
|
32
|
+
def url
|
33
|
+
"file://#{path}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def user_path
|
37
|
+
File.expand_path(File.join("~/.cocoapods/repos", name))
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
def make_initial_commit
|
42
|
+
oid = repo.write("This is a test Spec Repository.", :blob)
|
43
|
+
index = Rugged::Index.new
|
44
|
+
index.add(:path => "README.md", :oid => oid, :mode => 0100644)
|
45
|
+
|
46
|
+
options = {}
|
47
|
+
options[:tree] = index.write_tree(repo)
|
48
|
+
options[:author] = { :email => "testuser@github.com", :name => 'Test Author', :time => Time.now }
|
49
|
+
options[:committer] = { :email => "testuser@github.com", :name => 'Test Author', :time => Time.now }
|
50
|
+
options[:message] = "Making a commit via Rugged!"
|
51
|
+
options[:parents] = []
|
52
|
+
options[:update_ref] = 'HEAD'
|
53
|
+
|
54
|
+
Rugged::Commit.create(repo, options)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe TripAdvisor::AdHocBuild do
|
59
|
+
include BuildHelpers
|
60
|
+
|
61
|
+
before(:each) do
|
62
|
+
# Initialize a new empty repository to add as a remote
|
63
|
+
@remote_dir = Dir.mktmpdir
|
64
|
+
Rugged::Repository.init_at(@remote_dir, :bare)
|
65
|
+
|
66
|
+
# Sync the fixture project into a temporary path to work with
|
67
|
+
@project_dir = Dir.mktmpdir
|
68
|
+
repo = Rugged::Repository.clone_at(project_path, @project_dir)
|
69
|
+
podfile_path = File.join(@project_dir, 'Project.podspec')
|
70
|
+
podfile_contents = File.read(podfile_path)
|
71
|
+
podfile_contents.gsub!('$GIT_URL', "file://#{@remote_dir}")
|
72
|
+
File.open(podfile_path, 'w') { |f| f << podfile_contents }
|
73
|
+
|
74
|
+
# Configure the project under test
|
75
|
+
config = repo.config
|
76
|
+
config['user.name'] = 'Project Builder'
|
77
|
+
config['user.email'] = 'builder@example.com'
|
78
|
+
|
79
|
+
# Add the empty repository as a remote on the project under test
|
80
|
+
repo = Rugged::Repository.new(@project_dir)
|
81
|
+
remote = Rugged::Remote.lookup(repo, 'origin')
|
82
|
+
remote.url = @remote_dir
|
83
|
+
remote.save
|
84
|
+
end
|
85
|
+
|
86
|
+
after(:each) do
|
87
|
+
FileUtils.remove_entry_secure(@project_dir)
|
88
|
+
FileUtils.remove_entry_secure(@remote_dir)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "generates build info" do
|
92
|
+
build = TripAdvisor::AdHocBuild.new(@project_dir)
|
93
|
+
info = build.info
|
94
|
+
end
|
95
|
+
|
96
|
+
it "generates a version based on the release version and timestamp" do
|
97
|
+
time = Time.at(1381331500)
|
98
|
+
Time.stub(:now).and_return(time)
|
99
|
+
build = TripAdvisor::AdHocBuild.new(@project_dir)
|
100
|
+
build.version.should == "1.0.0-b20131009151140"
|
101
|
+
end
|
102
|
+
|
103
|
+
it "generates the correct tag name" do
|
104
|
+
time = Time.at(1381331500)
|
105
|
+
Time.stub(:now).and_return(time)
|
106
|
+
build = TripAdvisor::AdHocBuild.new(@project_dir)
|
107
|
+
build.tag_name.should == "builds/v1.0.0-b20131009151140"
|
108
|
+
end
|
109
|
+
|
110
|
+
it "has a proper default for remotes" do
|
111
|
+
build = TripAdvisor::AdHocBuild.new(@project_dir)
|
112
|
+
build.remotes.should == ['origin']
|
113
|
+
end
|
114
|
+
|
115
|
+
it "only calls `git remote` once when access remotes" do
|
116
|
+
build = TripAdvisor::AdHocBuild.new(@project_dir)
|
117
|
+
build.should_receive(:`).with('git remote').once.and_return('origin')
|
118
|
+
build.remotes
|
119
|
+
build.remotes
|
120
|
+
end
|
121
|
+
|
122
|
+
it "has a proper default for pod_repo" do
|
123
|
+
build = TripAdvisor::AdHocBuild.new(@project_dir)
|
124
|
+
build.pod_repo.should == 'tripadvisor'
|
125
|
+
end
|
126
|
+
|
127
|
+
it "has a proper default for version_prefix" do
|
128
|
+
build = TripAdvisor::AdHocBuild.new(@project_dir)
|
129
|
+
build.version_prefix.should == 'v'
|
130
|
+
end
|
131
|
+
|
132
|
+
context 'when building' do
|
133
|
+
before(:each) do
|
134
|
+
time = Time.at(1381331500)
|
135
|
+
Time.stub(:now).and_return(time)
|
136
|
+
@spec_repo = TestSpecRepo.new
|
137
|
+
system("pod repo add #{@spec_repo.name} #{@spec_repo.url}")
|
138
|
+
@build = TripAdvisor::AdHocBuild.new(@project_dir)
|
139
|
+
@build.pod_repo = @spec_repo.name
|
140
|
+
@build.build!
|
141
|
+
end
|
142
|
+
|
143
|
+
after(:each) do
|
144
|
+
FileUtils.remove_entry_secure(@spec_repo.path)
|
145
|
+
system("pod repo remove #{@spec_repo.name}")
|
146
|
+
end
|
147
|
+
|
148
|
+
it "updates the BUILD.json file" do
|
149
|
+
build_info = File.join(@project_dir, 'BUILD.json')
|
150
|
+
info = Oj.load(File.read(build_info))
|
151
|
+
info['version'].should == '1.0.0-b20131009151140'
|
152
|
+
info['branch'].should == 'master'
|
153
|
+
info['sha1'].should_not be_nil
|
154
|
+
info['author'].should == 'Project Builder <builder@example.com>'
|
155
|
+
info['date'].should == '2013-10-09T15:11:40Z'
|
156
|
+
end
|
157
|
+
|
158
|
+
it "updates the Project.podspec file" do
|
159
|
+
podspec_path = File.join(@project_dir, 'Project.podspec')
|
160
|
+
spec = eval(File.read(podspec_path), nil, podspec_path)
|
161
|
+
spec.version.should == '1.0.0-b20131009151140'
|
162
|
+
spec.source[:tag].should == 'builds/v1.0.0-b20131009151140'
|
163
|
+
end
|
164
|
+
|
165
|
+
it "pushes the tag to the remote repository" do
|
166
|
+
repo = Rugged::Repository.new(@remote_dir)
|
167
|
+
ref = Rugged::Reference.lookup(repo, "refs/tags/builds/v1.0.0-b20131009151140")
|
168
|
+
ref.should_not be_nil
|
169
|
+
end
|
170
|
+
|
171
|
+
it "pushes the podspec to the spec repository" do
|
172
|
+
path = File.join(@spec_repo.user_path, 'Project', @build.version, 'Project.podspec')
|
173
|
+
File.exists?(path).should be_true
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
describe TripAdvisor::ReleaseBuild do
|
178
|
+
include BuildHelpers
|
179
|
+
|
180
|
+
it "generates build info" do
|
181
|
+
build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
|
182
|
+
info = build.info
|
183
|
+
end
|
184
|
+
|
185
|
+
it "generates a version based on the release version" do
|
186
|
+
build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
|
187
|
+
build.version.should == "1.0.1"
|
188
|
+
end
|
189
|
+
|
190
|
+
it "generates the correct tag name" do
|
191
|
+
build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
|
192
|
+
build.tag_name.should == "v1.0.1"
|
193
|
+
end
|
194
|
+
|
195
|
+
it "has a proper default for remotes" do
|
196
|
+
build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
|
197
|
+
build.remotes.should == ['origin']
|
198
|
+
end
|
199
|
+
|
200
|
+
it "only calls `git remote` once when access remotes" do
|
201
|
+
build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
|
202
|
+
build.should_receive(:`).with('git remote').once.and_return('origin')
|
203
|
+
build.remotes
|
204
|
+
build.remotes
|
205
|
+
end
|
206
|
+
|
207
|
+
it "has a proper default for pod_repo" do
|
208
|
+
build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
|
209
|
+
build.pod_repo.should == 'tripadvisor'
|
210
|
+
end
|
211
|
+
|
212
|
+
it "has a proper default for version_prefix" do
|
213
|
+
build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
|
214
|
+
build.version_prefix.should == 'v'
|
215
|
+
end
|
216
|
+
|
217
|
+
context 'when building' do
|
218
|
+
before(:each) do
|
219
|
+
time = Time.at(1381331500)
|
220
|
+
Time.stub(:now).and_return(time)
|
221
|
+
@spec_repo = TestSpecRepo.new
|
222
|
+
system("pod repo add #{@spec_repo.name} #{@spec_repo.url}")
|
223
|
+
@build = TripAdvisor::ReleaseBuild.new(@project_dir, "1.0.1")
|
224
|
+
@build.pod_repo = @spec_repo.name
|
225
|
+
@build.build!
|
226
|
+
end
|
227
|
+
|
228
|
+
after(:each) do
|
229
|
+
FileUtils.remove_entry_secure(@spec_repo.path)
|
230
|
+
system("pod repo remove #{@spec_repo.name}")
|
231
|
+
end
|
232
|
+
|
233
|
+
it "updates the BUILD.json file" do
|
234
|
+
build_info = File.join(@project_dir, 'BUILD.json')
|
235
|
+
info = Oj.load(File.read(build_info))
|
236
|
+
info['version'].should == '1.0.1'
|
237
|
+
info['branch'].should == 'master'
|
238
|
+
info['sha1'].should_not be_nil
|
239
|
+
info['author'].should == 'Project Builder <builder@example.com>'
|
240
|
+
info['date'].should == '2013-10-09T15:11:40Z'
|
241
|
+
end
|
242
|
+
|
243
|
+
it "updates the Project.podspec file" do
|
244
|
+
podspec_path = File.join(@project_dir, 'Project.podspec')
|
245
|
+
spec = eval(File.read(podspec_path), nil, podspec_path)
|
246
|
+
spec.version.should == '1.0.1'
|
247
|
+
spec.source[:tag].should == 'v1.0.1'
|
248
|
+
end
|
249
|
+
|
250
|
+
it "pushes the tag to the remote repository" do
|
251
|
+
repo = Rugged::Repository.new(@remote_dir)
|
252
|
+
ref = Rugged::Reference.lookup(repo, "refs/tags/v1.0.1")
|
253
|
+
ref.should_not be_nil
|
254
|
+
end
|
255
|
+
|
256
|
+
it "pushes the podspec to the spec repository" do
|
257
|
+
path = File.join(@spec_repo.user_path, 'Project', @build.version, 'Project.podspec')
|
258
|
+
File.exists?(path).should be_true
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|
262
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
[[Uncategorized]]
|
2
|
+
[flights_app_arrival]
|
3
|
+
comment = Arrival Airport Selection Title
|
4
|
+
en = Arrival
|
5
|
+
[flights_app_business_class]
|
6
|
+
en = Business Class
|
7
|
+
es = Clase Business
|
8
|
+
[flights_app_city_or_airport]
|
9
|
+
comment = Airport Search Bar Placeholder Text
|
10
|
+
en = City or Airport
|
11
|
+
es = Ciudad o aeropuerto
|
12
|
+
[flights_app_forward_button_text]
|
13
|
+
comment = Web View Forward Button
|
14
|
+
en = Forward
|
15
|
+
es = Adelante
|
16
|
+
[flights_app_amenities_with_colon]
|
17
|
+
comment = 'Amenities:' label text preceeding icons describing various amenities available on a flight
|
18
|
+
en = ` Amenities:`
|
19
|
+
es = ` Servicios:`
|
20
|
+
[flights_app_number_of_passengers]
|
21
|
+
en = %1$d Passengers
|
@@ -0,0 +1,47 @@
|
|
1
|
+
[[Uncategorized]]
|
2
|
+
[%1$@ %2$@]
|
3
|
+
en = %1$@ %2$@
|
4
|
+
es = %1$@ %2$@
|
5
|
+
comment = Marketing Airline and Flight Number
|
6
|
+
[%1$@ (%2$@)]
|
7
|
+
en = %1$@ (%2$@)
|
8
|
+
comment = Airport Name with Code
|
9
|
+
[%1$@ - %2$@]
|
10
|
+
en = %1$@ - %2$@
|
11
|
+
comment = '{Departure Date} - {Return Date}' Label
|
12
|
+
[%1$@ operates flight #%2$@]
|
13
|
+
en = %1$@ operates flight #%2$@
|
14
|
+
comment = {Operating Airline Name} operates flight #{Flight Number}
|
15
|
+
[%1$@ to %2$@]
|
16
|
+
en = %1$@ to %2$@
|
17
|
+
[%1$@ to %2$@, %3$@]
|
18
|
+
en = %1$@ to %2$@, %3$@
|
19
|
+
comment = Airport Code to Airport Code with Stops Accessibility Label
|
20
|
+
[%1$@, %2$@]
|
21
|
+
en = %1$@, %2$@
|
22
|
+
[%1$@, %2$@, %3$@ (%4$@) to %5$@ (%6$@), Departs %7$@, Arrives %8$@, Equipment: %9$@, Class: %10$@, Flight Duration: %11$@, Available Amenities: %12$@]
|
23
|
+
en = %1$@, %2$@, %3$@ (%4$@) to %5$@ (%6$@), Departs %7$@, Arrives %8$@, Equipment: %9$@, Class: %10$@, Flight Duration: %11$@, Available Amenities: %12$@
|
24
|
+
comment = Accessibility Label describing Marketing Airline, Flight Number, Departure/Arrival City (Airport Code), Aircraft, Seat Class, Flight Duration & Amenities
|
25
|
+
[%1$@, %2$@, %3$@ to %4$@, %5$@ to %6$@]
|
26
|
+
en = %1$@, %2$@, %3$@ to %4$@, %5$@ to %6$@
|
27
|
+
comment = '{Departure Date}, {Marketing Airline Name}, {Departure Airport Code} to {Arrival Airport Code}, {Departure Time} to {Arrival Time}' Accessibility Label
|
28
|
+
[%1$@, %2$@, %3$d]
|
29
|
+
en = %1$@, %2$@, %3$d
|
30
|
+
comment = Itinerary Group Price, Name, and Itinerary Count
|
31
|
+
[%1$@, ---]
|
32
|
+
en = %1$@, ---
|
33
|
+
comment = Persona Name without Minimum Price
|
34
|
+
[%1$@, Book now on %2$@]
|
35
|
+
en = %1$@, Book now on %2$@
|
36
|
+
comment = '{Total Price}, Book now on {Site Name}' Call to Action
|
37
|
+
[%1$@, Travel Time: %2$@]
|
38
|
+
en = %1$@, Travel Time: %2$@
|
39
|
+
comment = Itinerary Price with Travel Duration
|
40
|
+
[%1$d Filters]
|
41
|
+
en = %1$d Filters
|
42
|
+
comment = Clear '{Number of Active Filters} Filters' Button Title
|
43
|
+
[%1$d Passengers]
|
44
|
+
en = %1$d Passengers
|
45
|
+
[%1$d Results]
|
46
|
+
en = %1$d Results
|
47
|
+
comment = Multiple Search Results Count
|
@@ -0,0 +1 @@
|
|
1
|
+
Pods
|
File without changes
|
File without changes
|
@@ -0,0 +1,38 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activesupport (3.2.14)
|
5
|
+
i18n (~> 0.6, >= 0.6.4)
|
6
|
+
multi_json (~> 1.0)
|
7
|
+
claide (0.3.2)
|
8
|
+
cocoapods (0.25.0)
|
9
|
+
activesupport (~> 3.0)
|
10
|
+
claide (~> 0.3.2)
|
11
|
+
cocoapods-core (= 0.25.0)
|
12
|
+
cocoapods-downloader (~> 0.2.0)
|
13
|
+
colored (~> 1.2)
|
14
|
+
escape (~> 0.0.4)
|
15
|
+
json (~> 1.8)
|
16
|
+
open4 (~> 1.3)
|
17
|
+
xcodeproj (~> 0.11.0)
|
18
|
+
cocoapods-core (0.25.0)
|
19
|
+
activesupport (~> 3.0)
|
20
|
+
json (~> 1.8)
|
21
|
+
nap (~> 0.5)
|
22
|
+
cocoapods-downloader (0.2.0)
|
23
|
+
colored (1.2)
|
24
|
+
escape (0.0.4)
|
25
|
+
i18n (0.6.5)
|
26
|
+
json (1.8.0)
|
27
|
+
multi_json (1.8.0)
|
28
|
+
nap (0.5.1)
|
29
|
+
open4 (1.3.0)
|
30
|
+
xcodeproj (0.11.1)
|
31
|
+
activesupport (~> 3.0)
|
32
|
+
colored (~> 1.2)
|
33
|
+
|
34
|
+
PLATFORMS
|
35
|
+
ruby
|
36
|
+
|
37
|
+
DEPENDENCIES
|
38
|
+
cocoapods
|
@@ -0,0 +1 @@
|
|
1
|
+
ref: refs/heads/master
|
@@ -0,0 +1 @@
|
|
1
|
+
This project is proprietary software that is copyright 2013 TripAdvisor, LLC.
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Pod::Spec.new do |s|
|
2
|
+
s.name = 'Project'
|
3
|
+
s.version = '1.0.0'
|
4
|
+
s.summary = 'Project is an example project used by the TripAdvisor build automation'
|
5
|
+
s.homepage = 'http://github.com/GateGuru/trip_advisor'
|
6
|
+
s.author = { 'Blake Watters' => 'bwatters@tripadvisor.com' }
|
7
|
+
s.source = { :git => '$GIT_URL', :tag => "v#{s.version}" }
|
8
|
+
s.license = 'Commercial'
|
9
|
+
|
10
|
+
s.source_files = 'Code/**/*.{h,m}'
|
11
|
+
|
12
|
+
# Platform setup
|
13
|
+
s.requires_arc = true
|
14
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
{
|
2
|
+
"images" : [
|
3
|
+
{
|
4
|
+
"idiom" : "iphone",
|
5
|
+
"size" : "29x29",
|
6
|
+
"scale" : "2x"
|
7
|
+
},
|
8
|
+
{
|
9
|
+
"idiom" : "iphone",
|
10
|
+
"size" : "40x40",
|
11
|
+
"scale" : "2x"
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"idiom" : "iphone",
|
15
|
+
"size" : "60x60",
|
16
|
+
"scale" : "2x"
|
17
|
+
}
|
18
|
+
],
|
19
|
+
"info" : {
|
20
|
+
"version" : 1,
|
21
|
+
"author" : "xcode"
|
22
|
+
}
|
23
|
+
}
|
data/spec/fixtures/project.git/TestProject/Images.xcassets/LaunchImage.launchimage/Contents.json
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
{
|
2
|
+
"images" : [
|
3
|
+
{
|
4
|
+
"orientation" : "portrait",
|
5
|
+
"idiom" : "iphone",
|
6
|
+
"extent" : "full-screen",
|
7
|
+
"minimum-system-version" : "7.0",
|
8
|
+
"scale" : "2x"
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"orientation" : "portrait",
|
12
|
+
"idiom" : "iphone",
|
13
|
+
"subtype" : "retina4",
|
14
|
+
"extent" : "full-screen",
|
15
|
+
"minimum-system-version" : "7.0",
|
16
|
+
"scale" : "2x"
|
17
|
+
}
|
18
|
+
],
|
19
|
+
"info" : {
|
20
|
+
"version" : 1,
|
21
|
+
"author" : "xcode"
|
22
|
+
}
|
23
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
//
|
2
|
+
// TATPAppDelegate.h
|
3
|
+
// TestProject
|
4
|
+
//
|
5
|
+
// Created by Blake Watters on 10/9/13.
|
6
|
+
// Copyright (c) 2013 TripAdvisor. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
#import <UIKit/UIKit.h>
|
10
|
+
|
11
|
+
@interface TATPAppDelegate : UIResponder <UIApplicationDelegate>
|
12
|
+
|
13
|
+
@property (strong, nonatomic) UIWindow *window;
|
14
|
+
|
15
|
+
@end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
//
|
2
|
+
// TATPAppDelegate.m
|
3
|
+
// TestProject
|
4
|
+
//
|
5
|
+
// Created by Blake Watters on 10/9/13.
|
6
|
+
// Copyright (c) 2013 TripAdvisor. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
#import "TATPAppDelegate.h"
|
10
|
+
|
11
|
+
@implementation TATPAppDelegate
|
12
|
+
|
13
|
+
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
14
|
+
{
|
15
|
+
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
16
|
+
// Override point for customization after application launch.
|
17
|
+
self.window.backgroundColor = [UIColor whiteColor];
|
18
|
+
[self.window makeKeyAndVisible];
|
19
|
+
return YES;
|
20
|
+
}
|
21
|
+
|
22
|
+
- (void)applicationWillResignActive:(UIApplication *)application
|
23
|
+
{
|
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
|
+
{
|
30
|
+
// 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.
|
31
|
+
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
|
32
|
+
}
|
33
|
+
|
34
|
+
- (void)applicationWillEnterForeground:(UIApplication *)application
|
35
|
+
{
|
36
|
+
// 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.
|
37
|
+
}
|
38
|
+
|
39
|
+
- (void)applicationDidBecomeActive:(UIApplication *)application
|
40
|
+
{
|
41
|
+
// 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.
|
42
|
+
}
|
43
|
+
|
44
|
+
- (void)applicationWillTerminate:(UIApplication *)application
|
45
|
+
{
|
46
|
+
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
|
47
|
+
}
|
48
|
+
|
49
|
+
@end
|
@@ -0,0 +1,38 @@
|
|
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>CFBundleDisplayName</key>
|
8
|
+
<string>${PRODUCT_NAME}</string>
|
9
|
+
<key>CFBundleExecutable</key>
|
10
|
+
<string>${EXECUTABLE_NAME}</string>
|
11
|
+
<key>CFBundleIdentifier</key>
|
12
|
+
<string>com.tripadvisor.TestProject.${PRODUCT_NAME:rfc1034identifier}</string>
|
13
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
14
|
+
<string>6.0</string>
|
15
|
+
<key>CFBundleName</key>
|
16
|
+
<string>${PRODUCT_NAME}</string>
|
17
|
+
<key>CFBundlePackageType</key>
|
18
|
+
<string>APPL</string>
|
19
|
+
<key>CFBundleShortVersionString</key>
|
20
|
+
<string>1.0</string>
|
21
|
+
<key>CFBundleSignature</key>
|
22
|
+
<string>????</string>
|
23
|
+
<key>CFBundleVersion</key>
|
24
|
+
<string>1.0</string>
|
25
|
+
<key>LSRequiresIPhoneOS</key>
|
26
|
+
<true/>
|
27
|
+
<key>UIRequiredDeviceCapabilities</key>
|
28
|
+
<array>
|
29
|
+
<string>armv7</string>
|
30
|
+
</array>
|
31
|
+
<key>UISupportedInterfaceOrientations</key>
|
32
|
+
<array>
|
33
|
+
<string>UIInterfaceOrientationPortrait</string>
|
34
|
+
<string>UIInterfaceOrientationLandscapeLeft</string>
|
35
|
+
<string>UIInterfaceOrientationLandscapeRight</string>
|
36
|
+
</array>
|
37
|
+
</dict>
|
38
|
+
</plist>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
//
|
2
|
+
// Prefix header
|
3
|
+
//
|
4
|
+
// The contents of this file are implicitly included at the beginning of every source file.
|
5
|
+
//
|
6
|
+
|
7
|
+
#import <Availability.h>
|
8
|
+
|
9
|
+
#ifndef __IPHONE_3_0
|
10
|
+
#warning "This project uses features only available in iOS SDK 3.0 and later."
|
11
|
+
#endif
|
12
|
+
|
13
|
+
#ifdef __OBJC__
|
14
|
+
#import <UIKit/UIKit.h>
|
15
|
+
#import <Foundation/Foundation.h>
|
16
|
+
#endif
|
@@ -0,0 +1 @@
|
|
1
|
+
/* Localized versions of Info.plist keys */
|
@@ -0,0 +1,18 @@
|
|
1
|
+
//
|
2
|
+
// main.m
|
3
|
+
// TestProject
|
4
|
+
//
|
5
|
+
// Created by Blake Watters on 10/9/13.
|
6
|
+
// Copyright (c) 2013 TripAdvisor. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
#import <UIKit/UIKit.h>
|
10
|
+
|
11
|
+
#import "TATPAppDelegate.h"
|
12
|
+
|
13
|
+
int main(int argc, char * argv[])
|
14
|
+
{
|
15
|
+
@autoreleasepool {
|
16
|
+
return UIApplicationMain(argc, argv, nil, NSStringFromClass([TATPAppDelegate class]));
|
17
|
+
}
|
18
|
+
}
|