mysigner 0.1.2 → 0.1.4
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/.githooks/pre-commit +15 -0
- data/.githooks/pre-push +21 -0
- data/.github/workflows/ci.yml +29 -0
- data/.gitignore +4 -0
- data/.rubocop.yml +55 -0
- data/.rubocop_todo.yml +126 -0
- data/CHANGELOG.md +96 -0
- data/Gemfile +5 -3
- data/Gemfile.lock +38 -8
- data/README.md +14 -16
- data/Rakefile +5 -3
- data/bin/console +4 -3
- data/bin/setup +3 -0
- data/certificate_.cer +0 -0
- data/exe/mysigner +19 -2
- data/iOS_App_Store_Profile.mobileprovision +1 -0
- data/iOS_Distribution_Certificate.cer +1 -0
- data/lib/mysigner/build/android_executor.rb +83 -63
- data/lib/mysigner/build/android_parser.rb +33 -40
- data/lib/mysigner/build/configurator.rb +17 -16
- data/lib/mysigner/build/detector.rb +39 -50
- data/lib/mysigner/build/error_analyzer.rb +70 -68
- data/lib/mysigner/build/executor.rb +30 -37
- data/lib/mysigner/build/parser.rb +18 -18
- data/lib/mysigner/cleanup/private_keys_purger.rb +41 -0
- data/lib/mysigner/cli/auth_commands.rb +771 -764
- data/lib/mysigner/cli/build_commands.rb +962 -796
- data/lib/mysigner/cli/concerns/actionable_suggestions.rb +208 -154
- data/lib/mysigner/cli/concerns/api_helpers.rb +46 -54
- data/lib/mysigner/cli/concerns/error_handlers.rb +247 -237
- data/lib/mysigner/cli/concerns/helpers.rb +44 -1
- data/lib/mysigner/cli/diagnostic_commands.rb +667 -636
- data/lib/mysigner/cli/resource_commands.rb +1153 -985
- data/lib/mysigner/cli/validate_commands.rb +25 -25
- data/lib/mysigner/cli.rb +11 -1
- data/lib/mysigner/client.rb +27 -19
- data/lib/mysigner/config.rb +161 -60
- data/lib/mysigner/export/exporter.rb +38 -37
- data/lib/mysigner/signing/certificate_checker.rb +18 -23
- data/lib/mysigner/signing/gradle_signing_injector.rb +67 -0
- data/lib/mysigner/signing/keystore_manager.rb +81 -61
- data/lib/mysigner/signing/validator.rb +38 -40
- data/lib/mysigner/signing/wizard.rb +329 -342
- data/lib/mysigner/upload/app_store_automation.rb +96 -49
- data/lib/mysigner/upload/app_store_submission.rb +87 -92
- data/lib/mysigner/upload/asc_rest_uploader.rb +119 -0
- data/lib/mysigner/upload/play_store_uploader.rb +164 -144
- data/lib/mysigner/upload/uploader.rb +136 -115
- data/lib/mysigner/version.rb +3 -1
- data/lib/mysigner.rb +13 -11
- data/mysigner.gemspec +36 -33
- data/profile_.mobileprovision +0 -0
- data/test_manual.rb +37 -36
- metadata +44 -17
- data/.DS_Store +0 -0
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Mysigner
|
|
2
4
|
class CLI < Thor
|
|
3
5
|
module Concerns
|
|
4
6
|
module Helpers
|
|
5
7
|
# Helper for timing operations
|
|
6
|
-
def with_timing(
|
|
8
|
+
def with_timing(_label)
|
|
7
9
|
start = Time.now
|
|
8
10
|
result = yield
|
|
9
11
|
duration = Time.now - start
|
|
@@ -34,11 +36,52 @@ module Mysigner
|
|
|
34
36
|
end
|
|
35
37
|
end
|
|
36
38
|
|
|
39
|
+
# Client-side UDID validity check for iOS devices. Matches the two
|
|
40
|
+
# formats Apple uses: 25-character alphanumeric (older devices pre-
|
|
41
|
+
# iPhone X) and 40-character hex, optionally with a single dash after
|
|
42
|
+
# the first 8 chars (newer). Also rejects obviously synthetic values
|
|
43
|
+
# (all zeros, single-character repeats) that Apple's dev-portal
|
|
44
|
+
# sandbox has been known to accept even though they can never match
|
|
45
|
+
# a real device.
|
|
46
|
+
def valid_ios_udid?(udid)
|
|
47
|
+
return false if udid.nil? || udid.strip.empty?
|
|
48
|
+
|
|
49
|
+
normalized = udid.strip.upcase
|
|
50
|
+
|
|
51
|
+
# 25-char legacy UDID: alphanumeric
|
|
52
|
+
legacy = normalized.match?(/\A[0-9A-F]{25}\z/)
|
|
53
|
+
|
|
54
|
+
# 40-char modern UDID: hex, optional dash after first 8 chars
|
|
55
|
+
modern_plain = normalized.match?(/\A[0-9A-F]{40}\z/)
|
|
56
|
+
modern_dashed = normalized.match?(/\A[0-9A-F]{8}-[0-9A-F]{16}\z/) # 8-16 form some tools emit (older spec)
|
|
57
|
+
modern_full_dashed = normalized.match?(/\A[0-9A-F]{8}-[0-9A-F]{32}\z/) # 8-32 (what xcrun outputs)
|
|
58
|
+
|
|
59
|
+
return false unless legacy || modern_plain || modern_dashed || modern_full_dashed
|
|
60
|
+
|
|
61
|
+
hex_only = normalized.delete('-')
|
|
62
|
+
# Reject trivially synthetic UDIDs. A real UDID has at least 4
|
|
63
|
+
# distinct hex characters among its 25/40 positions; "000…" or
|
|
64
|
+
# "AAAA…" or "012345…" style sequences flunk that.
|
|
65
|
+
distinct = hex_only.chars.uniq.size
|
|
66
|
+
return false if distinct < 4
|
|
67
|
+
|
|
68
|
+
true
|
|
69
|
+
end
|
|
70
|
+
|
|
37
71
|
def load_config
|
|
72
|
+
# CI/CD mode: prefer environment variables when set
|
|
73
|
+
return Config.from_env if Config.env_configured?
|
|
74
|
+
|
|
38
75
|
config = Config.new
|
|
39
76
|
|
|
40
77
|
unless config.exists?
|
|
41
78
|
error "Not logged in. Run 'mysigner login' first."
|
|
79
|
+
say ''
|
|
80
|
+
say 'Tip: For CI/CD, set these environment variables instead:', :yellow
|
|
81
|
+
say ' export MYSIGNER_API_TOKEN=your_token', :yellow
|
|
82
|
+
say ' export MYSIGNER_ORG_ID=your_org_id', :yellow
|
|
83
|
+
say ' export MYSIGNER_API_URL=https://mysigner.dev # optional', :yellow
|
|
84
|
+
say ' export MYSIGNER_EMAIL=you@example.com # optional', :yellow
|
|
42
85
|
exit 1
|
|
43
86
|
end
|
|
44
87
|
|