Class: Fastlane::Actions::UnlockKeychainAction
- Inherits:
-
Fastlane::Action
- Object
- Fastlane::Action
- Fastlane::Actions::UnlockKeychainAction
- Defined in:
- fastlane/lib/fastlane/actions/unlock_keychain.rb
Constant Summary
Constants inherited from Fastlane::Action
Fastlane::Action::AVAILABLE_CATEGORIES, Fastlane::Action::RETURN_TYPES
Documentation collapse
- .authors ⇒ Object
- .available_options ⇒ Object
- .category ⇒ Object
- .description ⇒ Object
- .details ⇒ Object
- .example_code ⇒ Object
- .is_supported?(platform) ⇒ Boolean
Class Method Summary collapse
- .add_keychain_to_search_list(keychain_path) ⇒ Object
- .default_keychain(keychain_path) ⇒ Object
- .replace_keychain_in_search_list(keychain_path) ⇒ Object
- .run(params) ⇒ Object
Methods inherited from Fastlane::Action
action_name, author, deprecated_notes, lane_context, method_missing, other_action, output, return_type, return_value, sample_return_value, shell_out_should_use_bundle_exec?, step_text
Class Method Details
.add_keychain_to_search_list(keychain_path) ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'fastlane/lib/fastlane/actions/unlock_keychain.rb', line 33 def self.add_keychain_to_search_list(keychain_path) keychains = Fastlane::Actions.sh("security list-keychains -d user", log: false).shellsplit # add the keychain to the keychain list unless keychains.include?(keychain_path) keychains << keychain_path Fastlane::Actions.sh("security list-keychains -s #{keychains.shelljoin}", log: false) end end |
.authors ⇒ Object
96 97 98 |
# File 'fastlane/lib/fastlane/actions/unlock_keychain.rb', line 96 def self. ["xfreebird"] end |
.available_options ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'fastlane/lib/fastlane/actions/unlock_keychain.rb', line 70 def self. [ FastlaneCore::ConfigItem.new(key: :path, env_name: "FL_UNLOCK_KEYCHAIN_PATH", description: "Path to the keychain file", default_value: "login", optional: false), FastlaneCore::ConfigItem.new(key: :password, env_name: "FL_UNLOCK_KEYCHAIN_PASSWORD", sensitive: true, description: "Keychain password", optional: false), FastlaneCore::ConfigItem.new(key: :add_to_search_list, env_name: "FL_UNLOCK_KEYCHAIN_ADD_TO_SEARCH_LIST", description: "Add to keychain search list, valid values are true, false, :add, and :replace", skip_type_validation: true, # allow Boolean, Symbol default_value: true), FastlaneCore::ConfigItem.new(key: :set_default, env_name: "FL_UNLOCK_KEYCHAIN_SET_DEFAULT", description: "Set as default keychain", type: Boolean, default_value: false) ] end |
.category ⇒ Object
127 128 129 |
# File 'fastlane/lib/fastlane/actions/unlock_keychain.rb', line 127 def self.category :misc end |
.default_keychain(keychain_path) ⇒ Object
50 51 52 53 |
# File 'fastlane/lib/fastlane/actions/unlock_keychain.rb', line 50 def self.default_keychain(keychain_path) escaped_path = keychain_path.shellescape Fastlane::Actions.sh("security default-keychain -s #{escaped_path}", log: false) end |
.description ⇒ Object
59 60 61 |
# File 'fastlane/lib/fastlane/actions/unlock_keychain.rb', line 59 def self.description "Unlock a keychain" end |
.details ⇒ Object
63 64 65 66 67 68 |
# File 'fastlane/lib/fastlane/actions/unlock_keychain.rb', line 63 def self.details [ "Unlocks the given keychain file and adds it to the keychain search list.", "Keychains can be replaced with `add_to_search_list: :replace`." ].join("\n") end |
.example_code ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'fastlane/lib/fastlane/actions/unlock_keychain.rb', line 104 def self.example_code [ 'unlock_keychain( # Unlock an existing keychain and add it to the keychain search list path: "/path/to/KeychainName.keychain", password: "mysecret" )', 'unlock_keychain( # By default the keychain is added to the existing. To replace them with the selected keychain you may use `:replace` path: "/path/to/KeychainName.keychain", password: "mysecret", add_to_search_list: :replace # To only add a keychain use `true` or `:add`. )', 'unlock_keychain( # In addition, the keychain can be selected as a default keychain path: "/path/to/KeychainName.keychain", password: "mysecret", set_default: true )', 'unlock_keychain( # If the keychain file is located in the standard location `~/Library/Keychains`, then it is sufficient to provide the keychain file name, or file name with its suffix. path: "KeychainName", password: "mysecret" )' ] end |
.is_supported?(platform) ⇒ Boolean
100 101 102 |
# File 'fastlane/lib/fastlane/actions/unlock_keychain.rb', line 100 def self.is_supported?(platform) true end |
.replace_keychain_in_search_list(keychain_path) ⇒ Object
44 45 46 47 48 |
# File 'fastlane/lib/fastlane/actions/unlock_keychain.rb', line 44 def self.replace_keychain_in_search_list(keychain_path) Actions.lane_context[Actions::SharedValues::ORIGINAL_DEFAULT_KEYCHAIN] = Fastlane::Actions.sh("security default-keychain", log: false).strip escaped_path = keychain_path.shellescape Fastlane::Actions.sh("security list-keychains -s #{escaped_path}", log: false) end |
.run(params) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'fastlane/lib/fastlane/actions/unlock_keychain.rb', line 4 def self.run(params) keychain_path = FastlaneCore::Helper.keychain_path(params[:path]) add_to_search_list = params[:add_to_search_list] set_default = params[:set_default] commands = [] # add to search list if not already added if add_to_search_list == true || add_to_search_list == :add commands << add_keychain_to_search_list(keychain_path) elsif add_to_search_list == :replace commands << replace_keychain_in_search_list(keychain_path) end # set default keychain if set_default commands << default_keychain(keychain_path) end escaped_path = keychain_path.shellescape escaped_password = params[:password].shellescape # Log the full path, useful for troubleshooting UI.("Unlocking keychain at path: #{escaped_path}") # unlock given keychain and disable lock and timeout commands << Fastlane::Actions.sh("security unlock-keychain -p #{escaped_password} #{escaped_path}", log: false) commands << Fastlane::Actions.sh("security set-keychain-settings #{escaped_path}", log: false) commands end |