build_47 0.1.7 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- data/bin/build_47 +35 -25
- data/lib/build_47.rb +41 -17
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MTk2ZmViMjJkMTkwZTU5ZDA0YWIwYjA2ZThkZjZkOGNiYzA5YzNlZg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MGQ3MGI2ZTRkMDY5N2YxNDA2ODI1YzljNDc4ZjdhODk1NjBmOWYzZA==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YjBiMjNiODk0NTM3Y2JlMGVkMWU5OTJjMTQ3YzM1YTNkYTZiOWRkM2NhZGRk
|
10
|
+
ZjM3MGJhMTcwNWM4YzAzYjNiNzdkM2MyZTNjZmY1NTczNmUyNWZjNGQwNjdk
|
11
|
+
MTA3MWI2NDVlMjc0ZjMzNWM2ZWZkODdhMWE3ZGZlOWIyMzMwNjg=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NjdmYzlmZTM0ZDI4MTZjZTI1NWYxYzI0ZGY5YmQ2Y2UyZDMzYmVjZmI3M2I4
|
14
|
+
ZDdhMzlmMTRhODNjYjQ3MzBkNDU1NmMzZTBmODg3ZGEzODE0NjRhYjFjMmE1
|
15
|
+
MmQ2ODU2NTQ1M2RjOGE3NjVhYjM3ZWY0OTNkODBkZTk3MWRmNmU=
|
data/bin/build_47
CHANGED
@@ -1,43 +1,53 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'optparse'
|
4
|
-
require 'build_47'
|
4
|
+
require './lib/build_47'
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
options = { environment: 'Production',
|
7
|
+
release_notes: '',
|
8
|
+
make_active: false,
|
9
|
+
reuse_version_number: false,
|
10
|
+
reset_bundle_identifier: false,
|
11
|
+
notify_users_on_activation: true }
|
12
|
+
OptionParser.new do |opts|
|
13
|
+
opts.on('-t', '--token TOKEN', 'Require processor class name') do |t|
|
10
14
|
options[:token] = t
|
11
15
|
end
|
12
|
-
opts.on(
|
16
|
+
opts.on('-a', '--app_id id', "App's ID") do |t|
|
13
17
|
options[:app_id] = t
|
14
18
|
end
|
15
|
-
opts.on(
|
19
|
+
opts.on('-e', '--environment ENVIRONMENT', 'Select environment -- Test or Production') do |t|
|
16
20
|
options[:environment] = t
|
17
21
|
end
|
18
|
-
opts.on(
|
19
|
-
|
22
|
+
opts.on('-p', '--platform PLATFORM', 'Deprecated: platform, determined by file extension') do
|
23
|
+
puts '-p, --platform option is deprecated, the platform will be determined by file extension'
|
20
24
|
end
|
21
|
-
opts.on(
|
25
|
+
opts.on('-f', '--file FULL PATH', 'full path to file for uploading') do |t|
|
22
26
|
options[:path] = t
|
23
27
|
end
|
24
|
-
opts.on(
|
25
|
-
options[:
|
28
|
+
opts.on('-r', '--release_notes RELEASE NOTES', 'release notes -- not required') do |t|
|
29
|
+
options[:release_notes] = t
|
30
|
+
end
|
31
|
+
opts.on('-m', '--make_active', 'make the build active after processing -- not required') do
|
32
|
+
options[:make_active] = true
|
33
|
+
end
|
34
|
+
opts.on('-i', '--reset_bundle_identifier', 'reset the bundle identifier if changed -- not required') do
|
35
|
+
options[:reset_bundle_identifier] = true
|
36
|
+
end
|
37
|
+
opts.on('-u', '--reuse_version', 'reuse the version number if it already exists -- not required') do
|
38
|
+
options[:reuse_version_number] = true
|
39
|
+
end
|
40
|
+
opts.on('-n', '--notify_users true|false', 'notify users when the build is activated -- not required') do |t|
|
41
|
+
options[:notify_users_on_activation] = %w[true t yes y 1].include?(t.downcase)
|
26
42
|
end
|
27
43
|
end.parse!
|
28
44
|
|
29
|
-
options[:
|
30
|
-
options[:
|
31
|
-
options[:
|
32
|
-
|
33
|
-
puts "you must provide a path to a particular build file" if options[:path].nil?
|
34
|
-
puts "you must provide a token (i.e. -t <token>). You can find this for your account in the App47 dashbard)" if options[:token].nil?
|
35
|
-
puts "you must provide an App Id (i.e. -a <app_id>). You can find this for your account in the App47 dashbard)" if options[:app_id].nil?
|
36
|
-
|
37
|
-
if( !options[:path].nil? && !options[:token].nil? && !options[:app_id].nil? )
|
38
|
-
build = Build47.new(options[:token])
|
39
|
-
build.push(options[:app_id], options[:platform], options[:environment], options[:path], options[:notes])
|
40
|
-
else
|
45
|
+
if options[:path].nil? || options[:token].nil? || options[:app_id].nil?
|
46
|
+
puts 'you must provide a path to a particular build file' if options[:path].nil?
|
47
|
+
puts 'you must provide a token (i.e. -t <token>). You can find this for your account in the App47 dashboard)' if options[:token].nil?
|
48
|
+
puts 'you must provide an App Id (i.e. -a <app_id>). You can find this for your account in the App47 dashboard)' if options[:app_id].nil?
|
41
49
|
puts "i.e build_47 -t 'some token' -a some app_id -f path_to_file"
|
42
|
-
puts
|
50
|
+
puts 'default arguments are -e Production -p iOS -r notes so if you want to push to Test or declare this as an Android build, use those flags.'
|
51
|
+
else
|
52
|
+
Build47.api_v1_upload(options)
|
43
53
|
end
|
data/lib/build_47.rb
CHANGED
@@ -1,23 +1,47 @@
|
|
1
1
|
require 'rest_client'
|
2
2
|
|
3
|
+
#
|
4
|
+
# Do the work of uploading to to the App47 server using API V1
|
5
|
+
#
|
3
6
|
class Build47
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
+
|
8
|
+
#
|
9
|
+
# Perform the upload to the server
|
10
|
+
#
|
11
|
+
def self.api_v1_upload(options)
|
12
|
+
app_id = options.delete(:app_id)
|
13
|
+
token = options.delete(:token)
|
14
|
+
load_file(options)
|
15
|
+
|
16
|
+
RestClient::Request.execute(method: :post,
|
17
|
+
url: "https://cirrus.app47.com/api/apps/#{app_id}/builds",
|
18
|
+
payload: {
|
19
|
+
multipart: true,
|
20
|
+
build: options
|
21
|
+
},
|
22
|
+
headers: { accept: 'application/json', 'X-Token': token },
|
23
|
+
raw_response: true) do |response|
|
24
|
+
puts "response code: #{response.code}"
|
25
|
+
end
|
7
26
|
end
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
27
|
+
|
28
|
+
#
|
29
|
+
# Load file for processing, making sure it exists
|
30
|
+
#
|
31
|
+
def self.load_file(options)
|
32
|
+
file_path = options.delete(:path)
|
33
|
+
raise "File not found: #{file_path}" unless File.exist?(file_path)
|
34
|
+
|
35
|
+
options[:build_upload] = File.new(file_path, 'rb')
|
36
|
+
extension = file_path.split('.').last
|
37
|
+
options[:platform] = case extension
|
38
|
+
when 'ipa'
|
39
|
+
'iOS'
|
40
|
+
when 'apk'
|
41
|
+
'Android'
|
42
|
+
else
|
43
|
+
'Windows'
|
44
|
+
end
|
45
|
+
options
|
22
46
|
end
|
23
47
|
end
|
metadata
CHANGED
@@ -1,30 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: build_47
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Chris Schroeder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ! '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.6.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ! '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.6.0
|
27
|
-
description: A simple
|
27
|
+
description: A simple utility for pushing builds to App47
|
28
28
|
email: support@app47.com
|
29
29
|
executables:
|
30
30
|
- build_47
|
@@ -42,19 +42,19 @@ require_paths:
|
|
42
42
|
- lib
|
43
43
|
required_ruby_version: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
49
|
requirements:
|
50
|
-
- -
|
50
|
+
- - ! '>='
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '0'
|
53
53
|
requirements: []
|
54
54
|
rubyforge_project:
|
55
|
-
rubygems_version: 2.6.
|
55
|
+
rubygems_version: 2.6.9
|
56
56
|
signing_key:
|
57
|
-
specification_version:
|
57
|
+
specification_version: 4
|
58
58
|
summary: Pushes an iOS or Android build file to App47 for distribution via an App
|
59
59
|
store.
|
60
60
|
test_files: []
|