appsendr 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest CHANGED
@@ -1,7 +1,6 @@
1
1
  Manifest
2
2
  README.rdoc
3
3
  Rakefile
4
- appsendr.gemspec
5
4
  bin/appsendr
6
5
  lib/appsendr.rb
7
6
  lib/appsendr/binary_plist.rb
@@ -12,6 +11,7 @@ lib/appsendr/commands/auth.rb
12
11
  lib/appsendr/commands/base.rb
13
12
  lib/appsendr/commands/build.rb
14
13
  lib/appsendr/commands/collaborators.rb
14
+ lib/appsendr/commands/common.rb
15
15
  lib/appsendr/commands/deploy.rb
16
16
  lib/appsendr/commands/groups.rb
17
17
  lib/appsendr/commands/help.rb
@@ -21,4 +21,5 @@ lib/appsendr/commands/version.rb
21
21
  lib/appsendr/constants.rb
22
22
  lib/appsendr/helpers.rb
23
23
  lib/appsendr/progressbar.rb
24
+ portal.rb
24
25
  terms
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ Echoe.new('appsendr', AppSendr::VERSION) do |p|
10
10
  p.email = "nolan@appsendr.com"
11
11
  p.ignore_pattern = ["tmp/*", "script/*"]
12
12
  p.development_dependencies = []
13
- p.runtime_dependencies = ["rest-client >=1.4.0", "rubyzip", "json_pure >=1.2.0"]
13
+ p.runtime_dependencies = ["rest-client >=1.4.0", "rubyzip", "json_pure >=1.2.0", "highline","mechanize"]
14
14
  p.has_rdoc = true
15
15
 
16
16
  end
data/appsendr.gemspec CHANGED
@@ -2,17 +2,17 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{appsendr}
5
- s.version = "0.0.5"
5
+ s.version = "0.0.6"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["AppSendr"]
9
- s.date = %q{2011-01-23}
9
+ s.date = %q{2011-02-22}
10
10
  s.default_executable = %q{appsendr}
11
11
  s.description = %q{A gem that will build and distribute an iphone/ipad app to the web for remote install}
12
12
  s.email = %q{nolan@appsendr.com}
13
13
  s.executables = ["appsendr"]
14
- s.extra_rdoc_files = ["README.rdoc", "bin/appsendr", "lib/appsendr.rb", "lib/appsendr/binary_plist.rb", "lib/appsendr/client.rb", "lib/appsendr/command.rb", "lib/appsendr/commands/app.rb", "lib/appsendr/commands/auth.rb", "lib/appsendr/commands/base.rb", "lib/appsendr/commands/build.rb", "lib/appsendr/commands/collaborators.rb", "lib/appsendr/commands/deploy.rb", "lib/appsendr/commands/groups.rb", "lib/appsendr/commands/help.rb", "lib/appsendr/commands/portal.rb", "lib/appsendr/commands/testers.rb", "lib/appsendr/commands/version.rb", "lib/appsendr/constants.rb", "lib/appsendr/helpers.rb", "lib/appsendr/progressbar.rb"]
15
- s.files = ["Manifest", "README.rdoc", "Rakefile", "bin/appsendr", "lib/appsendr.rb", "lib/appsendr/binary_plist.rb", "lib/appsendr/client.rb", "lib/appsendr/command.rb", "lib/appsendr/commands/app.rb", "lib/appsendr/commands/auth.rb", "lib/appsendr/commands/base.rb", "lib/appsendr/commands/build.rb", "lib/appsendr/commands/collaborators.rb", "lib/appsendr/commands/deploy.rb", "lib/appsendr/commands/groups.rb", "lib/appsendr/commands/help.rb", "lib/appsendr/commands/portal.rb", "lib/appsendr/commands/testers.rb", "lib/appsendr/commands/version.rb", "lib/appsendr/constants.rb", "lib/appsendr/helpers.rb", "lib/appsendr/progressbar.rb", "terms", "appsendr.gemspec"]
14
+ s.extra_rdoc_files = ["README.rdoc", "bin/appsendr", "lib/appsendr.rb", "lib/appsendr/binary_plist.rb", "lib/appsendr/client.rb", "lib/appsendr/command.rb", "lib/appsendr/commands/app.rb", "lib/appsendr/commands/auth.rb", "lib/appsendr/commands/base.rb", "lib/appsendr/commands/build.rb", "lib/appsendr/commands/collaborators.rb", "lib/appsendr/commands/common.rb", "lib/appsendr/commands/deploy.rb", "lib/appsendr/commands/groups.rb", "lib/appsendr/commands/help.rb", "lib/appsendr/commands/portal.rb", "lib/appsendr/commands/testers.rb", "lib/appsendr/commands/version.rb", "lib/appsendr/constants.rb", "lib/appsendr/helpers.rb", "lib/appsendr/progressbar.rb"]
15
+ s.files = ["Manifest", "README.rdoc", "Rakefile", "bin/appsendr", "lib/appsendr.rb", "lib/appsendr/binary_plist.rb", "lib/appsendr/client.rb", "lib/appsendr/command.rb", "lib/appsendr/commands/app.rb", "lib/appsendr/commands/auth.rb", "lib/appsendr/commands/base.rb", "lib/appsendr/commands/build.rb", "lib/appsendr/commands/collaborators.rb", "lib/appsendr/commands/common.rb", "lib/appsendr/commands/deploy.rb", "lib/appsendr/commands/groups.rb", "lib/appsendr/commands/help.rb", "lib/appsendr/commands/portal.rb", "lib/appsendr/commands/testers.rb", "lib/appsendr/commands/version.rb", "lib/appsendr/constants.rb", "lib/appsendr/helpers.rb", "lib/appsendr/progressbar.rb", "portal.rb", "terms", "appsendr.gemspec"]
16
16
  s.homepage = %q{http://www.appsendr.com/gem}
17
17
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Appsendr", "--main", "README.rdoc"]
18
18
  s.require_paths = ["lib"]
@@ -28,14 +28,20 @@ Gem::Specification.new do |s|
28
28
  s.add_runtime_dependency(%q<rest-client>, [">= 1.4.0"])
29
29
  s.add_runtime_dependency(%q<rubyzip>, [">= 0"])
30
30
  s.add_runtime_dependency(%q<json_pure>, [">= 1.2.0"])
31
+ s.add_runtime_dependency(%q<highline>, [">= 0"])
32
+ s.add_runtime_dependency(%q<mechanize>, [">= 0"])
31
33
  else
32
34
  s.add_dependency(%q<rest-client>, [">= 1.4.0"])
33
35
  s.add_dependency(%q<rubyzip>, [">= 0"])
34
36
  s.add_dependency(%q<json_pure>, [">= 1.2.0"])
37
+ s.add_dependency(%q<highline>, [">= 0"])
38
+ s.add_dependency(%q<mechanize>, [">= 0"])
35
39
  end
36
40
  else
37
41
  s.add_dependency(%q<rest-client>, [">= 1.4.0"])
38
42
  s.add_dependency(%q<rubyzip>, [">= 0"])
39
43
  s.add_dependency(%q<json_pure>, [">= 1.2.0"])
44
+ s.add_dependency(%q<highline>, [">= 0"])
45
+ s.add_dependency(%q<mechanize>, [">= 0"])
40
46
  end
41
47
  end
@@ -130,13 +130,14 @@ class AppSendr::Client
130
130
  post('/api/app/notify/'+app_id.to_s+'.json',{:group=>group})
131
131
  end
132
132
 
133
- def upload(app_id, ipa,provisioning, notify, notes, bundle_id, icon, later=false)
133
+ def upload(app_id, ipa,provisioning, is_public, notify, notes, bundle_id, icon, later=false)
134
134
  params = {
135
135
  :provisioning_profile => File.new(provisioning, 'rb'),
136
136
  :notes=>notes,
137
137
  :bundle_identifier => bundle_id,
138
138
  :built_at=>Time.now,
139
139
  :notify=>notify,
140
+ :public=>is_public,
140
141
  :app_id => app_id.to_s
141
142
  # :ipa=>
142
143
  }
@@ -184,7 +185,7 @@ class AppSendr::Client
184
185
  end
185
186
  end
186
187
 
187
- def finish_multipart(app_id, version_id, ipa, upload_id, parts)
188
+ def finish_multipart(app_id, version_id, ipa, upload_id, parts, notify)
188
189
  ipa_name = File.basename(ipa)
189
190
  ipa_size = File.size(ipa)
190
191
 
@@ -194,7 +195,7 @@ class AppSendr::Client
194
195
  params[:upload_id] = upload_id
195
196
  params[:parts] = parts
196
197
  params[:id] = version_id
197
-
198
+ params[:notify] = notify
198
199
  post('/api/version/multipart_finished.json', {:version=>params})
199
200
 
200
201
 
@@ -16,7 +16,7 @@ module AppSendr
16
16
 
17
17
  def run(command, args, retries=0)
18
18
  begin
19
- run_internal 'auth:reauthorize', args.dup if (retries > 0 or !credentials_setup?)
19
+ run_internal 'auth:login', args.dup if (retries > 0 or !credentials_setup?)
20
20
  run_internal(command, args.dup)
21
21
  rescue InvalidCommand
22
22
  error "Unknown command. Run 'appsendr help' for usage information."
@@ -25,7 +25,9 @@ module AppSendr::Command
25
25
  #
26
26
  name = args.join(" ").strip
27
27
 
28
- if require_project(1,"an app name","a name to create an app on appsendr",true)
28
+ error "You must include an app name" if name.empty?
29
+ require_project_dir("add an app")
30
+
29
31
  if has_project_droppr?
30
32
  list = appsendr.list
31
33
  if list["message"].size > 0
@@ -59,7 +61,6 @@ module AppSendr::Command
59
61
  display "Your app has been created."
60
62
  end
61
63
 
62
- end
63
64
  end
64
65
 
65
66
  def url
@@ -27,7 +27,7 @@ module AppSendr::Command
27
27
 
28
28
  end
29
29
 
30
- def reauthorize
30
+ def login
31
31
  user_pass = ask_for_credentials
32
32
  @credentials = auth_credentials(user_pass[0],user_pass[1])
33
33
  write_credentials
@@ -8,6 +8,9 @@ module AppSendr::Command
8
8
 
9
9
 
10
10
  def index
11
+ notify = option_exists?('--notify', false)
12
+ is_public = option_exists?('--public', false)
13
+
11
14
  if require_project(1,"build","your active configuration name")
12
15
  @configuration = load_configuration
13
16
  message "Building Xcode project with configuration #{@configuration}"
@@ -25,9 +28,10 @@ module AppSendr::Command
25
28
  bundle_identifier ||= info['CFBundleIdentifier']
26
29
  icon_path = icon_path(info)
27
30
  if is_file_to_large?(@ipa_path)
28
- upload_large_ipa(read_app_id,@ipa_path, profile_path,notify,@notes,bundle_identifier,icon_path)
31
+ upload_large_ipa(read_app_id,@ipa_path, profile_path,is_public,notify,@notes,bundle_identifier,icon_path)
29
32
  else
30
- appsendr.upload(read_app_id,@ipa_path, profile_path,notify,@notes,bundle_identifier,icon_path)
33
+ message "Uploading IPA"
34
+ appsendr.upload(read_app_id,@ipa_path, profile_path,is_public,notify,@notes,bundle_identifier,icon_path)
31
35
  message "App deployed"
32
36
  end
33
37
  FileUtils.rm_rf @ipa_path
@@ -69,7 +73,6 @@ module AppSendr::Command
69
73
 
70
74
  FileUtils.rm_rf payload_path
71
75
  Dir.mkdir(payload_path)
72
- #display "#{@app_path.cl_escape} #{payload_path.cl_escape}/#{app_name.cl_escape}"
73
76
  `cp -r #{@app_path.cl_escape} #{payload_path.cl_escape+"/"+app_name.cl_escape}`
74
77
  build_ipa(payload_path.cl_escape,ipa_path.cl_escape)
75
78
 
@@ -80,21 +83,19 @@ module AppSendr::Command
80
83
  end
81
84
 
82
85
  def build_ipa(payload_path,ipa_path)
83
- #ditto_exec = "ditto -c -k --keepParent -rsrc #{payload_path} #{ipa_path}"
84
86
  ditto_exec = "ditto -c -k --keepParent --sequesterRsrc #{payload_path} #{ipa_path}"
85
- #display ditto_exec
86
87
  system(ditto_exec)
87
88
  end
88
89
 
89
- def upload_large_ipa(app_id, ipa, provisioning ,notify, notes, bundle_id, icon)
90
- resp = appsendr.upload(app_id,ipa, provisioning,notify,notes,bundle_id,icon, true)
90
+ def upload_large_ipa(app_id, ipa, provisioning ,is_public, notify, notes, bundle_id, icon)
91
+ resp = appsendr.upload(app_id,ipa, provisioning,is_public,notify,notes,bundle_id,icon, true)
91
92
 
92
93
  @upload_id = nil
93
94
  @app_version_id = resp['message']['version']['id']
94
95
  if @app_version_id
95
96
  begin
96
97
  split_file(ipa)
97
- upload_as_multipart(app_id, @app_version_id, ipa)
98
+ upload_as_multipart(app_id, @app_version_id, ipa, notify)
98
99
  rescue Exception => e
99
100
  clean_split_files(File.dirname(ipa))
100
101
  appsendr.abort_multipart(app_id, @app_version_id, ipa, @upload_id)
@@ -104,7 +105,7 @@ module AppSendr::Command
104
105
 
105
106
  end
106
107
 
107
- def upload_as_multipart(app_id, version_id, ipa)
108
+ def upload_as_multipart(app_id, version_id, ipa, notify)
108
109
 
109
110
  ipa_name = File.basename(ipa)
110
111
  ipa_dir = File.dirname(ipa)
@@ -133,7 +134,7 @@ module AppSendr::Command
133
134
  }
134
135
  pbar.finish
135
136
 
136
- appsendr.finish_multipart(app_id, version_id, ipa, @upload_id, parts)
137
+ appsendr.finish_multipart(app_id, version_id, ipa, @upload_id, parts, notify)
137
138
 
138
139
  clean_split_files(ipa_dir)
139
140
 
@@ -0,0 +1,36 @@
1
+ require 'optparse'
2
+
3
+ module AppSendr::Command
4
+ class Ipa < Build ## Inherhits from Deploy
5
+ def create
6
+
7
+ app_name = args.join(" ").strip
8
+ @app_dir = Dir.pwd
9
+ @app_path = @app_dir+"/#{app_name}"
10
+
11
+ payload_path = @app_dir+"/Payload"
12
+ ipa_path = @app_dir+"/#{ipa_app_name(app_name).delete('^A-Za-z0-9\.\_\-')}"
13
+
14
+
15
+ FileUtils.rm_rf payload_path
16
+ Dir.mkdir(payload_path)
17
+ #display "#{@app_path.cl_escape} #{payload_path.cl_escape}/#{app_name.cl_escape}"
18
+ `cp -r #{@app_path.cl_escape} #{payload_path.cl_escape+"/"+app_name.cl_escape}`
19
+ build_ipa(payload_path.cl_escape,ipa_path.cl_escape)
20
+
21
+ FileUtils.rm_rf payload_path
22
+ message "IPA Built"
23
+
24
+ #return ipa_path
25
+ end
26
+
27
+ def codesign
28
+ # export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
29
+ # codesign –f –s “iPhone Developer: <insert your identity>” <appname>.app/<appname>
30
+ #
31
+ # You can check the Authorities by which an app is currently signed with the following command:
32
+ #
33
+ # codesign –d –vv <appname>.app/<appname>
34
+ end
35
+ end
36
+ end
@@ -12,6 +12,7 @@ module AppSendr::Command
12
12
  #
13
13
  #
14
14
  notify = option_exists?('--notify', false)
15
+ is_public = option_exists?('--public', false)
15
16
 
16
17
  @configuration = load_configuration
17
18
  if require_project(1,"deploy","your active configuration name",true)
@@ -30,9 +31,10 @@ module AppSendr::Command
30
31
  bundle_identifier ||= info['CFBundleIdentifier']
31
32
  icon_path = icon_path(info)
32
33
  if is_file_to_large?(@ipa_path)
33
- upload_large_ipa(read_app_id,@ipa_path, profile_path,notify,@notes,bundle_identifier,icon_path)
34
+ upload_large_ipa(read_app_id,@ipa_path, profile_path,is_public,notify,@notes,bundle_identifier,icon_path)
34
35
  else
35
- appsendr.upload(read_app_id,@ipa_path, profile_path,notify,@notes,bundle_identifier,icon_path)
36
+ message "Uploading IPA"
37
+ appsendr.upload(read_app_id,@ipa_path, profile_path,is_public,notify,@notes,bundle_identifier,icon_path)
36
38
  message "App deployed"
37
39
 
38
40
  end
@@ -62,6 +62,8 @@ module AppSendr::Command
62
62
  group.command 'collaborators', 'list collaborators'
63
63
  group.command 'collaborators:add <email>', 'add collaborators'
64
64
  group.command 'collaborators:remove <email>','remove collaborators'
65
+ group.space
66
+ group.command 'auth:login', 'reauthorize account'
65
67
  end
66
68
 
67
69
  end
@@ -75,8 +75,21 @@ module AppSendr::Command
75
75
  group = args.join(" ").strip
76
76
 
77
77
  appsendr.notify(read_app_id,group)
78
+ end
79
+ end
80
+
81
+ def devices
82
+ all = option_exists?('--all', false)
83
+
84
+ if require_project(0,nil,nil)
85
+ message "Devices"
86
+ app_id = read_app_id unless all
87
+ @remote_devices = appsendr.devices(app_id,false)
88
+ devices = @remote_devices['message']['Device UDIDs']
89
+ devices.each{|device|
90
+ puts device.to_yaml
91
+ }
78
92
  end
79
-
80
93
 
81
94
  end
82
95
 
@@ -1,5 +1,5 @@
1
1
  module AppSendr
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  PROJECT_DIR = ".appsendr"
4
4
  APPDROPPR_DIR = ".appsendr"
5
5
  end
data/portal.rb ADDED
@@ -0,0 +1,197 @@
1
+
2
+ require 'rubygems'
3
+ require 'mechanize'
4
+ require 'highline'
5
+ @@agent = Mechanize.new
6
+ @@agent.user_agent_alias = 'Mac FireFox'
7
+ @@agent.follow_meta_refresh = true
8
+
9
+ @@available_devices = []
10
+ @@available_profiles = []
11
+ BASE_URL = "https://developer.apple.com"
12
+ LOGIN_URL = BASE_URL + "/ios/manage/overview/index.action"
13
+ DEVICES_URL = BASE_URL + "/ios/manage/devices/index.action"
14
+ DEVICE_BULK_UPLOAD_URL = "/ios/manage/devices/saveupload.action"
15
+ SAVE_TEAM_URL = BASE_URL + "/membercenter/saveTeamSelection.action"
16
+
17
+ DEV_PROVISIONING_PROFILE_URL = BASE_URL + "/ios/manage/provisioningprofiles/index.action"
18
+ DIST_PROVISIONING_PROFILE_URL = BASE_URL + "/ios/manage/provisioningprofiles/viewDistributionProfiles.action"
19
+
20
+ CREATE_ADHOC_PROFILE_URL = BASE_URL + "/ios/manage/provisioningprofiles/create.action?type=2"
21
+ DOWNLOAD_PROFILE_URL_WO_ID = BASE_URL + "/ios/manage/provisioningprofiles/download.action?blobId="
22
+ EDIT_PROFILE_URL_WO_ID = BASE_URL + "/ios/manage/provisioningprofiles/edit.action?provDisplayId="
23
+
24
+ SAVE_PROFILE_URL = BASE_URL + "/ios/manage/provisioningprofiles/save.action"
25
+
26
+ def login(username, password)
27
+
28
+ # Get login page
29
+ #puts "- fetching login page"
30
+ #page = agent.get('https://phobos.apple.com/WebObjects/MZLabel.woa/wa/default')
31
+ page = @@agent.get(LOGIN_URL)
32
+
33
+
34
+ # Submit form to login
35
+ login_form = page.forms.first
36
+ login_form['theAccountName']=username
37
+ login_form['theAccountPW']=password
38
+ page = @@agent.submit(login_form)
39
+
40
+ # Fail if it looks like we ended up back at a login page
41
+ if page.form('appleConnectForm')
42
+ #puts "Error: Login failed"
43
+ return nil
44
+ #exit
45
+ else
46
+ select_form = page.form('saveTeamSelection')
47
+ if select_form
48
+ options = []
49
+ select_form.fields.first.options.each{|option|
50
+ display "#{options.length + 1}. #{option.text}"
51
+ options.push([option.text,option.value])
52
+
53
+ }
54
+ print "Enter the # for the account you wish to login to: "
55
+ selection = ask
56
+ if selection.to_i > (options.length )
57
+ error "Invalid selection"
58
+ return nil
59
+
60
+ end
61
+
62
+ team = options[selection.to_i - 1]
63
+ select_form['memberDisplayId'] = team[1]
64
+ page = @@agent.submit(select_form, select_form.buttons[1])
65
+ return page
66
+ else
67
+ return page
68
+ end
69
+ end
70
+ end
71
+
72
+ def get_details(username, password)
73
+ if login(username,password)
74
+ @available_dev_profiles = development_provisioning_profiles
75
+ profile = @available_dev_profiles[1]
76
+ profile_id = profile[:id]
77
+ puts profile_id
78
+ puts profile[:editable]
79
+ edit_profile = edit_provisioning_profile_and_get_devices(profile_id,false)
80
+ devices = edit_profile[1]
81
+ page = edit_profile[0]
82
+
83
+ update_provisioning_profile_with_devices(page,[])
84
+ #puts page.parser
85
+ end
86
+ end
87
+
88
+ #####
89
+ # provisioning
90
+
91
+ def provisioning_profiles(url)
92
+ page = @@agent.get(url)
93
+ table = page.at("//table/tbody")
94
+ profiles = []
95
+ return profiles unless table
96
+
97
+ table.children.each{|tr|
98
+ children = tr.children
99
+ cert_key = children[0].children[0]['value'].strip
100
+ cert_name = children[2].content.strip
101
+ app_id = children[4].content.strip
102
+ editable = false
103
+ children[8].search("a").each{|link|
104
+ if link.inner_html == "Edit"
105
+ editable = true
106
+ break
107
+ end
108
+ }
109
+
110
+ profiles.push({:name => cert_name, :id => cert_key, :app_id => app_id, :editable => editable })
111
+ #p children
112
+ }
113
+ return profiles
114
+ end
115
+
116
+ def development_provisioning_profiles
117
+ provisioning_profiles(DEV_PROVISIONING_PROFILE_URL)
118
+ end
119
+
120
+ def distribution_provisioning_profiles
121
+
122
+ provisioning_profiles(DIST_PROVISIONING_PROFILE_URL)
123
+
124
+ end
125
+
126
+ def download_provisioning_profile(id)
127
+ page = @@agent.get(DOWNLOAD_PROFILE_URL_WO_ID+id)
128
+ return page
129
+ end
130
+
131
+ def edit_provisioning_profile_and_get_devices(id,get_devices)
132
+ page = @@agent.get(EDIT_PROFILE_URL_WO_ID+id)
133
+ profile_devices = []
134
+
135
+ if get_devices
136
+ devices = page.at("div[@class='checkboxlist last']")
137
+
138
+ selected_devices = []
139
+
140
+ hidden_name = ""
141
+ checkbox_name = ""
142
+ devices.at("table").children.each{|row|
143
+ row.children.each{|column|
144
+
145
+ column.children.each{|input|
146
+ if input['type'] == "hidden"
147
+ hidden_name = input['name']
148
+ elsif input['type'] == "checkbox"
149
+ checkbox_name = input['name']
150
+ device = {}
151
+
152
+ device[:checked] = !!input['checked']
153
+ device[:udid] = input['value']
154
+ device[:name] = input.parent.at("label").inner_html
155
+ profile_devices.push(device)
156
+ if input['checked']
157
+ selected_devices.push(device)
158
+ #puts "[√] #{device[:name] } #{device[:udid]}"
159
+ else
160
+ # puts "[ ] #{device[:name] } #{device[:udid]}"
161
+ end
162
+
163
+
164
+ end
165
+
166
+ }
167
+ }
168
+ }
169
+ end
170
+ return [page, profile_devices]
171
+ end
172
+
173
+ def update_provisioning_profile_with_devices(page, devices)
174
+ device_form = page.forms[1]
175
+ device_form.checkboxes_with(:name=>/selectedDevices/).each do |checkbox|
176
+ puts checkbox['value']
177
+
178
+ if devices.include?(checkbox['value'])
179
+ checkbox.checked
180
+ put " √ "
181
+ end
182
+ end
183
+ button = device_form.button_with(:name => /submit/)
184
+ page = @@agent.submit(device_form, button)
185
+
186
+
187
+ end
188
+
189
+ def create_provisioning_profile
190
+ page = @@agent.get(CREATE_ADHOC_PROFILE_URL) #adhoc profiles
191
+ create_form = page.forms.first
192
+
193
+ end
194
+
195
+
196
+
197
+ get_details("nolanbrown@gmail.com","98xXp649")
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appsendr
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 5
10
- version: 0.0.5
9
+ - 6
10
+ version: 0.0.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - AppSendr
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-23 00:00:00 -08:00
18
+ date: 2011-02-22 00:00:00 -08:00
19
19
  default_executable: appsendr
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -64,6 +64,34 @@ dependencies:
64
64
  version: 1.2.0
65
65
  type: :runtime
66
66
  version_requirements: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ name: highline
69
+ prerelease: false
70
+ requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ hash: 3
76
+ segments:
77
+ - 0
78
+ version: "0"
79
+ type: :runtime
80
+ version_requirements: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ name: mechanize
83
+ prerelease: false
84
+ requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ hash: 3
90
+ segments:
91
+ - 0
92
+ version: "0"
93
+ type: :runtime
94
+ version_requirements: *id005
67
95
  description: A gem that will build and distribute an iphone/ipad app to the web for remote install
68
96
  email: nolan@appsendr.com
69
97
  executables:
@@ -82,6 +110,7 @@ extra_rdoc_files:
82
110
  - lib/appsendr/commands/base.rb
83
111
  - lib/appsendr/commands/build.rb
84
112
  - lib/appsendr/commands/collaborators.rb
113
+ - lib/appsendr/commands/common.rb
85
114
  - lib/appsendr/commands/deploy.rb
86
115
  - lib/appsendr/commands/groups.rb
87
116
  - lib/appsendr/commands/help.rb
@@ -105,6 +134,7 @@ files:
105
134
  - lib/appsendr/commands/base.rb
106
135
  - lib/appsendr/commands/build.rb
107
136
  - lib/appsendr/commands/collaborators.rb
137
+ - lib/appsendr/commands/common.rb
108
138
  - lib/appsendr/commands/deploy.rb
109
139
  - lib/appsendr/commands/groups.rb
110
140
  - lib/appsendr/commands/help.rb
@@ -114,6 +144,7 @@ files:
114
144
  - lib/appsendr/constants.rb
115
145
  - lib/appsendr/helpers.rb
116
146
  - lib/appsendr/progressbar.rb
147
+ - portal.rb
117
148
  - terms
118
149
  - appsendr.gemspec
119
150
  has_rdoc: true