ios_analytics_cli 1.0.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 +7 -0
- data/.gitignore +135 -0
- data/.rubocop.yml +2 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +62 -0
- data/LICENSE.txt +21 -0
- data/README.md +48 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/analytics +34 -0
- data/ios_analytics_cli.gemspec +35 -0
- data/lib/ios_analytics_cli.rb +52 -0
- data/lib/ios_analytics_cli/commands/command.rb +6 -0
- data/lib/ios_analytics_cli/commands/generate.rb +77 -0
- data/lib/ios_analytics_cli/commands/init.rb +55 -0
- data/lib/ios_analytics_cli/error_handler.rb +22 -0
- data/lib/ios_analytics_cli/helpers/terminal.rb +11 -0
- data/lib/ios_analytics_cli/info.rb +16 -0
- data/lib/ios_analytics_cli/interactors/event.rb +22 -0
- data/lib/ios_analytics_cli/interactors/interactor.rb +8 -0
- data/lib/ios_analytics_cli/interactors/user_property.rb +12 -0
- data/lib/ios_analytics_cli/io/config.rb +18 -0
- data/lib/ios_analytics_cli/io/io.rb +10 -0
- data/lib/ios_analytics_cli/serializers/base.rb +43 -0
- data/lib/ios_analytics_cli/serializers/objc/analytics.rb +126 -0
- data/lib/ios_analytics_cli/serializers/objc/enums.rb +67 -0
- data/lib/ios_analytics_cli/serializers/objc/event.rb +182 -0
- data/lib/ios_analytics_cli/serializers/objc/logger.rb +53 -0
- data/lib/ios_analytics_cli/serializers/objc/objc.rb +23 -0
- data/lib/ios_analytics_cli/serializers/objc/screen.rb +90 -0
- data/lib/ios_analytics_cli/serializers/objc/user_property.rb +120 -0
- data/lib/ios_analytics_cli/serializers/swift/analytics.rb +63 -0
- data/lib/ios_analytics_cli/serializers/swift/event.rb +121 -0
- data/lib/ios_analytics_cli/serializers/swift/logger.rb +38 -0
- data/lib/ios_analytics_cli/serializers/swift/screen.rb +55 -0
- data/lib/ios_analytics_cli/serializers/swift/swift.rb +20 -0
- data/lib/ios_analytics_cli/serializers/swift/user_property.rb +69 -0
- data/lib/ios_analytics_cli/templates/header.erb +7 -0
- data/lib/ios_analytics_cli/templates/templates.rb +12 -0
- data/lib/ios_analytics_cli/version.rb +4 -0
- metadata +172 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
module Analytics
|
2
|
+
module Serializer
|
3
|
+
class Swift < Base
|
4
|
+
# It's named AnalyticsFile instead of Analytics,
|
5
|
+
# because it failed to have a class which used the same name as the parent module.
|
6
|
+
class AnalyticsFile
|
7
|
+
def initialize(src)
|
8
|
+
@src = src
|
9
|
+
end
|
10
|
+
|
11
|
+
def save(path)
|
12
|
+
@file_name = 'Analytics.swift'
|
13
|
+
output_path = File.join(path, @file_name)
|
14
|
+
File.write(output_path, render)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def render
|
20
|
+
ERB.new(template, nil, '-').result(binding)
|
21
|
+
end
|
22
|
+
|
23
|
+
def template
|
24
|
+
<<~TEMPLATE
|
25
|
+
<%= ERB.new(Analytics::Templates.tmpl_at('header.erb')).result(binding) %>
|
26
|
+
|
27
|
+
import Foundation
|
28
|
+
|
29
|
+
final class Analytics {
|
30
|
+
|
31
|
+
private let loggers: [AnalyticsLogger]
|
32
|
+
|
33
|
+
init(loggers: [AnalyticsLogger]) {
|
34
|
+
self.loggers = loggers
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
// MARK: - AnalyticsLogger
|
39
|
+
|
40
|
+
extension Analytics: AnalyticsLogger {
|
41
|
+
|
42
|
+
func set(enabled: Bool) {
|
43
|
+
loggers.forEach { $0.set(enabled: enabled) }
|
44
|
+
}
|
45
|
+
|
46
|
+
func log(event: Analytics.Event) {
|
47
|
+
loggers.forEach { $0.log(event: event) }
|
48
|
+
}
|
49
|
+
|
50
|
+
func track(screen: Analytics.Screen) {
|
51
|
+
loggers.forEach { $0.track(screen: screen) }
|
52
|
+
}
|
53
|
+
|
54
|
+
func set(userProperty: Analytics.UserProperty) {
|
55
|
+
loggers.forEach { $0.set(userProperty: userProperty) }
|
56
|
+
}
|
57
|
+
}
|
58
|
+
TEMPLATE
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
module Analytics
|
2
|
+
module Serializer
|
3
|
+
class Swift < Base
|
4
|
+
class Event
|
5
|
+
def initialize(src)
|
6
|
+
@src = src
|
7
|
+
end
|
8
|
+
|
9
|
+
def save(path)
|
10
|
+
@file_name = 'AnalyticsEvent.swift'
|
11
|
+
output_path = File.join(path, @file_name)
|
12
|
+
File.write(output_path, render)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def render
|
18
|
+
ERB.new(template, nil, '-').result(binding)
|
19
|
+
end
|
20
|
+
|
21
|
+
def template
|
22
|
+
<<~TEMPLATE
|
23
|
+
<%= ERB.new(Analytics::Templates.tmpl_at('header.erb')).result(binding) %>
|
24
|
+
|
25
|
+
import Foundation
|
26
|
+
|
27
|
+
extension Analytics {
|
28
|
+
|
29
|
+
struct Event {
|
30
|
+
|
31
|
+
let name: String
|
32
|
+
let properties: [String: Any]
|
33
|
+
|
34
|
+
private init(name: String, properties: [String: Any] = [:]) {
|
35
|
+
self.name = name
|
36
|
+
self.properties = properties
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
// MARK: - Events
|
42
|
+
|
43
|
+
extension Analytics.Event {
|
44
|
+
<% @src["events"].each do |event| -%>
|
45
|
+
|
46
|
+
/// <%= event["description"] -%>
|
47
|
+
<% if event["properties"].nil? %>
|
48
|
+
static var <%= event["name"].camel_case %>: Analytics.Event {
|
49
|
+
return .init(name: "<%= event["name"] %>")
|
50
|
+
}
|
51
|
+
<% else %>
|
52
|
+
<% event["properties"].each do |property| -%>
|
53
|
+
/// - Parameter <%= property["name"] %>: <%= property["description"] %>
|
54
|
+
<% end -%>
|
55
|
+
static func <%= event["name"].camel_case %>(<%= format_method_params(event["properties"])-%>) -> Analytics.Event {
|
56
|
+
return .init(name: "<%= event["name"] %>", properties: <%= format_init_properties(event["properties"]) %>)
|
57
|
+
}
|
58
|
+
<% end -%>
|
59
|
+
<% end %>
|
60
|
+
}
|
61
|
+
|
62
|
+
// MARK: - Event Property Enums
|
63
|
+
|
64
|
+
extension Analytics.Event {
|
65
|
+
<% Interactor::Event.all_enum_properties(@src['events']).each do |property| -%>
|
66
|
+
|
67
|
+
/// <%= property["description"] %>
|
68
|
+
enum <%= property["name"].pascal_case -%>: String {
|
69
|
+
<% property["values"].each do |value| -%>
|
70
|
+
case <%= value.camel_case -%> = "<%= value %>"
|
71
|
+
<% end -%>
|
72
|
+
}
|
73
|
+
<% end -%>
|
74
|
+
}
|
75
|
+
TEMPLATE
|
76
|
+
end
|
77
|
+
|
78
|
+
## Helper methods called from the ERB template
|
79
|
+
|
80
|
+
# Formats the parameters in Swift method.
|
81
|
+
def format_method_params(properties)
|
82
|
+
result = properties.map do |property|
|
83
|
+
"#{property['name'].camel_case}: #{format_property_type(property)}"
|
84
|
+
end
|
85
|
+
|
86
|
+
return result.join(', ')
|
87
|
+
end
|
88
|
+
|
89
|
+
# Maps the property type to Swift type.
|
90
|
+
def format_property_type(property)
|
91
|
+
# if it doesn't have values, it's not an enum,
|
92
|
+
# and if it does, we'll return capitalized property name,
|
93
|
+
# because an enum with the same name will be generated as well
|
94
|
+
if property['values'].nil?
|
95
|
+
case property['type']
|
96
|
+
when 'text'
|
97
|
+
'String'
|
98
|
+
when 'number'
|
99
|
+
'Int'
|
100
|
+
when 'decimal'
|
101
|
+
'Double'
|
102
|
+
else
|
103
|
+
'unknown-type'
|
104
|
+
end
|
105
|
+
else
|
106
|
+
property['name'].pascal_case
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
# Formats the properties passed to Event's init.
|
111
|
+
def format_init_properties(properties)
|
112
|
+
result = properties.map do |property|
|
113
|
+
"\"#{property['name']}\": #{property['name'].camel_case}#{'.rawValue' unless property['values'].nil?}"
|
114
|
+
end
|
115
|
+
|
116
|
+
results = "[#{result.join(', ')}]"
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Analytics
|
2
|
+
module Serializer
|
3
|
+
class Swift < Base
|
4
|
+
class Logger
|
5
|
+
def initialize(src)
|
6
|
+
@src = src
|
7
|
+
end
|
8
|
+
|
9
|
+
def save(path)
|
10
|
+
@file_name = 'AnalyticsLogger.swift'
|
11
|
+
output_path = File.join(path, @file_name)
|
12
|
+
File.write(output_path, render)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def render
|
18
|
+
ERB.new(template, nil, '-').result(binding)
|
19
|
+
end
|
20
|
+
|
21
|
+
def template
|
22
|
+
<<~TEMPLATE
|
23
|
+
<%= ERB.new(Analytics::Templates.tmpl_at('header.erb')).result(binding) %>
|
24
|
+
|
25
|
+
import Foundation
|
26
|
+
|
27
|
+
protocol AnalyticsLogger {
|
28
|
+
func set(enabled: Bool)
|
29
|
+
func log(event: Analytics.Event)
|
30
|
+
func track(screen: Analytics.Screen)
|
31
|
+
func set(userProperty: Analytics.UserProperty)
|
32
|
+
}
|
33
|
+
TEMPLATE
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Analytics
|
2
|
+
module Serializer
|
3
|
+
class Swift < Base
|
4
|
+
class Screen
|
5
|
+
def initialize(src)
|
6
|
+
@src = src
|
7
|
+
end
|
8
|
+
|
9
|
+
def save(path)
|
10
|
+
@file_name = 'AnalyticsScreen.swift'
|
11
|
+
output_path = File.join(path, @file_name)
|
12
|
+
File.write(output_path, render)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def render
|
18
|
+
ERB.new(template, nil, '-').result(binding)
|
19
|
+
end
|
20
|
+
|
21
|
+
def template
|
22
|
+
<<~TEMPLATE
|
23
|
+
<%= ERB.new(Analytics::Templates.tmpl_at('header.erb')).result(binding) %>
|
24
|
+
|
25
|
+
import Foundation
|
26
|
+
|
27
|
+
extension Analytics {
|
28
|
+
|
29
|
+
struct Screen {
|
30
|
+
|
31
|
+
let name: String
|
32
|
+
|
33
|
+
private init(name: String) {
|
34
|
+
self.name = name
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
// MARK: - Screens
|
40
|
+
|
41
|
+
extension Analytics.Screen {
|
42
|
+
<% @src["screens"].each do |screen| -%>
|
43
|
+
|
44
|
+
/// <%= screen["description"] %>
|
45
|
+
static var <%= screen["name"].camel_case -%>: Analytics.Screen {
|
46
|
+
return .init(name: "<%= screen["name"] -%>")
|
47
|
+
}
|
48
|
+
<% end -%>
|
49
|
+
}
|
50
|
+
TEMPLATE
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Analytics
|
2
|
+
module Serializer
|
3
|
+
class Swift < Base
|
4
|
+
# An abstract method used to save a file at provided path.
|
5
|
+
def save(path)
|
6
|
+
files = [
|
7
|
+
AnalyticsFile,
|
8
|
+
Event,
|
9
|
+
Logger,
|
10
|
+
Screen,
|
11
|
+
UserProperty
|
12
|
+
]
|
13
|
+
|
14
|
+
files.each do |f|
|
15
|
+
f.new(@src).save(path)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Analytics
|
2
|
+
module Serializer
|
3
|
+
class Swift < Base
|
4
|
+
class UserProperty
|
5
|
+
def initialize(src)
|
6
|
+
@src = src
|
7
|
+
end
|
8
|
+
|
9
|
+
def save(path)
|
10
|
+
@file_name = 'AnalyticsUserProperty.swift'
|
11
|
+
output_path = File.join(path, @file_name)
|
12
|
+
File.write(output_path, render)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def render
|
18
|
+
ERB.new(template, nil, '-').result(binding)
|
19
|
+
end
|
20
|
+
|
21
|
+
def template
|
22
|
+
<<~TEMPLATE
|
23
|
+
<%= ERB.new(Analytics::Templates.tmpl_at('header.erb')).result(binding) %>
|
24
|
+
|
25
|
+
import Foundation
|
26
|
+
|
27
|
+
extension Analytics {
|
28
|
+
|
29
|
+
struct UserProperty {
|
30
|
+
|
31
|
+
let name: String
|
32
|
+
let value: String?
|
33
|
+
|
34
|
+
private init(name: String, value: String?) {
|
35
|
+
self.name = name
|
36
|
+
self.value = value
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
// MARK: - User properties
|
42
|
+
|
43
|
+
extension Analytics.UserProperty {
|
44
|
+
<% @src["userProperties"].each do |user_property| -%>
|
45
|
+
|
46
|
+
/// <%= user_property["description"] %>
|
47
|
+
/// - Parameter value: The value of the user property, or `nil` if You want to remove the user property.
|
48
|
+
static func <%= user_property["name"].camel_case -%>(with value: <%= user_property["values"].nil? ? 'String?' : user_property["name"].pascal_case %>) -> Analytics.UserProperty {
|
49
|
+
return .init(name: "<%= user_property["name"] -%>", value: <%= user_property["values"].nil? ? 'value' : 'value.rawValue' %>)
|
50
|
+
}
|
51
|
+
<% end -%>
|
52
|
+
}
|
53
|
+
|
54
|
+
extension Analytics.UserProperty {
|
55
|
+
<% Interactor::UserProperty.all_enum_user_properties(@src["userProperties"]).each do |user_property| -%>
|
56
|
+
|
57
|
+
enum <%= user_property["name"].pascal_case %>: String {
|
58
|
+
<% user_property["values"].each do |value| -%>
|
59
|
+
case <%= value.camel_case %> = "<%= value -%>"
|
60
|
+
<% end -%>
|
61
|
+
}
|
62
|
+
<% end -%>
|
63
|
+
}
|
64
|
+
TEMPLATE
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Analytics
|
2
|
+
module Templates
|
3
|
+
# Returns the template at provided path.
|
4
|
+
# Path is relative to the path of this file.
|
5
|
+
# E.g. to get file at templates/swift/test,
|
6
|
+
# call tmpl_at('swift/test').
|
7
|
+
def self.tmpl_at(path)
|
8
|
+
final_path = File.join(__dir__, path)
|
9
|
+
File.open(final_path, &:read)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
metadata
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ios_analytics_cli
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mario Galijot
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-05-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.17'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.17'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '5.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '5.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.82.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.82.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: commander
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 4.5.2
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 4.5.2
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: tty-prompt
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.21.0
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.21.0
|
97
|
+
description: |2
|
98
|
+
This gem is develop in order to reduce the time needed to even start with the implementation of Analytics in iOS apps,
|
99
|
+
by generating files, classes, methods & everything else that's required to call a specific event, change a user property,
|
100
|
+
or even track an open screen. By calling just 2 commands, analytics init & analytics generate,
|
101
|
+
all of these are generated for You from the appropriately configured JSON file.
|
102
|
+
email:
|
103
|
+
- mario.galijot@infinum.com
|
104
|
+
executables:
|
105
|
+
- analytics
|
106
|
+
extensions: []
|
107
|
+
extra_rdoc_files: []
|
108
|
+
files:
|
109
|
+
- ".gitignore"
|
110
|
+
- ".rubocop.yml"
|
111
|
+
- Gemfile
|
112
|
+
- Gemfile.lock
|
113
|
+
- LICENSE.txt
|
114
|
+
- README.md
|
115
|
+
- Rakefile
|
116
|
+
- bin/console
|
117
|
+
- bin/setup
|
118
|
+
- exe/analytics
|
119
|
+
- ios_analytics_cli.gemspec
|
120
|
+
- lib/ios_analytics_cli.rb
|
121
|
+
- lib/ios_analytics_cli/commands/command.rb
|
122
|
+
- lib/ios_analytics_cli/commands/generate.rb
|
123
|
+
- lib/ios_analytics_cli/commands/init.rb
|
124
|
+
- lib/ios_analytics_cli/error_handler.rb
|
125
|
+
- lib/ios_analytics_cli/helpers/terminal.rb
|
126
|
+
- lib/ios_analytics_cli/info.rb
|
127
|
+
- lib/ios_analytics_cli/interactors/event.rb
|
128
|
+
- lib/ios_analytics_cli/interactors/interactor.rb
|
129
|
+
- lib/ios_analytics_cli/interactors/user_property.rb
|
130
|
+
- lib/ios_analytics_cli/io/config.rb
|
131
|
+
- lib/ios_analytics_cli/io/io.rb
|
132
|
+
- lib/ios_analytics_cli/serializers/base.rb
|
133
|
+
- lib/ios_analytics_cli/serializers/objc/analytics.rb
|
134
|
+
- lib/ios_analytics_cli/serializers/objc/enums.rb
|
135
|
+
- lib/ios_analytics_cli/serializers/objc/event.rb
|
136
|
+
- lib/ios_analytics_cli/serializers/objc/logger.rb
|
137
|
+
- lib/ios_analytics_cli/serializers/objc/objc.rb
|
138
|
+
- lib/ios_analytics_cli/serializers/objc/screen.rb
|
139
|
+
- lib/ios_analytics_cli/serializers/objc/user_property.rb
|
140
|
+
- lib/ios_analytics_cli/serializers/swift/analytics.rb
|
141
|
+
- lib/ios_analytics_cli/serializers/swift/event.rb
|
142
|
+
- lib/ios_analytics_cli/serializers/swift/logger.rb
|
143
|
+
- lib/ios_analytics_cli/serializers/swift/screen.rb
|
144
|
+
- lib/ios_analytics_cli/serializers/swift/swift.rb
|
145
|
+
- lib/ios_analytics_cli/serializers/swift/user_property.rb
|
146
|
+
- lib/ios_analytics_cli/templates/header.erb
|
147
|
+
- lib/ios_analytics_cli/templates/templates.rb
|
148
|
+
- lib/ios_analytics_cli/version.rb
|
149
|
+
homepage: https://github.com/infinum/ios-analytics-cli/
|
150
|
+
licenses:
|
151
|
+
- MIT
|
152
|
+
metadata: {}
|
153
|
+
post_install_message:
|
154
|
+
rdoc_options: []
|
155
|
+
require_paths:
|
156
|
+
- lib
|
157
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
162
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
requirements: []
|
168
|
+
rubygems_version: 3.0.3
|
169
|
+
signing_key:
|
170
|
+
specification_version: 4
|
171
|
+
summary: CLI tool that generates Analytics files, for iOS project, from a JSON file.
|
172
|
+
test_files: []
|