fastlane-plugin-hexsign 0.2.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 72686217f19a9f6e83bb472c6ad489655661687e7c988593d933b170f41c1af6
4
- data.tar.gz: 40f5283b313b32c6c1fba21fcef215182cfe090bb2819a0f22c4cbef9b9b6287
3
+ metadata.gz: f17f684819fe3e6e0b9d2d972ad9bff85f302efe7cabba4177d1059d110bfc17
4
+ data.tar.gz: e0060da7f20a7936f19d5b8f9de1b18de8b88d43dd8bcd182a32da4ceff56fac
5
5
  SHA512:
6
- metadata.gz: cea81d52799181396a155e49052cd5c607fa4f74c451a1bbadbaa69fc661ac71f482223fb337698a9f4401e7ce295947edce9f4e162f446c71c50f2a8a54aac8
7
- data.tar.gz: 2974f398c7d5c4fe72d8509ff3557c49c6abc1ce486de0ad1725db4bb2adf30f2a41b8d57752934fe9c456b2853477304a2806702d27e9e2037c0264fe877e0b
6
+ metadata.gz: e34fa388365f8cb1b649e1cf5d5be8c9aea20e0a769d6db2622266e1ca4a96410aa4c09c792ea4891389b9f87d4f80080ee1505669e0dd5efc48c39077ca4fa4
7
+ data.tar.gz: d0338cac4e02ae2fefc96d54c001fb95b2f1570cffa9def3cf8871db8a459c510c174ef0a536382c8589c3c58caaa5373d0d480b722178688199ebbb568f1773
data/README.md CHANGED
@@ -63,6 +63,7 @@ hexsign_certificates_download(
63
63
  | `id` | `HEXSIGN_CERTIFICATE_ID` | yes | Certificate ID |
64
64
  | `output_dir` | `HEXSIGN_CERTIFICATE_OUTPUT_DIR` | no | Output directory |
65
65
  | `filename` | `HEXSIGN_CERTIFICATE_FILENAME` | no | Base filename (no extension) |
66
+ | `keychain` | `HEXSIGN_KEYCHAIN` | no | macOS only — keychain to create and import the `.p12` into, ready for codesigning |
66
67
 
67
68
  ### `hexsign_profiles_download`
68
69
 
@@ -80,6 +81,7 @@ hexsign_profiles_download(
80
81
  | `id` | `HEXSIGN_PROFILE_ID` | yes | Provisioning profile ID |
81
82
  | `output_dir` | `HEXSIGN_PROFILE_OUTPUT_DIR` | no | Output directory |
82
83
  | `filename` | `HEXSIGN_PROFILE_FILENAME` | no | Filename (no extension) |
84
+ | `install` | `HEXSIGN_PROFILE_INSTALL` | no | macOS only — also install the profile where Xcode finds it |
83
85
 
84
86
  ### `hexsign_certificates_download_by_type`
85
87
 
@@ -102,6 +104,7 @@ pairs = hexsign_certificates_download_by_type(
102
104
  | `type` | `HEXSIGN_CERTIFICATE_TYPE` | yes | Apple cert type (e.g. `IOS_DISTRIBUTION`) |
103
105
  | `team_id` | `HEXSIGN_TEAM_ID` | yes | Apple Developer team id |
104
106
  | `output_dir` | `HEXSIGN_CERTIFICATE_OUTPUT_DIR` | no | Output directory |
107
+ | `keychain` | `HEXSIGN_KEYCHAIN` | no | macOS only — keychain to create and import every downloaded `.p12` into, ready for codesigning |
105
108
 
106
109
  ### `hexsign_profiles_download_by_bundle_id`
107
110
 
@@ -124,6 +127,7 @@ paths = hexsign_profiles_download_by_bundle_id(
124
127
  | `bundle_id` | `HEXSIGN_BUNDLE_ID` | yes | App bundle identifier (exact match) |
125
128
  | `team_id` | `HEXSIGN_TEAM_ID` | no | Apple Developer team id — scopes across linked accounts |
126
129
  | `output_dir` | `HEXSIGN_PROFILE_OUTPUT_DIR` | no | Output directory |
130
+ | `install` | `HEXSIGN_PROFILE_INSTALL` | no | macOS only — also install every downloaded profile where Xcode finds them |
127
131
 
128
132
  ## Example lane
129
133
 
@@ -10,6 +10,7 @@ module Fastlane
10
10
  args = ["certificates", "download", params[:id]]
11
11
  args.push("--output-dir", params[:output_dir]) if params[:output_dir]
12
12
  args.push("--filename", params[:filename]) if params[:filename]
13
+ args.push("--keychain", params[:keychain]) if params[:keychain]
13
14
 
14
15
  Helper::HexsignHelper.run(args).tap { UI.success("Downloaded certificate #{params[:id]}") }
15
16
  end
@@ -54,6 +55,13 @@ module Fastlane
54
55
  description: "Base filename (no extension) for the downloaded files",
55
56
  optional: true,
56
57
  type: String
58
+ ),
59
+ FastlaneCore::ConfigItem.new(
60
+ key: :keychain,
61
+ env_name: "HEXSIGN_KEYCHAIN",
62
+ description: "macOS only: create this keychain and import the downloaded .p12 into it, ready for codesigning",
63
+ optional: true,
64
+ type: String
57
65
  )
58
66
  ]
59
67
  end
@@ -64,7 +72,8 @@ module Fastlane
64
72
 
65
73
  def self.example_code
66
74
  [
67
- 'hexsign_certificates_download(id: "cert-abc123", output_dir: "build/sign")'
75
+ 'hexsign_certificates_download(id: "cert-abc123", output_dir: "build/sign")',
76
+ 'hexsign_certificates_download(id: "cert-abc123", keychain: "/tmp/hexsign-ci.keychain-db")'
68
77
  ]
69
78
  end
70
79
 
@@ -13,6 +13,7 @@ module Fastlane
13
13
  "--team-id", params[:team_id]
14
14
  ]
15
15
  args.push("--output-dir", params[:output_dir]) if params[:output_dir]
16
+ args.push("--keychain", params[:keychain]) if params[:keychain]
16
17
 
17
18
  stdout = Helper::HexsignHelper.run(args)
18
19
  pairs = parse_stdout(stdout)
@@ -22,9 +23,12 @@ module Fastlane
22
23
  end
23
24
 
24
25
  # The CLI prints two lines per certificate: .p12 path then .password path.
26
+ # With --keychain it also prints a trailing "imported N certificate(s)…"
27
+ # summary line, which is dropped by keeping only file-path lines.
25
28
  # Returns [{ p12: "...", password: "..." }, ...].
26
29
  def self.parse_stdout(stdout)
27
30
  lines = stdout.split("\n").map(&:strip).reject(&:empty?)
31
+ lines = lines.select { |line| line.end_with?(".p12", ".password") }
28
32
  pairs = []
29
33
  lines.each_slice(2) do |p12, password|
30
34
  pairs << { p12: p12, password: password }
@@ -82,6 +86,13 @@ module Fastlane
82
86
  description: "Directory to write the .p12 and .password files into",
83
87
  optional: true,
84
88
  type: String
89
+ ),
90
+ FastlaneCore::ConfigItem.new(
91
+ key: :keychain,
92
+ env_name: "HEXSIGN_KEYCHAIN",
93
+ description: "macOS only: create this keychain and import every downloaded .p12 into it, ready for codesigning",
94
+ optional: true,
95
+ type: String
85
96
  )
86
97
  ]
87
98
  end
@@ -10,6 +10,7 @@ module Fastlane
10
10
  args = ["profiles", "download", params[:id]]
11
11
  args.push("--output-dir", params[:output_dir]) if params[:output_dir]
12
12
  args.push("--filename", params[:filename]) if params[:filename]
13
+ args.push("--install") if params[:install]
13
14
 
14
15
  Helper::HexsignHelper.run(args).tap { UI.success("Downloaded provisioning profile #{params[:id]}") }
15
16
  end
@@ -54,6 +55,14 @@ module Fastlane
54
55
  description: "Filename (no extension) for the downloaded profile",
55
56
  optional: true,
56
57
  type: String
58
+ ),
59
+ FastlaneCore::ConfigItem.new(
60
+ key: :install,
61
+ env_name: "HEXSIGN_PROFILE_INSTALL",
62
+ description: "macOS only: also install the profile into ~/Library/MobileDevice/Provisioning Profiles, where Xcode finds it",
63
+ optional: true,
64
+ type: Boolean,
65
+ default_value: false
57
66
  )
58
67
  ]
59
68
  end
@@ -64,7 +73,8 @@ module Fastlane
64
73
 
65
74
  def self.example_code
66
75
  [
67
- 'hexsign_profiles_download(id: "prof-xyz789", output_dir: "build/sign")'
76
+ 'hexsign_profiles_download(id: "prof-xyz789", output_dir: "build/sign")',
77
+ 'hexsign_profiles_download(id: "prof-xyz789", install: true)'
68
78
  ]
69
79
  end
70
80
 
@@ -10,9 +10,13 @@ module Fastlane
10
10
  args = ["profiles", "download", "--bundle-id", params[:bundle_id]]
11
11
  args.push("--team-id", params[:team_id]) if params[:team_id]
12
12
  args.push("--output-dir", params[:output_dir]) if params[:output_dir]
13
+ args.push("--install") if params[:install]
13
14
 
14
15
  stdout = Helper::HexsignHelper.run(args)
16
+ # With --install the CLI also prints "installed <name> -> <path>" lines;
17
+ # keep only the downloaded-file paths.
15
18
  paths = stdout.split("\n").map(&:strip).reject(&:empty?)
19
+ .reject { |line| line.start_with?("installed ") }
16
20
 
17
21
  UI.success("Downloaded #{paths.size} provisioning profile(s) for bundle #{params[:bundle_id]}")
18
22
  paths
@@ -65,6 +69,14 @@ module Fastlane
65
69
  description: "Directory to write the .mobileprovision files into",
66
70
  optional: true,
67
71
  type: String
72
+ ),
73
+ FastlaneCore::ConfigItem.new(
74
+ key: :install,
75
+ env_name: "HEXSIGN_PROFILE_INSTALL",
76
+ description: "macOS only: also install every downloaded profile into the directory Xcode reads",
77
+ optional: true,
78
+ type: Boolean,
79
+ default_value: false
68
80
  )
69
81
  ]
70
82
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Fastlane
4
4
  module Hexsign
5
- VERSION = "0.2.0"
5
+ VERSION = "0.3.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-hexsign
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - HexSign
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-05-13 00:00:00.000000000 Z
11
+ date: 2026-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fastlane