mysigner 0.1.1 → 0.1.3

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 (48) 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 +1 -0
  6. data/.rubocop.yml +55 -0
  7. data/.rubocop_todo.yml +112 -0
  8. data/CHANGELOG.md +96 -0
  9. data/Gemfile +5 -3
  10. data/Gemfile.lock +38 -8
  11. data/README.md +87 -17
  12. data/Rakefile +5 -3
  13. data/bin/console +4 -3
  14. data/bin/setup +3 -0
  15. data/exe/mysigner +2 -1
  16. data/lib/mysigner/build/android_executor.rb +46 -52
  17. data/lib/mysigner/build/android_parser.rb +33 -40
  18. data/lib/mysigner/build/configurator.rb +17 -16
  19. data/lib/mysigner/build/detector.rb +39 -50
  20. data/lib/mysigner/build/error_analyzer.rb +70 -68
  21. data/lib/mysigner/build/executor.rb +30 -37
  22. data/lib/mysigner/build/parser.rb +18 -18
  23. data/lib/mysigner/cli/auth_commands.rb +735 -752
  24. data/lib/mysigner/cli/build_commands.rb +697 -721
  25. data/lib/mysigner/cli/concerns/actionable_suggestions.rb +208 -154
  26. data/lib/mysigner/cli/concerns/api_helpers.rb +46 -54
  27. data/lib/mysigner/cli/concerns/error_handlers.rb +247 -237
  28. data/lib/mysigner/cli/concerns/helpers.rb +12 -1
  29. data/lib/mysigner/cli/diagnostic_commands.rb +659 -635
  30. data/lib/mysigner/cli/resource_commands.rb +1266 -822
  31. data/lib/mysigner/cli/validate_commands.rb +161 -0
  32. data/lib/mysigner/cli.rb +5 -1
  33. data/lib/mysigner/client.rb +27 -19
  34. data/lib/mysigner/config.rb +93 -56
  35. data/lib/mysigner/export/exporter.rb +32 -36
  36. data/lib/mysigner/signing/certificate_checker.rb +18 -23
  37. data/lib/mysigner/signing/keystore_manager.rb +34 -39
  38. data/lib/mysigner/signing/validator.rb +38 -40
  39. data/lib/mysigner/signing/wizard.rb +329 -342
  40. data/lib/mysigner/upload/app_store_automation.rb +51 -49
  41. data/lib/mysigner/upload/app_store_submission.rb +87 -92
  42. data/lib/mysigner/upload/play_store_uploader.rb +98 -115
  43. data/lib/mysigner/upload/uploader.rb +101 -109
  44. data/lib/mysigner/version.rb +3 -1
  45. data/lib/mysigner.rb +13 -11
  46. data/mysigner.gemspec +36 -33
  47. data/test_manual.rb +37 -36
  48. metadata +38 -16
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.1
4
+ version: 0.1.3
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
@@ -203,10 +217,16 @@ extensions: []
203
217
  extra_rdoc_files: []
204
218
  files:
205
219
  - ".DS_Store"
220
+ - ".githooks/pre-commit"
221
+ - ".githooks/pre-push"
222
+ - ".github/workflows/ci.yml"
206
223
  - ".gitignore"
207
224
  - ".rspec"
225
+ - ".rubocop.yml"
226
+ - ".rubocop_todo.yml"
208
227
  - ".ruby-version"
209
228
  - ".travis.yml"
229
+ - CHANGELOG.md
210
230
  - CODE_OF_CONDUCT.md
211
231
  - Gemfile
212
232
  - Gemfile.lock
@@ -234,6 +254,7 @@ files:
234
254
  - lib/mysigner/cli/concerns/helpers.rb
235
255
  - lib/mysigner/cli/diagnostic_commands.rb
236
256
  - lib/mysigner/cli/resource_commands.rb
257
+ - lib/mysigner/cli/validate_commands.rb
237
258
  - lib/mysigner/client.rb
238
259
  - lib/mysigner/config.rb
239
260
  - lib/mysigner/export/exporter.rb
@@ -256,6 +277,7 @@ metadata:
256
277
  homepage_uri: https://mysigner.dev
257
278
  changelog_uri: https://mysigner.dev/docs/changelog
258
279
  documentation_uri: https://mysigner.dev/docs/commands
280
+ rubygems_mfa_required: 'true'
259
281
  post_install_message: "\e[36m╔══════════════════════════════════════════════════════════════╗\e[0m\n\e[36m║
260
282
  \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
261
283
  \ You're ready to automate iOS & Android code signing.\n\n\e[35mNext steps:\e[0m\n