From abb7c8f8c8f99794f5251f2c43c078b682593ef6 Mon Sep 17 00:00:00 2001 From: Loris Perret Date: Fri, 8 Dec 2023 17:10:21 +0100 Subject: [PATCH] Add Swiftlint --- CHANGELOG.md | 2 +- Package.resolved | 71 +++++++++++++++++-- Package.swift | 6 +- README.md | 28 ++++---- Sources/ResgenSwift/Analytics/Analytics.swift | 1 - .../Analytics/Model/AnalyticsDefinition.swift | 6 +- .../Generator/ColorExtensionGenerator.swift | 2 +- .../Colors/Generator/ColorXcassetHelper.swift | 2 +- .../Generator/FontToolContentGenerator.swift | 2 +- .../Generate/GenerateOptions.swift | 2 - .../Generator/ArchitectureGenerator.swift | 2 +- .../Generate/Runnable/Runnable.swift | 1 - .../Extensions/FileManagerExtensions.swift | 4 +- .../Generator/ImageExtensionGenerator.swift | 2 +- .../Generator/StringsFileGenerator.swift | 4 +- .../Strings/Generator/TagsGenerator.swift | 2 +- .../Strings/Model/Definition.swift | 2 +- Sources/ResgenSwift/Strings/Strings.swift | 1 - Sources/ResgenSwift/Strings/Tag/Tags.swift | 1 - .../Generate/ColorsConfigurationTests.swift | 6 +- .../Generate/FontsConfigurationTests.swift | 6 +- .../Generate/ImagesConfigurationTests.swift | 6 +- script/swiftlint.sh | 48 +++++++++++++ 23 files changed, 157 insertions(+), 50 deletions(-) create mode 100755 script/swiftlint.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 27b823b..cf0cb95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ - Update plist `UIAppFonts` when generated fonts (use plistBuddy) - New parameter: `infoPlistPaths` - Generate SwiftUI extensions for colors, fonts and images - - New parameter: `extensionNameSwiftUI` + - New parameter: `extensionNameUIKit` - Adding Makefile to install, unsintall and create man page. ## Fixes diff --git a/Package.resolved b/Package.resolved index 6373e5f..60ab9d4 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,12 +1,75 @@ { "pins" : [ + { + "identity" : "collectionconcurrencykit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/JohnSundell/CollectionConcurrencyKit.git", + "state" : { + "revision" : "b4f23e24b5a1bff301efc5e70871083ca029ff95", + "version" : "0.2.0" + } + }, + { + "identity" : "cryptoswift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/krzyzanowskim/CryptoSwift.git", + "state" : { + "revision" : "db51c407d3be4a051484a141bf0bff36c43d3b1e", + "version" : "1.8.0" + } + }, + { + "identity" : "sourcekitten", + "kind" : "remoteSourceControl", + "location" : "https://github.com/jpsim/SourceKitten.git", + "state" : { + "revision" : "b6dc09ee51dfb0c66e042d2328c017483a1a5d56", + "version" : "0.34.1" + } + }, { "identity" : "swift-argument-parser", "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-argument-parser", "state" : { - "revision" : "9f39744e025c7d377987f30b03770805dcb0bcd1", - "version" : "1.1.4" + "revision" : "8f4d2753f0e4778c76d5f05ad16c74f707390531", + "version" : "1.2.3" + } + }, + { + "identity" : "swift-syntax", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-syntax.git", + "state" : { + "revision" : "6ad4ea24b01559dde0773e3d091f1b9e36175036", + "version" : "509.0.2" + } + }, + { + "identity" : "swiftlint", + "kind" : "remoteSourceControl", + "location" : "https://github.com/realm/SwiftLint.git", + "state" : { + "revision" : "f17a4f9dfb6a6afb0408426354e4180daaf49cee", + "version" : "0.54.0" + } + }, + { + "identity" : "swiftytexttable", + "kind" : "remoteSourceControl", + "location" : "https://github.com/scottrhoyt/SwiftyTextTable.git", + "state" : { + "revision" : "c6df6cf533d120716bff38f8ff9885e1ce2a4ac3", + "version" : "0.9.0" + } + }, + { + "identity" : "swxmlhash", + "kind" : "remoteSourceControl", + "location" : "https://github.com/drmohundro/SWXMLHash.git", + "state" : { + "revision" : "a853604c9e9a83ad9954c7e3d2a565273982471f", + "version" : "7.0.2" } }, { @@ -14,8 +77,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/jpsim/Yams.git", "state" : { - "revision" : "01835dc202670b5bb90d07f3eae41867e9ed29f6", - "version" : "5.0.1" + "revision" : "0d9ee7ea8c4ebd4a489ad7a73d5c6cad55d6fed3", + "version" : "5.0.6" } } ], diff --git a/Package.swift b/Package.swift index 477d2be..f9cc54c 100644 --- a/Package.swift +++ b/Package.swift @@ -9,7 +9,8 @@ let package = Package( dependencies: [ // Dependencies declare other packages that this package depends on. .package(url: "https://github.com/apple/swift-argument-parser", from: "1.0.0"), - .package(url: "https://github.com/jpsim/Yams.git", from: "5.0.1") + .package(url: "https://github.com/jpsim/Yams.git", from: "5.0.1"), + .package(url: "https://github.com/realm/SwiftLint.git", .upToNextMajor(from: "0.54.0")), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. @@ -20,7 +21,8 @@ let package = Package( "ToolCore", .product(name: "ArgumentParser", package: "swift-argument-parser"), "Yams" - ] + ], + plugins: [.plugin(name: "SwiftLintPlugin", package: "SwiftLint")] ), // Helper targets diff --git a/README.md b/README.md index eaf249e..8b81714 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ iOS required to use the **real name** of the font, this name can be different fr swift run -c release ResgenSwift fonts $FORCE_FLAG "./Fonts/fonts.txt" \ --extension-output-path "./Fonts/Generated" \ --extension-name "AppFont" \ - --extension-name-swift-ui "SUIAppFont" \ + --extension-name-ui-kit "UIAppFont" \ --extension-suffix "GreatApp" \ --static-members true \ --info-plist-paths "./path/one/to/Info.plist ./path/two/to/Info.plist" @@ -27,8 +27,8 @@ swift run -c release ResgenSwift fonts $FORCE_FLAG "./Fonts/fonts.txt" \ 1. `-f`: force generation 2. Font input folder, it will search for every `.ttf` and `.otf` files specified in `fonts.txt` 3. `--extension-output-path`: path where to generate generated extension -4. `--extension-name` *(optional)* : name of the class to add UIKit getters -5. `--extension-name-swift-ui` *(optional)* : name of the class to add SwiftUI getters +4. `--extension-name` *(optional)* : name of the class to add SwiftUI getters +5. `--extension-name-ui-kit` *(optional)* : name of the class to add UIKit getters 6. `--extension-suffix` *(optional)* : additional text which is added to the filename (ex: `AppFont+GreatApp.swift`) 7. `--static-members` *(optional)*: generate static properties or not 8. `--info-plist-paths` *(optional)*: array of `.plist`, you can specify multiple `Info.plist` for multiple targets @@ -44,7 +44,7 @@ swift run -c release ResgenSwift colors $FORCE_FLAG "./Colors/colors.txt" \ --xcassets-path "./Colors/colors.xcassets" \ --extension-output-path "./Colors/Generated/" \ --extension-name "AppColor" \ - --extension-name-swift-ui "SUIAppColor" \ + --extension-name-ui-kit "UIAppColor" \ --extension-suffix "GreatApp" \ --static-members true ``` @@ -55,8 +55,8 @@ swift run -c release ResgenSwift colors $FORCE_FLAG "./Colors/colors.txt" \ 2. Input colors file 3. `--style` can be `all` or `light` 4. `--extension-output-path`: path where to generate generated extension -5. `--extension-name` *(optional)* : name of the class to add UIKit getters -6. `--extension-name-swift-ui` *(optional)* : name of the class to add SwiftUI getters +5. `--extension-name` *(optional)* : name of the class to add SwiftUI getters +6. `--extension-name-ui-kit` *(optional)* : name of the class to add UIKit getters 7. `--extension-suffix` *(optional)* : additional text which is added to filename (ex: `AppColor+GreatApp.swift`) 8. `--static-members` *(optional)*: generate static properties or not @@ -142,7 +142,7 @@ swift run -c release ResgenSwift images $FORCE_FLAG "./Images/images.txt" \ --xcassets-path "./Images/app.xcassets" \ --extension-output-path "./Images/Generated" \ --extension-name "AppImage" \ - --extension-name-swift-ui "SUIAppImage" \ + --extension-name-ui-kit "UIAppImage" \ --extension-suffix "GreatApp" \ --static-members true ``` @@ -153,8 +153,8 @@ swift run -c release ResgenSwift images $FORCE_FLAG "./Images/images.txt" \ 2. Input images definitions file 3. `--xcassets-path`: xcasset path where to generate imagesets 4. `--extension-output-path`: path where to generate generated extension -5. `--extension-name` *(optional)* : name of the class to add UIKit getters -6. `--extension-name-swift-ui` *(optional)* : name of the class to add SwiftUI getters +5. `--extension-name` *(optional)* : name of the class to add SwiftUI getters +6. `--extension-name-ui-kit` *(optional)* : name of the class to add UIKit getters 6. `--extension-suffix` *(optional)* : additional text which is added to filename (ex: `AppImage+GreatApp.swift`) 7. `--static-members` *(optional)*: generate static properties or not @@ -176,7 +176,7 @@ colors: xcassetsPath: String extensionOutputPath: String extensionName: String? - extensionNameSwiftUI: String? + extensionNameUIKit: String? extensionSuffix: String? staticMembers: Bool? @@ -185,7 +185,7 @@ fonts: inputFile: String extensionOutputPath: String extensionName: String? - extensionNameSwiftUI: String? + extensionNameUIKit: String? extensionSuffix: String? staticMembers: Bool? infoPlistPaths: [String] @@ -196,7 +196,7 @@ images: xcassetsPath: String extensionOutputPath: String extensionName: String? - extensionNameSwiftUI: String? + extensionNameUIKit: String? extensionSuffix: String? staticMembers: Bool? @@ -236,7 +236,7 @@ colors: xcassetsPath: String extensionOutputPath: String extensionName: String? - extensionNameSwiftUI: String? + extensionNameUIKit: String? extensionSuffix: String? staticMembers: Bool? - @@ -245,7 +245,7 @@ colors: xcassetsPath: String extensionOutputPath: String extensionName: String? - extensionNameSwiftUI: String? + extensionNameUIKit: String? extensionSuffix: String? staticMembers: Bool? ... diff --git a/Sources/ResgenSwift/Analytics/Analytics.swift b/Sources/ResgenSwift/Analytics/Analytics.swift index ef42c9c..a9a810e 100644 --- a/Sources/ResgenSwift/Analytics/Analytics.swift +++ b/Sources/ResgenSwift/Analytics/Analytics.swift @@ -18,7 +18,6 @@ struct Analytics: ParsableCommand { version: ResgenSwiftVersion ) - // MARK: - Static static let toolName = "Analytics" diff --git a/Sources/ResgenSwift/Analytics/Model/AnalyticsDefinition.swift b/Sources/ResgenSwift/Analytics/Model/AnalyticsDefinition.swift index 9c7cadb..a1d5a7a 100644 --- a/Sources/ResgenSwift/Analytics/Model/AnalyticsDefinition.swift +++ b/Sources/ResgenSwift/Analytics/Model/AnalyticsDefinition.swift @@ -25,7 +25,7 @@ class AnalyticsDefinition { } func hasOneOrMoreMatchingTags(inputTags: [String]) -> Bool { - if Set(inputTags).intersection(Set(self.tags)).isEmpty { + if Set(inputTags).isDisjoint(with: tags) { return false } return true @@ -47,7 +47,7 @@ class AnalyticsDefinition { var result: String if type == .screen { - params = params.filter{ param in + params = params.filter { param in !param.replaceIn.isEmpty } } @@ -71,7 +71,7 @@ class AnalyticsDefinition { return result } - private func replaceIn(){ + private func replaceIn() { for parameter in parameters { for rep in parameter.replaceIn { switch rep { diff --git a/Sources/ResgenSwift/Colors/Generator/ColorExtensionGenerator.swift b/Sources/ResgenSwift/Colors/Generator/ColorExtensionGenerator.swift index 018c540..f974b05 100644 --- a/Sources/ResgenSwift/Colors/Generator/ColorExtensionGenerator.swift +++ b/Sources/ResgenSwift/Colors/Generator/ColorExtensionGenerator.swift @@ -30,7 +30,7 @@ struct ColorExtensionGenerator { let extensionFilePathURL = URL(fileURLWithPath: extensionFilePath) do { try extensionContent.write(to: extensionFilePathURL, atomically: false, encoding: .utf8) - } catch (let error) { + } catch let error { let error = ColorsToolError.writeExtension(extensionFilePath, error.localizedDescription) print(error.description) Colors.exit(withError: error) diff --git a/Sources/ResgenSwift/Colors/Generator/ColorXcassetHelper.swift b/Sources/ResgenSwift/Colors/Generator/ColorXcassetHelper.swift index 45eee87..7824264 100644 --- a/Sources/ResgenSwift/Colors/Generator/ColorXcassetHelper.swift +++ b/Sources/ResgenSwift/Colors/Generator/ColorXcassetHelper.swift @@ -38,7 +38,7 @@ struct ColorXcassetHelper { let contentsJsonPathURL = URL(fileURLWithPath: contentsJsonPath) do { try color.contentsJSON().write(to: contentsJsonPathURL, atomically: false, encoding: .utf8) - } catch (let error) { + } catch let error { let error = ColorsToolError.writeAsset(error.localizedDescription) print(error.description) Colors.exit(withError: error) diff --git a/Sources/ResgenSwift/Fonts/Generator/FontToolContentGenerator.swift b/Sources/ResgenSwift/Fonts/Generator/FontToolContentGenerator.swift index 45c0a03..6d9d228 100644 --- a/Sources/ResgenSwift/Fonts/Generator/FontToolContentGenerator.swift +++ b/Sources/ResgenSwift/Fonts/Generator/FontToolContentGenerator.swift @@ -36,7 +36,7 @@ class FontExtensionGenerator { let extensionFilePathURL = URL(fileURLWithPath: extensionFilePath) do { try extensionContent.write(to: extensionFilePathURL, atomically: false, encoding: .utf8) - } catch (let error) { + } catch let error { let error = FontsToolError.writeExtension(extensionFilePath, error.localizedDescription) print(error.description) Fonts.exit(withError: error) diff --git a/Sources/ResgenSwift/Generate/GenerateOptions.swift b/Sources/ResgenSwift/Generate/GenerateOptions.swift index bedf445..da3c263 100644 --- a/Sources/ResgenSwift/Generate/GenerateOptions.swift +++ b/Sources/ResgenSwift/Generate/GenerateOptions.swift @@ -5,8 +5,6 @@ // Created by Thibaut Schmitt on 30/08/2022. // -import Foundation - import Foundation import ArgumentParser diff --git a/Sources/ResgenSwift/Generate/Generator/ArchitectureGenerator.swift b/Sources/ResgenSwift/Generate/Generator/ArchitectureGenerator.swift index df81bf8..7670780 100644 --- a/Sources/ResgenSwift/Generate/Generator/ArchitectureGenerator.swift +++ b/Sources/ResgenSwift/Generate/Generator/ArchitectureGenerator.swift @@ -30,7 +30,7 @@ struct ArchitectureGenerator { let architectureFilePathURL = URL(fileURLWithPath: "\(filePath)/\(filename)") do { try architectureContent.write(to: architectureFilePathURL, atomically: false, encoding: .utf8) - } catch (let error) { + } catch let error { let error = GenerateError.writeFile(filename, error.localizedDescription) print(error.description) Generate.exit(withError: error) diff --git a/Sources/ResgenSwift/Generate/Runnable/Runnable.swift b/Sources/ResgenSwift/Generate/Runnable/Runnable.swift index 8e2d937..532b52f 100644 --- a/Sources/ResgenSwift/Generate/Runnable/Runnable.swift +++ b/Sources/ResgenSwift/Generate/Runnable/Runnable.swift @@ -10,4 +10,3 @@ import Foundation protocol Runnable { func run(projectDirectory: String, force: Bool) } - diff --git a/Sources/ResgenSwift/Images/Extensions/FileManagerExtensions.swift b/Sources/ResgenSwift/Images/Extensions/FileManagerExtensions.swift index c02e798..bc4ccff 100644 --- a/Sources/ResgenSwift/Images/Extensions/FileManagerExtensions.swift +++ b/Sources/ResgenSwift/Images/Extensions/FileManagerExtensions.swift @@ -18,7 +18,7 @@ extension FileManager { for case let fileURL as URL in enumerator { do { - let fileAttributes = try fileURL.resourceValues(forKeys:[.isRegularFileKey]) + let fileAttributes = try fileURL.resourceValues(forKeys: [.isRegularFileKey]) if fileAttributes.isRegularFile! { files.append(fileURL.relativePath) } @@ -41,7 +41,7 @@ extension FileManager { for case let fileURL as URL in enumerator { do { - let fileAttributes = try fileURL.resourceValues(forKeys:[.isDirectoryKey]) + let fileAttributes = try fileURL.resourceValues(forKeys: [.isDirectoryKey]) if fileAttributes.isDirectory! && fileURL.lastPathComponent.hasSuffix(".imageset") { files.append(fileURL.lastPathComponent) } diff --git a/Sources/ResgenSwift/Images/Generator/ImageExtensionGenerator.swift b/Sources/ResgenSwift/Images/Generator/ImageExtensionGenerator.swift index 3982723..47e760b 100644 --- a/Sources/ResgenSwift/Images/Generator/ImageExtensionGenerator.swift +++ b/Sources/ResgenSwift/Images/Generator/ImageExtensionGenerator.swift @@ -29,7 +29,7 @@ class ImageExtensionGenerator { let extensionFilePathURL = URL(fileURLWithPath: extensionFilePath) do { try extensionContent.write(to: extensionFilePathURL, atomically: false, encoding: .utf8) - } catch (let error) { + } catch let error { let error = ImagesError.writeFile(extensionFilePath, error.localizedDescription) print(error.description) Images.exit(withError: error) diff --git a/Sources/ResgenSwift/Strings/Generator/StringsFileGenerator.swift b/Sources/ResgenSwift/Strings/Generator/StringsFileGenerator.swift index c918dc4..633ec7a 100644 --- a/Sources/ResgenSwift/Strings/Generator/StringsFileGenerator.swift +++ b/Sources/ResgenSwift/Strings/Generator/StringsFileGenerator.swift @@ -34,7 +34,7 @@ class StringsFileGenerator { let stringsFilePathURL = URL(fileURLWithPath: stringsFilePath) do { try fileContent.write(to: stringsFilePathURL, atomically: false, encoding: .utf8) - } catch (let error) { + } catch let error { let error = StringiumError.writeFile(error.localizedDescription, stringsFilePath) print(error.description) Stringium.exit(withError: error) @@ -115,7 +115,7 @@ class StringsFileGenerator { let extensionFilePathURL = URL(fileURLWithPath: extensionFilePath) do { try extensionFileContent.write(to: extensionFilePathURL, atomically: false, encoding: .utf8) - } catch (let error) { + } catch let error { let error = StringiumError.writeFile(extensionFilePath, error.localizedDescription) print(error.description) Stringium.exit(withError: error) diff --git a/Sources/ResgenSwift/Strings/Generator/TagsGenerator.swift b/Sources/ResgenSwift/Strings/Generator/TagsGenerator.swift index ee09d73..81d6ccc 100644 --- a/Sources/ResgenSwift/Strings/Generator/TagsGenerator.swift +++ b/Sources/ResgenSwift/Strings/Generator/TagsGenerator.swift @@ -22,7 +22,7 @@ class TagsGenerator { let extensionFilePathURL = URL(fileURLWithPath: extensionFilePath) do { try extensionFileContent.write(to: extensionFilePathURL, atomically: false, encoding: .utf8) - } catch (let error) { + } catch let error { let error = StringiumError.writeFile(extensionFilePath, error.localizedDescription) print(error.description) Stringium.exit(withError: error) diff --git a/Sources/ResgenSwift/Strings/Model/Definition.swift b/Sources/ResgenSwift/Strings/Model/Definition.swift index 458201d..6bb8cb7 100644 --- a/Sources/ResgenSwift/Strings/Model/Definition.swift +++ b/Sources/ResgenSwift/Strings/Model/Definition.swift @@ -37,7 +37,7 @@ class Definition { } func hasOneOrMoreMatchingTags(inputTags: [String]) -> Bool { - if Set(inputTags).intersection(Set(self.tags)).isEmpty { + if Set(inputTags).isDisjoint(with: tags) { return false } return true diff --git a/Sources/ResgenSwift/Strings/Strings.swift b/Sources/ResgenSwift/Strings/Strings.swift index a6bb185..1465d33 100644 --- a/Sources/ResgenSwift/Strings/Strings.swift +++ b/Sources/ResgenSwift/Strings/Strings.swift @@ -27,4 +27,3 @@ struct Strings: ParsableCommand { } //Strings.main() - diff --git a/Sources/ResgenSwift/Strings/Tag/Tags.swift b/Sources/ResgenSwift/Strings/Tag/Tags.swift index 7fedafa..26c0c4b 100644 --- a/Sources/ResgenSwift/Strings/Tag/Tags.swift +++ b/Sources/ResgenSwift/Strings/Tag/Tags.swift @@ -18,7 +18,6 @@ struct Tags: ParsableCommand { version: ResgenSwiftVersion ) - // MARK: - Static static let toolName = "Tags" diff --git a/Tests/ResgenSwiftTests/Generate/ColorsConfigurationTests.swift b/Tests/ResgenSwiftTests/Generate/ColorsConfigurationTests.swift index ded33fc..ea905f4 100644 --- a/Tests/ResgenSwiftTests/Generate/ColorsConfigurationTests.swift +++ b/Tests/ResgenSwiftTests/Generate/ColorsConfigurationTests.swift @@ -21,7 +21,7 @@ final class ColorsConfigurationTests: XCTestCase { xcassetsPath: "path/to/assets.xcassets", extensionOutputPath: "Colors/Generated", extensionName: nil, - extensionNameSwiftUI: nil, + extensionNameUIKit: nil, extensionSuffix: nil, staticMembers: false) // When @@ -50,7 +50,7 @@ final class ColorsConfigurationTests: XCTestCase { xcassetsPath: "path/to/assets.xcassets", extensionOutputPath: "Colors/Generated", extensionName: "AppUIColor", - extensionNameSwiftUI: "AppColor", + extensionNameUIKit: "AppColor", extensionSuffix: "Testing", staticMembers: false) // When @@ -70,7 +70,7 @@ final class ColorsConfigurationTests: XCTestCase { "false", "--extension-name", "AppUIColor", - "--extension-name-swift-ui", + "--extension-name-ui-kit", "AppColor", "--extension-suffix", "Testing", diff --git a/Tests/ResgenSwiftTests/Generate/FontsConfigurationTests.swift b/Tests/ResgenSwiftTests/Generate/FontsConfigurationTests.swift index 1c9757d..785b49c 100644 --- a/Tests/ResgenSwiftTests/Generate/FontsConfigurationTests.swift +++ b/Tests/ResgenSwiftTests/Generate/FontsConfigurationTests.swift @@ -19,7 +19,7 @@ final class FontsConfigurationTests: XCTestCase { let testingConfiguration = FontsConfiguration(inputFile: "path/to/fonts.txt", extensionOutputPath: "Fonts/Generated", extensionName: nil, - extensionNameSwiftUI: nil, + extensionNameUIKit: nil, extensionSuffix: nil, infoPlistPaths: nil, staticMembers: nil) @@ -43,7 +43,7 @@ final class FontsConfigurationTests: XCTestCase { let testingConfiguration = FontsConfiguration(inputFile: "path/to/fonts.txt", extensionOutputPath: "Fonts/Generated", extensionName: "AppUIFont", - extensionNameSwiftUI: "AppFont", + extensionNameUIKit: "AppFont", extensionSuffix: "Testing", infoPlistPaths: "path/to/plist1.plist path/to/plist2.plist", staticMembers: true) @@ -60,7 +60,7 @@ final class FontsConfigurationTests: XCTestCase { "true", "--extension-name", "AppUIFont", - "--extension-name-swift-ui", + "--extension-name-ui-kit", "AppFont", "--extension-suffix", "Testing", diff --git a/Tests/ResgenSwiftTests/Generate/ImagesConfigurationTests.swift b/Tests/ResgenSwiftTests/Generate/ImagesConfigurationTests.swift index 84c94e1..7e4f8ff 100644 --- a/Tests/ResgenSwiftTests/Generate/ImagesConfigurationTests.swift +++ b/Tests/ResgenSwiftTests/Generate/ImagesConfigurationTests.swift @@ -20,7 +20,7 @@ final class ImagesConfigurationTests: XCTestCase { xcassetsPath: "path/to/assets.xcassets", extensionOutputPath: "Images/Generated", extensionName: nil, - extensionNameSwiftUI: nil, + extensionNameUIKit: nil, extensionSuffix: nil, staticMembers: nil) @@ -47,7 +47,7 @@ final class ImagesConfigurationTests: XCTestCase { xcassetsPath: "path/to/assets.xcassets", extensionOutputPath: "Images/Generated", extensionName: "AppUIImage", - extensionNameSwiftUI: "AppImage", + extensionNameUIKit: "AppImage", extensionSuffix: "Testing", staticMembers: true) @@ -66,7 +66,7 @@ final class ImagesConfigurationTests: XCTestCase { "true", "--extension-name", "AppUIImage", - "--extension-name-swift-ui", + "--extension-name-ui-kit", "AppImage", "--extension-suffix", "Testing", diff --git a/script/swiftlint.sh b/script/swiftlint.sh new file mode 100755 index 0000000..c7a1aae --- /dev/null +++ b/script/swiftlint.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +# Go to git repo root level +cd $(git rev-parse --show-toplevel) + +if [[ "$BUILD_DIR" == *"IBDesignables"* ]] || [[ "$BUILD_DIR" == *"Previews"* ]] ; then + echo "not linting for IBDesignables/SwiftUI Previews builds"; + exit 0 +fi + +SWIFT_LINT=$(which swiftlint) + +if [[ -z $SWIFT_LINT ]] ; then + echo "warning: SwiftLint not installed, please download it from https://github.com/realm/SwiftLint" + exit 0 +fi + +if [[ $RUN_CLANG_STATIC_ANALYZER == "YES" ]] ; then + time $SWIFT_LINT +else + COUNT=0 + + ##### Check for modified git files ##### + FILES=$(git diff --name-only | grep -iv "^carthage" | grep -iv "^pods" | grep -iv "^vendor" | grep -v "R2" | grep ".swift$") + if [ ! -z "$FILES" ]; then + while read FILE_PATH; do + export SCRIPT_INPUT_FILE_$COUNT=$FILE_PATH + COUNT=$((COUNT + 1)) + done <<< "$FILES" + fi + + ##### Check for modified files in unstaged/Staged area ##### + FILES=$(git diff --name-only --cached --diff-filter=d | grep -iv "^carthage" | grep -iv "^pods" | grep -iv "^vendor" | grep -v "R2" | grep ".swift$") + if [ ! -z "$FILES" ]; then + while read FILE_PATH; do + export SCRIPT_INPUT_FILE_$COUNT=$FILE_PATH + COUNT=$((COUNT + 1)) + done <<< "$FILES" + fi + + ##### Make the count avilable as global variable ##### + export SCRIPT_INPUT_FILE_COUNT=$COUNT + env | grep SCRIPT_INPUT_FILE_ + + if [[ COUNT -ne 0 ]] ; then + time $SWIFT_LINT --use-script-input-files + fi +fi