app-tools 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/kcpass +14 -13
- data/bin/{set-hardware-keyboard.applescript → setsimkbd} +4 -0
- data/bin/syncpp +26 -9
- data/bin/upload2itunes +11 -11
- data/lib/app_tools/version.rb +1 -1
- metadata +3 -5
- data/bin/add-password-to-keychain.sh +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19cf0d4936accba0a7a544a1055d7b8a96cc6b50
|
4
|
+
data.tar.gz: afff72b3bf1582c14ae26e0af24b2b997f028eb6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c10c537c7f4f06015ee8019e81cf133891a8dc6f762e94369a24117d5647880f590ccaf2b46c584bf3ca7469f8274049dab3375ca6efecf16126ba4921c7fd57
|
7
|
+
data.tar.gz: c0bae93ce72d9df694dc80d8e36779377c58a88b5b74a14ee538001d2686ba9a699f21caf9f98d0fb18f028c091f830da89e9bbd4cf28b799bc49b8187346329
|
data/bin/kcpass
CHANGED
@@ -16,42 +16,43 @@ module AppTools
|
|
16
16
|
itunes_password = options[:p]
|
17
17
|
itunes_user = options[:u]
|
18
18
|
cli = HighLine.new
|
19
|
-
|
19
|
+
keychain_name = "app-tools/iTunesConnect - #{itunes_user}"
|
20
|
+
|
21
|
+
if itunes_user.nil?
|
22
|
+
exit_now! "Must supply an iTunesConnect user email"
|
23
|
+
end
|
20
24
|
|
21
25
|
case action
|
22
26
|
when 'add'
|
23
|
-
if itunes_user.nil?
|
24
|
-
exit_now! "Must supply an iTunesConnect user email"
|
25
|
-
end
|
26
|
-
|
27
27
|
if itunes_password.nil?
|
28
28
|
itunes_password = cli.ask("Password:") { |q| q.echo = 'x' }
|
29
29
|
end
|
30
30
|
|
31
|
-
|
31
|
+
# TODO: When these tools are actually executables remove the -A flag
|
32
|
+
pid = Process.spawn('security', 'add-generic-password', '-a', itunes_user, '-w', itunes_password, '-s', keychain_name, '-A')
|
32
33
|
Process.wait(pid)
|
33
34
|
|
34
35
|
if $?.exitstatus == 0
|
35
|
-
info "Successfully added generic password for '#{
|
36
|
+
info "Successfully added generic password for '#{keychain_name}'"
|
36
37
|
else
|
37
|
-
error "Unable to add password for '#{
|
38
|
+
error "Unable to add password for '#{keychain_name}'"
|
38
39
|
end
|
39
40
|
when 'delete'
|
40
|
-
pid = Process.spawn('security', 'delete-generic-password', '-s',
|
41
|
+
pid = Process.spawn('security', 'delete-generic-password', '-s', keychain_name)
|
41
42
|
Process.wait pid
|
42
43
|
|
43
44
|
if $?.exitstatus == 0
|
44
|
-
info "Deleted generic password '#{
|
45
|
+
info "Deleted generic password '#{keychain_name}'"
|
45
46
|
else
|
46
|
-
error "Could not find generic password '#{
|
47
|
+
error "Could not find generic password '#{keychain_name}'"
|
47
48
|
end
|
48
49
|
when 'find'
|
49
50
|
r, w = IO.pipe
|
50
|
-
pid = Process.spawn('security', 'find-generic-password', '-s',
|
51
|
+
pid = Process.spawn('security', 'find-generic-password', '-s', keychain_name, '-w', :out => w)
|
51
52
|
w.close
|
52
53
|
Process.wait(pid)
|
53
54
|
if $?.exitstatus != 0
|
54
|
-
exit_now! "Could not find generic password '#{
|
55
|
+
exit_now! "Could not find generic password '#{keychain_name}'"
|
55
56
|
end
|
56
57
|
itunes_password = r.read
|
57
58
|
r.close
|
data/bin/syncpp
CHANGED
@@ -17,10 +17,18 @@ module AppTools
|
|
17
17
|
include Methadone::CLILogging
|
18
18
|
include Methadone::ExitNow
|
19
19
|
|
20
|
+
def self.keep_trying
|
21
|
+
tries ||= 5
|
22
|
+
yield
|
23
|
+
rescue UnexpectedResponse
|
24
|
+
sleep 3
|
25
|
+
retry unless (tries -= 1).zero?
|
26
|
+
end
|
27
|
+
|
20
28
|
main do |profile_name|
|
21
29
|
itunes_user = options[:u]
|
22
30
|
itunes_password = options[:p]
|
23
|
-
|
31
|
+
keychain_name = "app-tools/iTunesConnect - #{itunes_user}"
|
24
32
|
|
25
33
|
if itunes_user.nil?
|
26
34
|
exit_now! "Must supply a user name"
|
@@ -28,11 +36,11 @@ module AppTools
|
|
28
36
|
|
29
37
|
if itunes_password.nil?
|
30
38
|
r, w = IO.pipe
|
31
|
-
pid = Process.spawn('security', 'find-generic-password', '-s',
|
39
|
+
pid = Process.spawn('security', 'find-generic-password', '-s', keychain_name, '-w', :out => w)
|
32
40
|
w.close
|
33
41
|
Process.wait(pid)
|
34
42
|
if $?.exitstatus != 0
|
35
|
-
exit_now! "Could not find generic password '#{
|
43
|
+
exit_now! "Could not find generic password '#{keychain_name}'"
|
36
44
|
end
|
37
45
|
itunes_password = r.read.chomp
|
38
46
|
r.close
|
@@ -44,9 +52,14 @@ module AppTools
|
|
44
52
|
|
45
53
|
Spaceship.login(itunes_user, itunes_password)
|
46
54
|
|
47
|
-
|
48
|
-
|
49
|
-
|
55
|
+
profile = nil
|
56
|
+
|
57
|
+
# Sometimes the call to the Apple API can fail
|
58
|
+
keep_trying do
|
59
|
+
profiles = Spaceship.provisioning_profile.app_store.all
|
60
|
+
profile = profiles.find do |profile|
|
61
|
+
profile.name == profile_name
|
62
|
+
end
|
50
63
|
end
|
51
64
|
|
52
65
|
if profile.nil?
|
@@ -65,9 +78,13 @@ module AppTools
|
|
65
78
|
cert.name == profile.type
|
66
79
|
end
|
67
80
|
|
68
|
-
|
69
|
-
|
70
|
-
|
81
|
+
prod_cert = nil
|
82
|
+
|
83
|
+
keep_trying do
|
84
|
+
prod_certs = Spaceship.certificate.production.all
|
85
|
+
prod_cert = prod_certs.find do |cert|
|
86
|
+
cert.id == profile.certificates.first.id
|
87
|
+
end
|
71
88
|
end
|
72
89
|
|
73
90
|
profile_path = "#{profile_name}.mobileprovision"
|
data/bin/upload2itunes
CHANGED
@@ -26,6 +26,16 @@ module AppTools
|
|
26
26
|
# Create working variables
|
27
27
|
ipa_basename = File.basename(ipa_path)
|
28
28
|
itmsp_path = File.dirname(ipa_path) + '/' + ipa_basename[0...-4] + '.itmsp'
|
29
|
+
itunes_user = options[:u]
|
30
|
+
keychain_name = "app-tools/iTunesConnect - #{itunes_user}"
|
31
|
+
itunes_password = options[:p]
|
32
|
+
|
33
|
+
if itunes_password.nil?
|
34
|
+
IO.popen(['security', 'find-generic-password', '-s', keychain_name, '-w']) do |io|
|
35
|
+
itunes_password = io.read.chop
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
29
39
|
|
30
40
|
FileUtils.rm_rf itmsp_path
|
31
41
|
FileUtils.mkdir itmsp_path
|
@@ -68,16 +78,6 @@ module AppTools
|
|
68
78
|
File.open(itmsp_path + '/metadata.xml', 'w') { |file| file.write(metadata_xml) }
|
69
79
|
|
70
80
|
itmstransporter = "/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/itms/bin/iTMSTransporter"
|
71
|
-
|
72
|
-
itunes_user = options[:u]
|
73
|
-
itunes_password = options[:p]
|
74
|
-
|
75
|
-
if itunes_password.nil?
|
76
|
-
IO.popen(['security', 'find-generic-password', '-s', "app-tools-itunesconnect", '-w']) do |io|
|
77
|
-
itunes_password = io.read.chop
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
81
|
safe_password = itunes_password.gsub!('&', '\\\&')
|
82
82
|
IO.popen([itmstransporter, '-m', 'upload', '-u', itunes_user, '-p', safe_password, '-f', itmsp_path]) do |io|
|
83
83
|
while not io.eof?
|
@@ -94,7 +94,7 @@ module AppTools
|
|
94
94
|
|
95
95
|
on("-u", "--itunes-user USER", "The iTunesConnect user name")
|
96
96
|
on("-i", "--itunes-app-id APP_ID", "The iTunesConnect app ID")
|
97
|
-
on("-p", "--itunes-password PASSWORD", "The iTunes user password
|
97
|
+
on("-p", "--itunes-password PASSWORD", "The iTunes user password, otherwise the password is retrieved from the keychain.")
|
98
98
|
|
99
99
|
arg :ipa_path, "An IPA path", :require
|
100
100
|
|
data/lib/app_tools/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: app-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Lyon-Smith
|
@@ -128,11 +128,10 @@ description: |
|
|
128
128
|
email:
|
129
129
|
- john@jamoki.com
|
130
130
|
executables:
|
131
|
-
- add-password-to-keychain.sh
|
132
131
|
- app-tools
|
133
132
|
- kcpass
|
134
133
|
- resignipa
|
135
|
-
-
|
134
|
+
- setsimkbd
|
136
135
|
- syncpp
|
137
136
|
- upload2itunes
|
138
137
|
- xcarchive2ipa
|
@@ -140,11 +139,10 @@ extensions: []
|
|
140
139
|
extra_rdoc_files: []
|
141
140
|
files:
|
142
141
|
- lib/app_tools/version.rb
|
143
|
-
- bin/add-password-to-keychain.sh
|
144
142
|
- bin/app-tools
|
145
143
|
- bin/kcpass
|
146
144
|
- bin/resignipa
|
147
|
-
- bin/
|
145
|
+
- bin/setsimkbd
|
148
146
|
- bin/syncpp
|
149
147
|
- bin/upload2itunes
|
150
148
|
- bin/xcarchive2ipa
|
@@ -1,21 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
|
3
|
-
# Passed in from build script
|
4
|
-
if [[ -z "$USER_NAME" || -z "$USER_PASSWORD" ]]; then
|
5
|
-
echo Must set USER_NAME and USER_PASSWORD variables. Use single quotes around the USER_PASSWORD value to escape special bash characters.
|
6
|
-
exit 1
|
7
|
-
fi
|
8
|
-
|
9
|
-
ITMSTRANSPORTER=/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/itms/bin/iTMSTransporter
|
10
|
-
|
11
|
-
# See http://qntm.org/bash for explanation of why we escape everything in the password string
|
12
|
-
|
13
|
-
security add-generic-password -a $USER_NAME -s "app-tools/iTunesConnect" -w $(echo $USER_PASSWORD | sed -E 's/([^a-zA-Z0-9])/\1/g') -T "$ITMSTRANSPORTER" -T $(which security)
|
14
|
-
|
15
|
-
# This password can be deleted with:
|
16
|
-
#
|
17
|
-
# security delete-generic-password -a ${USER_NAME} -s "iTunesConnect - ${USER_NAME}"
|
18
|
-
#
|
19
|
-
# It can be retrieved with:
|
20
|
-
#
|
21
|
-
# security find-generic-password -a ${USER_NAME} -s "iTunesConnect - ${USER_NAME}" -w
|