apprepo 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +140 -0
- data/lib/apprepo.rb +25 -0
- data/lib/apprepo/manifest.rb +39 -0
- data/lib/apprepo/upload_descriptor.rb +14 -0
- data/lib/apprepo/uploader.rb +102 -0
- data/lib/apprepo/version.rb +4 -0
- data/lib/test.data +1 -0
- data/lib/test.data.from-remote +1 -0
- data/lib/test.rb +71 -0
- metadata +326 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bd547e9cce7c88aed5a608c31780f8102217da0b
|
4
|
+
data.tar.gz: 52c5fc0501fc93cae235323b4fcf8d5f6eccae30
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fec94ca077861b568eedcab127030e909d0ff02197feb11693bafa2d6a348cb9368149c2d1029351bf32815668e783c7280aca0915bc1af078208b69fbb5b2ca
|
7
|
+
data.tar.gz: a53949bee9c0b95a942e84c9e2b4dcda9b7f40ba690b0522c4e7514f0fa3423bbe8e7043fca4294eac58f2760fd60b060db34c3586c4211ddaa3b5555dd88377
|
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2015 Felix Krause
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
22
|
+
|
data/README.md
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
<h3 align="center">
|
2
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/fastlane">
|
3
|
+
<img src="assets/fastlane.png" width="150" />
|
4
|
+
<br />
|
5
|
+
fastlane
|
6
|
+
</a>
|
7
|
+
</h3>
|
8
|
+
<p align="center">
|
9
|
+
<b>apprepo</b> •
|
10
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/deliver">deliver</a> •
|
11
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/snapshot">snapshot</a> •
|
12
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/frameit">frameit</a> •
|
13
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/pem">pem</a> •
|
14
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/sigh">sigh</a> •
|
15
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/produce">produce</a> •
|
16
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/cert">cert</a> •
|
17
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/spaceship">spaceship</a> •
|
18
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/pilot">pilot</a> •
|
19
|
+
<a href="https://github.com/fastlane/boarding">boarding</a> •
|
20
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/gym">gym</a> •
|
21
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/scan">scan</a> •
|
22
|
+
<a href="https://github.com/fastlane/fastlane/tree/master/match">match</a>
|
23
|
+
</p>
|
24
|
+
-------
|
25
|
+
|
26
|
+
<p align="center">
|
27
|
+
<img src="assets/apprepo.png" height="110">
|
28
|
+
</p>
|
29
|
+
|
30
|
+
apprepo
|
31
|
+
============
|
32
|
+
|
33
|
+
[![Twitter: @igraczech](https://img.shields.io/badge/contact-%40igraczech-green.svg?style=flat)](https://twitter.com/igraczech)
|
34
|
+
[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/fastlane/blob/master/deliver/LICENSE)
|
35
|
+
[![Gem](https://img.shields.io/badge/gem-0.0.1-blue.svg)](http://rubygems.org/gems/apprepo)
|
36
|
+
[![Build Status](https://img.shields.io/circleci/project/apprepo/master.svg?style=flat)](https://circleci.com/gh/fastlane/fastlane)
|
37
|
+
|
38
|
+
###### Upload screenshots, metadata and your app to the App Store using a single command
|
39
|
+
|
40
|
+
`apprepo` can upload ipa files, app icons and metadata to T-Mobile Enterprise AppRepo from the command line.
|
41
|
+
|
42
|
+
Get in contact with the developer on Twitter: [@igraczech](https://twitter.com/igraczech)
|
43
|
+
|
44
|
+
-------
|
45
|
+
<p align="center">
|
46
|
+
<a href="#features">Features</a> •
|
47
|
+
<a href="#installation">Installation</a> •
|
48
|
+
<a href="#quick-start">Quick Start</a> •
|
49
|
+
<a href="#usage">Usage</a> •
|
50
|
+
<a href="#tips">Tips</a> •
|
51
|
+
<a href="#need-help">Need help?</a>
|
52
|
+
</p>
|
53
|
+
|
54
|
+
-------
|
55
|
+
|
56
|
+
<h5 align="center"><code>deliver</code> is part of <a href="https://fastlane.tools">fastlane</a>: The easiest way to automate building and releasing your iOS and Android apps.</h5>
|
57
|
+
|
58
|
+
# Features
|
59
|
+
- Upload to AppRepo completely automatically
|
60
|
+
- Upload a new ipa file to AppRepo without Xcode from any Mac
|
61
|
+
- Maintain your app metadata locally and push changes back to AppRepo
|
62
|
+
- Easily implement a real Continuous Deployment process using [fastlane](https://fastlane.tools)
|
63
|
+
- Store the configuration in git to easily deploy from **any** Mac, including your Continuous Integration server
|
64
|
+
|
65
|
+
To upload builds to AppStore check out [deliver](https://github.com/fastlane/fastlane/tree/master/deliver).
|
66
|
+
|
67
|
+
To upload builds to TestFlight check out [pilot](https://github.com/fastlane/fastlane/tree/master/pilot).
|
68
|
+
|
69
|
+
##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
|
70
|
+
|
71
|
+
# Installation
|
72
|
+
|
73
|
+
Install the gem
|
74
|
+
|
75
|
+
sudo gem install apprepo
|
76
|
+
|
77
|
+
Make sure, you have the latest version of the Xcode command line tools installed:
|
78
|
+
|
79
|
+
xcode-select --install
|
80
|
+
|
81
|
+
# Quick Start
|
82
|
+
|
83
|
+
The guide will create all the necessary files for you, using the existing app metadata from iTunes Connect.
|
84
|
+
|
85
|
+
- ```cd [your_project_folder]```
|
86
|
+
- ```apprepo init```
|
87
|
+
- Enter your AppRepo credentials (path to RSA private key)
|
88
|
+
- Enter your app-code
|
89
|
+
- Enjoy a good drink, while the computer does all the work for you
|
90
|
+
|
91
|
+
From now on, you can run `apprepo` to deploy a new update, or just upload new app metadata and icons.
|
92
|
+
|
93
|
+
Already using Jenkins and just updated to `apprepo`? Check out the [Migration Guide](https://github.com/fastlane/fastlane/blob/master/deliver/MigrationGuide.md).
|
94
|
+
|
95
|
+
# Usage
|
96
|
+
|
97
|
+
...
|
98
|
+
|
99
|
+
# Credentials
|
100
|
+
|
101
|
+
...
|
102
|
+
|
103
|
+
### How does this thing even work? Is magic involved? 🎩###
|
104
|
+
|
105
|
+
...
|
106
|
+
|
107
|
+
# Tips
|
108
|
+
|
109
|
+
## [`fastlane`](https://fastlane.tools) Toolchain
|
110
|
+
|
111
|
+
- [`fastlane`](https://fastlane.tools): The easiest way to automate building and releasing your iOS and Android apps
|
112
|
+
- [`snapshot`](https://github.com/fastlane/fastlane/tree/master/snapshot): Automate taking localized screenshots of your iOS app on every device
|
113
|
+
- [`frameit`](https://github.com/fastlane/fastlane/tree/master/frameit): Quickly put your screenshots into the right device frames
|
114
|
+
- [`pem`](https://github.com/fastlane/fastlane/tree/master/pem): Automatically generate and renew your push notification profiles
|
115
|
+
- [`sigh`](https://github.com/fastlane/fastlane/tree/master/sigh): Because you would rather spend your time building stuff than fighting provisioning
|
116
|
+
- [`produce`](https://github.com/fastlane/fastlane/tree/master/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
|
117
|
+
- [`cert`](https://github.com/fastlane/fastlane/tree/master/cert): Automatically create and maintain iOS code signing certificates
|
118
|
+
- [`spaceship`](https://github.com/fastlane/fastlane/tree/master/spaceship): Ruby library to access the Apple Dev Center and iTunes Connect
|
119
|
+
- [`pilot`](https://github.com/fastlane/fastlane/tree/master/pilot): The best way to manage your TestFlight testers and builds from your terminal
|
120
|
+
- [`boarding`](https://github.com/fastlane/boarding): The easiest way to invite your TestFlight beta testers
|
121
|
+
- [`gym`](https://github.com/fastlane/fastlane/tree/master/gym): Building your iOS apps has never been easier
|
122
|
+
- [`scan`](https://github.com/fastlane/fastlane/tree/master/scan): The easiest way to run tests of your iOS and Mac app
|
123
|
+
- [`match`](https://github.com/fastlane/fastlane/tree/master/match): Easily sync your certificates and profiles across your team using git
|
124
|
+
|
125
|
+
##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
|
126
|
+
|
127
|
+
|
128
|
+
## Editing the ```Deliverfile```
|
129
|
+
Change syntax highlighting to *Ruby*.
|
130
|
+
|
131
|
+
# Need help?
|
132
|
+
Please submit an issue on GitHub and provide information about your setup
|
133
|
+
|
134
|
+
# Code of Conduct
|
135
|
+
Help us keep `apprepo` open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/fastlane/blob/master/CODE_OF_CONDUCT.md).
|
136
|
+
|
137
|
+
# License
|
138
|
+
This project is licensed under the terms of the MIT license. See the LICENSE file.
|
139
|
+
|
140
|
+
> This project and all fastlane tools are in no way affiliated with Apple Inc. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.
|
data/lib/apprepo.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require_relative 'apprepo/version'
|
5
|
+
require_relative 'apprepo/uploader'
|
6
|
+
require_relative 'apprepo/upload_descriptor'
|
7
|
+
require 'fastlane_core'
|
8
|
+
|
9
|
+
module AppRepo
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def initialize
|
13
|
+
puts 'Initializing "AppRepo:Uploader"'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|
18
|
+
UI = FastlaneCore::UI
|
19
|
+
|
20
|
+
# Should read following parameters from fastlane/Repofile:
|
21
|
+
#test only
|
22
|
+
upload = Uploader.new('repo.teacloud.net', 'ubuntu', '/Users/sychram/.ssh/REPOKey.pem')
|
23
|
+
uploadDescriptor = UploadDescriptor.new("APPREPO")
|
24
|
+
upload.run
|
25
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module AppRepo
|
2
|
+
|
3
|
+
class Manifest
|
4
|
+
|
5
|
+
#
|
6
|
+
# Translated internal key names from Fastlane to AppRepo
|
7
|
+
#
|
8
|
+
|
9
|
+
attr_accessor :appcode # AppRepo Internal Code
|
10
|
+
attr_accessor :filename # IPA file name
|
11
|
+
attr_accessor :bundle_identifier # app_identifier
|
12
|
+
attr_accessor :bundle_version # app_version
|
13
|
+
attr_accessor :title # app_name
|
14
|
+
attr_accessor :subtitle # app_description
|
15
|
+
attr_accessor :notify # will send push notification / slack
|
16
|
+
|
17
|
+
def initialize (appcode)
|
18
|
+
self.appcode = appcode
|
19
|
+
puts 'Initializing "AppRepo:Manifest requies at least APPCODE :"'+self.appcode
|
20
|
+
end
|
21
|
+
|
22
|
+
# Provide JSON serialized data
|
23
|
+
def getJSON
|
24
|
+
structure = {
|
25
|
+
appcode: self.appcode,
|
26
|
+
filename: self.filename,
|
27
|
+
bundle_identifier: self.bundle_identifier,
|
28
|
+
bundle_version: self.bundle_version,
|
29
|
+
title: self.title,
|
30
|
+
subtitle: self.subtitle,
|
31
|
+
notify: self.notify
|
32
|
+
}
|
33
|
+
|
34
|
+
fputs structure
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'net/ssh'
|
3
|
+
require 'net/sftp'
|
4
|
+
require 'fastlane_core/languages'
|
5
|
+
require_relative 'upload_descriptor'
|
6
|
+
|
7
|
+
module AppRepo
|
8
|
+
|
9
|
+
class Uploader
|
10
|
+
|
11
|
+
attr_accessor :host
|
12
|
+
|
13
|
+
attr_accessor :login
|
14
|
+
|
15
|
+
attr_accessor :keypath
|
16
|
+
|
17
|
+
def initialize (host, login, keypath)
|
18
|
+
self.host = host
|
19
|
+
self.login = login
|
20
|
+
self.keypath = keypath
|
21
|
+
puts 'Initializing "AppRepo:Uploader"'
|
22
|
+
end
|
23
|
+
|
24
|
+
def run
|
25
|
+
|
26
|
+
File.open(self.keypath, "r") do |file|
|
27
|
+
|
28
|
+
puts '[AppRepo:Uploader] reading private key...'
|
29
|
+
|
30
|
+
rsa_key = [ file.read ]
|
31
|
+
|
32
|
+
puts '[AppRepo:Uploader] starting SSH connection...'
|
33
|
+
|
34
|
+
Net::SSH.start( self.host, self.login, :key_data => rsa_key, :keys_only => true) do |ssh|
|
35
|
+
|
36
|
+
puts '[AppRepo:Uploader] logging to AppRepo...'
|
37
|
+
|
38
|
+
ssh.sftp.connect do |sftp|
|
39
|
+
|
40
|
+
puts '[AppRepo:Uploader] AppRepo successfully connected...'
|
41
|
+
|
42
|
+
puts '[AppRepo:Uploader] TODO: Traverse to correct "APPCODE" folder...'
|
43
|
+
|
44
|
+
result = ssh.exec!('cd repo/apps; ls')
|
45
|
+
puts result
|
46
|
+
|
47
|
+
# upload a file or directory to the remote host
|
48
|
+
sftp.upload!("/Users/sychram/test.data", "/home/ubuntu/repo/test.data")
|
49
|
+
|
50
|
+
result = ssh.exec!('ls')
|
51
|
+
|
52
|
+
puts result
|
53
|
+
|
54
|
+
remote = '/home/ubuntu/repo/test.data'
|
55
|
+
local = '/Users/sychram/test.data.from-remote'
|
56
|
+
|
57
|
+
# download a file or directory from the remote host
|
58
|
+
sftp.download!(remote, local)
|
59
|
+
|
60
|
+
# grab data off the remote host directly to a buffer
|
61
|
+
data = sftp.download!(remote)
|
62
|
+
|
63
|
+
# open and write to a pseudo-IO for a remote file
|
64
|
+
sftp.file.open(remote, "w") do |f|
|
65
|
+
f.puts "Hello, world!\n"
|
66
|
+
end
|
67
|
+
|
68
|
+
# open and read from a pseudo-IO for a remote file
|
69
|
+
sftp.file.open(remote, "r") do |f|
|
70
|
+
puts f.gets
|
71
|
+
end
|
72
|
+
|
73
|
+
directory = '/home/ubuntu/ruby-test'
|
74
|
+
|
75
|
+
# safely make a directory
|
76
|
+
begin
|
77
|
+
sftp.mkdir directory
|
78
|
+
rescue Net::SFTP::StatusException => e
|
79
|
+
# verify if this returns 11. Your server may return
|
80
|
+
# something different like 4.
|
81
|
+
if e.code == 11
|
82
|
+
puts "directory already exists. Carry on..."
|
83
|
+
sftp.rmdir!("/home/ubuntu/ruby-test")
|
84
|
+
else
|
85
|
+
raise
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
# list the entries in a directory
|
91
|
+
sftp.dir.foreach(".") do |entry|
|
92
|
+
puts entry.longname
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
#upload = new AppRepo:Upload('repo.teacloud.net', 'ubuntu', '/Users/sychram/.ssh/REPOKey.pem')
|
100
|
+
|
101
|
+
end
|
102
|
+
end
|
data/lib/test.data
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
testdata
|
@@ -0,0 +1 @@
|
|
1
|
+
testdata
|
data/lib/test.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'net/ssh'
|
5
|
+
require 'net/sftp'
|
6
|
+
|
7
|
+
#
|
8
|
+
# These want to be an input parameters:
|
9
|
+
#
|
10
|
+
|
11
|
+
host = 'repo.teacloud.net'
|
12
|
+
user = 'ubuntu'
|
13
|
+
keypath = '/Users/sychram/.ssh/REPOKey.pem'
|
14
|
+
|
15
|
+
File.open(keypath, "r") do |file|
|
16
|
+
|
17
|
+
rsa_key = [ file.read ]
|
18
|
+
|
19
|
+
Net::SSH.start( host, user, :key_data => rsa_key, :keys_only => true) do |ssh|
|
20
|
+
|
21
|
+
ssh.sftp.connect do |sftp|
|
22
|
+
|
23
|
+
# upload a file or directory to the remote host
|
24
|
+
sftp.upload!("/Users/sychram/test.data", "/home/ubuntu/repo/test.data")
|
25
|
+
|
26
|
+
result = ssh.exec!('ls')
|
27
|
+
|
28
|
+
puts result
|
29
|
+
|
30
|
+
remote = '/home/ubuntu/repo/test.data'
|
31
|
+
local = '/Users/sychram/test.data.from-remote'
|
32
|
+
|
33
|
+
# download a file or directory from the remote host
|
34
|
+
sftp.download!(remote, local)
|
35
|
+
|
36
|
+
# grab data off the remote host directly to a buffer
|
37
|
+
data = sftp.download!(remote)
|
38
|
+
|
39
|
+
# open and write to a pseudo-IO for a remote file
|
40
|
+
sftp.file.open(remote, "w") do |f|
|
41
|
+
f.puts "Hello, world!\n"
|
42
|
+
end
|
43
|
+
|
44
|
+
# open and read from a pseudo-IO for a remote file
|
45
|
+
sftp.file.open(remote, "r") do |f|
|
46
|
+
puts f.gets
|
47
|
+
end
|
48
|
+
|
49
|
+
directory = '/home/ubuntu/ruby-test'
|
50
|
+
|
51
|
+
# safely make a directory
|
52
|
+
begin
|
53
|
+
sftp.mkdir directory
|
54
|
+
rescue Net::SFTP::StatusException => e
|
55
|
+
# verify if this returns 11. Your server may return
|
56
|
+
# something different like 4.
|
57
|
+
if e.code == 11
|
58
|
+
puts "directory already exists. Carry on..."
|
59
|
+
sftp.rmdir!("/home/ubuntu/ruby-test")
|
60
|
+
else
|
61
|
+
raise
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# list the entries in a directory
|
66
|
+
sftp.dir.foreach(".") do |entry|
|
67
|
+
puts entry.longname
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
metadata
ADDED
@@ -0,0 +1,326 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: apprepo
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matej Sychra
|
8
|
+
- Felix Krause
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2016-05-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: fastlane_core
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 0.43.1
|
21
|
+
- - "<"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.0.0
|
24
|
+
type: :runtime
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 0.43.1
|
31
|
+
- - "<"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.0.0
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: credentials_manager
|
36
|
+
requirement: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.16.0
|
41
|
+
- - "<"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.0.0
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 0.16.0
|
51
|
+
- - "<"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.0.0
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: net-ssh
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
type: :runtime
|
62
|
+
prerelease: false
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: net-sftp
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
type: :runtime
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: fastimage
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '1.6'
|
89
|
+
type: :runtime
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '1.6'
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: plist
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '3.1'
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 3.1.0
|
106
|
+
type: :runtime
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '3.1'
|
113
|
+
- - ">="
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: 3.1.0
|
116
|
+
- !ruby/object:Gem::Dependency
|
117
|
+
name: bundler
|
118
|
+
requirement: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - "~>"
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
type: :development
|
124
|
+
prerelease: false
|
125
|
+
version_requirements: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
- !ruby/object:Gem::Dependency
|
131
|
+
name: rake
|
132
|
+
requirement: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - "~>"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
type: :development
|
138
|
+
prerelease: false
|
139
|
+
version_requirements: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - "~>"
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
- !ruby/object:Gem::Dependency
|
145
|
+
name: rspec
|
146
|
+
requirement: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - "~>"
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '3.1'
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: 3.1.0
|
154
|
+
type: :development
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - "~>"
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '3.1'
|
161
|
+
- - ">="
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: 3.1.0
|
164
|
+
- !ruby/object:Gem::Dependency
|
165
|
+
name: rspec_junit_formatter
|
166
|
+
requirement: !ruby/object:Gem::Requirement
|
167
|
+
requirements:
|
168
|
+
- - "~>"
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: 0.2.3
|
171
|
+
type: :development
|
172
|
+
prerelease: false
|
173
|
+
version_requirements: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - "~>"
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: 0.2.3
|
178
|
+
- !ruby/object:Gem::Dependency
|
179
|
+
name: pry
|
180
|
+
requirement: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - "~>"
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
type: :development
|
186
|
+
prerelease: false
|
187
|
+
version_requirements: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - "~>"
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
192
|
+
- !ruby/object:Gem::Dependency
|
193
|
+
name: yard
|
194
|
+
requirement: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - "~>"
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: 0.8.7.4
|
199
|
+
type: :development
|
200
|
+
prerelease: false
|
201
|
+
version_requirements: !ruby/object:Gem::Requirement
|
202
|
+
requirements:
|
203
|
+
- - "~>"
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: 0.8.7.4
|
206
|
+
- !ruby/object:Gem::Dependency
|
207
|
+
name: webmock
|
208
|
+
requirement: !ruby/object:Gem::Requirement
|
209
|
+
requirements:
|
210
|
+
- - "~>"
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: '1.19'
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: 1.19.0
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '1.19'
|
223
|
+
- - ">="
|
224
|
+
- !ruby/object:Gem::Version
|
225
|
+
version: 1.19.0
|
226
|
+
- !ruby/object:Gem::Dependency
|
227
|
+
name: coveralls
|
228
|
+
requirement: !ruby/object:Gem::Requirement
|
229
|
+
requirements:
|
230
|
+
- - "~>"
|
231
|
+
- !ruby/object:Gem::Version
|
232
|
+
version: '0'
|
233
|
+
type: :development
|
234
|
+
prerelease: false
|
235
|
+
version_requirements: !ruby/object:Gem::Requirement
|
236
|
+
requirements:
|
237
|
+
- - "~>"
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
version: '0'
|
240
|
+
- !ruby/object:Gem::Dependency
|
241
|
+
name: fastlane
|
242
|
+
requirement: !ruby/object:Gem::Requirement
|
243
|
+
requirements:
|
244
|
+
- - "~>"
|
245
|
+
- !ruby/object:Gem::Version
|
246
|
+
version: '0'
|
247
|
+
type: :development
|
248
|
+
prerelease: false
|
249
|
+
version_requirements: !ruby/object:Gem::Requirement
|
250
|
+
requirements:
|
251
|
+
- - "~>"
|
252
|
+
- !ruby/object:Gem::Version
|
253
|
+
version: '0'
|
254
|
+
- !ruby/object:Gem::Dependency
|
255
|
+
name: rubocop
|
256
|
+
requirement: !ruby/object:Gem::Requirement
|
257
|
+
requirements:
|
258
|
+
- - "~>"
|
259
|
+
- !ruby/object:Gem::Version
|
260
|
+
version: 0.38.0
|
261
|
+
type: :development
|
262
|
+
prerelease: false
|
263
|
+
version_requirements: !ruby/object:Gem::Requirement
|
264
|
+
requirements:
|
265
|
+
- - "~>"
|
266
|
+
- !ruby/object:Gem::Version
|
267
|
+
version: 0.38.0
|
268
|
+
- !ruby/object:Gem::Dependency
|
269
|
+
name: fakefs
|
270
|
+
requirement: !ruby/object:Gem::Requirement
|
271
|
+
requirements:
|
272
|
+
- - "~>"
|
273
|
+
- !ruby/object:Gem::Version
|
274
|
+
version: '0'
|
275
|
+
type: :development
|
276
|
+
prerelease: false
|
277
|
+
version_requirements: !ruby/object:Gem::Requirement
|
278
|
+
requirements:
|
279
|
+
- - "~>"
|
280
|
+
- !ruby/object:Gem::Version
|
281
|
+
version: '0'
|
282
|
+
description: Upload icon, metadata and your app to the T-Mobile Enterprise AppRepo
|
283
|
+
and notify users on updaet using a single command
|
284
|
+
email:
|
285
|
+
- suculent@me.com
|
286
|
+
executables: []
|
287
|
+
extensions: []
|
288
|
+
extra_rdoc_files: []
|
289
|
+
files:
|
290
|
+
- LICENSE
|
291
|
+
- README.md
|
292
|
+
- lib/apprepo.rb
|
293
|
+
- lib/apprepo/manifest.rb
|
294
|
+
- lib/apprepo/upload_descriptor.rb
|
295
|
+
- lib/apprepo/uploader.rb
|
296
|
+
- lib/apprepo/version.rb
|
297
|
+
- lib/test.data
|
298
|
+
- lib/test.data.from-remote
|
299
|
+
- lib/test.rb
|
300
|
+
homepage: https://github.com/suculent/apprepo
|
301
|
+
licenses:
|
302
|
+
- MIT
|
303
|
+
metadata: {}
|
304
|
+
post_install_message:
|
305
|
+
rdoc_options: []
|
306
|
+
require_paths:
|
307
|
+
- lib
|
308
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
309
|
+
requirements:
|
310
|
+
- - ">="
|
311
|
+
- !ruby/object:Gem::Version
|
312
|
+
version: 2.0.0
|
313
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
314
|
+
requirements:
|
315
|
+
- - ">="
|
316
|
+
- !ruby/object:Gem::Version
|
317
|
+
version: '0'
|
318
|
+
requirements: []
|
319
|
+
rubyforge_project:
|
320
|
+
rubygems_version: 2.6.1
|
321
|
+
signing_key:
|
322
|
+
specification_version: 4
|
323
|
+
summary: Upload icon, metadata and your app to the T-Mobile Enterprise AppRepo and
|
324
|
+
notify users on updaet using a single command
|
325
|
+
test_files: []
|
326
|
+
has_rdoc:
|