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 +4 -4
- data/README.md +4 -0
- data/lib/fastlane/plugin/hexsign/actions/hexsign_certificates_download.rb +10 -1
- data/lib/fastlane/plugin/hexsign/actions/hexsign_certificates_download_by_type.rb +11 -0
- data/lib/fastlane/plugin/hexsign/actions/hexsign_profiles_download.rb +11 -1
- data/lib/fastlane/plugin/hexsign/actions/hexsign_profiles_download_by_bundle_id.rb +12 -0
- data/lib/fastlane/plugin/hexsign/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f17f684819fe3e6e0b9d2d972ad9bff85f302efe7cabba4177d1059d110bfc17
|
|
4
|
+
data.tar.gz: e0060da7f20a7936f19d5b8f9de1b18de8b88d43dd8bcd182a32da4ceff56fac
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
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.
|
|
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-
|
|
11
|
+
date: 2026-05-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: fastlane
|