cert 0.1.1 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e27598992c352ec26e99815898586e1ba85c6d1e
4
- data.tar.gz: a4415ab01ec9879ee2be155717c1f75f1d02d5bc
3
+ metadata.gz: 6259690b66a7e4c593ec0791ea5bb3c0942454e2
4
+ data.tar.gz: 30cd02aade4ab49c87a0bc9d8ac2f14eb7996adc
5
5
  SHA512:
6
- metadata.gz: 87ad0f5a9e10c8e150b974ec3c5442ec480a4ea26790dc6f510e193b3bdfe6f5caef09fcd648afe995f7e498870857822120ecfe03fa3e385cd1894f7ddfc5b6
7
- data.tar.gz: e469f9b484544a7b49a96223cb82fb94bce02c0b17f145a5d3fdf31e6d3ac53f20ee81d8ca55a8c170b4831ba19a2ecbd7d81aa8a70990220d6ea35d4be301af
6
+ metadata.gz: 20cb4cdb1b72596db16faca9bce5d3fa6fe0e24ade05d5a59e6efb707bdc98ac2b1ced4fd171e79f1c58b646c2082a69f275f8669ca29815a113cedd8a05b0f5
7
+ data.tar.gz: 94ab37d8f4216f5591b37675eae649239b035f2f15f83a0a6f701cdf55db24631cc96c2cc0ab3dfcfda2c00bab56b9c2d45f5d9fa8f97676c8380a99a905ddc4
data/README.md CHANGED
@@ -90,6 +90,9 @@ You can pass your Apple ID:
90
90
 
91
91
  cert -u cert@krausefx.com
92
92
 
93
+ For a list of available commands run
94
+
95
+ cert --help
93
96
 
94
97
  ## Environment Variables
95
98
  In case you prefer environment variables:
@@ -97,6 +100,7 @@ In case you prefer environment variables:
97
100
  - ```CERT_USERNAME```
98
101
  - ```CERT_TEAM_ID```
99
102
  - ```CERT_KEYCHAIN_PATH``` The path to a specific Keychain if you don't want to use the default one
103
+ - ```FASTLANE_TEAM_NAME``` (the Team Name, e.g. `Felix Krause`)
100
104
 
101
105
  ## Use with [`sigh`](https://github.com/KrauseFx/sigh)
102
106
 
data/bin/cert CHANGED
@@ -6,6 +6,7 @@ require 'cert'
6
6
  require 'commander'
7
7
  require 'credentials_manager/password_manager'
8
8
  require 'credentials_manager/appfile_config'
9
+ require 'cert/options'
9
10
 
10
11
  HighLine.track_eof = false
11
12
 
@@ -22,34 +23,18 @@ class CertApplication
22
23
 
23
24
  always_trace!
24
25
 
25
- global_option '-u', '--username STRING', 'Your Apple ID username'
26
- global_option '--development', 'Create a development certificate instead of a distribution one.'
26
+ FastlaneCore::CommanderGenerator.new.generate(Cert::Options.available_options)
27
27
 
28
28
  command :create do |c|
29
29
  c.syntax = 'cert create'
30
30
  c.description = 'Create new iOS code signing certificates'
31
31
 
32
32
  c.action do |args, options|
33
- username(options)
34
-
35
- type = Cert::DeveloperCenter::DISTRIBUTION
36
- type = Cert::DeveloperCenter::DEVELOPMENT if options.development
37
-
38
- Cert::CertRunner.run(type)
39
-
40
- installed = Cert::CertChecker.is_installed?ENV["CER_FILE_PATH"]
41
- raise "Could not find the newly generated certificate installed" unless installed
33
+ Cert.config = FastlaneCore::Configuration.create(Cert::Options.available_options, options.__hash__)
34
+ Cert::CertRunner.run
42
35
  end
43
36
  end
44
37
 
45
- def username(options)
46
- user = options.username
47
- user ||= ENV["CERT_USERNAME"]
48
- user ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id)
49
-
50
- CredentialsManager::PasswordManager.shared_manager(user) if user
51
- end
52
-
53
38
  default_command :create
54
39
 
55
40
  run!
@@ -9,6 +9,11 @@ require 'cert/keychain_importer'
9
9
  require 'fastlane_core'
10
10
 
11
11
  module Cert
12
+ # Use this to just setup the configuration attribute and set it later somewhere else
13
+ class << self
14
+ attr_accessor :config
15
+ end
16
+
12
17
  TMP_FOLDER = "/tmp/cert/"
13
18
  FileUtils.mkdir_p TMP_FOLDER
14
19
 
@@ -1,7 +1,10 @@
1
1
  module Cert
2
2
  class CertRunner
3
- def self.run(type)
4
- Cert::DeveloperCenter.new.run(type)
3
+ def self.run
4
+ Cert::DeveloperCenter.new.run
5
+
6
+ installed = Cert::CertChecker.is_installed?ENV["CER_FILE_PATH"]
7
+ raise "Could not find the newly generated certificate installed" unless installed
5
8
  end
6
9
  end
7
10
  end
@@ -11,27 +11,28 @@ module Cert
11
11
 
12
12
  # This will check if there is at least one of the certificates already installed on the local machine
13
13
  # This will store the resulting file name in ENV 'CER_FILE_PATH' and the Cert ID in 'CER_CERTIFICATE_ID'
14
- def run(type)
15
- file = find_existing_cert(type)
14
+ def run
15
+ @type = (Cert.config[:development] ? DEVELOPMENT : DISTRIBUTION)
16
+ file = find_existing_cert
16
17
  if file
17
18
  # We don't need to do anything :)
18
19
  ENV["CER_FILE_PATH"] = file
19
20
  else
20
- create_certificate(type)
21
+ create_certificate
21
22
  end
22
23
  rescue => ex
23
24
  error_occured(ex)
24
25
  end
25
26
 
26
- def find_existing_cert(type)
27
- if type == DEVELOPMENT
27
+ def find_existing_cert
28
+ if @type == DEVELOPMENT
28
29
  visit CERTS_URL_DEV
29
30
  else
30
31
  visit CERTS_URL
31
32
  end
32
33
 
33
34
  # Download all available certs to check if they are installed using the SHA1 hash
34
- certs = code_signing_certificate(type)
35
+ certs = code_signing_certificate
35
36
  certs.each do |current|
36
37
  display_id = current['certificateId']
37
38
  type_id = current['certificateTypeDisplayId']
@@ -54,7 +55,7 @@ module Cert
54
55
  end
55
56
 
56
57
  # This will actually create a new certificate
57
- def create_certificate(type)
58
+ def create_certificate
58
59
  visit CREATE_CERT_URL
59
60
  wait_for_elements("form[name='certificateSave']")
60
61
 
@@ -62,7 +63,7 @@ module Cert
62
63
 
63
64
  # select certificate type
64
65
  toggle_value = 'type-iosNoOCSP'
65
- toggle_value = 'type-development' if type == DEVELOPMENT
66
+ toggle_value = 'type-development' if @type == DEVELOPMENT
66
67
  app_store_toggle = first("input##{toggle_value}")
67
68
  if !!app_store_toggle['disabled']
68
69
  # Limit of certificates already reached
@@ -150,8 +151,8 @@ module Cert
150
151
  # "certificateTypeDisplayId"=>"...",
151
152
  # "serialNum"=>"....",
152
153
  # "typeString"=>"iOS Distribution"},
153
- def code_signing_certificate(type)
154
- if type == DEVELOPMENT
154
+ def code_signing_certificate
155
+ if @type == DEVELOPMENT
155
156
  visit CERTS_URL_DEV
156
157
  else
157
158
  visit CERTS_URL
@@ -168,7 +169,7 @@ module Cert
168
169
  available = []
169
170
 
170
171
  certTypeName = 'iOS Distribution'
171
- certTypeName = 'iOS Development' if type == DEVELOPMENT
172
+ certTypeName = 'iOS Development' if @type == DEVELOPMENT
172
173
  certs = post_ajax(url)['certRequests']
173
174
  certs.each do |current_cert|
174
175
  if current_cert['typeString'] == certTypeName
@@ -2,7 +2,7 @@ module Cert
2
2
  class KeychainImporter
3
3
  def self.import_file(path)
4
4
  raise "Could not find file '#{path}'".red unless File.exists?(path)
5
- keychain = ENV["CERT_KEYCHAIN_PATH"] || "#{Dir.home}/Library/Keychains/login.keychain"
5
+ keychain = Cert.config[:keychain_path] || "#{Dir.home}/Library/Keychains/login.keychain"
6
6
 
7
7
  puts `security import '#{path}' -k '#{keychain}'`
8
8
  end
@@ -0,0 +1,38 @@
1
+ require 'fastlane_core'
2
+
3
+ module Cert
4
+ class Options
5
+ def self.available_options
6
+ @@options ||= [
7
+ FastlaneCore::ConfigItem.new(key: :development,
8
+ env_name: "CERT_DEVELOPMENT",
9
+ description: "Create a development certificate instead of a distribution one",
10
+ is_string: false),
11
+ FastlaneCore::ConfigItem.new(key: :username,
12
+ short_option: "-u",
13
+ env_name: "CERT_USERNAME",
14
+ description: "Your Apple ID Username",
15
+ default_value: CredentialsManager::AppfileConfig.try_fetch_value(:apple_id),
16
+ verify_block: Proc.new do |value|
17
+ CredentialsManager::PasswordManager.shared_manager(value)
18
+ end),
19
+ FastlaneCore::ConfigItem.new(key: :team_id,
20
+ short_option: "-t",
21
+ env_name: "CERT_TEAM_ID",
22
+ description: "The ID of your team if you're in multiple teams",
23
+ optional: true,
24
+ verify_block: Proc.new do |value|
25
+ ENV["FASTLANE_TEAM_ID"] = value
26
+ end),
27
+ FastlaneCore::ConfigItem.new(key: :keychain_path,
28
+ short_option: "-k",
29
+ env_name: "CERT_KEYCHAIN_PATH",
30
+ description: "Path to a custom keychain",
31
+ optional: true,
32
+ verify_block: Proc.new do |value|
33
+ raise "Keychain not found at path '#{value}'".red unless File.exists?value
34
+ end)
35
+ ]
36
+ end
37
+ end
38
+ end
@@ -1,3 +1,3 @@
1
1
  module Cert
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cert
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-06 00:00:00.000000000 Z
11
+ date: 2015-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fastlane_core
@@ -139,6 +139,7 @@ files:
139
139
  - lib/cert/dependency_checker.rb
140
140
  - lib/cert/developer_center.rb
141
141
  - lib/cert/keychain_importer.rb
142
+ - lib/cert/options.rb
142
143
  - lib/cert/signing_request.rb
143
144
  - lib/cert/version.rb
144
145
  homepage: https://fastlane.tools