spare_keys 1.1.1 → 1.2.0

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/spare_keys.rb +27 -0
  3. metadata +14 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 12c38c87a8453bd4d5ee296abe4403b34d190f53
4
- data.tar.gz: e5140c2d52d007e48ef040696556caf0d7567b33
3
+ metadata.gz: ee6d263bb19251d17f0bc7798c5654db62373f56
4
+ data.tar.gz: e744c90dad10884f4ff680ed7c2e090ff1b21fb4
5
5
  SHA512:
6
- metadata.gz: dc39702fe86ee4814f267f36adeebdf856e3f24e11e899e9e9fa7b1acbcb91bf9a2271b31f94b69e6aa07c73c1cfba584c5547fc3464e0d8ae16a398f1fc1c0c
7
- data.tar.gz: 2a1f2801aada5d5ffcdc4c23b22505253f22e6106694b6962cc78c018a794b80e171e3205ab2b870593c495df10b778651a5ba10a5dd686b6da3058ccc26764a
6
+ metadata.gz: ec1a1dbc6e74400ca1340175133be63d53f495abef63256b44118c287568df5a69993780186fdd1536c665bdf3ffdac30211fde17e1dede81aa89102b052a8b0
7
+ data.tar.gz: ccfe4b946b6e5409e1a9f91d5967fc5d65f2c69107e590dea2707d9c0883553abf72cd725644ac71c277216b664e6d963053d736184f304f24dd8f6a9a85d928
data/lib/spare_keys.rb CHANGED
@@ -1,4 +1,5 @@
1
1
 
2
+
2
3
  # Temporarily reconfigures the active keychain
3
4
  class SpareKeys
4
5
 
@@ -13,6 +14,8 @@ class SpareKeys
13
14
  def self.use_keychain(keychain_path, clear_list = false, type = nil, domain = nil)
14
15
  domain_flag = "-d #{domain}" if domain
15
16
 
17
+ keychain_path = expand_keychain_path(keychain_path)
18
+
16
19
  original_list = `security list-keychains #{domain_flag} | xargs`
17
20
  original_keychain = `security #{type}-keychain #{domain_flag} | xargs` if type
18
21
 
@@ -26,6 +29,16 @@ class SpareKeys
26
29
  yield if block_given?
27
30
  ensure
28
31
  original_keychain = `security #{type}-keychain #{domain_flag} -s #{original_keychain}` if type
32
+
33
+ unless clear_list
34
+ # Grab the keychain list as it looks right now in case
35
+ # another process has changed it
36
+ current_list = `security list-keychains #{domain_flag}`
37
+ current_list_as_array = current_list.scan(/"[^"]*"/).map { |item| item.gsub(/^"|"$/, "")}
38
+ # Remove the supplied keychain
39
+ original_list = (current_list_as_array.reject { |item| item == keychain_path }).join(" ")
40
+ end
41
+
29
42
  `security list-keychains #{domain_flag} -s #{original_list}`
30
43
  end
31
44
  end
@@ -49,6 +62,7 @@ class SpareKeys
49
62
  temp_keychain = Dir::Tmpname.make_tmpname(['spare-keys-', extension], nil)
50
63
 
51
64
  `security create-keychain -p "#{password}" #{temp_keychain}`
65
+ `security set-keychain-settings #{temp_keychain}`
52
66
  `security unlock-keychain -p "#{password}" #{temp_keychain}`
53
67
 
54
68
  if block_given?
@@ -80,4 +94,17 @@ private
80
94
 
81
95
  end
82
96
 
97
+ def self.expand_keychain_path(path)
98
+
99
+ if (File.basename(path) == path)
100
+ default_keychain_path = File.expand_path("~/Library/Keychains")
101
+
102
+ path = File.join(default_keychain_path, path)
103
+ else
104
+ path = File.expand_path(path)
105
+ end
106
+
107
+ return path
108
+ end
109
+
83
110
  end
metadata CHANGED
@@ -1,61 +1,61 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spare_keys
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Szalay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-18 00:00:00.000000000 Z
11
+ date: 2017-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.2'
20
20
  type: :development
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: '3.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.9.6
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.9.6
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.12'
48
- - - '>='
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: 1.12.5
51
51
  type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - ~>
55
+ - - "~>"
56
56
  - !ruby/object:Gem::Version
57
57
  version: '1.12'
58
- - - '>='
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: 1.12.5
61
61
  description: Isolates keychain access for use with keychain-dependent utilities
@@ -75,18 +75,19 @@ require_paths:
75
75
  - lib
76
76
  required_ruby_version: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - '>='
78
+ - - ">="
79
79
  - !ruby/object:Gem::Version
80
80
  version: '0'
81
81
  required_rubygems_version: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - '>='
83
+ - - ">="
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
86
  requirements: []
87
87
  rubyforge_project:
88
- rubygems_version: 2.4.8
88
+ rubygems_version: 2.6.7
89
89
  signing_key:
90
90
  specification_version: 4
91
91
  summary: Temporarily keychain switcher
92
92
  test_files: []
93
+ has_rdoc: