secure-keys 1.1.2 → 1.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
  SHA256:
3
- metadata.gz: 8cd5c377f201fdb4fd22802645629371e0846768d444398b5fc8de07152edb58
4
- data.tar.gz: 845e7fb862ec80987753479bfba9b978336c3090123c41b7dac765ec20a1465b
3
+ metadata.gz: 6946af00c20082e078ea40c755f0738199bc46640496cf42eb95fa57c9c87483
4
+ data.tar.gz: bb59bb065970abcd05a903030d48c8cd0164b5b8ee74b4f43b7368877abde082
5
5
  SHA512:
6
- metadata.gz: 301b39d752b908b2f8817223a74ee84d8f08a9e3da3f7c41be022d03f392af2a0cb0dd2a320ed73e0c643536826606dad87a9c384da4c3c58c2e2e1af8149c6c
7
- data.tar.gz: bd83843339d9169c06e80e31ed3b0fb98f574cd2367001158e668ae38534cc287f8f959b57fbadf343da89e9ddd216f89952c2289a489a9843dbd6ab2bff80ba
6
+ metadata.gz: f7b7aab488356cbc4afa09de94c9f36de7911820d10aaa52b7896f5edf645051c245fb8eb89866fae9a0ac32c0eecf450fd473423698346a17609f9faf07cf9a
7
+ data.tar.gz: ccb083a8d120236864b12557205f28c4798d264cdc8008605c0899e23590dbd98dee1b32a93277b46bd867eb5c4293ff1c48796d7567c3122daf03e5713dd0bf
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <div style="display: flex; gap: 10px; padding-bottom: 20px;">
2
- <img src="https://img.shields.io/badge/version-1.0.0-cyan" alt="Keys Version 1.0.0">
2
+ <img src="https://img.shields.io/badge/version-1.1.3-cyan" alt="SecureKeys Version 1.1.3">
3
3
 
4
4
  <img src="https://img.shields.io/badge/iOS-^13.0-blue" alt="iOS version 13.0">
5
5
 
@@ -137,10 +137,13 @@ secure-keys --help
137
137
 
138
138
  Usage: secure-keys [--options]
139
139
 
140
- -h, --help Use the provided commands to select the params
141
- -d, --delimiter DELIMITER The delimiter to use for the key access (default: ",")
142
- -i, --identifier IDENTIFIER The identifier to use for the key access (default: "secure-keys")
143
- -v, --version Show the secure-keys version
140
+ -h, --help Use the provided commands to select the params
141
+ --add-xcframework-to-target TARGET Add the xcframework to the target
142
+ -d, --delimiter DELIMITER The delimiter to use for the key access (default: ",")
143
+ -i, --identifier IDENTIFIER The identifier to use for the key access (default: "secure-keys")
144
+ --verbose Enable verbose mode (default: false)
145
+ -v, --version Show the secure-keys version
146
+ -x, --xcodeproj XCODEPROJ The Xcode project path (default: the first found Xcode project)
144
147
  ```
145
148
 
146
149
  To avoid defining the `SECURE_KEYS_IDENTIFIER` and `SECURE_KEYS_DELIMITER` env variables, you can use the `--identifier` and `--delimiter` options.
@@ -165,16 +168,16 @@ import SecureKeys
165
168
  // Using key directly in the code
166
169
  let apiKey = SecureKey.apiKey.decryptedValue
167
170
 
168
- // Using key from `Key` enum
171
+ // Using key from `SecureKey` enum
169
172
  let someKey: String = key(for: .someKey)
170
173
 
171
- // Alternative way to use key from `Key` enum
174
+ // Alternative way to use key from `SecureKey` enum
172
175
  let someKey: String = key(.someKey)
173
176
 
174
- // Using raw value from `Key` enum
177
+ // Using raw value from `SecureKey` enum
175
178
  let apiKey: SecureKey = "apiKey".secretKey
176
179
 
177
- // Using raw value from `Key` enum with decrypted value
180
+ // Using raw value from `SecureKey` enum with decrypted value
178
181
  let apiKey: String = "apiKey".secretKey.decryptedValue
179
182
 
180
183
  // Using `key` method to get the key
@@ -183,6 +186,27 @@ let apiKey: String = .key(for: .apiKey)
183
186
 
184
187
  ## How to install the `SecureKeys.xcframework` in the iOS project
185
188
 
189
+ ### Automatically
190
+
191
+ From the `secure-keys` command, you can use the `--add-xcframework-to-target` option to add the `SecureKeys.xcframework` to the iOS project.
192
+
193
+ ```bash
194
+ secure-keys --add-xcframework-to-target "YourTargetName"
195
+ ```
196
+
197
+ Also, you can specify your Xcode project path using the `--xcodeproj` option.
198
+
199
+ ```bash
200
+ secure-keys --add-xcframework-to-target "YourTargetName" --xcodeproj "/path/to/your/project.xcodeproj"
201
+ ```
202
+
203
+ > [!IMPORTANT]
204
+ > By default, the xcodeproj path would be the first found Xcode project.
205
+
206
+ This command will generate the `SecureKeys.xcframework` and add it to the iOS project.
207
+
208
+ ### Manually
209
+
186
210
  1. From the iOS project, click on the project target, select the `General` tab, and scroll down to the `Frameworks, Libraries, and Embedded Content` section.
187
211
 
188
212
  ![Project Target](/docs/assets/add-xcframework-to-ios-project/first-step.png)
@@ -11,6 +11,9 @@ module SecureKeys
11
11
  @arguments = {
12
12
  delimiter: nil,
13
13
  identifier: nil,
14
+ target: nil,
15
+ verbose: false,
16
+ xcodeproj: nil,
14
17
  }
15
18
 
16
19
  # Fetch the argument value by key
@@ -28,13 +28,18 @@ module SecureKeys
28
28
  exit(0)
29
29
  end
30
30
 
31
+ on('--add-xcframework-to-target TARGET', String, 'Add the xcframework to the target') do |target|
32
+ Handler.arguments[:target] = target
33
+ end
31
34
  on('-d', '--delimiter DELIMITER', String, "The delimiter to use for the key access (default: \"#{Globals.default_key_delimiter}\")")
32
35
  on('-i', '--identifier IDENTIFIER', String, "The identifier to use for the key access (default: \"#{Globals.default_key_access_identifier}\")")
36
+ on('--verbose', TrueClass, 'Enable verbose mode (default: false)')
33
37
 
34
38
  on('-v', '--version', 'Show the secure-keys version') do
35
39
  puts "secure-keys version: v#{SecureKeys::VERSION}"
36
40
  exit(0)
37
41
  end
42
+ on('-x', '--xcodeproj XCODEPROJ', String, 'The Xcode project path (default: the first found Xcode project)')
38
43
  end
39
44
  end
40
45
  end
@@ -0,0 +1,123 @@
1
+ require 'colorize'
2
+ require 'logger'
3
+ require 'tty-screen'
4
+ require_relative '../globals/globals'
5
+
6
+ module SecureKeys
7
+ module Core
8
+ module Console
9
+ module Logger
10
+ module_function
11
+
12
+ # Log a success message
13
+ # @param message [String] the message to log
14
+ def success(message:)
15
+ logger.info(message.to_s.green)
16
+ end
17
+
18
+ # Log an error message
19
+ # @param message [String] the message to log
20
+ def error(message:)
21
+ logger.warn(message.to_s.red)
22
+ end
23
+
24
+ # Log an important message
25
+ # @param message [String] the message to log
26
+ def important(message:)
27
+ logger.info(message.to_s.blue)
28
+ end
29
+
30
+ # Log a warning message
31
+ # @param message [String] the message to log
32
+ def warning(message:)
33
+ logger.info(message.to_s.yellow)
34
+ end
35
+
36
+ # Log a message without any formatting
37
+ # @param message [String] the message to log
38
+ def message(message:)
39
+ logger.info(message.to_s)
40
+ end
41
+
42
+ # Log a deprecated message
43
+ # @param message [String] the message to log
44
+ def deprecated(message:)
45
+ logger.error(message.to_s.deprecated)
46
+ end
47
+
48
+ # Log a command message
49
+ # @param command [String] the command to log
50
+ def command(command:)
51
+ logger.info("$ #{command}".cyan)
52
+ end
53
+
54
+ # Log a verbose message
55
+ # @param message [String] the message to log
56
+ def verbose(message:)
57
+ logger.debug(message.to_s) if AWSTracker::Global.verbose?
58
+ end
59
+
60
+ # Crash the terminal with a message
61
+ # @param message [String] the message to log
62
+ def crash!(message:)
63
+ raise(StandardError.new, message)
64
+ end
65
+
66
+ # Kill the terminal with a message
67
+ # @param message [String] the message to log
68
+ def kill!(message:)
69
+ error(message:)
70
+ exit(1)
71
+ end
72
+
73
+ # Log a command output
74
+ # @param command [String] the command to log
75
+ def command_output(command:)
76
+ actual = encode_as_utf_8_if_possible(message: command).split("\r")
77
+ .last || ''
78
+ actual.split("\n").each do |cmd|
79
+ prefix = cmd.include?('▸') ? '' : '▸ '
80
+ logger.info("#{prefix} #{cmd.magenta}")
81
+ end
82
+ end
83
+
84
+ # Create a logger instance if needed
85
+ # @return [Logger] the logger instance
86
+ def logger
87
+ return @log unless @log.nil?
88
+
89
+ $stdout.sync = true
90
+ @log ||= ::Logger.new($stdout)
91
+ @log.formatter = proc do |severity, datetime, _, message|
92
+ "#{format_string(datetime:, severity:)} #{message}\n"
93
+ end
94
+
95
+ @log
96
+ end
97
+
98
+ # Format the log string
99
+ # @param datetime [Time] the datetime to format
100
+ # @param severity [String] the severity of the log
101
+ # @return [String] the formatted string
102
+ def format_string(datetime: Time.now, severity: '')
103
+ return "#{severity} [#{datetime.strftime('%Y-%m-%d %H:%M:%S.%2N')}]: " if Globals.verbose?
104
+
105
+ "[#{datetime.strftime('%H:%M:%S')}]: "
106
+ end
107
+
108
+ # Encode a message as UTF-8 if possible
109
+ # @param message [String] the message to encode
110
+ # @return [String] the encoded message
111
+ def encode_as_utf_8_if_possible(message:)
112
+ return message if message.valid_encoding?
113
+
114
+ return message.encode(Encoding::UTF_8, Encoding::UTF_16) if message.dup
115
+ .force_encoding(Encoding::UTF_16)
116
+ .valid_encoding?
117
+
118
+ message.encode(Encoding::UTF_8, invalid: :replace)
119
+ end
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'open3'
4
+ require_relative './logger'
5
+ require_relative '../globals/globals'
6
+
7
+ module SecureKeys
8
+ module Core
9
+ module Console
10
+ module Shell
11
+ module_function
12
+
13
+ # Source: https://github.com/fastlane/fastlane/blob/5b2106db41be2ca272dfe5b99360f29879c707bb/fastlane/lib/fastlane/helper/sh_helper.rb#L28
14
+ # Executes a shell command
15
+ # All commands will be executed in the given block
16
+ # @param command [String] The command that should be executed
17
+ # @param error_handler [Block] A block that will be called with the output of the command if the command exists with a non-zero exit status
18
+ # @return [Array] An array containing the output of the command, the exit status and the command
19
+ def sh(command:, error_handler: nil)
20
+ previous_encoding = [Encoding.default_external, Encoding.default_internal]
21
+ Encoding.default_external = Encoding::UTF_8
22
+ Encoding.default_internal = Encoding::UTF_8
23
+ Logger.command(command:)
24
+
25
+ output = ''
26
+ exit_status = nil
27
+ Open3.popen2e(command) do |_stdin, io, thread|
28
+ io.sync = true
29
+ io.each do |line|
30
+ Logger.command_output(command: line.strip)
31
+ output << line
32
+ end
33
+ exit_status = thread.value
34
+ end
35
+
36
+ if exit_status.exitstatus.zero?
37
+ output << command
38
+ else
39
+ message = "Exit status of command '#{command}' was #{exit_status.exitstatus} instead of 0.\n#{output}"
40
+
41
+ if error_handler || block_given?
42
+ Logger.error(message:)
43
+ error_handler&.call(output)
44
+ else
45
+ Logger.crash!(message:)
46
+ end
47
+ end
48
+
49
+ return yield(exit_status || $CHILD_STATUS, output, command) if block_given?
50
+
51
+ [output, exit_status || $CHILD_STATUS, command]
52
+ rescue StandardError => e
53
+ raise e
54
+ ensure
55
+ Encoding.default_external = previous_encoding.first
56
+ Encoding.default_internal = previous_encoding.last
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require_relative '../console/arguments/handler'
4
+ require_relative '../utils/swift/swift'
4
5
 
5
6
  module SecureKeys
6
7
  module Globals
@@ -24,6 +25,29 @@ module SecureKeys
24
25
  ENV.key?('CIRCLECI')
25
26
  end
26
27
 
28
+ # Check if the current instance is verbose
29
+ # @return [Bool] true if the current instance is verbose
30
+ def verbose?
31
+ Core::Console::Argument::Handler.fetch(key: :verbose,
32
+ default: ENV.fetch('VERBOSE', false))
33
+ .to_s
34
+ .downcase
35
+ .eql?('true')
36
+ end
37
+
38
+ # Returns the Xcode project path
39
+ # @return [String] Xcode project path
40
+ def xcodeproj_path
41
+ Core::Console::Argument::Handler.fetch(key: :xcodeproj,
42
+ default: Dir.glob('**/*.xcodeproj').first)
43
+ end
44
+
45
+ # Returns the secure keys XCFramework path
46
+ # @return [String] secure keys XCFramework path
47
+ def secure_keys_xcframework_path
48
+ Dir.glob("**/#{Swift::KEYS_DIRECTORY}/#{Swift::XCFRAMEWORK_DIRECTORY}").first
49
+ end
50
+
27
51
  # Returns the supported iOS platforms
28
52
  # @return [Array] supported iOS platforms
29
53
  def ios_platforms
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require_relative './swift'
4
+ require_relative '../../console/shell'
4
5
 
5
6
  module SecureKeys
6
7
  module Swift
@@ -14,7 +15,7 @@ module SecureKeys
14
15
  swift package init --name #{SWIFT_PACKAGE_NAME} --type library
15
16
  BASH
16
17
 
17
- system(command)
18
+ Core::Console::Shell.sh(command:)
18
19
  end
19
20
  end
20
21
  end
@@ -2,6 +2,10 @@
2
2
 
3
3
  require_relative './swift'
4
4
  require_relative '../../globals/globals'
5
+ require_relative '../../console/shell'
6
+ require_relative '../../console/logger'
7
+ require_relative '../../console/arguments/handler'
8
+ require_relative '../swift/xcodeproj'
5
9
 
6
10
  module SecureKeys
7
11
  module Swift
@@ -12,12 +16,13 @@ module SecureKeys
12
16
  # Currently this is failling with the following error:
13
17
  # "library with the identifier 'ios-arm64' already exists."
14
18
  %w[Release].each do |configuration|
15
- SecureKeys::Globals.ios_platforms.each do |platform|
19
+ Globals.ios_platforms.each do |platform|
16
20
  generate_key_modules(configuration:, platform:)
17
21
  generate_key_libraries(configuration:, platform: platform[:path])
18
22
  end
19
23
  end
20
24
  generate_key_xcframework
25
+ add_xcframework_to_xcodeproj_target_if_needed
21
26
  end
22
27
 
23
28
  private
@@ -35,7 +40,7 @@ module SecureKeys
35
40
  ARCHS="arm64" BUILD_DIR="../#{BUILD_DIRECTORY}"
36
41
  BASH
37
42
 
38
- system(command)
43
+ Core::Console::Shell.sh(command:)
39
44
  end
40
45
 
41
46
  # Generate the Swift package libraries
@@ -48,7 +53,7 @@ module SecureKeys
48
53
  #{BUILD_DIRECTORY}/#{configuration}-#{platform}/#{SWIFT_PACKAGE_NAME}.o
49
54
  BASH
50
55
 
51
- system(command)
56
+ Core::Console::Shell.sh(command:)
52
57
  end
53
58
 
54
59
  # Generate the XCFramework from the Swift package libraries
@@ -61,7 +66,7 @@ module SecureKeys
61
66
  -output #{XCFRAMEWORK_DIRECTORY}
62
67
  BASH
63
68
 
64
- system(command)
69
+ Core::Console::Shell.sh(command:)
65
70
  end
66
71
 
67
72
  # Generate the XCFramework library command
@@ -76,6 +81,22 @@ module SecureKeys
76
81
  end.join(' ')
77
82
  end.join(' ')
78
83
  end
84
+
85
+ # Add the XCFramework to the Xcode project target if needed
86
+ # @param target_name [String] The target name to add the XCFramework
87
+ def add_xcframework_to_xcodeproj_target_if_needed(target_name: nil)
88
+ target_name ||= Core::Console::Argument::Handler.fetch(key: :target)
89
+ return if target_name.to_s.empty?
90
+
91
+ Core::Console::Logger.important(message: "Adding the XCFramework to the target '#{target_name}'")
92
+ xcodeproj = Xcodeproj.xcodeproj
93
+ xcodeproj_target = Xcodeproj.xcodeproj_target_by_target_name(xcodeproj:, target_name:)
94
+ Xcodeproj.add_framework_search_path(xcodeproj_target:)
95
+ Xcodeproj.add_xcframework_to_build_phases(xcodeproj:, xcodeproj_target:)
96
+
97
+ xcodeproj.save
98
+ Core::Console::Logger.success(message: "The XCFramework was added to the target '#{target_name}'")
99
+ end
79
100
  end
80
101
  end
81
102
  end
@@ -0,0 +1,69 @@
1
+ require 'xcodeproj'
2
+ require_relative '../../globals/globals'
3
+ require_relative '../../utils/swift/swift'
4
+ require_relative '../../console/logger'
5
+
6
+ module SecureKeys
7
+ module Swift
8
+ module Xcodeproj
9
+ module_function
10
+
11
+ # Add the SecureKeys XCFramework to the Xcodeproj target build settings
12
+ # @param target_name [String] The target name to add the XCFramework
13
+ # @param configurations [Array<String>] The configurations to add the XCFramework
14
+ def add_framework_search_path(xcodeproj_target:, configurations: %w[Debug Release])
15
+ configurations.each do |config|
16
+ paths = ['$(inherited)', "$(SRCROOT)/#{xcframework_relative_path}"]
17
+ xcodeproj_target.build_settings(config)['FRAMEWORK_SEARCH_PATHS'] = paths
18
+ end
19
+ end
20
+
21
+ # Add the SecureKeys XCFramework to the Xcodeproj target build phases
22
+ # @param xcodeproj [Xcodeproj::Project] The Xcodeproj to add the XCFramework
23
+ # @param xcodeproj_target [Xcodeproj] The Xcodeproj target to add the XCFramework
24
+ def add_xcframework_to_build_phases(xcodeproj:, xcodeproj_target:)
25
+ Core::Console::Logger.crash!(message: "The xcodeproj #{xcodeproj} already have the #{XCFRAMEWORK_DIRECTORY}") if xcodeproj_has_secure_keys_xcframework?(xcodeproj:)
26
+ xcframework_reference = xcodeproj.frameworks_group.new_file(xcframework_relative_path)
27
+ xcodeproj_target.frameworks_build_phase.add_file_reference(xcframework_reference)
28
+ end
29
+
30
+ # Get the Xcodeproj target by target name
31
+ # @param xcodeproj [Xcodeproj::Project] The Xcodeproj to get the target
32
+ # @param target_name [String] The target name to get
33
+ # @return [Xcodeproj] The Xcodeproj target
34
+ # @raise [StandardError] If the target was not found
35
+ def xcodeproj_target_by_target_name(xcodeproj:, target_name:)
36
+ xcodeproj_target = xcodeproj.targets.find { |target| target.name.eql?(target_name) }
37
+ Core::Console::Logger.crash!(message: "The target #{target_name} was not found") if xcodeproj_target.nil?
38
+
39
+ xcodeproj_target
40
+ end
41
+
42
+ # Get the Xcodeproj
43
+ # @return [Xcodeproj] The Xcodeproj
44
+ def xcodeproj
45
+ ::Xcodeproj::Project.open(SecureKeys::Globals.xcodeproj_path)
46
+ end
47
+
48
+ # Get the XCFramework relative path
49
+ # @return [Pathname] The XCFramework relative path
50
+ def xcframework_relative_path
51
+ Pathname.new(SecureKeys::Globals.secure_keys_xcframework_path)
52
+ .relative_path_from(Pathname.new(SecureKeys::Globals.xcodeproj_path).dirname)
53
+ end
54
+
55
+ # Check if the Xcode project has the secure keys XCFramework
56
+ # @param xcodeproj [Xcodeproj::Project] The Xcode project
57
+ # @return [Bool] true if the Xcode project has the secure keys XCFramework
58
+ def xcodeproj_has_secure_keys_xcframework?(xcodeproj:)
59
+ xcodeproj.targets.any? do |target|
60
+ target.frameworks_build_phase.files.any? do |file|
61
+ return false if file.file_ref.nil?
62
+
63
+ file.file_ref.path.include?(SecureKeys::Globals.secure_keys_xcframework_path)
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
data/lib/version.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  module SecureKeys
4
- VERSION = '1.1.2'.freeze
4
+ VERSION = '1.1.3'.freeze
5
5
  SUMMARY = 'Secure Keys is a simple tool for managing your secret keys'.freeze
6
6
  DESCRIPTION = 'Secure Keys is a simple tool to manage your secret keys in your iOS project'.freeze
7
- HOMEPAGE_URI = 'https://github.com/DerianCordobaPerez/secure-keys-generator'.freeze
7
+ HOMEPAGE_URI = 'https://github.com/derian-cordoba/secure-keys'.freeze
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: secure-keys
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derian Córdoba
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-02-22 00:00:00.000000000 Z
11
+ date: 2025-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: colorize
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.1.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: digest
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,34 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: 2.10.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: logger
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.6.6
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.6.6
97
+ - !ruby/object:Gem::Dependency
98
+ name: open3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.2.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.2.1
69
111
  - !ruby/object:Gem::Dependency
70
112
  name: optparse
71
113
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +136,48 @@ dependencies:
94
136
  - - "~>"
95
137
  - !ruby/object:Gem::Version
96
138
  version: 1.0.2
139
+ - !ruby/object:Gem::Dependency
140
+ name: tty-screen
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.8.2
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.8.2
153
+ - !ruby/object:Gem::Dependency
154
+ name: xcodeproj
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 1.27.0
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 1.27.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: rspec
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 3.13.0
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 3.13.0
97
181
  - !ruby/object:Gem::Dependency
98
182
  name: rubocop
99
183
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +192,34 @@ dependencies:
108
192
  - - "~>"
109
193
  - !ruby/object:Gem::Version
110
194
  version: 1.71.2
195
+ - !ruby/object:Gem::Dependency
196
+ name: ruby-debug-ide
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: 0.7.5
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: 0.7.5
209
+ - !ruby/object:Gem::Dependency
210
+ name: simplecov
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: 0.22.0
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: 0.22.0
111
223
  description: Secure Keys is a simple tool to manage your secret keys in your iOS project
112
224
  email:
113
225
  - derianricardo451@gmail.com
@@ -118,6 +230,8 @@ extra_rdoc_files: []
118
230
  files:
119
231
  - "./lib/core/console/arguments/handler.rb"
120
232
  - "./lib/core/console/arguments/parser.rb"
233
+ - "./lib/core/console/logger.rb"
234
+ - "./lib/core/console/shell.rb"
121
235
  - "./lib/core/environment/ci.rb"
122
236
  - "./lib/core/environment/keychain.rb"
123
237
  - "./lib/core/globals/globals.rb"
@@ -126,19 +240,20 @@ files:
126
240
  - "./lib/core/utils/swift/swift.rb"
127
241
  - "./lib/core/utils/swift/writer.rb"
128
242
  - "./lib/core/utils/swift/xcframework.rb"
243
+ - "./lib/core/utils/swift/xcodeproj.rb"
129
244
  - "./lib/keys.rb"
130
245
  - "./lib/version.rb"
131
246
  - README.md
132
247
  - bin/secure-keys
133
- homepage: https://github.com/DerianCordobaPerez/secure-keys-generator
248
+ homepage: https://github.com/derian-cordoba/secure-keys
134
249
  licenses:
135
250
  - MIT
136
251
  metadata:
137
- bug_tracker_uri: https://github.com/DerianCordobaPerez/secure-keys-generator/issues
138
- documentation_uri: https://github.com/DerianCordobaPerez/secure-keys-generator/blob/main/README.md
139
- homepage_uri: https://github.com/DerianCordobaPerez/secure-keys-generator
140
- source_code_uri: https://github.com/DerianCordobaPerez/secure-keys-generator
141
- changelog_uri: https://github.com/DerianCordobaPerez/secure-keys-generator/releases
252
+ bug_tracker_uri: https://github.com/derian-cordoba/secure-keys/issues
253
+ documentation_uri: https://github.com/derian-cordoba/secure-keys/blob/main/README.md
254
+ homepage_uri: https://github.com/derian-cordoba/secure-keys
255
+ source_code_uri: https://github.com/derian-cordoba/secure-keys
256
+ changelog_uri: https://github.com/derian-cordoba/secure-keys/releases
142
257
  post_install_message:
143
258
  rdoc_options: []
144
259
  require_paths: