Compare commits
13 Commits
2.2.1
...
fix/RES-75
| Author | SHA1 | Date | |
|---|---|---|---|
| 4b944ed8c7 | |||
| 1f9af76b40 | |||
| 7247d20ae4 | |||
| 63404f8f20 | |||
| c4a3aa54d6 | |||
| b9e610a6d9 | |||
| 7c6a8d2ac3 | |||
| f0aac3a91b | |||
| f1ca8e92b7 | |||
|
|
436bc4b2af | ||
| e0e561ff7f | |||
| ed4e9849e7 | |||
| ddf1d2509f |
7
Makefile
7
Makefile
@@ -1,7 +1,6 @@
|
||||
SHELL = /bin/zsh
|
||||
|
||||
#INSTALL_DIR ?= /usr/local/bin
|
||||
INSTALL_DIR = /tmp/ResgenYolo
|
||||
INSTALL_DIR = /usr/local/bin
|
||||
|
||||
MAN_DIR := /usr/local/share/man
|
||||
MAN_PAGE_NAME = resgen-swift.1
|
||||
@@ -14,7 +13,7 @@ BUILD_DIR = $(REPO_DIR)/.build
|
||||
|
||||
# create-man-files:
|
||||
# swift package plugin generate-manual
|
||||
# cp $(BUILDDIR)/plugins/GenerateManualPlugin/outputs/ResgenSwift/resgen-swift.1 $(REPODIR)/man/resgen-swift.1
|
||||
# cp $(BUILDDIR)/plugins/GenerateManual/outputs/ResgenSwift/resgen-swift.1 $(REPODIR)/man/resgen-swift.1
|
||||
|
||||
# install-man-files:
|
||||
# mkdir -p ${DESTDIR}${mandir}/man1
|
||||
@@ -23,7 +22,7 @@ BUILD_DIR = $(REPO_DIR)/.build
|
||||
create-and-install-man-files:
|
||||
swift package plugin generate-manual
|
||||
mkdir -p ${MAN_DIR}/man1
|
||||
cp $(BUILD_DIR)/plugins/GenerateManualPlugin/outputs/ResgenSwift/${MAN_PAGE_NAME} ${MAN_DIR}/man1/${MAN_PAGE_NAME}
|
||||
cp $(BUILD_DIR)/plugins/GenerateManual/outputs/ResgenSwift/${MAN_PAGE_NAME} ${MAN_DIR}/man1/${MAN_PAGE_NAME}
|
||||
|
||||
#
|
||||
# Build and install
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"originHash" : "fae67d9ce14b6664edc4151ad1a55b74d50d7281499f09eeca50b0376d0f837f",
|
||||
"pins" : [
|
||||
{
|
||||
"identity" : "swift-argument-parser",
|
||||
@@ -14,8 +15,8 @@
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/lukepistrol/SwiftLintPlugin",
|
||||
"state" : {
|
||||
"revision" : "87454f5c9ff4d644086aec2a0df1ffba678e7f3c",
|
||||
"version" : "0.57.1"
|
||||
"revision" : "8e785a9801fc7961fef3d41ccb81acb3bd3d9735",
|
||||
"version" : "0.60.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -28,5 +29,5 @@
|
||||
}
|
||||
}
|
||||
],
|
||||
"version" : 2
|
||||
"version" : 3
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// swift-tools-version:5.9
|
||||
// swift-tools-version:6.1
|
||||
// The swift-tools-version declares the minimum version of Swift required to build this package.
|
||||
|
||||
import PackageDescription
|
||||
@@ -18,7 +18,7 @@ let package = Package(
|
||||
),
|
||||
.package(
|
||||
url: "https://github.com/lukepistrol/SwiftLintPlugin",
|
||||
exact: "0.57.1"
|
||||
exact: "0.60.0"
|
||||
),
|
||||
],
|
||||
targets: [
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// Generated by ResgenSwift.Analytics 2.2.0
|
||||
|
||||
import Foundation
|
||||
import MatomoTracker
|
||||
import FirebaseAnalytics
|
||||
import os
|
||||
|
||||
// MARK: - Protocol
|
||||
|
||||
public protocol AnalyticsManagerProtocol {
|
||||
internal protocol AnalyticsManagerProtocol {
|
||||
|
||||
func logScreen(
|
||||
name: String,
|
||||
@@ -24,72 +24,6 @@ public protocol AnalyticsManagerProtocol {
|
||||
func setEnable(_ enable: Bool)
|
||||
}
|
||||
|
||||
// MARK: - Matomo
|
||||
|
||||
class MatomoAnalyticsManager: AnalyticsManagerProtocol {
|
||||
|
||||
// MARK: - Properties
|
||||
|
||||
private var tracker: MatomoTracker
|
||||
|
||||
// MARK: - Init
|
||||
|
||||
init(siteId: String, url: String) {
|
||||
debugPrint("[Matomo service] Server URL: \(url)")
|
||||
debugPrint("[Matomo service] Site ID: \(siteId)")
|
||||
tracker = MatomoTracker(
|
||||
siteId: siteId,
|
||||
baseURL: URL(string: url)!
|
||||
)
|
||||
|
||||
#if DEBUG
|
||||
tracker.dispatchInterval = 5
|
||||
#endif
|
||||
|
||||
#if DEBUG
|
||||
tracker.logger = DefaultLogger(minLevel: .verbose)
|
||||
#endif
|
||||
|
||||
debugPrint("[Matomo service] Configured with content base: \(tracker.contentBase?.absoluteString ?? "-")")
|
||||
debugPrint("[Matomo service] Opt out: \(tracker.isOptedOut)")
|
||||
}
|
||||
|
||||
// MARK: - Methods
|
||||
|
||||
func logScreen(
|
||||
name: String,
|
||||
path: String,
|
||||
params: [String: Any]?
|
||||
) {
|
||||
guard let trackerUrl = tracker.contentBase?.absoluteString else { return }
|
||||
|
||||
let urlString = URL(string: "\(trackerUrl)" + "/" + "\(path)" + "iOS")
|
||||
tracker.track(
|
||||
view: [name],
|
||||
url: urlString
|
||||
)
|
||||
}
|
||||
|
||||
func logEvent(
|
||||
name: String,
|
||||
action: String,
|
||||
category: String,
|
||||
params: [String: Any]?
|
||||
) {
|
||||
tracker.track(
|
||||
eventWithCategory: category,
|
||||
action: action,
|
||||
name: name,
|
||||
number: nil,
|
||||
url: nil
|
||||
)
|
||||
}
|
||||
|
||||
func setEnable(_ enable: Bool) {
|
||||
tracker.isOptedOut = !enable
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Firebase
|
||||
|
||||
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
|
||||
@@ -133,7 +67,7 @@ class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
|
||||
category: String,
|
||||
params: [String: Any]?
|
||||
) {
|
||||
var parameters: [String:NSObject] = [
|
||||
var parameters: [String: NSObject] = [
|
||||
AnalyticsParameterItemName: name.replacingOccurrences(of: " ", with: "_") as NSObject
|
||||
]
|
||||
|
||||
@@ -170,17 +104,16 @@ class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
|
||||
|
||||
// MARK: - Traker Type
|
||||
|
||||
public enum TrackerType: CaseIterable {
|
||||
internal enum TrackerType: CaseIterable {
|
||||
|
||||
case matomo
|
||||
case firebase
|
||||
}
|
||||
|
||||
// MARK: - Manager
|
||||
|
||||
public class AnalyticsManager {
|
||||
internal class AnalyticsManager {
|
||||
|
||||
public static var shared = AnalyticsManager()
|
||||
internal static var shared = AnalyticsManager()
|
||||
|
||||
private init() {}
|
||||
|
||||
@@ -188,6 +121,8 @@ public class AnalyticsManager {
|
||||
|
||||
var managers: [TrackerType: AnalyticsManagerProtocol] = [:]
|
||||
|
||||
private var isDebugMode: Bool = false
|
||||
|
||||
private var isEnabled: Bool {
|
||||
if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
|
||||
false
|
||||
@@ -196,6 +131,8 @@ public class AnalyticsManager {
|
||||
}
|
||||
}
|
||||
|
||||
private let logger = Logger(subsystem: "resgen", category: "analytics")
|
||||
|
||||
// MARK: - Enable Methods
|
||||
|
||||
private func setAnalytics(enable: Bool, _ analytics: [TrackerType]) {
|
||||
@@ -208,32 +145,55 @@ public class AnalyticsManager {
|
||||
}
|
||||
}
|
||||
|
||||
public func enableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
|
||||
internal func enableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
|
||||
setAnalytics(enable: true, analytics)
|
||||
}
|
||||
|
||||
public func disableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
|
||||
internal func disableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
|
||||
setAnalytics(enable: false, analytics)
|
||||
}
|
||||
|
||||
public func configure(siteId: String, url: String) {
|
||||
managers[TrackerType.matomo] = MatomoAnalyticsManager(
|
||||
siteId: siteId,
|
||||
url: url
|
||||
)
|
||||
internal func configure(isDebugMode: Bool = false) {
|
||||
self.isDebugMode = isDebugMode
|
||||
managers[TrackerType.firebase] = FirebaseAnalyticsManager()
|
||||
}
|
||||
|
||||
// MARK: - Private Log Methods
|
||||
|
||||
private func formattedParams(_ params: [String: Any]?) -> String {
|
||||
guard let params = params, !params.isEmpty else { return "-" }
|
||||
|
||||
let formattedParams = params.map { key, value in
|
||||
" \(key): \(value)"
|
||||
}
|
||||
.joined(separator: "\n")
|
||||
|
||||
return "\n" + formattedParams
|
||||
}
|
||||
|
||||
private func logScreen(
|
||||
name: String,
|
||||
path: String,
|
||||
params: [String: Any]?
|
||||
) {
|
||||
guard isEnabled else { return }
|
||||
guard isEnabled else {
|
||||
if isDebugMode {
|
||||
logger.log("Analytics disabled")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug("""
|
||||
🖥️ Screen:
|
||||
Name: \(name, privacy: .public)
|
||||
Path: \(path, privacy: .public)
|
||||
Params: \(self.formattedParams(params), privacy: .public)
|
||||
""")
|
||||
}
|
||||
|
||||
manager.logScreen(
|
||||
name: name,
|
||||
path: path,
|
||||
@@ -248,9 +208,25 @@ public class AnalyticsManager {
|
||||
category: String,
|
||||
params: [String: Any]?
|
||||
) {
|
||||
guard isEnabled else { return }
|
||||
guard isEnabled else {
|
||||
if isDebugMode {
|
||||
logger.log("Analytics disabled")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug("""
|
||||
📊 Event:
|
||||
Name: \(name, privacy: .public)
|
||||
Action: \(action.isEmpty ? "-" : action, privacy: .public)
|
||||
Category: \(category.isEmpty ? "-" : category, privacy: .public)
|
||||
Params: \(self.formattedParams(params), privacy: .public)
|
||||
""")
|
||||
}
|
||||
|
||||
manager.logEvent(
|
||||
name: name,
|
||||
action: action,
|
||||
@@ -262,7 +238,7 @@ public class AnalyticsManager {
|
||||
|
||||
// MARK: - section_one
|
||||
|
||||
public func logScreenS1DefOne(title: String) {
|
||||
internal func logScreenS1DefOne(title: String) {
|
||||
logScreen(
|
||||
name: "s1 def one \(title)",
|
||||
path: "s1_def_one/\(title)",
|
||||
@@ -270,7 +246,7 @@ public class AnalyticsManager {
|
||||
)
|
||||
}
|
||||
|
||||
public func logEventS1DefTwo(
|
||||
internal func logEventS1DefTwo(
|
||||
title: String,
|
||||
count: String,
|
||||
test2: String = "test"
|
||||
@@ -290,7 +266,7 @@ public class AnalyticsManager {
|
||||
|
||||
// MARK: - section_two
|
||||
|
||||
public func logScreenS2DefOne() {
|
||||
internal func logScreenS2DefOne() {
|
||||
logScreen(
|
||||
name: "s2 def one",
|
||||
path: "s2_def_one/",
|
||||
|
||||
@@ -33,13 +33,13 @@ FORCE_FLAG="$1"
|
||||
#echo "\n-------------------------\n"
|
||||
|
||||
## Strings
|
||||
swift run -c release ResgenSwift strings stringium $FORCE_FLAG "./Strings/sampleStrings.txt" \
|
||||
--output-path "./Strings/Generated" \
|
||||
--langs "fr en en-us" \
|
||||
--default-lang "en" \
|
||||
--extension-output-path "./Strings/Generated" \
|
||||
--extension-name "String" \
|
||||
--extension-suffix "GenAllScript"
|
||||
#swift run -c release ResgenSwift strings stringium $FORCE_FLAG "./Strings/sampleStrings.txt" \
|
||||
# --output-path "./Strings/Generated" \
|
||||
# --langs "fr en en-us" \
|
||||
# --default-lang "en" \
|
||||
# --extension-output-path "./Strings/Generated" \
|
||||
# --extension-name "String" \
|
||||
# --extension-suffix "GenAllScript"
|
||||
|
||||
#echo "\n-------------------------\n"
|
||||
#
|
||||
@@ -53,12 +53,9 @@ swift run -c release ResgenSwift strings stringium $FORCE_FLAG "./Strings/sample
|
||||
#echo "\n-------------------------\n"
|
||||
#
|
||||
## Analytics
|
||||
#swift run -c release ResgenSwift analytics $FORCE_FLAG "./Tags/sampleTags.yml" \
|
||||
# --target "firebase" \
|
||||
# --extension-output-path "./Tags/Generated" \
|
||||
# --extension-name "Analytics" \
|
||||
# --extension-suffix "GenAllScript" \
|
||||
# --static-members true
|
||||
swift run -c release ResgenSwift analytics -f "./Tags/sampleTags.yml" \
|
||||
--target "firebase" \
|
||||
--output-file "./Tags/Generated/Analytics+GenAllScript.swift"
|
||||
#
|
||||
#echo "\n-------------------------\n"
|
||||
#
|
||||
|
||||
@@ -13,7 +13,7 @@ struct Analytics: ParsableCommand {
|
||||
|
||||
// MARK: - Command Configuration
|
||||
|
||||
static var configuration = CommandConfiguration(
|
||||
static let configuration = CommandConfiguration(
|
||||
abstract: "Generate analytics extension file.",
|
||||
version: ResgenSwiftVersion
|
||||
)
|
||||
@@ -38,9 +38,6 @@ struct Analytics: ParsableCommand {
|
||||
|
||||
print("[\(Self.toolName)] Will generate analytics")
|
||||
|
||||
// Check requirements
|
||||
guard checkRequirements() else { return }
|
||||
|
||||
// Parse input file
|
||||
let sections = AnalyticsFileParser().parse(options.inputFile, target: options.target)
|
||||
|
||||
|
||||
@@ -143,6 +143,8 @@ enum AnalyticsGenerator {
|
||||
visibility: ExtensionVisibility
|
||||
) -> String {
|
||||
"""
|
||||
private var isDebugMode: Bool = false
|
||||
|
||||
private var isEnabled: Bool {
|
||||
if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
|
||||
false
|
||||
@@ -151,6 +153,8 @@ enum AnalyticsGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
private let logger = Logger(subsystem: "resgen", category: "analytics")
|
||||
|
||||
// MARK: - Enable Methods
|
||||
|
||||
private func setAnalytics(enable: Bool, _ analytics: [TrackerType]) {
|
||||
@@ -186,6 +190,8 @@ enum AnalyticsGenerator {
|
||||
result.append("import FirebaseAnalytics")
|
||||
}
|
||||
|
||||
result.append("import os")
|
||||
|
||||
return result.joined(separator: "\n")
|
||||
}
|
||||
|
||||
@@ -193,14 +199,40 @@ enum AnalyticsGenerator {
|
||||
"""
|
||||
// MARK: - Private Log Methods
|
||||
|
||||
private func formattedParams(_ params: [String: Any]?) -> String {
|
||||
guard let params = params, !params.isEmpty else { return "-" }
|
||||
|
||||
let formattedParams = params.map { key, value in
|
||||
" \\(key): \\(value)"
|
||||
}
|
||||
.joined(separator: "\\n")
|
||||
|
||||
return "\\n" + formattedParams
|
||||
}
|
||||
|
||||
private func logScreen(
|
||||
name: String,
|
||||
path: String,
|
||||
params: [String: Any]?
|
||||
) {
|
||||
guard isEnabled else { return }
|
||||
guard isEnabled else {
|
||||
if isDebugMode {
|
||||
logger.log("Analytics disabled")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug(\"""
|
||||
🖥️ Screen:
|
||||
Name: \\(name, privacy: .public)
|
||||
Path: \\(path, privacy: .public)
|
||||
Params: \\(self.formattedParams(params), privacy: .public)
|
||||
\""")
|
||||
}
|
||||
|
||||
manager.logScreen(
|
||||
name: name,
|
||||
path: path,
|
||||
@@ -215,9 +247,25 @@ enum AnalyticsGenerator {
|
||||
category: String,
|
||||
params: [String: Any]?
|
||||
) {
|
||||
guard isEnabled else { return }
|
||||
guard isEnabled else {
|
||||
if isDebugMode {
|
||||
logger.log("Analytics disabled")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
managers.values.forEach { manager in
|
||||
|
||||
if isDebugMode {
|
||||
logger.debug(\"""
|
||||
📊 Event:
|
||||
Name: \\(name, privacy: .public)
|
||||
Action: \\(action.isEmpty ? "-" : action, privacy: .public)
|
||||
Category: \\(category.isEmpty ? "-" : category, privacy: .public)
|
||||
Params: \\(self.formattedParams(params), privacy: .public)
|
||||
\""")
|
||||
}
|
||||
|
||||
manager.logEvent(
|
||||
name: name,
|
||||
action: action,
|
||||
@@ -238,11 +286,13 @@ enum AnalyticsGenerator {
|
||||
let footer = " }"
|
||||
|
||||
if targets.contains(TrackerType.matomo) {
|
||||
header = "\(visibility) func configure(siteId: String, url: String) {"
|
||||
header = "\(visibility) func configure(siteId: String, url: String, isDebugMode: Bool = false) {"
|
||||
} else if targets.contains(TrackerType.firebase) {
|
||||
header = "\(visibility) func configure() {"
|
||||
header = "\(visibility) func configure(isDebugMode: Bool = false) {"
|
||||
}
|
||||
|
||||
content.append(" self.isDebugMode = isDebugMode")
|
||||
|
||||
if targets.contains(TrackerType.matomo) {
|
||||
content.append("""
|
||||
managers[TrackerType.matomo] = MatomoAnalyticsManager(
|
||||
|
||||
@@ -79,7 +79,7 @@ enum FirebaseGenerator {
|
||||
category: String,
|
||||
params: [String: Any]?
|
||||
) {
|
||||
var parameters: [String:NSObject] = [
|
||||
var parameters: [String: NSObject] = [
|
||||
AnalyticsParameterItemName: name.replacingOccurrences(of: " ", with: "_") as NSObject
|
||||
]
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ struct Fonts: ParsableCommand {
|
||||
|
||||
// MARK: - CommandConfiguration
|
||||
|
||||
static var configuration = CommandConfiguration(
|
||||
static let configuration = CommandConfiguration(
|
||||
abstract: "A utility to generate an helpful etension to access your custom font from code and also Info.plist UIAppsFont content.",
|
||||
version: ResgenSwiftVersion
|
||||
)
|
||||
|
||||
@@ -13,7 +13,7 @@ struct Generate: ParsableCommand {
|
||||
|
||||
// MARK: - CommandConfiguration
|
||||
|
||||
static var configuration = CommandConfiguration(
|
||||
static let configuration = CommandConfiguration(
|
||||
abstract: "A utility to generate ressources based on a configuration file",
|
||||
version: ResgenSwiftVersion
|
||||
)
|
||||
|
||||
@@ -38,8 +38,8 @@ extension StringsConfiguration: Runnable {
|
||||
("--extension-suffix", extensionSuffix),
|
||||
("--visibility", visibility),
|
||||
("--asset-bundle", assetBundle),
|
||||
("--xc-strings", staticMembers?.description),
|
||||
("--static-members", xcStrings?.description)
|
||||
("--xc-strings", xcStrings?.description),
|
||||
("--static-members", staticMembers?.description)
|
||||
].forEach { argumentName, argumentValue in
|
||||
if let argumentValue {
|
||||
args += [
|
||||
|
||||
@@ -186,8 +186,6 @@ class XcassetsGenerator {
|
||||
atomically: false,
|
||||
encoding: .utf8
|
||||
)
|
||||
|
||||
print("\(parsedImage.name) -> Generated")
|
||||
}
|
||||
|
||||
// Success info
|
||||
|
||||
@@ -13,7 +13,7 @@ struct Images: ParsableCommand {
|
||||
|
||||
// MARK: - CommandConfiguration
|
||||
|
||||
static var configuration = CommandConfiguration(
|
||||
static let configuration = CommandConfiguration(
|
||||
abstract: "A utility for generate images and an extension to access them easily.",
|
||||
version: ResgenSwiftVersion
|
||||
)
|
||||
|
||||
@@ -176,21 +176,21 @@ enum StringsFileGenerator {
|
||||
return // Go to next section
|
||||
}
|
||||
|
||||
section.definitions.forEach { definition in // swiftlint:disable:this closure_body_length
|
||||
var skipDefinition = false
|
||||
section
|
||||
.definitions
|
||||
.forEach { definition in // swiftlint:disable:this closure_body_length
|
||||
var isNoTranslation = false
|
||||
|
||||
var localizationTab: [XCStringLocalization] = []
|
||||
|
||||
if definition.hasOneOrMoreMatchingTags(inputTags: inputTags) == false {
|
||||
skipDefinition = true
|
||||
guard definition.hasOneOrMoreMatchingTags(inputTags: inputTags) else {
|
||||
return
|
||||
}
|
||||
|
||||
if definition.tags.contains(Stringium.noTranslationTag) {
|
||||
isNoTranslation = true
|
||||
}
|
||||
|
||||
if !skipDefinition {
|
||||
if isNoTranslation {
|
||||
// Search for langs in yaml
|
||||
for lang in langs {
|
||||
@@ -209,7 +209,8 @@ enum StringsFileGenerator {
|
||||
}
|
||||
} else {
|
||||
// Search for langs in twine
|
||||
for (lang, value) in definition.translations where !value.isEmpty {
|
||||
for (lang, value) in definition.translations
|
||||
where langs.contains(lang) && !value.isEmpty {
|
||||
let localization = XCStringLocalization(
|
||||
lang: lang,
|
||||
content: XCStringLocalizationLangContent(
|
||||
@@ -219,7 +220,6 @@ enum StringsFileGenerator {
|
||||
)
|
||||
)
|
||||
)
|
||||
print("VALUE: \(value)")
|
||||
localizationTab.append(localization)
|
||||
}
|
||||
}
|
||||
@@ -238,7 +238,6 @@ enum StringsFileGenerator {
|
||||
xcStringDefinitionTab.append(xcStringDefinition)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let xcStringContainer = XCStringDefinitionContainer(strings: xcStringDefinitionTab)
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ struct Stringium: ParsableCommand {
|
||||
|
||||
// MARK: - Command Configuration
|
||||
|
||||
static var configuration = CommandConfiguration(
|
||||
static let configuration = CommandConfiguration(
|
||||
abstract: "Generate strings with custom scripts.",
|
||||
version: ResgenSwiftVersion
|
||||
)
|
||||
|
||||
@@ -11,7 +11,7 @@ import ToolCore
|
||||
|
||||
struct Strings: ParsableCommand {
|
||||
|
||||
static var configuration = CommandConfiguration(
|
||||
static let configuration = CommandConfiguration(
|
||||
abstract: "A utility for generate strings.",
|
||||
version: ResgenSwiftVersion,
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ struct Tags: ParsableCommand {
|
||||
|
||||
// MARK: - Command Configuration
|
||||
|
||||
static var configuration = CommandConfiguration(
|
||||
static let configuration = CommandConfiguration(
|
||||
abstract: "Generate tags extension file.",
|
||||
version: ResgenSwiftVersion
|
||||
)
|
||||
|
||||
@@ -13,7 +13,7 @@ struct Twine: ParsableCommand {
|
||||
|
||||
// MARK: - Command Configuration
|
||||
|
||||
static var configuration = CommandConfiguration(
|
||||
static let configuration = CommandConfiguration(
|
||||
abstract: "Generate strings with twine.",
|
||||
version: ResgenSwiftVersion
|
||||
)
|
||||
|
||||
@@ -11,7 +11,7 @@ import ToolCore
|
||||
|
||||
struct ResgenSwift: ParsableCommand {
|
||||
|
||||
static var configuration = CommandConfiguration(
|
||||
static let configuration = CommandConfiguration(
|
||||
abstract: "A utility for generate ressources.",
|
||||
version: ResgenSwiftVersion,
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
||||
category: String,
|
||||
params: [String: Any]?
|
||||
) {
|
||||
var parameters: [String:NSObject] = [
|
||||
var parameters: [String: NSObject] = [
|
||||
AnalyticsParameterItemName: name.replacingOccurrences(of: " ", with: "_") as NSObject
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user