phase 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/phase/cli/ipa.rb +6 -6
- data/lib/phase/configuration.rb +12 -6
- data/lib/phase/kit/ipa/app.rb +20 -38
- data/lib/phase/kit/ipa/enterprise_deployment.rb +36 -32
- data/lib/phase/templates/ipa_xml.plist +65 -0
- data/lib/phase/version.rb +1 -1
- data/lib/phase.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: efb7ef15efc3d89bc0e365884c2aade6a215cf70
|
4
|
+
data.tar.gz: a352b3bfd0a672d6ce01062263b758251df76023
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 08044e4ea70d6421c0005306de605bdcd7c03b10d6e3b2723db3a5cd1db463094f11a6b785850d170495279b1aa43c5d6832563d00c725f4bf34f66a8b12cd77
|
7
|
+
data.tar.gz: 217a1d8005beb9e7aeedfd00be6e51b022f3c483534826f8dcb5957056038e5d7f7ae527513d085379ab66bdef9045e8b815199edd9b0e77133c62c7f0a22b35
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.11
|
data/lib/phase/cli/ipa.rb
CHANGED
@@ -25,12 +25,12 @@ module Phase
|
|
25
25
|
fail "invalid syntax: phase ipa [--version version_number] [filename|glob_pattern]..."
|
26
26
|
end
|
27
27
|
|
28
|
-
if Phase.config.bundle_id_prefix.blank?
|
29
|
-
fail "missing setting: set `Phase.config.bundle_id_prefix = [PREFIX] in Phasefile"
|
30
|
-
elsif Phase.config.
|
31
|
-
fail "missing setting: set `Phase.config.
|
32
|
-
elsif Phase.config.
|
33
|
-
fail "missing setting: set `Phase.config.
|
28
|
+
if Phase.config.ipa.bundle_id_prefix.blank?
|
29
|
+
fail "missing setting: set `Phase.config.ipa.bundle_id_prefix = [PREFIX] in Phasefile"
|
30
|
+
elsif Phase.config.ipa.bucket_name.blank?
|
31
|
+
fail "missing setting: set `Phase.config.ipa.bucket_name = [BUCKET]` in Phasefile"
|
32
|
+
elsif Phase.config.ipa.directory_prefix.blank?
|
33
|
+
fail "missing setting: set `Phase.config.ipa.directory_prefix = [PREFIX] in Phasefile"
|
34
34
|
end
|
35
35
|
|
36
36
|
super
|
data/lib/phase/configuration.rb
CHANGED
@@ -2,8 +2,7 @@ module Phase
|
|
2
2
|
class Configuration
|
3
3
|
|
4
4
|
attr_accessor :bastions_enabled, :bastion_role, :bastion_user, :public_subnet_name,
|
5
|
-
:private_subnet_name, :aws_region, :adapter, :backend
|
6
|
-
:bundle_id_prefix, :ipa_directory_prefix, :ipa_bucket_name
|
5
|
+
:private_subnet_name, :aws_region, :adapter, :backend
|
7
6
|
|
8
7
|
def initialize
|
9
8
|
@bastions_enabled = false
|
@@ -14,10 +13,6 @@ module Phase
|
|
14
13
|
@aws_region = "us-east-1"
|
15
14
|
@adapter = ::Phase::Adapters::AWS
|
16
15
|
|
17
|
-
@bundle_id_prefix = ""
|
18
|
-
@ipa_directory_prefix = ""
|
19
|
-
@ipa_bucket_name = ""
|
20
|
-
|
21
16
|
self.backend = ::Phase::SSH::Backend
|
22
17
|
set_aws_credentials!
|
23
18
|
end
|
@@ -27,6 +22,17 @@ module Phase
|
|
27
22
|
::SSHKit.config.backend = @backend
|
28
23
|
end
|
29
24
|
|
25
|
+
# Available options:
|
26
|
+
# * bundle_id_prefix
|
27
|
+
# * directory_prefix
|
28
|
+
# * bucket_name
|
29
|
+
# * company_name
|
30
|
+
# * full_image_url
|
31
|
+
# * icon_image_url
|
32
|
+
def ipa
|
33
|
+
@ipa ||= ::ActiveSupport::OrderedOptions.new
|
34
|
+
end
|
35
|
+
|
30
36
|
def load_phasefile!
|
31
37
|
if ::File.exist?(phasefile_path)
|
32
38
|
load phasefile_path
|
data/lib/phase/kit/ipa/app.rb
CHANGED
@@ -18,54 +18,36 @@ module Phase
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def plist_xml
|
21
|
-
|
22
|
-
|
23
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
24
|
-
<plist version="1.0">
|
25
|
-
<dict>
|
26
|
-
<key>items</key>
|
27
|
-
<array>
|
28
|
-
<dict>
|
29
|
-
<key>assets</key>
|
30
|
-
<array>
|
31
|
-
<dict>
|
32
|
-
<key>kind</key>
|
33
|
-
<string>software-package</string>
|
34
|
-
<key>url</key>
|
35
|
-
<string>https://s3.amazonaws.com/orca-static-assets/apps/#{ipa_filename}</string>
|
36
|
-
</dict>
|
37
|
-
</array>
|
38
|
-
<key>metadata</key>
|
39
|
-
<dict>
|
40
|
-
<key>bundle-identifier</key>
|
41
|
-
<string>#{bundle_id_prefix}.#{bundle_name}</string>
|
42
|
-
<key>bundle-version</key>
|
43
|
-
<string>#{version}</string>
|
44
|
-
<key>kind</key>
|
45
|
-
<string>software</string>
|
46
|
-
<key>title</key>
|
47
|
-
<string>#{human_name}</string>
|
48
|
-
</dict>
|
49
|
-
</dict>
|
50
|
-
</array>
|
51
|
-
</dict>
|
52
|
-
</plist>
|
53
|
-
EOXML
|
21
|
+
xml = ::File.read( ::File.expand_path("../../templates/ipa_xml.plist", __dir__) )
|
22
|
+
::ERB.new(xml).result(binding)
|
54
23
|
end
|
55
24
|
|
56
25
|
private
|
57
26
|
|
58
|
-
def human_name
|
59
|
-
name.titleize
|
60
|
-
end
|
61
|
-
|
62
27
|
def bundle_name
|
63
28
|
name
|
64
29
|
end
|
65
30
|
|
66
31
|
def bundle_id_prefix
|
67
|
-
Phase.config.bundle_id_prefix
|
32
|
+
Phase.config.ipa.bundle_id_prefix
|
33
|
+
end
|
34
|
+
|
35
|
+
def company_name
|
36
|
+
Phase.config.ipa.company_name
|
37
|
+
end
|
38
|
+
|
39
|
+
def full_image_url
|
40
|
+
Phase.config.ipa.full_image_url
|
68
41
|
end
|
42
|
+
|
43
|
+
def human_name
|
44
|
+
name.titleize
|
45
|
+
end
|
46
|
+
|
47
|
+
def icon_image_url
|
48
|
+
Phase.config.ipa.icon_image_url
|
49
|
+
end
|
50
|
+
|
69
51
|
end
|
70
52
|
end
|
71
53
|
end
|
@@ -15,8 +15,8 @@ module Phase
|
|
15
15
|
@file_paths.uniq!
|
16
16
|
|
17
17
|
@aws = ::Fog::Storage::AWS.new(region: Phase.config.aws_region)
|
18
|
-
@bucket = aws.directories.get(Phase.config.
|
19
|
-
@prefix = ::Pathname.new(Phase.config.
|
18
|
+
@bucket = aws.directories.get(Phase.config.ipa.bucket_name)
|
19
|
+
@prefix = ::Pathname.new(Phase.config.ipa.directory_prefix)
|
20
20
|
|
21
21
|
@apps = []
|
22
22
|
end
|
@@ -24,47 +24,36 @@ module Phase
|
|
24
24
|
def run!
|
25
25
|
::FileUtils.mkdir(version) rescue nil
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
manifest_path = ::File.join(::Dir.pwd, version, "manifest.txt")
|
28
|
+
::File.open(manifest_path, 'w') do |manifest|
|
29
|
+
file_paths.map do |path|
|
30
|
+
app = App.new(path, version)
|
31
|
+
app.download_url = download_url(app)
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
log "#{app.name}: writing .plist..."
|
34
|
+
write_plist!(app)
|
35
35
|
|
36
|
-
|
37
|
-
|
36
|
+
log "#{app.name}: copying .ipa..."
|
37
|
+
copy_ipa!(app)
|
38
38
|
|
39
|
-
|
40
|
-
|
39
|
+
log "#{app.name}: uploading files..."
|
40
|
+
upload!(app)
|
41
41
|
|
42
|
-
|
43
|
-
|
42
|
+
log "#{app.name}: updating manifest..."
|
43
|
+
manifest << manifest_url(app)
|
44
|
+
manifest << "\n"
|
44
45
|
|
45
|
-
|
46
|
-
|
47
|
-
apps.each do |app|
|
48
|
-
url = [
|
49
|
-
"itms-services://?action=download-manifest&url=https://s3.amazonaws.com",
|
50
|
-
bucket.key,
|
51
|
-
prefix,
|
52
|
-
app.plist_filename
|
53
|
-
].join("/")
|
54
|
-
|
55
|
-
file << url
|
56
|
-
file << "\n"
|
46
|
+
log "#{app.name}: done"
|
47
|
+
log ""
|
57
48
|
end
|
58
49
|
end
|
59
50
|
end
|
60
51
|
|
61
52
|
def write_plist!(app)
|
62
|
-
log "#{app.name}: writing .plist"
|
63
53
|
::File.open(plist_path(app), 'w') { |file| file << app.plist_xml }
|
64
54
|
end
|
65
55
|
|
66
56
|
def copy_ipa!(app)
|
67
|
-
log "#{app.name}: copying .ipa"
|
68
57
|
::FileUtils.cp(app.qualified_path, ipa_path(app))
|
69
58
|
end
|
70
59
|
|
@@ -81,15 +70,30 @@ module Phase
|
|
81
70
|
acl: "public-read"
|
82
71
|
})
|
83
72
|
|
84
|
-
log "#{app.name}: uploading .ipa"
|
85
73
|
ipa.save
|
86
|
-
|
87
|
-
log "#{app.name}: uploading .plist"
|
88
74
|
plist.save
|
89
75
|
end
|
90
76
|
|
91
77
|
private
|
92
78
|
|
79
|
+
def download_url(app)
|
80
|
+
[
|
81
|
+
"https://s3.amazonaws.com",
|
82
|
+
bucket.key,
|
83
|
+
prefix,
|
84
|
+
app.ipa_filename
|
85
|
+
].join("/")
|
86
|
+
end
|
87
|
+
|
88
|
+
def manifest_url(app)
|
89
|
+
[
|
90
|
+
"itms-services://?action=download-manifest&url=https://s3.amazonaws.com",
|
91
|
+
bucket.key,
|
92
|
+
prefix,
|
93
|
+
app.plist_filename
|
94
|
+
].join("/")
|
95
|
+
end
|
96
|
+
|
93
97
|
def plist_path(app)
|
94
98
|
::File.join(::Dir.pwd, version, app.plist_filename)
|
95
99
|
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
2
|
+
<plist version="1.0">
|
3
|
+
<dict>
|
4
|
+
<key>items</key>
|
5
|
+
<array>
|
6
|
+
<dict>
|
7
|
+
<key>assets</key>
|
8
|
+
<array>
|
9
|
+
<dict>
|
10
|
+
<key>kind</key>
|
11
|
+
<string>software-package</string>
|
12
|
+
<!-- optional. md5 every n bytes. -->
|
13
|
+
<!-- will restart a chunk if md5 fails. -->
|
14
|
+
<!-- <key>md5-size</key>
|
15
|
+
<integer>10485760</integer> -->
|
16
|
+
|
17
|
+
<!-- optional. array of md5 hashes -->
|
18
|
+
<!-- <key>md5s</key>
|
19
|
+
<array>
|
20
|
+
<string>41fa64bb7a7cae5a46bfb45821ac8bba</string>
|
21
|
+
<string>51fa64bb7a7cae5a46bfb45821ac8bba</string>
|
22
|
+
</array> -->
|
23
|
+
<key>url</key>
|
24
|
+
<string><%= download_url %></string>
|
25
|
+
</dict>
|
26
|
+
|
27
|
+
<dict>
|
28
|
+
<key>kind</key>
|
29
|
+
<string>display-image</string>
|
30
|
+
<key>needs-shine</key>
|
31
|
+
<false/>
|
32
|
+
<key>url</key>
|
33
|
+
<string><%= icon_image_url %></string>
|
34
|
+
</dict>
|
35
|
+
|
36
|
+
<dict>
|
37
|
+
<key>kind</key>
|
38
|
+
<string>full-size-image</string>
|
39
|
+
<!-- <key>md5</key>
|
40
|
+
<string>61fa64bb7a7cae5a46bfb45821ac8bba</string> -->
|
41
|
+
<key>needs-shine</key>
|
42
|
+
<false/>
|
43
|
+
<key>url</key>
|
44
|
+
<string><%= full_image_url %></string>
|
45
|
+
</dict>
|
46
|
+
</array>
|
47
|
+
|
48
|
+
<key>metadata</key>
|
49
|
+
<dict>
|
50
|
+
|
51
|
+
<key>bundle-identifier</key>
|
52
|
+
<string><%= "#{bundle_id_prefix}.#{bundle_name}" %></string>
|
53
|
+
<key>bundle-version</key>
|
54
|
+
<string><%= version %></string>
|
55
|
+
<key>kind</key>
|
56
|
+
<string>software</string>
|
57
|
+
<key>subtitle</key>
|
58
|
+
<string><%= company_name %></string>
|
59
|
+
<key>title</key>
|
60
|
+
<string><%= human_name %></string>
|
61
|
+
</dict>
|
62
|
+
</dict>
|
63
|
+
</array>
|
64
|
+
</dict>
|
65
|
+
</plist>
|
data/lib/phase/version.rb
CHANGED
data/lib/phase.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piers Mainwaring
|
@@ -230,6 +230,7 @@ files:
|
|
230
230
|
- lib/phase/kit/ssh/command.rb
|
231
231
|
- lib/phase/kit/ssh/runners.rb
|
232
232
|
- lib/phase/tasks/deploy.rb
|
233
|
+
- lib/phase/templates/ipa_xml.plist
|
233
234
|
- lib/phase/util/console.rb
|
234
235
|
- lib/phase/version.rb
|
235
236
|
- phase.gemspec
|