antenna-ota 0.1.4 → 0.2.1
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/README.md +41 -3
- data/antenna.gemspec +1 -1
- data/lib/antenna/command/local.rb +26 -0
- data/lib/antenna/commands.rb +1 -0
- data/lib/antenna/distributor/local.rb +26 -0
- data/lib/antenna/version.rb +1 -1
- metadata +8 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1cca2a6dae4fc47cc88f5eacb32aab337cdc7360
|
|
4
|
+
data.tar.gz: 6a7fd2e44625b70df3d159ebece9a408309ecf76
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f6c7abf14f8c470064074aa38635f229a4aaa22d5b93371bbbd586e1d3a2d277d7be42546806c5f233e5e7a573d0d519547adfd9c3ad4305e14ee7bb3a0f9a54
|
|
7
|
+
data.tar.gz: 2f11040e094155e3ac93a44dcfd96cd22c3506411d74829224fa4e76982950d409739d4166f3848a9cd86d85224f777fdf084a70b9d567aa20ee0508f0f5d08d
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Antenna
|
|
4
4
|
|
|
5
|
-
Antenna aims to take the pain out of creating and distributing all the necessary files for Enterprise iOS over-the-air distribution. It generates the mandatory XML manifest, app icons and an HTML file, automatically extracting all the needed information from the specified `.ipa` file, and uploads everything via a distribution method of your choice (currently only S3
|
|
5
|
+
Antenna aims to take the pain out of creating and distributing all the necessary files for Enterprise iOS over-the-air distribution. It generates the mandatory XML manifest, app icons and an HTML file, automatically extracting all the needed information from the specified `.ipa` file, and uploads everything via a distribution method of your choice (currently only S3 and local filesystem are supported, but you're encouraged to create other storage backends). The result is a (signed S3) URL, which you may then send to your clients, so they can easily install your app from Mobile Safari with just one tap.
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
@@ -23,6 +23,7 @@ $ antenna
|
|
|
23
23
|
|
|
24
24
|
Commands:
|
|
25
25
|
help Display global or [command] help documentation
|
|
26
|
+
local Distribute .ipa file to local file system
|
|
26
27
|
s3 Distribute .ipa file over Amazon S3
|
|
27
28
|
|
|
28
29
|
Global Options:
|
|
@@ -32,6 +33,30 @@ $ antenna
|
|
|
32
33
|
-t, --trace Display backtrace when an error occurs
|
|
33
34
|
```
|
|
34
35
|
|
|
36
|
+
### S3-specific options
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
-f, --file FILE .ipa file to distribute
|
|
40
|
+
-a, --access-key-id ACCESS_KEY_ID S3 access key ID
|
|
41
|
+
-s, --secret-access-key SECRET_ACCESS_KEY S3 secret access key
|
|
42
|
+
-b, --bucket BUCKET S3 bucket name
|
|
43
|
+
--[no-]create (Don't) create bucket if it doesn't already exist
|
|
44
|
+
-r --region REGION AWS region (optional, e.g. https://mys3.example.com)
|
|
45
|
+
-e --endpoint ENDPOINT S3 endpoint (optional, e.g. https://mys3.example.com)
|
|
46
|
+
-x --expires EXPIRES Expiration of URLs in seconds (optional, e.g. 86400 = one day, one week max)
|
|
47
|
+
-i --base BASE Base filename (optional, defaults to IPA filename without .ipa extension)
|
|
48
|
+
-p --public Use public instead of signed URLs (you'll might want '--acl public-read' also)
|
|
49
|
+
--acl ACL Permissions for uploaded files. Must be one of: private, public-read, public-read-write, authenticated-read, bucket-owner-read, bucket-owner-full-control (optional, defaults to private)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Local-specific options
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
-f, --file FILE .ipa file to distribute (searches current directory for .ipa files if not specified)
|
|
56
|
+
-U, --url URL Base URL all files should be prefixed with
|
|
57
|
+
-i, --base BASE Base filename (optional, defaults to IPA filename without .ipa extension)
|
|
58
|
+
```
|
|
59
|
+
|
|
35
60
|
## Examples
|
|
36
61
|
|
|
37
62
|
### 1. Private, signed URL
|
|
@@ -64,7 +89,20 @@ The resulting URLs show an installation page like the following and can be distr
|
|
|
64
89
|
|
|
65
90
|

|
|
66
91
|
|
|
67
|
-
|
|
92
|
+
_Note:_ App icons in any .ipa file are converted from PNG to [Apple's CgBI file format](http://iphonedevwiki.net/index.php/CgBI_file_format) and therefore not viewable in most applications, including Chrome and Firefox. Apple applications like (Mobile) Safari or Preview.app know how to handle the format though.
|
|
93
|
+
|
|
94
|
+
### 3. Local file system
|
|
95
|
+
|
|
96
|
+
Distribute OverTheAir.ipa to the local file-system. The resulting files can then be uploaded manually:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
$ antenna local --url https://www.example.com/ipa/ --file OverTheAir.ipa
|
|
100
|
+
Distributing OverTheAir.ipa ...
|
|
101
|
+
Distributing OverTheAir.png ...
|
|
102
|
+
Distributing OverTheAir.plist ...
|
|
103
|
+
Distributing OverTheAir.html ...
|
|
104
|
+
https://www.example.com/ipa/OverTheAir.html
|
|
105
|
+
```
|
|
68
106
|
|
|
69
107
|
## Author
|
|
70
108
|
|
|
@@ -78,4 +116,4 @@ Bug reports and pull requests are welcome on [GitHub](https://github.com/soulchi
|
|
|
78
116
|
|
|
79
117
|
## License
|
|
80
118
|
|
|
81
|
-
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
|
119
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/antenna.gemspec
CHANGED
|
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.7"
|
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
23
|
-
spec.add_development_dependency "rspec"
|
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.8"
|
|
24
24
|
|
|
25
25
|
spec.add_dependency "aws-sdk", '~> 2.0', '>= 2.0.0'
|
|
26
26
|
spec.add_dependency "commander", "~> 4.3"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'distributor'
|
|
2
|
+
require 'distributor/local'
|
|
3
|
+
|
|
4
|
+
command :local do |c|
|
|
5
|
+
c.name = "local"
|
|
6
|
+
c.syntax = "antenna local [options]"
|
|
7
|
+
c.summary = "Distribute .ipa file to local file system"
|
|
8
|
+
|
|
9
|
+
c.example 'Distribute "awesome.ipa" to current path', 'antenna local --url https://example.com/ipas/ --file ./awesome.ipa'
|
|
10
|
+
|
|
11
|
+
c.option '-f', '--file FILE', '.ipa file to distribute (searches current directory for .ipa files if not specified)'
|
|
12
|
+
c.option '-U', '--url URL', 'Base URL all files should be prefixed with'
|
|
13
|
+
c.option '-i', '--base BASE', "Base filename (optional, defaults to IPA filename without .ipa extension)"
|
|
14
|
+
|
|
15
|
+
c.action do |args, options|
|
|
16
|
+
determine_file! unless @file = options.file
|
|
17
|
+
say_error "Missing .ipa file" and abort unless @file and File.exist?(@file)
|
|
18
|
+
|
|
19
|
+
local = Antenna::Distributor::Local.new()
|
|
20
|
+
distributor = Antenna::Distributor.new(local)
|
|
21
|
+
puts distributor.distribute @file, {
|
|
22
|
+
:base => options.base,
|
|
23
|
+
:url => options.url
|
|
24
|
+
}
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/antenna/commands.rb
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'uri'
|
|
2
|
+
|
|
3
|
+
module Antenna
|
|
4
|
+
class Distributor::Local
|
|
5
|
+
def initialize()
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def setup(ipa_file, options = {})
|
|
9
|
+
@options = options
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def distribute(data, filename, content_type)
|
|
13
|
+
puts "Distributing #{filename} ..."
|
|
14
|
+
|
|
15
|
+
target = open(filename, 'w')
|
|
16
|
+
target.write(data)
|
|
17
|
+
target.close
|
|
18
|
+
|
|
19
|
+
if @options[:url]
|
|
20
|
+
URI.join(@options[:url], filename)
|
|
21
|
+
else
|
|
22
|
+
filename
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/antenna/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: antenna-ota
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tobi Kremer
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-09-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -42,16 +42,16 @@ dependencies:
|
|
|
42
42
|
name: rspec
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
47
|
+
version: '3.8'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
54
|
+
version: '3.8'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: aws-sdk
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -171,9 +171,11 @@ files:
|
|
|
171
171
|
- bin/setup
|
|
172
172
|
- exe/antenna
|
|
173
173
|
- lib/antenna.rb
|
|
174
|
+
- lib/antenna/command/local.rb
|
|
174
175
|
- lib/antenna/command/s3.rb
|
|
175
176
|
- lib/antenna/commands.rb
|
|
176
177
|
- lib/antenna/distributor.rb
|
|
178
|
+
- lib/antenna/distributor/local.rb
|
|
177
179
|
- lib/antenna/distributor/s3.rb
|
|
178
180
|
- lib/antenna/html.rb
|
|
179
181
|
- lib/antenna/infoplist.rb
|