pantograph 0.1.15 → 0.1.16

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: f3aaf63f4f502ed686b74bbf229d968123d9314cf79cbcf8ddd21d7eee6711f8
4
- data.tar.gz: fd29fd8ebba2bb912cc723022dd16326e91db6993e0c8060f112b14b6cf0fce0
3
+ metadata.gz: c12d64adbf837496ad26a22ba215fdf8d91bdf953b9c9c6711291e8ec24f4104
4
+ data.tar.gz: d23124809c14b8f1158ffee89b93d96582e227a5bb0d2a54648a9dff34d9165f
5
5
  SHA512:
6
- metadata.gz: a87ad0772ab91d607b4ee1d5ad915c6b58adcc7b0854de80ebfa45085d00ae41b43a5be84acc141bc9a9c2f69c9eef8aae0dd8f331bd9db1f328745fcd0aff6a
7
- data.tar.gz: b2e1e20f381ec260708b069fada78968b74bc31638a13979a58761622326fb565acff10387bde640a977cbbcd860ad40f3e0863e558389586fdb097fae50cc4d
6
+ metadata.gz: fc1354f63c5b01671f8d068a9db8d1e2f5e0106b3e56dd8eb667a0eda49bd6cf440c1aad0701a6dfa486c3ca664cccfec33d3b5c4e02b5213186f00a0a4077b6
7
+ data.tar.gz: aca0855580638f0905d141153634082b826fbe408132d5cf1910572262e6b15cf739587e62715e8543140c9c4997adf1915ce39aecbb10177f90ef2c76583cc3
data/README.md CHANGED
@@ -13,7 +13,7 @@
13
13
  [![Build Status](https://img.shields.io/circleci/project/github/johnknapprs/pantograph/master.svg)](https://circleci.com/gh/johnknapprs/pantograph)
14
14
  [![PRs welcome!](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/johnknapprs/pantograph/blob/master/CONTRIBUTING.md)
15
15
 
16
- _pantograph_ is a tool for iOS and Android developers to automate tedious tasks like generating screenshots, dealing with provisioning profiles, and releasing your application.
16
+ _pantograph_ is a tool for developers to automate tedious tasks
17
17
 
18
18
  <hr />
19
19
  <h2 align="center">
@@ -58,7 +58,7 @@ module Pantograph
58
58
  def self.output
59
59
  # Return the keys you provide on the shared area
60
60
  # [
61
- # ['IPA_OUTPUT_PATH', 'The path to the newly generated ipa file']
61
+ # ['NUMBER_OF_COMMITS', 'The path to the newly generated ipa file']
62
62
  # ]
63
63
  nil
64
64
  end
@@ -0,0 +1,147 @@
1
+ module Pantograph
2
+ module Actions
3
+ class EnsureNoDebugCodeAction < Action
4
+ def self.run(params)
5
+ command = "grep -RE '#{params[:text]}' '#{File.absolute_path(params[:path])}'"
6
+
7
+ extensions = []
8
+ extensions << params[:extension] unless params[:extension].nil?
9
+
10
+ if params[:extensions]
11
+ params[:extensions].each do |extension|
12
+ extension.delete!('.') if extension.include?(".")
13
+ extensions << extension
14
+ end
15
+ end
16
+
17
+ if extensions.count > 1
18
+ command << " --include=\\*.{#{extensions.join(',')}}"
19
+ elsif extensions.count > 0
20
+ command << " --include=\\*.#{extensions.join(',')}"
21
+ end
22
+
23
+ command << " --exclude #{params[:exclude]}" if params[:exclude]
24
+
25
+ if params[:exclude_dirs]
26
+ params[:exclude_dirs].each do |dir|
27
+ command << " --exclude-dir #{dir.shellescape}"
28
+ end
29
+ end
30
+
31
+ return command if Helper.test?
32
+
33
+ UI.important(command)
34
+ results = `#{command}` # we don't use `sh` as the return code of grep is wrong for some reason
35
+
36
+ # Example Output
37
+ # ./Pantograph.gemspec: spec.add_development_dependency 'my_word'
38
+ # ./Gemfile.lock: my_word (0.10.1)
39
+
40
+ found = []
41
+ results.split("\n").each do |current_raw|
42
+ found << current_raw.strip
43
+ end
44
+
45
+ UI.user_error!("Found debug code '#{params[:text]}': \n\n#{found.join("\n")}") if found.count > 0
46
+ UI.message("No debug code found in code base 🐛")
47
+ end
48
+
49
+ #####################################################
50
+ # @!group Documentation
51
+ #####################################################
52
+
53
+ def self.description
54
+ "Ensures the given text is nowhere in the code base"
55
+ end
56
+
57
+ def self.details
58
+ [
59
+ "You don't want any debug code to slip into production.",
60
+ "This can be used to check if there is any debug code still in your codebase or if you have things like `// TO DO` or similar."
61
+ ].join("\n")
62
+ end
63
+
64
+ def self.available_options
65
+ [
66
+ PantographCore::ConfigItem.new(
67
+ key: :text,
68
+ env_name: "FL_ENSURE_NO_DEBUG_CODE_TEXT",
69
+ description: "The text that must not be in the code base"
70
+ ),
71
+ PantographCore::ConfigItem.new(
72
+ key: :path,
73
+ env_name: "FL_ENSURE_NO_DEBUG_CODE_PATH",
74
+ description: "The directory containing all the source files",
75
+ default_value: ".",
76
+ verify_block: proc do |value|
77
+ UI.user_error!("Couldn't find the folder at '#{File.absolute_path(value)}'") unless File.directory?(value)
78
+ end
79
+ ),
80
+ PantographCore::ConfigItem.new(
81
+ key: :extension,
82
+ env_name: "FL_ENSURE_NO_DEBUG_CODE_EXTENSION",
83
+ description: "The extension that should be searched for",
84
+ optional: true,
85
+ verify_block: proc do |value|
86
+ value.delete!('.') if value.include?(".")
87
+ end
88
+ ),
89
+ PantographCore::ConfigItem.new(
90
+ key: :extensions,
91
+ env_name: "FL_ENSURE_NO_DEBUG_CODE_EXTENSIONS",
92
+ description: "An array of file extensions that should be searched for",
93
+ optional: true,
94
+ is_string: false
95
+ ),
96
+ PantographCore::ConfigItem.new(
97
+ key: :exclude,
98
+ env_name: "FL_ENSURE_NO_DEBUG_CODE_EXCLUDE",
99
+ description: "Exclude a certain pattern from the search",
100
+ optional: true,
101
+ is_string: true
102
+ ),
103
+ PantographCore::ConfigItem.new(
104
+ key: :exclude_dirs,
105
+ env_name: "FL_ENSURE_NO_DEBUG_CODE_EXCLUDE_DIRS",
106
+ description: "An array of dirs that should not be included in the search",
107
+ optional: true,
108
+ type: Array,
109
+ is_string: false
110
+ )
111
+ ]
112
+ end
113
+
114
+ def self.output
115
+ []
116
+ end
117
+
118
+ def self.authors
119
+ ['KrauseFx']
120
+ end
121
+
122
+ def self.example_code
123
+ [
124
+ 'ensure_no_debug_code(text: "// TODO")',
125
+ 'ensure_no_debug_code(text: "Log.v",
126
+ extension: "java")',
127
+ 'ensure_no_debug_code(text: "NSLog",
128
+ path: "./lib",
129
+ extension: "m")',
130
+ 'ensure_no_debug_code(text: "(^#define DEBUG|NSLog)",
131
+ path: "./lib",
132
+ extension: "m")',
133
+ 'ensure_no_debug_code(text: "<<<<<<",
134
+ extensions: ["m", "swift", "java"])'
135
+ ]
136
+ end
137
+
138
+ def self.category
139
+ :misc
140
+ end
141
+
142
+ def self.is_supported?(platform)
143
+ true
144
+ end
145
+ end
146
+ end
147
+ end
@@ -88,7 +88,7 @@ module Pantograph
88
88
  url: "https://bugs.yourdomain.com",
89
89
  username: "Your username",
90
90
  password: "Your password",
91
- ticket_id: "Ticket ID, i.e. IOS-123",
91
+ ticket_id: "Ticket ID, i.e. APP-123",
92
92
  comment_text: "Text to post as a comment"
93
93
  )',
94
94
  'jira(
@@ -96,7 +96,7 @@ module Pantograph
96
96
  context_path: "/jira",
97
97
  username: "Your username",
98
98
  password: "Your password",
99
- ticket_id: "Ticket ID, i.e. IOS-123",
99
+ ticket_id: "Ticket ID, i.e. APP-123",
100
100
  comment_text: "Text to post as a comment"
101
101
  )'
102
102
  ]
@@ -48,7 +48,7 @@ module Pantograph
48
48
  def self.example_code
49
49
  [
50
50
  'lane_context[:BUILD_NUMBER]',
51
- 'lane_context[SharedValues::IPA_OUTPUT_PATH]'
51
+ 'lane_context[SharedValues::NUMBER_OF_COMMITS]'
52
52
  ]
53
53
  end
54
54
 
@@ -32,7 +32,6 @@ module Pantograph
32
32
  def self.example_code
33
33
  [
34
34
  'commit = last_git_commit
35
- crashlytics(notes: commit[:message]) # message of commit
36
35
  author = commit[:author] # author of the commit
37
36
  author_email = commit[:author_email] # email of the author of the commit
38
37
  hash = commit[:commit_hash] # long sha of commit
@@ -47,7 +47,7 @@ module Pantograph
47
47
 
48
48
  def self.output
49
49
  [
50
- 'NUMBER_OF_COMMITS', 'Total number of git commits'
50
+ ['NUMBER_OF_COMMITS', 'Total number of git commits']
51
51
  ]
52
52
  end
53
53
 
@@ -66,7 +66,7 @@ module Pantograph
66
66
  ',
67
67
  '
68
68
  build_number = number_of_commits(all: true)
69
- increment_build_number(build_number: build_number)
69
+ puts build_number
70
70
  '
71
71
  ]
72
72
  end
@@ -108,7 +108,7 @@ module Pantograph
108
108
  multi_line_end_keyword: "END"
109
109
  )
110
110
 
111
- crashlytics(notes: changelog)'
111
+ puts changelog'
112
112
  ]
113
113
  end
114
114
 
@@ -108,7 +108,7 @@ module Pantograph
108
108
  multi_line_end_keyword: "END"
109
109
  )
110
110
 
111
- crashlytics(notes: changelog)'
111
+ sh("echo #{changelog}")'
112
112
  ]
113
113
  end
114
114
 
@@ -49,7 +49,7 @@ module Pantograph
49
49
  end
50
50
 
51
51
  def self.details
52
- "Print an ascii Rocket :rocket:. Useful after using _crashlytics_ or _pilot_ to indicate that your new build has been shipped to outer-space."
52
+ "Print an ascii Rocket :rocket:. Useful to indicate that your new build has been shipped to outer-space."
53
53
  end
54
54
 
55
55
  def self.available_options
@@ -99,7 +99,7 @@ module Pantograph
99
99
  PantographCore::ConfigItem.new(key: :username,
100
100
  env_name: 'SLACK_USERNAME',
101
101
  description: "Overrides the webhook's username property if use_webhook_configured_username_and_icon is false",
102
- default_value: 'pantograph',
102
+ default_value: 'pantograph_bot',
103
103
  type: String,
104
104
  optional: true),
105
105
  PantographCore::ConfigItem.new(key: :icon_url,
@@ -112,7 +112,7 @@ module Pantograph
112
112
  c.syntax = 'pantograph init'
113
113
  c.description = 'Helps you with your initial pantograph setup'
114
114
 
115
- c.option('-u STRING', '--user STRING', String, 'iOS projects only: Your Apple ID')
115
+ # c.option('-u STRING', '--user STRING', String, 'Provide a username')
116
116
 
117
117
  c.action do |args, options|
118
118
  Pantograph::Setup.start
@@ -44,7 +44,7 @@ module Pantograph
44
44
  output << ""
45
45
  end
46
46
 
47
- output << "This README.md is auto-generated and will be re-generated every time [pantograph](https://pantograph.tools) is run."
47
+ output << "This README.md is auto-generated and will be re-generated every time [_pantograph_](https://pantograph.tools) is run."
48
48
  output << "More information about pantograph can be found on [pantograph.tools](https://pantograph.tools)."
49
49
  output << "The documentation of pantograph can be found on [johnknapprs.github.io/pantograph](https://johnknapprs.github.io/pantograph)."
50
50
  output << ""
@@ -49,4 +49,4 @@ For more information about how the `pantograph` plugin system works, check out t
49
49
 
50
50
  ## About _pantograph_
51
51
 
52
- _pantograph_ is the easiest way to automate beta deployments and releases for your iOS and Android apps. To learn more, check out [pantograph.tools](https://pantograph.tools).
52
+ _pantograph_ is the easiest way to automate your apps. To learn more, check out [pantograph.tools](https://pantograph.tools).
@@ -1,5 +1,5 @@
1
1
  module Pantograph
2
- VERSION = '0.1.15'.freeze
2
+ VERSION = '0.1.16'.freeze
3
3
  SUMMARY = 'Another way to automate your apps'
4
4
  DESCRIPTION = 'A way to automate your apps, forked from Fastlane'.freeze
5
5
  RUBOCOP_REQUIREMENT = '0.49.1'.freeze
@@ -1,7 +1,6 @@
1
1
  require 'pantograph_core'
2
2
 
3
3
  require 'pantograph/version'
4
- require 'pantograph/features'
5
4
  require 'pantograph/shells'
6
5
  require 'pantograph/tools'
7
6
  require 'pantograph/documentation/actions_list'
@@ -4,29 +4,16 @@ require_relative 'pantograph_core/core_ext/string'
4
4
  require_relative 'pantograph_core/core_ext/shellwords'
5
5
 
6
6
  require_relative 'pantograph_core/env'
7
- require_relative 'pantograph_core/feature/feature'
8
- require_relative 'pantograph_core/features'
9
7
  require_relative 'pantograph_core/helper'
10
8
  require_relative 'pantograph_core/configuration/configuration'
11
9
  require_relative 'pantograph_core/update_checker/update_checker'
12
- require_relative 'pantograph_core/languages'
13
- # require_relative 'pantograph_core/cert_checker'
14
- # require_relative 'pantograph_core/ipa_file_analyser'
15
- # require_relative 'pantograph_core/itunes_transporter'
16
- # require_relative 'pantograph_core/provisioning_profile'
17
- # require_relative 'pantograph_core/pkg_file_analyser'
18
- # require_relative 'pantograph_core/pkg_upload_package_builder'
19
10
  require_relative 'pantograph_core/command_executor'
20
- # require_relative 'pantograph_core/ipa_upload_package_builder'
21
11
  require_relative 'pantograph_core/print_table'
22
- # require_relative 'pantograph_core/project'
23
- # require_relative 'pantograph_core/device_manager'
24
12
  require_relative 'pantograph_core/ui/ui'
25
13
  require_relative 'pantograph_core/pantograph_folder'
26
14
  require_relative 'pantograph_core/keychain_importer'
27
15
  require_relative 'pantograph_core/swag'
28
16
  require_relative 'pantograph_core/ui/errors'
29
- require_relative 'pantograph_core/test_parser'
30
17
  require_relative 'pantograph_core/analytics/action_completion_context'
31
18
  require_relative 'pantograph_core/analytics/action_launch_context'
32
19
  require_relative 'pantograph_core/analytics/analytics_event_builder'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pantograph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Knapp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-13 00:00:00.000000000 Z
11
+ date: 2020-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slack-notifier
@@ -90,20 +90,6 @@ dependencies:
90
90
  - - "<"
91
91
  - !ruby/object:Gem::Version
92
92
  version: 3.0.0
93
- - !ruby/object:Gem::Dependency
94
- name: multipart-post
95
- requirement: !ruby/object:Gem::Requirement
96
- requirements:
97
- - - "~>"
98
- - !ruby/object:Gem::Version
99
- version: 2.0.0
100
- type: :runtime
101
- prerelease: false
102
- version_requirements: !ruby/object:Gem::Requirement
103
- requirements:
104
- - - "~>"
105
- - !ruby/object:Gem::Version
106
- version: 2.0.0
107
93
  - !ruby/object:Gem::Dependency
108
94
  name: word_wrap
109
95
  requirement: !ruby/object:Gem::Requirement
@@ -118,20 +104,6 @@ dependencies:
118
104
  - - "~>"
119
105
  - !ruby/object:Gem::Version
120
106
  version: 1.0.0
121
- - !ruby/object:Gem::Dependency
122
- name: public_suffix
123
- requirement: !ruby/object:Gem::Requirement
124
- requirements:
125
- - - "~>"
126
- - !ruby/object:Gem::Version
127
- version: 2.0.0
128
- type: :runtime
129
- prerelease: false
130
- version_requirements: !ruby/object:Gem::Requirement
131
- requirements:
132
- - - "~>"
133
- - !ruby/object:Gem::Version
134
- version: 2.0.0
135
107
  - !ruby/object:Gem::Dependency
136
108
  name: danger
137
109
  requirement: !ruby/object:Gem::Requirement
@@ -186,26 +158,6 @@ dependencies:
186
158
  - - "<"
187
159
  - !ruby/object:Gem::Version
188
160
  version: 1.0.0
189
- - !ruby/object:Gem::Dependency
190
- name: babosa
191
- requirement: !ruby/object:Gem::Requirement
192
- requirements:
193
- - - ">="
194
- - !ruby/object:Gem::Version
195
- version: 1.0.2
196
- - - "<"
197
- - !ruby/object:Gem::Version
198
- version: 2.0.0
199
- type: :runtime
200
- prerelease: false
201
- version_requirements: !ruby/object:Gem::Requirement
202
- requirements:
203
- - - ">="
204
- - !ruby/object:Gem::Version
205
- version: 1.0.2
206
- - - "<"
207
- - !ruby/object:Gem::Version
208
- version: 2.0.0
209
161
  - !ruby/object:Gem::Dependency
210
162
  name: colored
211
163
  requirement: !ruby/object:Gem::Requirement
@@ -376,20 +328,6 @@ dependencies:
376
328
  - - "<"
377
329
  - !ruby/object:Gem::Version
378
330
  version: 5.0.0
379
- - !ruby/object:Gem::Dependency
380
- name: multi_xml
381
- requirement: !ruby/object:Gem::Requirement
382
- requirements:
383
- - - "~>"
384
- - !ruby/object:Gem::Version
385
- version: '0.5'
386
- type: :runtime
387
- prerelease: false
388
- version_requirements: !ruby/object:Gem::Requirement
389
- requirements:
390
- - - "~>"
391
- - !ruby/object:Gem::Version
392
- version: '0.5'
393
331
  - !ruby/object:Gem::Dependency
394
332
  name: dotenv
395
333
  requirement: !ruby/object:Gem::Requirement
@@ -743,6 +681,7 @@ files:
743
681
  - pantograph/lib/pantograph/actions/ensure_env_vars.rb
744
682
  - pantograph/lib/pantograph/actions/ensure_git_branch.rb
745
683
  - pantograph/lib/pantograph/actions/ensure_git_status_clean.rb
684
+ - pantograph/lib/pantograph/actions/ensure_no_debug_code.rb
746
685
  - pantograph/lib/pantograph/actions/erb.rb
747
686
  - pantograph/lib/pantograph/actions/get_github_release.rb
748
687
  - pantograph/lib/pantograph/actions/git_branch.rb
@@ -796,7 +735,6 @@ files:
796
735
  - pantograph/lib/pantograph/documentation/markdown_docs_generator.rb
797
736
  - pantograph/lib/pantograph/environment_printer.rb
798
737
  - pantograph/lib/pantograph/erb_template_helper.rb
799
- - pantograph/lib/pantograph/features.rb
800
738
  - pantograph/lib/pantograph/helper/README.md
801
739
  - pantograph/lib/pantograph/helper/dotenv_helper.rb
802
740
  - pantograph/lib/pantograph/helper/gem_helper.rb
@@ -875,21 +813,16 @@ files:
875
813
  - pantograph_core/lib/pantograph_core/core_ext/shellwords.rb
876
814
  - pantograph_core/lib/pantograph_core/core_ext/string.rb
877
815
  - pantograph_core/lib/pantograph_core/env.rb
878
- - pantograph_core/lib/pantograph_core/feature/feature.rb
879
- - pantograph_core/lib/pantograph_core/features.rb
880
816
  - pantograph_core/lib/pantograph_core/globals.rb
881
817
  - pantograph_core/lib/pantograph_core/helper.rb
882
818
  - pantograph_core/lib/pantograph_core/keychain_importer.rb
883
- - pantograph_core/lib/pantograph_core/languages.rb
884
819
  - pantograph_core/lib/pantograph_core/module.rb
885
820
  - pantograph_core/lib/pantograph_core/pantograph_folder.rb
886
821
  - pantograph_core/lib/pantograph_core/pantograph_pty.rb
887
- - pantograph_core/lib/pantograph_core/pkg_file_analyser.rb
888
822
  - pantograph_core/lib/pantograph_core/print_table.rb
889
823
  - pantograph_core/lib/pantograph_core/string_filters.rb
890
824
  - pantograph_core/lib/pantograph_core/swag.rb
891
825
  - pantograph_core/lib/pantograph_core/tag_version.rb
892
- - pantograph_core/lib/pantograph_core/test_parser.rb
893
826
  - pantograph_core/lib/pantograph_core/ui/disable_colors.rb
894
827
  - pantograph_core/lib/pantograph_core/ui/errors.rb
895
828
  - pantograph_core/lib/pantograph_core/ui/errors/pantograph_common_error.rb
@@ -1,4 +0,0 @@
1
- # Use this file as the place to register Feature switches for the fastlan_core project
2
-
3
- # PantographCore::Feature.register(env_var: 'YOUR_FEATURE_SWITCH_ENV_VAR',
4
- # description: 'Describe what this feature switch controls')
@@ -1,51 +0,0 @@
1
- require_relative '../env'
2
-
3
- module PantographCore
4
- class Feature
5
- class << self
6
- attr_reader :features
7
-
8
- def register(env_var: nil, description: nil)
9
- feature = self.new(description: description, env_var: env_var)
10
- @features[feature.env_var] = feature
11
- end
12
-
13
- def enabled?(env_var)
14
- feature = @features[env_var]
15
- return false if feature.nil?
16
- return PantographCore::Env.truthy?(feature.env_var)
17
- end
18
-
19
- def register_class_method(klass: nil, symbol: nil, disabled_symbol: nil, enabled_symbol: nil, env_var: nil)
20
- return if klass.nil? || symbol.nil? || disabled_symbol.nil? || enabled_symbol.nil? || env_var.nil?
21
- klass.define_singleton_method(symbol) do |*args|
22
- if Feature.enabled?(env_var)
23
- klass.send(enabled_symbol, *args)
24
- else
25
- klass.send(disabled_symbol, *args)
26
- end
27
- end
28
- end
29
-
30
- def register_instance_method(klass: nil, symbol: nil, disabled_symbol: nil, enabled_symbol: nil, env_var: nil)
31
- return if klass.nil? || symbol.nil? || disabled_symbol.nil? || enabled_symbol.nil? || env_var.nil?
32
- klass.send(:define_method, symbol.to_s) do |*args|
33
- if Feature.enabled?(env_var)
34
- send(enabled_symbol, *args)
35
- else
36
- send(disabled_symbol, *args)
37
- end
38
- end
39
- end
40
- end
41
-
42
- @features = {}
43
-
44
- attr_reader :env_var, :description
45
- def initialize(env_var: nil, description: nil)
46
- raise "Invalid Feature" if env_var.nil? || description.nil?
47
- @env_var = env_var
48
- @description = description
49
- end
50
- end
51
- end
@@ -1,4 +0,0 @@
1
- require_relative 'feature/feature'
2
-
3
- PantographCore::Feature.register(env_var: 'PANTOGRAPH_ITUNES_TRANSPORTER_USE_SHELL_SCRIPT',
4
- description: 'Use iTunes Transporter shell script')
@@ -1,14 +0,0 @@
1
- module PantographCore
2
- module Languages
3
- # These are all the languages which are available to use to upload app metadata and screenshots
4
-
5
- # The old format which was used until August 2015 (good old times)
6
- ALL_LANGUAGES_LEGACY = ["da-DK", "de-DE", "el-GR", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi-FI", "fr-CA", "fr-FR", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "no-NO", "pt-BR", "pt-PT", "ru-RU", "sv-SE", "th-TH", "tr-TR", "vi-VI", "cmn-Hans", "cmn-Hant"]
7
-
8
- # The new format used from September 2015 on
9
- # Updates should also be made to:
10
- # - produce/lib/produce/available_default_languages.rb
11
- # See pull request for example: https://github.com/johnknapprs/pantograph/pull/14110
12
- ALL_LANGUAGES = ["ar-SA", "ca", "cs", "da", "de-DE", "el", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi", "fr-CA", "fr-FR", "he", "hi", "hr", "hu", "id", "it", "ja", "ko", "ms", "nl-NL", "no", "pl", "pt-BR", "pt-PT", "ro", "ru", "sk", "sv", "th", "tr", "uk", "vi", "zh-Hans", "zh-Hant"]
13
- end
14
- end
@@ -1,44 +0,0 @@
1
- require 'rexml/document'
2
-
3
- require_relative 'helper'
4
-
5
- module PantographCore
6
- class PkgFileAnalyser
7
- def self.fetch_app_identifier(path)
8
- xml = self.fetch_distribution_xml_file(path)
9
- return xml.elements['installer-gui-script/product'].attributes['id'] if xml
10
- return nil
11
- end
12
-
13
- # Fetches the app version from the given pkg file.
14
- def self.fetch_app_version(path)
15
- xml = self.fetch_distribution_xml_file(path)
16
- return xml.elements['installer-gui-script/product'].attributes['version'] if xml
17
- return nil
18
- end
19
-
20
- def self.fetch_distribution_xml_file(path)
21
- Dir.mktmpdir do |dir|
22
- Helper.backticks("xar -C #{dir.shellescape} -xf #{path.shellescape}")
23
-
24
- Dir.foreach(dir) do |file|
25
- next unless file.include?('Distribution')
26
-
27
- begin
28
- content = File.open(File.join(dir, file))
29
- xml = REXML::Document.new(content)
30
-
31
- if xml.elements['installer-gui-script/product']
32
- return xml
33
- end
34
- rescue => ex
35
- UI.error(ex)
36
- UI.error("Error parsing *.pkg distribution xml #{File.join(dir, file)}")
37
- end
38
- end
39
-
40
- nil
41
- end
42
- end
43
- end
44
- end
@@ -1,107 +0,0 @@
1
- require 'plist'
2
-
3
- require 'pantograph/junit_generator'
4
-
5
- require_relative 'ui/ui'
6
- require_relative 'print_table'
7
-
8
- module PantographCore
9
- class TestParser
10
- attr_accessor :data
11
-
12
- attr_accessor :file_content
13
-
14
- attr_accessor :raw_json
15
-
16
- def initialize(path)
17
- path = File.expand_path(path)
18
- UI.user_error!("File not found at path '#{path}'") unless File.exist?(path)
19
-
20
- self.file_content = File.read(path)
21
- self.raw_json = Plist.parse_xml(self.file_content)
22
- return if self.raw_json["FormatVersion"].to_s.length.zero? # maybe that's a useless plist file
23
-
24
- ensure_file_valid!
25
- parse_content
26
- end
27
-
28
- private
29
-
30
- def ensure_file_valid!
31
- format_version = self.raw_json["FormatVersion"]
32
- supported_versions = ["1.1", "1.2"]
33
- UI.user_error!("Format version '#{format_version}' is not supported, must be #{supported_versions.join(', ')}") unless supported_versions.include?(format_version)
34
- end
35
-
36
- # Converts the raw plist test structure into something that's easier to enumerate
37
- def unfold_tests(data)
38
- # `data` looks like this
39
- # => [{"Subtests"=>
40
- # [{"Subtests"=>
41
- # [{"Subtests"=>
42
- # [{"Duration"=>0.4,
43
- # "TestIdentifier"=>"Unit/testExample()",
44
- # "TestName"=>"testExample()",
45
- # "TestObjectClass"=>"IDESchemeActionTestSummary",
46
- # "TestStatus"=>"Success",
47
- # "TestSummaryGUID"=>"4A24BFED-03E6-4FBE-BC5E-2D80023C06B4"},
48
- # {"FailureSummaries"=>
49
- # [{"FileName"=>"/Users/krausefx/Developer/themoji/Unit/Unit.swift",
50
- # "LineNumber"=>34,
51
- # "Message"=>"XCTAssertTrue failed - ",
52
- # "PerformanceFailure"=>false}],
53
- # "TestIdentifier"=>"Unit/testExample2()",
54
-
55
- tests = []
56
- data.each do |current_hash|
57
- if current_hash["Subtests"]
58
- tests += unfold_tests(current_hash["Subtests"])
59
- end
60
- if current_hash["TestStatus"]
61
- tests << current_hash
62
- end
63
- end
64
- return tests
65
- end
66
-
67
- # Convert the Hashes and Arrays in something more useful
68
- def parse_content
69
- self.data = self.raw_json["TestableSummaries"].collect do |testable_summary|
70
- summary_row = {
71
- project_path: testable_summary["ProjectPath"],
72
- target_name: testable_summary["TargetName"],
73
- test_name: testable_summary["TestName"],
74
- duration: testable_summary["Tests"].map { |current_test| current_test["Duration"] }.inject(:+),
75
- tests: unfold_tests(testable_summary["Tests"]).collect do |current_test|
76
- current_row = {
77
- identifier: current_test["TestIdentifier"],
78
- test_group: current_test["TestIdentifier"].split("/")[0..-2].join("."),
79
- name: current_test["TestName"],
80
- object_class: current_test["TestObjectClass"],
81
- status: current_test["TestStatus"],
82
- guid: current_test["TestSummaryGUID"],
83
- duration: current_test["Duration"]
84
- }
85
- if current_test["FailureSummaries"]
86
- current_row[:failures] = current_test["FailureSummaries"].collect do |current_failure|
87
- {
88
- file_name: current_failure['FileName'],
89
- line_number: current_failure['LineNumber'],
90
- message: current_failure['Message'],
91
- performance_failure: current_failure['PerformanceFailure'],
92
- failure_message: "#{current_failure['Message']} (#{current_failure['FileName']}:#{current_failure['LineNumber']})"
93
- }
94
- end
95
- end
96
- current_row
97
- end
98
- }
99
- summary_row[:number_of_tests] = summary_row[:tests].count
100
- summary_row[:number_of_failures] = summary_row[:tests].find_all { |a| (a[:failures] || []).count > 0 }.count
101
- summary_row
102
- end
103
- self.data.first[:run_destination_name] = self.raw_json["RunDestination"]["Name"]
104
- return self.data
105
- end
106
- end
107
- end