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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.githooks/pre-commit +15 -0
  3. data/.githooks/pre-push +21 -0
  4. data/.github/workflows/ci.yml +29 -0
  5. data/.gitignore +4 -0
  6. data/.rubocop.yml +55 -0
  7. data/.rubocop_todo.yml +126 -0
  8. data/CHANGELOG.md +96 -0
  9. data/Gemfile +5 -3
  10. data/Gemfile.lock +38 -8
  11. data/README.md +14 -16
  12. data/Rakefile +5 -3
  13. data/bin/console +4 -3
  14. data/bin/setup +3 -0
  15. data/certificate_.cer +0 -0
  16. data/exe/mysigner +19 -2
  17. data/iOS_App_Store_Profile.mobileprovision +1 -0
  18. data/iOS_Distribution_Certificate.cer +1 -0
  19. data/lib/mysigner/build/android_executor.rb +83 -63
  20. data/lib/mysigner/build/android_parser.rb +33 -40
  21. data/lib/mysigner/build/configurator.rb +17 -16
  22. data/lib/mysigner/build/detector.rb +39 -50
  23. data/lib/mysigner/build/error_analyzer.rb +70 -68
  24. data/lib/mysigner/build/executor.rb +30 -37
  25. data/lib/mysigner/build/parser.rb +18 -18
  26. data/lib/mysigner/cleanup/private_keys_purger.rb +41 -0
  27. data/lib/mysigner/cli/auth_commands.rb +771 -764
  28. data/lib/mysigner/cli/build_commands.rb +962 -796
  29. data/lib/mysigner/cli/concerns/actionable_suggestions.rb +208 -154
  30. data/lib/mysigner/cli/concerns/api_helpers.rb +46 -54
  31. data/lib/mysigner/cli/concerns/error_handlers.rb +247 -237
  32. data/lib/mysigner/cli/concerns/helpers.rb +44 -1
  33. data/lib/mysigner/cli/diagnostic_commands.rb +667 -636
  34. data/lib/mysigner/cli/resource_commands.rb +1153 -985
  35. data/lib/mysigner/cli/validate_commands.rb +25 -25
  36. data/lib/mysigner/cli.rb +11 -1
  37. data/lib/mysigner/client.rb +27 -19
  38. data/lib/mysigner/config.rb +161 -60
  39. data/lib/mysigner/export/exporter.rb +38 -37
  40. data/lib/mysigner/signing/certificate_checker.rb +18 -23
  41. data/lib/mysigner/signing/gradle_signing_injector.rb +67 -0
  42. data/lib/mysigner/signing/keystore_manager.rb +81 -61
  43. data/lib/mysigner/signing/validator.rb +38 -40
  44. data/lib/mysigner/signing/wizard.rb +329 -342
  45. data/lib/mysigner/upload/app_store_automation.rb +96 -49
  46. data/lib/mysigner/upload/app_store_submission.rb +87 -92
  47. data/lib/mysigner/upload/asc_rest_uploader.rb +119 -0
  48. data/lib/mysigner/upload/play_store_uploader.rb +164 -144
  49. data/lib/mysigner/upload/uploader.rb +136 -115
  50. data/lib/mysigner/version.rb +3 -1
  51. data/lib/mysigner.rb +13 -11
  52. data/mysigner.gemspec +36 -33
  53. data/profile_.mobileprovision +0 -0
  54. data/test_manual.rb +37 -36
  55. metadata +44 -17
  56. data/.DS_Store +0 -0
data/test_manual.rb CHANGED
@@ -1,28 +1,30 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  # Manual test script to verify Config and Client work
3
5
  # Run with: bundle exec ruby test_manual.rb
4
6
 
5
7
  require_relative 'lib/mysigner'
6
8
 
7
- puts "=" * 60
8
- puts "My Signer CLI - Manual Test"
9
- puts "=" * 60
9
+ puts '=' * 60
10
+ puts 'My Signer CLI - Manual Test'
11
+ puts '=' * 60
10
12
  puts
11
13
 
12
14
  # Test 1: Config Management
13
- puts "1. Testing Config Management"
14
- puts "-" * 60
15
+ puts '1. Testing Config Management'
16
+ puts '-' * 60
15
17
 
16
18
  config = Mysigner::Config.new
17
- puts "✅ Config instance created"
19
+ puts '✅ Config instance created'
18
20
 
19
21
  # Set some values
20
- config.api_url = "http://localhost:3000"
21
- config.user_email = "test@example.com"
22
+ config.api_url = 'http://localhost:3000'
23
+ config.user_email = 'test@example.com'
22
24
  config.current_organization_id = 1
23
- config.save_token_for_org(1, "Test Org", "test_token_12345678")
25
+ config.save_token_for_org(1, 'Test Org', 'test_token_12345678')
24
26
 
25
- puts "✅ Config values set:"
27
+ puts '✅ Config values set:'
26
28
  puts " - API URL: #{config.api_url}"
27
29
  puts " - User Email: #{config.user_email}"
28
30
  puts " - Current Token: #{config.display[:current_token]}"
@@ -34,69 +36,68 @@ puts "✅ Config saved to #{Mysigner::Config::CONFIG_FILE}"
34
36
 
35
37
  # Load config
36
38
  new_config = Mysigner::Config.new
37
- puts "✅ Config loaded from file"
39
+ puts '✅ Config loaded from file'
38
40
  puts " - API URL: #{new_config.api_url}"
39
41
  puts " - Valid?: #{new_config.valid?}"
40
42
 
41
43
  # Clean up
42
44
  new_config.clear
43
- puts "✅ Config cleared"
45
+ puts '✅ Config cleared'
44
46
  puts
45
47
 
46
48
  # Test 2: API Client (requires running API server)
47
- puts "2. Testing API Client"
48
- puts "-" * 60
49
+ puts '2. Testing API Client'
50
+ puts '-' * 60
49
51
 
50
52
  puts
51
- puts "⚠️ Note: To test the API client, you need:"
52
- puts " 1. My Signer API running at http://localhost:3000"
53
- puts " 2. A valid API token"
53
+ puts '⚠️ Note: To test the API client, you need:'
54
+ puts ' 1. My Signer API running at http://localhost:3000'
55
+ puts ' 2. A valid API token'
54
56
  puts
55
- puts "Example usage:"
57
+ puts 'Example usage:'
56
58
  puts
57
59
 
58
- puts "# Create client"
59
- puts "client = Mysigner::Client.new("
60
+ puts '# Create client'
61
+ puts 'client = Mysigner::Client.new('
60
62
  puts " api_url: 'http://localhost:3000',"
61
63
  puts " api_token: 'your_token_here'"
62
- puts ")"
64
+ puts ')'
63
65
  puts
64
66
 
65
- puts "# Test connection"
66
- puts "response = client.test_connection"
67
+ puts '# Test connection'
68
+ puts 'response = client.test_connection'
67
69
  puts "puts response[:data] # => { 'status' => 'ok', 'message' => '...' }"
68
70
  puts
69
71
 
70
- puts "# List organizations"
72
+ puts '# List organizations'
71
73
  puts "response = client.get('/api/v1/organizations')"
72
74
  puts "organizations = response[:data]['organizations']"
73
75
  puts
74
76
 
75
- puts "# List devices for org #1"
77
+ puts '# List devices for org #1'
76
78
  puts "response = client.get('/api/v1/organizations/1/devices')"
77
79
  puts "devices = response[:data]['devices']"
78
80
  puts
79
81
 
80
- puts "# Register a new device"
82
+ puts '# Register a new device'
81
83
  puts "response = client.post('/api/v1/organizations/1/devices', body: {"
82
84
  puts " name: 'Test iPhone',"
83
85
  puts " udid: '00008030-001A1B2C3D4E567F',"
84
86
  puts " platform: 'IOS'"
85
- puts "})"
87
+ puts '})'
86
88
  puts
87
89
 
88
- puts "# Error handling"
89
- puts "begin"
90
+ puts '# Error handling'
91
+ puts 'begin'
90
92
  puts " client.get('/api/v1/organizations/999') # Non-existent org"
91
- puts "rescue Mysigner::NotFoundError => e"
93
+ puts 'rescue Mysigner::NotFoundError => e'
92
94
  puts " puts \"Error: \#{e.message}\""
93
- puts "end"
95
+ puts 'end'
94
96
  puts
95
97
 
96
- puts "=" * 60
97
- puts "✅ All basic tests completed!"
98
- puts "=" * 60
98
+ puts '=' * 60
99
+ puts '✅ All basic tests completed!'
100
+ puts '=' * 60
99
101
  puts
100
- puts "To run automated tests: bundle exec rspec"
102
+ puts 'To run automated tests: bundle exec rspec'
101
103
  puts
102
-
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mysigner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jurgen Leka
@@ -10,19 +10,19 @@ cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: thor
13
+ name: base64
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '1.4'
18
+ version: '0.2'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '1.4'
25
+ version: '0.2'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: faraday
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -52,61 +52,61 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  version: '2.2'
54
54
  - !ruby/object:Gem::Dependency
55
- name: reline
55
+ name: plist
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '0.5'
60
+ version: '3.7'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.5'
67
+ version: '3.7'
68
68
  - !ruby/object:Gem::Dependency
69
- name: base64
69
+ name: reline
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.2'
74
+ version: '0.5'
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.2'
81
+ version: '0.5'
82
82
  - !ruby/object:Gem::Dependency
83
- name: xcodeproj
83
+ name: thor
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '1.27'
88
+ version: '1.4'
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '1.27'
95
+ version: '1.4'
96
96
  - !ruby/object:Gem::Dependency
97
- name: plist
97
+ name: xcodeproj
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '3.7'
102
+ version: '1.27'
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '3.7'
109
+ version: '1.27'
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: google-apis-androidpublisher_v3
112
112
  requirement: !ruby/object:Gem::Requirement
@@ -177,6 +177,20 @@ dependencies:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
179
  version: '3.0'
180
+ - !ruby/object:Gem::Dependency
181
+ name: rubocop
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '1.79'
187
+ type: :development
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '1.79'
180
194
  - !ruby/object:Gem::Dependency
181
195
  name: webmock
182
196
  requirement: !ruby/object:Gem::Requirement
@@ -202,11 +216,16 @@ executables:
202
216
  extensions: []
203
217
  extra_rdoc_files: []
204
218
  files:
205
- - ".DS_Store"
219
+ - ".githooks/pre-commit"
220
+ - ".githooks/pre-push"
221
+ - ".github/workflows/ci.yml"
206
222
  - ".gitignore"
207
223
  - ".rspec"
224
+ - ".rubocop.yml"
225
+ - ".rubocop_todo.yml"
208
226
  - ".ruby-version"
209
227
  - ".travis.yml"
228
+ - CHANGELOG.md
210
229
  - CODE_OF_CONDUCT.md
211
230
  - Gemfile
212
231
  - Gemfile.lock
@@ -216,7 +235,10 @@ files:
216
235
  - Rakefile
217
236
  - bin/console
218
237
  - bin/setup
238
+ - certificate_.cer
219
239
  - exe/mysigner
240
+ - iOS_App_Store_Profile.mobileprovision
241
+ - iOS_Distribution_Certificate.cer
220
242
  - lib/mysigner.rb
221
243
  - lib/mysigner/build/android_executor.rb
222
244
  - lib/mysigner/build/android_parser.rb
@@ -225,6 +247,7 @@ files:
225
247
  - lib/mysigner/build/error_analyzer.rb
226
248
  - lib/mysigner/build/executor.rb
227
249
  - lib/mysigner/build/parser.rb
250
+ - lib/mysigner/cleanup/private_keys_purger.rb
228
251
  - lib/mysigner/cli.rb
229
252
  - lib/mysigner/cli/auth_commands.rb
230
253
  - lib/mysigner/cli/build_commands.rb
@@ -239,15 +262,18 @@ files:
239
262
  - lib/mysigner/config.rb
240
263
  - lib/mysigner/export/exporter.rb
241
264
  - lib/mysigner/signing/certificate_checker.rb
265
+ - lib/mysigner/signing/gradle_signing_injector.rb
242
266
  - lib/mysigner/signing/keystore_manager.rb
243
267
  - lib/mysigner/signing/validator.rb
244
268
  - lib/mysigner/signing/wizard.rb
245
269
  - lib/mysigner/upload/app_store_automation.rb
246
270
  - lib/mysigner/upload/app_store_submission.rb
271
+ - lib/mysigner/upload/asc_rest_uploader.rb
247
272
  - lib/mysigner/upload/play_store_uploader.rb
248
273
  - lib/mysigner/upload/uploader.rb
249
274
  - lib/mysigner/version.rb
250
275
  - mysigner.gemspec
276
+ - profile_.mobileprovision
251
277
  - test_manual.rb
252
278
  homepage: https://mysigner.dev
253
279
  licenses:
@@ -257,6 +283,7 @@ metadata:
257
283
  homepage_uri: https://mysigner.dev
258
284
  changelog_uri: https://mysigner.dev/docs/changelog
259
285
  documentation_uri: https://mysigner.dev/docs/commands
286
+ rubygems_mfa_required: 'true'
260
287
  post_install_message: "\e[36m╔══════════════════════════════════════════════════════════════╗\e[0m\n\e[36m║
261
288
  \e[1m\U0001F680 Welcome to My Signer CLI\e[0m\e[36m ║\e[0m\n\e[36m╚══════════════════════════════════════════════════════════════╝\e[0m\n\n\e[32m✓\e[0m
262
289
  \ You're ready to automate iOS & Android code signing.\n\n\e[35mNext steps:\e[0m\n
data/.DS_Store DELETED
Binary file