credentials_manager 0.15.1 → 0.16.4
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 +1 -1
- data/lib/credentials_manager.rb +1 -0
- data/lib/credentials_manager/account_manager.rb +24 -8
- data/lib/credentials_manager/appfile_config.rb +26 -2
- data/lib/credentials_manager/version.rb +1 -1
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6eee55d49f41c211199559e3d44365130b764dbd
|
4
|
+
data.tar.gz: 125ef8b4502e4a9e15871769298ef4ac4235cca5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4188b66c8c8e9bf4d90e132dbb4ae75112b2604a8f8583d6c67eb8cc06ec661add5d0c18ebbefb4be3d60e9474d2721de0023788b5687d2331492415df4291b
|
7
|
+
data.tar.gz: de5a4725b24bd66913193daa4777498752fb2fcdc98d44e15b58c647517b5f66b5e898ea3bf791a66599e4e3970398aa03436b0a4a6168a11d2009937afb73b3
|
data/README.md
CHANGED
@@ -23,7 +23,7 @@ password has been deleted.
|
|
23
23
|
|
24
24
|
## Storing in the keychain
|
25
25
|
|
26
|
-
By default, your Apple credentials are stored in the
|
26
|
+
By default, your Apple credentials are stored in the macOS Keychain.
|
27
27
|
|
28
28
|
Your password is only stored locally on your computer.
|
29
29
|
|
data/lib/credentials_manager.rb
CHANGED
@@ -3,7 +3,11 @@ require 'highline/import' # to hide the entered password
|
|
3
3
|
|
4
4
|
module CredentialsManager
|
5
5
|
class AccountManager
|
6
|
-
|
6
|
+
# @param prefix [String] Very optional, is used for the
|
7
|
+
# iTunes Transporter which uses application specofic passwords
|
8
|
+
def initialize(user: nil, password: nil, prefix: nil)
|
9
|
+
@prefix = prefix || "deliver"
|
10
|
+
|
7
11
|
@user = user
|
8
12
|
@password = password
|
9
13
|
end
|
@@ -16,9 +20,12 @@ module CredentialsManager
|
|
16
20
|
return @user
|
17
21
|
end
|
18
22
|
|
23
|
+
def fetch_password_from_env
|
24
|
+
ENV["FASTLANE_PASSWORD"] || ENV["DELIVER_PASSWORD"]
|
25
|
+
end
|
26
|
+
|
19
27
|
def password(ask_if_missing: true)
|
20
|
-
@password ||=
|
21
|
-
@password ||= ENV["DELIVER_PASSWORD"]
|
28
|
+
@password ||= fetch_password_from_env
|
22
29
|
unless @password
|
23
30
|
item = Security::InternetPassword.find(server: server_name)
|
24
31
|
@password ||= item.password if item
|
@@ -32,6 +39,13 @@ module CredentialsManager
|
|
32
39
|
# @return: Did the user decide to remove the old entry and enter a new password?
|
33
40
|
def invalid_credentials(force: false)
|
34
41
|
puts "The login credentials for '#{user}' seem to be wrong".red
|
42
|
+
|
43
|
+
if fetch_password_from_env
|
44
|
+
puts "The password was taken from the environment variable"
|
45
|
+
puts "Please make sure it is correct"
|
46
|
+
return false
|
47
|
+
end
|
48
|
+
|
35
49
|
if force || agree("Do you want to re-enter your password? (y/n)", true)
|
36
50
|
puts "Removing Keychain entry for user '#{user}'...".yellow
|
37
51
|
remove_from_keychain
|
@@ -50,22 +64,28 @@ module CredentialsManager
|
|
50
64
|
@password = nil
|
51
65
|
end
|
52
66
|
|
67
|
+
def server_name
|
68
|
+
"#{@prefix}.#{user}"
|
69
|
+
end
|
70
|
+
|
53
71
|
private
|
54
72
|
|
55
73
|
def ask_for_login
|
56
74
|
puts "-------------------------------------------------------------------------------------".green
|
57
75
|
puts "The login information you enter will be stored in your Mac OS Keychain".green
|
58
|
-
puts "You can also pass the password using the `FASTLANE_PASSWORD`
|
76
|
+
puts "You can also pass the password using the `FASTLANE_PASSWORD` environment variable".green
|
59
77
|
puts "More information about it on GitHub: https://github.com/fastlane/fastlane/tree/master/credentials_manager".green
|
60
78
|
puts "-------------------------------------------------------------------------------------".green
|
61
79
|
|
62
80
|
if @user.to_s.length == 0
|
81
|
+
raise "Missing username, and running in non-interactive shell" if $stdout.isatty == false
|
63
82
|
@user = ask("Username: ") while @user.to_s.length == 0
|
64
83
|
# we return here, as only the username was asked for now, we'll get called for the pw again anyway
|
65
84
|
return
|
66
85
|
end
|
67
86
|
|
68
87
|
while @password.to_s.length == 0
|
88
|
+
raise "Missing password for user #{@user}, and running in non-interactive shell" if $stdout.isatty == false
|
69
89
|
@password = ask("Password (for #{@user}): ") { |q| q.echo = "*" }
|
70
90
|
end
|
71
91
|
|
@@ -80,9 +100,5 @@ module CredentialsManager
|
|
80
100
|
return false
|
81
101
|
end
|
82
102
|
end
|
83
|
-
|
84
|
-
def server_name
|
85
|
-
"deliver.#{user}"
|
86
|
-
end
|
87
103
|
end
|
88
104
|
end
|
@@ -1,8 +1,9 @@
|
|
1
1
|
module CredentialsManager
|
2
2
|
# Access the content of the app file (e.g. app identifier and Apple ID)
|
3
3
|
class AppfileConfig
|
4
|
-
|
5
4
|
def self.try_fetch_value(key)
|
5
|
+
# We need to load the file every time we call this method
|
6
|
+
# to support the `for_lane` keyword
|
6
7
|
begin
|
7
8
|
return self.new.data[key]
|
8
9
|
rescue => ex
|
@@ -21,7 +22,7 @@ module CredentialsManager
|
|
21
22
|
|
22
23
|
def initialize(path = nil)
|
23
24
|
if path
|
24
|
-
raise "Could not find Appfile at path '#{path}'".red unless File.exist?(path)
|
25
|
+
raise "Could not find Appfile at path '#{path}'".red unless File.exist?(File.expand_path(path))
|
25
26
|
end
|
26
27
|
|
27
28
|
path ||= self.class.default_path
|
@@ -42,12 +43,35 @@ module CredentialsManager
|
|
42
43
|
# rubocop:disable Lint/Eval
|
43
44
|
eval(content)
|
44
45
|
# rubocop:enable Lint/Eval
|
46
|
+
|
47
|
+
print_debug_information(path: full_path) if $verbose
|
45
48
|
end
|
46
49
|
end
|
47
50
|
|
48
51
|
fallback_to_default_values
|
49
52
|
end
|
50
53
|
|
54
|
+
def print_debug_information(path: nil)
|
55
|
+
self.class.already_printed_debug_information ||= {}
|
56
|
+
return if self.class.already_printed_debug_information[self.data]
|
57
|
+
# self.class.already_printed_debug_information is a hash, we use to detect if we already printed this data
|
58
|
+
# this is necessary, as on the course of a fastlane run, the values might change, e.g. when using
|
59
|
+
# the `for_lane` keyword.
|
60
|
+
|
61
|
+
puts "Successfully loaded Appfile at path '#{path}'".yellow
|
62
|
+
|
63
|
+
self.data.each do |key, value|
|
64
|
+
puts "- #{key.to_s.cyan}: '#{value.to_s.green}'"
|
65
|
+
end
|
66
|
+
puts "-------"
|
67
|
+
|
68
|
+
self.class.already_printed_debug_information[self.data] = true
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.already_printed_debug_information
|
72
|
+
@already_printed_debug_information ||= {}
|
73
|
+
end
|
74
|
+
|
51
75
|
def fallback_to_default_values
|
52
76
|
data[:apple_id] ||= ENV["FASTLANE_USER"] || ENV["DELIVER_USER"]
|
53
77
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: credentials_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colored
|
@@ -84,16 +84,16 @@ dependencies:
|
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "<"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '12'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "<"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '12'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: pry
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,14 +184,14 @@ dependencies:
|
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: 0.
|
187
|
+
version: 0.44.0
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: 0.
|
194
|
+
version: 0.44.0
|
195
195
|
description: Password manager used in fastlane.tools
|
196
196
|
email:
|
197
197
|
- fastlane@krausefx.com
|
@@ -228,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
228
|
version: '0'
|
229
229
|
requirements: []
|
230
230
|
rubyforge_project:
|
231
|
-
rubygems_version: 2.
|
231
|
+
rubygems_version: 2.6.8
|
232
232
|
signing_key:
|
233
233
|
specification_version: 4
|
234
234
|
summary: Password manager used in fastlane.tools
|