apprepo 0.0.6 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -9
- data/lib/apprepo.rb +12 -25
- data/lib/apprepo/analyser.rb +26 -0
- data/lib/apprepo/commands_generator.rb +50 -39
- data/lib/apprepo/detect_values.rb +8 -20
- data/lib/apprepo/loader.rb +4 -2
- data/lib/apprepo/manifest.rb +9 -2
- data/lib/apprepo/options.rb +34 -14
- data/lib/apprepo/runner.rb +20 -19
- data/lib/apprepo/setup.rb +8 -9
- data/lib/apprepo/uploader.rb +208 -124
- data/lib/apprepo/version.rb +3 -3
- metadata +5 -28
- data/lib/apprepo/download_metadata.rb +0 -44
- data/lib/apprepo/upload_assets.rb +0 -22
- data/lib/apprepo/upload_descriptor.rb +0 -12
- data/lib/apprepo/upload_metadata.rb +0 -192
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4df104a9102694794cd681b6fcc02166d26e8c1c
|
4
|
+
data.tar.gz: 47bc5b2d1ff9b4cfa45f47d7eeb861a4e37d2f7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69193ee567b1ca06c2aedcc3aeadfe5308aa14fc3c8cb929a3ad3fc484baa1470eb512ea2d22bbe7e6e17636d07e7f6536eb36a133469290e7c2d731bf53dd63
|
7
|
+
data.tar.gz: 8d5d2927717947b29245057c67cd73c1348bea3d099b9ee323bf5230d01af307edeb47415f518678258221125861692908e91b85c5a6dc84a473144295690ba3
|
data/README.md
CHANGED
@@ -32,16 +32,18 @@
|
|
32
32
|
apprepo
|
33
33
|
============
|
34
34
|
|
35
|
-
**This project is
|
35
|
+
**This project is a preparation phase for fastlane-plugin-apprepo and will eventually deprecate.**
|
36
36
|
|
37
37
|
[![Twitter: @igraczech](https://img.shields.io/badge/contact-%40igraczech-green.svg?style=flat)](https://twitter.com/igraczech)
|
38
38
|
[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/fastlane/blob/master/deliver/LICENSE)
|
39
39
|
[![Gem](https://img.shields.io/gem/v/apprepo.svg?style=flat)](http://rubygems.org/gems/apprepo)
|
40
40
|
[![Build Status](https://img.shields.io/circleci/project/suculent/apprepo.svg?style=flat)](https://circleci.com/gh/suculent/apprepo)
|
41
|
+
[![Coverage Status](https://coveralls.io/repos/github/suculent/apprepo/badge.svg?branch=master)](https://coveralls.io/github/suculent/apprepo?branch=master)
|
42
|
+
![Fastlane](https://img.shields.io/badge/_status_-_waiting--for--fastlane--plugins--manager_-yellow.svg)
|
41
43
|
|
42
|
-
###### Deliver IPAs, icons &
|
44
|
+
###### Deliver IPAs, icons & manifest.json to AppRepo (or any other SFTP server) using a single command.
|
43
45
|
|
44
|
-
`apprepo` can upload ipa files, app icons and
|
46
|
+
`apprepo` can upload ipa files, app icons and manifest.json to your Enterprise iOS distribution site from the command line.
|
45
47
|
|
46
48
|
You can vote for Android support as well, Michal.
|
47
49
|
|
@@ -64,7 +66,7 @@ Get in contact with the developer on Twitter: [@igraczech](https://twitter.com/i
|
|
64
66
|
# Future Features
|
65
67
|
- Submit to AppRepo completely automatically
|
66
68
|
- Upload a new ipa file to AppRepo without Xcode from any Mac
|
67
|
-
- Maintain your app
|
69
|
+
- Maintain your app manifest locally and push changes to AppRepo
|
68
70
|
- Easily implement a real Continuous Deployment process using [fastlane](https://fastlane.tools)
|
69
71
|
- Store the configuration in git to easily deploy from **any** Mac, including your Continuous Integration server
|
70
72
|
|
@@ -85,9 +87,9 @@ Make sure, you have the latest version of the Xcode command line tools installed
|
|
85
87
|
|
86
88
|
# Quick Start
|
87
89
|
|
88
|
-
The guide will create all the necessary files for you, [in future also] using the existing app
|
90
|
+
The guide will create all the necessary files for you, [in future also] using the existing app manifest.json from AppRepo (if any). AppRepo on-premise service has nothing to do with iTunesConnect or AppStore Distribution. Its purpose is solely for Enterprise In-House distribution and can leverage your Apple Developer Account credentials to fetch currently valid applications and their bundle identifiers.
|
89
91
|
|
90
|
-
Delivery module for your custom SFTP server (e.g. AppRepo, where it specifically supports custom
|
92
|
+
Delivery module for your custom SFTP server (e.g. AppRepo, where it specifically supports custom manifest.json format instead of default plist manifest [future todo]).
|
91
93
|
|
92
94
|
- ```cd [your_project_folder]```
|
93
95
|
- ```apprepo init```
|
@@ -95,7 +97,7 @@ Delivery module for your custom SFTP server (e.g. AppRepo, where it specifically
|
|
95
97
|
- Enter your `APPREPO` APPCODE for this application in AppRepo, you can omit this for own SFTP server (or expect it to be a directory at your SFTP home path as we don't want to limit your creativity).
|
96
98
|
- Enjoy a good drink, while the computer does all the work for you
|
97
99
|
|
98
|
-
From now on, you can run `apprepo` to deploy a new update, or just upload new app
|
100
|
+
From now on, you can run `apprepo` to deploy a new update, or just upload new app manifest.json and icons.
|
99
101
|
|
100
102
|
|
101
103
|
# Usage
|
@@ -116,9 +118,9 @@ From now on, you can run `apprepo` to deploy a new update, or just upload new ap
|
|
116
118
|
- [`frameit`](https://github.com/fastlane/fastlane/tree/master/frameit): Quickly put your screenshots into the right device frames
|
117
119
|
- [`pem`](https://github.com/fastlane/fastlane/tree/master/pem): Automatically generate and renew your push notification profiles
|
118
120
|
- [`sigh`](https://github.com/fastlane/fastlane/tree/master/sigh): Because you would rather spend your time building stuff than fighting provisioning
|
119
|
-
- [`produce`](https://github.com/fastlane/fastlane/tree/master/produce): Create new iOS apps on
|
121
|
+
- [`produce`](https://github.com/fastlane/fastlane/tree/master/produce): Create new iOS apps on AppRepo and Dev Portal using the command line
|
120
122
|
- [`cert`](https://github.com/fastlane/fastlane/tree/master/cert): Automatically create and maintain iOS code signing certificates
|
121
|
-
- [`spaceship`](https://github.com/fastlane/fastlane/tree/master/spaceship): Ruby library to access the Apple Dev Center and
|
123
|
+
- [`spaceship`](https://github.com/fastlane/fastlane/tree/master/spaceship): Ruby library to access the Apple Dev Center and AppRepo
|
122
124
|
- [`pilot`](https://github.com/fastlane/fastlane/tree/master/pilot): The best way to manage your TestFlight testers and builds from your terminal
|
123
125
|
- [`boarding`](https://github.com/fastlane/boarding): The easiest way to invite your TestFlight beta testers
|
124
126
|
- [`gym`](https://github.com/fastlane/fastlane/tree/master/gym): Building your iOS apps has never been easier
|
data/lib/apprepo.rb
CHANGED
@@ -4,49 +4,36 @@
|
|
4
4
|
|
5
5
|
require 'json'
|
6
6
|
|
7
|
-
require_relative 'apprepo/
|
8
|
-
require_relative 'apprepo/options'
|
9
|
-
|
10
|
-
require_relative 'apprepo/uploader'
|
11
|
-
require_relative 'apprepo/upload_metadata'
|
12
|
-
require_relative 'apprepo/upload_assets'
|
7
|
+
require_relative 'apprepo/analyser'
|
13
8
|
require_relative 'apprepo/commands_generator'
|
14
|
-
|
15
9
|
require_relative 'apprepo/detect_values'
|
10
|
+
require_relative 'apprepo/loader'
|
11
|
+
require_relative 'apprepo/manifest'
|
12
|
+
require_relative 'apprepo/options'
|
16
13
|
require_relative 'apprepo/runner'
|
17
14
|
require_relative 'apprepo/setup'
|
18
|
-
require_relative 'apprepo/
|
19
|
-
|
20
|
-
require_relative 'apprepo/upload_descriptor' # will deprecate or replace :app info
|
15
|
+
require_relative 'apprepo/uploader'
|
16
|
+
require_relative 'apprepo/version'
|
21
17
|
|
22
18
|
require 'fastlane_core'
|
23
19
|
|
20
|
+
# Root class of the AppRepo SFTP Uploader
|
24
21
|
module AppRepo
|
25
22
|
class << self
|
26
23
|
def initialize
|
27
24
|
UI.message('[AppRepo] Initializing...')
|
28
25
|
end
|
26
|
+
|
27
|
+
def new
|
28
|
+
UI.message('[AppRepo] New...')
|
29
|
+
end
|
29
30
|
end
|
30
31
|
|
31
32
|
Encoding.default_external = Encoding::UTF_8
|
32
33
|
Encoding.default_internal = Encoding::UTF_8
|
33
34
|
|
34
|
-
|
35
|
-
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|
35
|
+
Helper = FastlaneCore::Helper
|
36
36
|
UI = FastlaneCore::UI
|
37
37
|
|
38
|
-
appcode = 'ruby-test'
|
39
|
-
|
40
|
-
# Setup descriptor (appcode, ipa, metadata - from repofile)!
|
41
|
-
UI.message('[AppRepoTest] UploadDescriptor.new')
|
42
|
-
uploadDescriptor = UploadDescriptor.new(appcode) # not used yet
|
43
|
-
uploadDescriptor.appcode = appcode
|
44
|
-
|
45
|
-
# Test Uploader (OK)
|
46
|
-
# UI.message('[AppRepoTest] Uploader.new')
|
47
|
-
# upload = Uploader.new('repo.teacloud.net', 'circle', File.dirname(__FILE__) + '/../assets/circle.key', appcode)
|
48
|
-
# upload.run
|
49
|
-
|
50
|
-
UI.message('[AppRepoTest] AppRepo::CommandsGenerator.new.run')
|
51
38
|
CommandsGenerator.new.run
|
52
39
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'uploader'
|
2
|
+
require 'fastlane_core'
|
3
|
+
|
4
|
+
module AppRepo
|
5
|
+
# Should provide metadata for current appcode
|
6
|
+
class Analyser
|
7
|
+
attr_accessor :options
|
8
|
+
|
9
|
+
def initialize(options)
|
10
|
+
self.options = options
|
11
|
+
end
|
12
|
+
|
13
|
+
# Fetches remote app version from metadata
|
14
|
+
def fetch_app_version(options)
|
15
|
+
metadata = AppRepo::Uploader.new(options).download_metadata
|
16
|
+
FastlaneCore::UI.user_error!('TODO: Parse version out from metadata')
|
17
|
+
'0.0'
|
18
|
+
end
|
19
|
+
|
20
|
+
# only for testing, should be empty
|
21
|
+
def run
|
22
|
+
FastlaneCore::UI.message('AppRepo:Analyser.run for test...')
|
23
|
+
fetch_app_version(options)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -3,6 +3,7 @@ require 'commander'
|
|
3
3
|
HighLine.track_eof = false
|
4
4
|
|
5
5
|
module AppRepo
|
6
|
+
# This class is responsible for providing commands with respective actions
|
6
7
|
class CommandsGenerator
|
7
8
|
include Commander::Methods
|
8
9
|
|
@@ -10,15 +11,16 @@ module AppRepo
|
|
10
11
|
FastlaneCore::UpdateChecker.start_looking_for_update('apprepo')
|
11
12
|
new.run
|
12
13
|
ensure
|
13
|
-
FastlaneCore::UpdateChecker
|
14
|
+
checker = FastlaneCore::UpdateChecker
|
15
|
+
checker.show_update_status('apprepo', AppRepo::VERSION)
|
14
16
|
end
|
15
17
|
|
16
18
|
# rubocop:disable Metrics/AbcSize
|
17
19
|
# rubocop:disable Metrics/MethodLength
|
20
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
21
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
22
|
+
# rubocop:disable Style/GlobalVars
|
18
23
|
def run
|
19
|
-
|
20
|
-
puts "[AppRepo::CommandsGenerator] run"
|
21
|
-
|
22
24
|
program :version, AppRepo::VERSION
|
23
25
|
program :description, AppRepo::DESCRIPTION
|
24
26
|
program :help, 'Author', 'Matej Sychra <suculent@me.com>'
|
@@ -26,7 +28,8 @@ module AppRepo
|
|
26
28
|
program :help, 'GitHub', 'https://github.com/suculent/apprepo/tree/master/apprepo'
|
27
29
|
program :help_formatter, :compact
|
28
30
|
|
29
|
-
FastlaneCore::CommanderGenerator.new
|
31
|
+
generator = FastlaneCore::CommanderGenerator.new
|
32
|
+
generator.generate(AppRepo::Options.available_options)
|
30
33
|
|
31
34
|
global_option('--verbose') { $verbose = true }
|
32
35
|
|
@@ -36,16 +39,18 @@ module AppRepo
|
|
36
39
|
c.syntax = 'apprepo'
|
37
40
|
c.description = 'Upload IPA and metadata to SFTP (e.g. AppRepo)'
|
38
41
|
c.action do |_args, options|
|
39
|
-
|
42
|
+
config = FastlaneCore::Configuration
|
43
|
+
available_opts = AppRepo::Options.available_options
|
44
|
+
options = config.create(available_opts, options.__hash__)
|
40
45
|
loaded = options.load_configuration_file('Repofile')
|
41
46
|
loaded = true if options[:repo_description] || options[:ipa]
|
42
47
|
|
43
48
|
unless loaded
|
44
|
-
puts
|
45
|
-
if UI.confirm('No
|
46
|
-
require 'apprepo/setup'
|
49
|
+
puts '[AppRepo::CommandsGenerator] configuration file not loaded'
|
50
|
+
if UI.confirm('No Repofile found. Do you want to setup apprepo?')
|
51
|
+
require 'apprepo/setup'
|
47
52
|
AppRepo::Setup.new.run(options)
|
48
|
-
puts
|
53
|
+
puts '[AppRepo::CommandsGenerator] exiting.'
|
49
54
|
return 0
|
50
55
|
end
|
51
56
|
end
|
@@ -54,11 +59,37 @@ module AppRepo
|
|
54
59
|
end
|
55
60
|
end
|
56
61
|
|
57
|
-
command :
|
58
|
-
c.syntax = 'apprepo
|
59
|
-
c.description = '
|
62
|
+
command :download_manifest do |c|
|
63
|
+
c.syntax = 'apprepo download manifest'
|
64
|
+
c.description = 'Downloads existing metadata and stores it locally.
|
65
|
+
This overwrites the local files.'
|
66
|
+
|
67
|
+
c.action do |_args, options|
|
68
|
+
config = FastlaneCore::Configuration
|
69
|
+
available_opts = AppRepo::Options.available_options
|
70
|
+
options = config.create(available_opts, options.__hash__)
|
71
|
+
options.load_configuration_file('Repofile')
|
72
|
+
AppRepo::Runner.new(options) # to login...
|
73
|
+
cont = FastlaneCore::Helper.fastlane_enabled? ? './fastlane' : '.'
|
74
|
+
path = options[:manifest_path] || File.join(cont, 'metadata')
|
75
|
+
res = ENV['APPREPO_FORCE_OVERWRITE']
|
76
|
+
msg = 'Do you want to overwrite existing metadata on path '
|
77
|
+
res ||= UI.confirm(msg + '#{File.expand_path(path)}' + '?')
|
78
|
+
return 0 if res.nil?
|
79
|
+
require 'apprepo/setup'
|
80
|
+
# TODO: Fetch version from IPA or else
|
81
|
+
v = options[:app_version].latest_version
|
82
|
+
AppRepo::Setup.new.generate_metadata_files(v, path)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
command :submit do |c|
|
87
|
+
c.syntax = 'apprepo submit'
|
88
|
+
c.description = 'Submit a specific build-nr, use latest.'
|
60
89
|
c.action do |_args, options|
|
61
|
-
|
90
|
+
config = FastlaneCore::Configuration
|
91
|
+
available_opts = AppRepo::Options.available_options
|
92
|
+
options = config.create(available_opts, options.__hash__)
|
62
93
|
options.load_configuration_file('Repofile')
|
63
94
|
options[:submit_for_review] = true
|
64
95
|
options[:build_number] = 'latest' unless options[:build_number]
|
@@ -68,42 +99,22 @@ module AppRepo
|
|
68
99
|
|
69
100
|
command :init do |c|
|
70
101
|
c.syntax = 'apprepo init'
|
71
|
-
c.description = 'Create the initial `apprepo` configuration
|
102
|
+
c.description = 'Create the initial `apprepo` configuration'
|
72
103
|
c.action do |_args, options|
|
73
104
|
if File.exist?('Repofile') || File.exist?('fastlane/Repofile')
|
74
|
-
UI.important('You already got a running apprepo setup
|
105
|
+
UI.important('You already got a running apprepo setup.')
|
75
106
|
return 0
|
76
107
|
end
|
77
108
|
|
78
109
|
require 'apprepo/setup'
|
79
|
-
|
110
|
+
config = FastlaneCore::Configuration
|
111
|
+
available_opts = AppRepo::Options.available_options
|
112
|
+
options = config.create(available_opts, options.__hash__)
|
80
113
|
AppRepo::Runner.new(options) # to login...
|
81
114
|
AppRepo::Setup.new.run(options)
|
82
115
|
end
|
83
116
|
end
|
84
117
|
|
85
|
-
command :download_metadata do |c|
|
86
|
-
c.syntax = 'apprepo download_metadata'
|
87
|
-
c.description = 'Downloads existing metadata and stores it locally. This overwrites the local files.'
|
88
|
-
|
89
|
-
c.action do |_args, options|
|
90
|
-
options = FastlaneCore::Configuration.create(AppRepo::Options.available_options, options.__hash__)
|
91
|
-
options.load_configuration_file('Repofile')
|
92
|
-
AppRepo::Runner.new(options) # to login...
|
93
|
-
containing = FastlaneCore::Helper.fastlane_enabled? ? './fastlane' : '.'
|
94
|
-
path = options[:metadata_path] || File.join(containing, 'metadata')
|
95
|
-
res = ENV['APPREPO_FORCE_OVERWRITE']
|
96
|
-
res ||= UI.confirm("Do you want to overwrite existing metadata on path '#{File.expand_path(path)}'?")
|
97
|
-
if res
|
98
|
-
require 'apprepo/setup'
|
99
|
-
# TODO: Fetch version from IPA or else
|
100
|
-
v = options[:app_version].latest_version
|
101
|
-
AppRepo::Setup.new.generate_metadata_files(v, path)
|
102
|
-
else
|
103
|
-
return 0
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
118
|
# rubocop:enable Metrics/AbcSize
|
108
119
|
# rubocop:enable Metrics/MethodLength
|
109
120
|
|
@@ -1,37 +1,25 @@
|
|
1
1
|
module AppRepo
|
2
|
+
# This class is responsible for detecting values from IPA.
|
2
3
|
class DetectValues
|
3
4
|
def run!(options)
|
4
|
-
|
5
|
-
find_folders(options)
|
5
|
+
find_app_identifier(options)
|
6
6
|
find_version(options)
|
7
7
|
end
|
8
8
|
|
9
9
|
def find_app_identifier(options)
|
10
10
|
return if options[:app_identifier]
|
11
|
-
|
12
11
|
if options[:ipa]
|
13
|
-
identifier =
|
14
|
-
elsif options[:pkg]
|
15
|
-
identifier = FastlaneCore::PkgFileAnalyser.fetch_app_identifier(options[:pkg])
|
12
|
+
# identifier = AppRepo::Analyser.fetch_app_identifier(options[:ipa])
|
16
13
|
end
|
17
|
-
|
18
|
-
|
19
|
-
options[:app_identifier] ||= UI.input(
|
20
|
-
end
|
21
|
-
|
22
|
-
def find_folders(options)
|
23
|
-
containing = Helper.fastlane_enabled? ? './fastlane' : '.'
|
24
|
-
unless options[:metadata_path].nil?
|
25
|
-
puts "Containing: '" + options[:metadata_path] + "' folder for TODO RENAME example_manifest.json"
|
26
|
-
options[:metadata_path] ||= File.join(containing, '/../manifest.json')
|
27
|
-
puts "Options: '" + options[:metadata_path] + "'"
|
28
|
-
FileUtils.mkdir_p(options[:metadata_path])
|
29
|
-
end
|
14
|
+
options[:app_identifier] = identifier unless identifier.to_s.empty?
|
15
|
+
input_message = 'The Bundle Identifier of your App: '
|
16
|
+
options[:app_identifier] ||= UI.input(input_message)
|
30
17
|
end
|
31
18
|
|
32
19
|
def find_version(options)
|
33
20
|
unless options[:ipa].nil?
|
34
|
-
|
21
|
+
opt = AppRepo::Analyser.new(options)
|
22
|
+
options[:app_version] ||= opt.fetch_app_version(options[:ipa])
|
35
23
|
end
|
36
24
|
end
|
37
25
|
end
|
data/lib/apprepo/loader.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'fastlane_core/languages'
|
2
2
|
|
3
|
-
module
|
3
|
+
module AppRepo
|
4
|
+
# Responsible for loading language folders
|
4
5
|
module Loader
|
5
6
|
def self.language_folders(root)
|
6
7
|
Dir.glob(File.join(root, '*')).select do |path|
|
7
|
-
|
8
|
+
all = ALL_LANGUAGES.include?(File.basename(path).downcase)
|
9
|
+
File.directory?(path) && all
|
8
10
|
end.sort
|
9
11
|
end
|
10
12
|
end
|
data/lib/apprepo/manifest.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
1
3
|
module AppRepo
|
4
|
+
# Responsible for parsing and providing manifest.json
|
2
5
|
class Manifest
|
3
6
|
#
|
4
7
|
# Translated internal key names from Fastlane to AppRepo
|
@@ -14,11 +17,15 @@ module AppRepo
|
|
14
17
|
|
15
18
|
def initialize(appcode)
|
16
19
|
self.appcode = appcode
|
17
|
-
UI.message('Initializing
|
20
|
+
UI.message('Initializing requires APPCODE. ' + self.appcode)
|
21
|
+
end
|
22
|
+
|
23
|
+
def parse_json(json)
|
24
|
+
# TODO: load values from JSON
|
18
25
|
end
|
19
26
|
|
20
27
|
# Provide JSON serialized data
|
21
|
-
def
|
28
|
+
def manifest_as_json
|
22
29
|
structure = {
|
23
30
|
appcode: appcode,
|
24
31
|
filename: filename,
|
data/lib/apprepo/options.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'fastlane_core'
|
2
2
|
|
3
3
|
module AppRepo
|
4
|
+
# Provides available options for the commands generator
|
4
5
|
class Options
|
6
|
+
# rubocop:disable Metrics/AbcSize
|
5
7
|
def self.available_options
|
6
8
|
[
|
7
9
|
FastlaneCore::ConfigItem.new(key: :ipa,
|
@@ -13,10 +15,6 @@ module AppRepo
|
|
13
15
|
verify_block: proc do |value|
|
14
16
|
UI.user_error!("Could not find ipa file at path '#{value}'") unless File.exist?(value)
|
15
17
|
UI.user_error!("'#{value}' doesn't seem to be an ipa file") unless value.end_with?('.ipa')
|
16
|
-
end,
|
17
|
-
conflicting_options: [:pkg],
|
18
|
-
conflict_block: proc do |value|
|
19
|
-
UI.user_error!("You can't use 'ipa' and '#{value.key}' options in one run.")
|
20
18
|
end),
|
21
19
|
FastlaneCore::ConfigItem.new(key: :app_identifier,
|
22
20
|
short_option: '-b',
|
@@ -39,33 +37,55 @@ module AppRepo
|
|
39
37
|
optional: false,
|
40
38
|
env_name: 'APPREPO_USER',
|
41
39
|
description: 'USER of your Apprepo server'),
|
40
|
+
FastlaneCore::ConfigItem.new(key: :repo_password,
|
41
|
+
short_option: '-p',
|
42
|
+
optional: true,
|
43
|
+
env_name: 'APPREPO_PASSWORD',
|
44
|
+
description: 'PASSWORD for your Apprepo server (not for production)',
|
45
|
+
conflicting_options: [:repo_key],
|
46
|
+
conflict_block: proc do |value|
|
47
|
+
UI.user_error!("You can't use 'password' and '#{value.key}' options in one run.")
|
48
|
+
end),
|
42
49
|
FastlaneCore::ConfigItem.new(key: :repo_key,
|
43
50
|
short_option: '-k',
|
44
51
|
optional: false,
|
45
52
|
env_name: 'APPREPO_KEY',
|
46
|
-
description: 'RSA key for your Apprepo server'
|
53
|
+
description: 'RSA key for your Apprepo server',
|
54
|
+
conflicting_options: [:repo_password],
|
55
|
+
conflict_block: proc do |value|
|
56
|
+
UI.user_error!("You can't use 'repo_key' and '#{value.key}' options in one run.")
|
57
|
+
end),
|
47
58
|
FastlaneCore::ConfigItem.new(key: :repo_description,
|
48
59
|
short_option: '-d',
|
49
60
|
optional: true,
|
50
|
-
|
51
|
-
|
52
|
-
FastlaneCore::ConfigItem.new(key: :
|
61
|
+
description: 'Long detailed description for your Apprepo server',
|
62
|
+
default_value: ''),
|
63
|
+
FastlaneCore::ConfigItem.new(key: :repo_summary,
|
64
|
+
short_option: '-s',
|
65
|
+
optional: true,
|
66
|
+
description: 'Short description for your Apprepo server',
|
67
|
+
default_value: ''),
|
68
|
+
FastlaneCore::ConfigItem.new(key: :manifest_path,
|
53
69
|
short_option: '-m',
|
54
70
|
description: 'Path to the folder containing the metadata files',
|
55
71
|
optional: true),
|
56
|
-
FastlaneCore::ConfigItem.new(key: :
|
72
|
+
FastlaneCore::ConfigItem.new(key: :repo_title,
|
57
73
|
short_option: '-a',
|
58
|
-
description: '
|
59
|
-
optional:
|
74
|
+
description: 'Title of the app',
|
75
|
+
optional: false),
|
76
|
+
FastlaneCore::ConfigItem.new(key: :appcode,
|
77
|
+
short_option: '-o',
|
78
|
+
description: 'Name of the app on AppRepo',
|
79
|
+
optional: false),
|
60
80
|
FastlaneCore::ConfigItem.new(key: :skip_binary_upload,
|
61
|
-
description: 'Skip uploading an ipa or
|
81
|
+
description: 'Skip uploading an ipa or to AppRepo',
|
62
82
|
is_string: false,
|
63
83
|
default_value: false),
|
64
84
|
FastlaneCore::ConfigItem.new(key: :app_version,
|
65
85
|
short_option: '-z',
|
66
86
|
description: 'The version that should be edited or created',
|
67
87
|
optional: true),
|
68
|
-
FastlaneCore::ConfigItem.new(key: :
|
88
|
+
FastlaneCore::ConfigItem.new(key: :skip_manifest,
|
69
89
|
description: "Don't upload the metadata (e.g. title, description), this will still upload screenshots",
|
70
90
|
is_string: false,
|
71
91
|
default_value: false),
|
@@ -77,7 +97,7 @@ module AppRepo
|
|
77
97
|
short_option: '-n',
|
78
98
|
description: 'If set the given build number (already uploaded to iTC) will be used instead of the current built one',
|
79
99
|
optional: true,
|
80
|
-
conflicting_options: [:ipa
|
100
|
+
conflicting_options: [:ipa],
|
81
101
|
conflict_block: proc do |value|
|
82
102
|
UI.user_error!("You can't use 'build_number' and '#{value.key}' options in one run.")
|
83
103
|
end),
|