Skip to content

Commit

Permalink
Move Configuration to separate module
Browse files Browse the repository at this point in the history
  • Loading branch information
rofle100lvl committed Aug 21, 2024
1 parent a04e290 commit 2978c5f
Show file tree
Hide file tree
Showing 91 changed files with 230 additions and 119 deletions.
22 changes: 22 additions & 0 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,17 @@ var targets: [PackageDescription.Target] = [
.product(name: "SwiftIndexStore", package: "swift-indexstore"),
]
),
.target(name: "BaseLogger"),
.target(
name: "Configuration",
dependencies: [
.product(name: "FilenameMatcher", package: "swift-filename-matcher"),
.product(name: "Yams", package: "Yams"),
.product(name: "SystemPackage", package: "swift-system"),
.target(name: "BaseLogger"),
.target(name: "Shared"),
]
),
.target(
name: "ProjectDrivers",
dependencies: projectDriverDependencies
Expand All @@ -82,6 +93,8 @@ var targets: [PackageDescription.Target] = [
dependencies: [
.product(name: "SwiftSyntax", package: "swift-syntax"),
.target(name: "Shared"),
.target(name: "Configuration"),
.target(name: "Utils"),
]
),
.target(
Expand All @@ -92,6 +105,15 @@ var targets: [PackageDescription.Target] = [
.product(name: "FilenameMatcher", package: "swift-filename-matcher"),
]
),
.target(
name: "Utils",
dependencies: [
.product(name: "Yams", package: "Yams"),
.product(name: "SystemPackage", package: "swift-system"),
.product(name: "FilenameMatcher", package: "swift-filename-matcher"),
.target(name: "Configuration"),
]
),
.target(
name: "TestShared",
dependencies: [
Expand Down
77 changes: 77 additions & 0 deletions Sources/BaseLogger/BaseLogger.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import Foundation

public enum ANSIColor: String {
case bold = "\u{001B}[0;1m"
case red = "\u{001B}[0;31m"
case boldRed = "\u{001B}[0;1;31m"
case green = "\u{001B}[0;32m"
case boldGreen = "\u{001B}[0;1;32m"
case yellow = "\u{001B}[0;33m"
case boldYellow = "\u{001B}[0;1;33m"
case blue = "\u{001B}[0;34m"
case lightBlue = "\u{001B}[1;34m"
case magenta = "\u{001B}[0;35m"
case boldMagenta = "\u{001B}[0;1;35m"
case cyan = "\u{001B}[0;36m"
case white = "\u{001B}[0;37m"
case gray = "\u{001B}[0;1;30m"
}

@usableFromInline var isColorOutputCapable: Bool = {
guard let term = ProcessInfo.processInfo.environment["TERM"],
term.lowercased() != "dumb",
isatty(fileno(stdout)) != 0
else {
return false
}

return true
}()

@inlinable
public func colorize(_ text: String, _ color: ANSIColor) -> String {
guard isColorOutputCapable else { return text }
return "\(color.rawValue)\(text)\u{001B}[0;0m"
}

public final class BaseLogger {
public static let shared = BaseLogger()

@usableFromInline let outputQueue: DispatchQueue

private init() {
outputQueue = DispatchQueue(label: "BaseLogger.outputQueue")
}

@inlinable
public func info(_ text: String) {
log(text, output: stdout)
}

@inlinable
public func debug(_ text: String) {
log(text, output: stdout)
}

@inlinable
public func warn(_ text: String, newlinePrefix: Bool = false) {
if newlinePrefix {
log("", output: stderr)
}
let text = colorize("warning: ", .boldYellow) + text
log(text, output: stderr)
}

@inlinable
public func error(_ text: String) {
let text = colorize("error: ", .boldRed) + text
log(text, output: stderr)
}

// MARK: - Private

@inlinable
func log(_ line: String, output: UnsafeMutablePointer<FILE>) {
_ = outputQueue.sync { fputs(line + "\n", output) }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ import FilenameMatcher
import Foundation
import SystemPackage
import Yams
import Shared
import BaseLogger

public final class Configuration {
public static var defaultConfigurationFile = FilePath(".periphery.yml")
public static let shared = Configuration()
public static let shared = Configuration(logger: BaseLogger.shared)

public init(logger: BaseLogger = .shared) {
self.logger = logger
Expand Down
3 changes: 2 additions & 1 deletion Sources/Frontend/Commands/CheckUpdateCommand.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import ArgumentParser
import Foundation
import Shared
import Utils
import BaseLogger

struct CheckUpdateCommand: FrontendCommand {
static let configuration = CommandConfiguration(
Expand Down
1 change: 1 addition & 0 deletions Sources/Frontend/Commands/ClearCacheCommand.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import ArgumentParser
import Foundation
import Shared
import Utils

struct ClearCacheCommand: FrontendCommand {
static let configuration = CommandConfiguration(
Expand Down
2 changes: 1 addition & 1 deletion Sources/Frontend/Commands/FrontendCommand.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import ArgumentParser
import Shared
import BaseLogger

protocol FrontendCommand: ParsableCommand {}
extension FrontendCommand {
Expand Down
2 changes: 2 additions & 0 deletions Sources/Frontend/Commands/ScanBehavior.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import Foundation
import PeripheryKit
import Shared
import SystemPackage
import Configuration
import Utils

final class ScanBehavior {
private let configuration: Configuration
Expand Down
1 change: 1 addition & 0 deletions Sources/Frontend/Commands/ScanCommand.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import ArgumentParser
import Foundation
import Shared
import SystemPackage
import Configuration

struct ScanCommand: FrontendCommand {
static let configuration = CommandConfiguration(
Expand Down
2 changes: 2 additions & 0 deletions Sources/Frontend/CommonSetupGuide.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import Foundation
import Shared
import Configuration
import BaseLogger

final class CommonSetupGuide: SetupGuideHelpers {
private let configuration: Configuration
Expand Down
2 changes: 2 additions & 0 deletions Sources/Frontend/GuidedSetup.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import Foundation
import Shared
import Configuration
import BaseLogger

#if canImport(XcodeSupport)
import XcodeSupport
Expand Down
1 change: 1 addition & 0 deletions Sources/Frontend/Project.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import Foundation
import ProjectDrivers
import Shared
import SystemPackage
import Configuration

final class Project {
static func identify() throws -> Self {
Expand Down
1 change: 1 addition & 0 deletions Sources/Frontend/SPMProjectSetupGuide.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import Foundation
import Shared
import SystemPackage
import ProjectDrivers

final class SPMProjectSetupGuide: SetupGuideHelpers, SetupGuide {
static func detect() -> Self? {
Expand Down
3 changes: 3 additions & 0 deletions Sources/Frontend/Scan.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ import PeripheryKit
import ProjectDrivers
import Shared
import SourceGraph
import Configuration
import Utils
import BaseLogger

final class Scan {
private let configuration: Configuration
Expand Down
4 changes: 3 additions & 1 deletion Sources/Frontend/UpdateChecker.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import Foundation
import Shared

import Configuration
import Utils
import BaseLogger
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif
Expand Down
2 changes: 1 addition & 1 deletion Sources/Frontend/main.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import ArgumentParser
import Foundation
import Shared
import Utils

Logger.configureBuffering()

Expand Down
2 changes: 1 addition & 1 deletion Sources/Indexer/IndexPipeline.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Foundation
import Shared
import SourceGraph
import Utils

public struct IndexPipeline {
private let plan: IndexPlan
Expand Down
2 changes: 1 addition & 1 deletion Sources/Indexer/Indexer.swift
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import FilenameMatcher
import Foundation
import Shared
import SourceGraph
import SystemPackage
import Configuration

class Indexer {
private let configuration: Configuration
Expand Down
2 changes: 2 additions & 0 deletions Sources/Indexer/InfoPlistIndexer.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import Shared
import SourceGraph
import SystemPackage
import Utils
import Configuration

final class InfoPlistIndexer: Indexer {
private let infoPlistFiles: Set<FilePath>
Expand Down
2 changes: 2 additions & 0 deletions Sources/Indexer/SourceFileCollector.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import Shared
import SourceGraph
import SwiftIndexStore
import SystemPackage
import Utils
import Configuration

public struct SourceFileCollector {
private let indexStorePaths: Set<FilePath>
Expand Down
2 changes: 2 additions & 0 deletions Sources/Indexer/SwiftIndexer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import SourceGraph
import SwiftIndexStore
import SyntaxAnalysis
import SystemPackage
import Utils
import Configuration

public struct IndexUnit {
let store: IndexStore
Expand Down
2 changes: 2 additions & 0 deletions Sources/Indexer/XCDataModelIndexer.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import Shared
import SourceGraph
import SystemPackage
import Utils
import Configuration

final class XCDataModelIndexer: Indexer {
private let files: Set<FilePath>
Expand Down
2 changes: 2 additions & 0 deletions Sources/Indexer/XCMappingModelIndexer.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import Shared
import SourceGraph
import SystemPackage
import Utils
import Configuration

final class XCMappingModelIndexer: Indexer {
private let files: Set<FilePath>
Expand Down
2 changes: 2 additions & 0 deletions Sources/Indexer/XibIndexer.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import Shared
import SourceGraph
import SystemPackage
import Utils
import Configuration

final class XibIndexer: Indexer {
private let xibFiles: Set<FilePath>
Expand Down
1 change: 1 addition & 0 deletions Sources/PeripheryKit/Results/CheckstyleFormatter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import Foundation
import Shared
import SourceGraph
import SystemPackage
import Configuration

final class CheckstyleFormatter: OutputFormatter {
let configuration: Configuration
Expand Down
1 change: 1 addition & 0 deletions Sources/PeripheryKit/Results/CodeClimateFormatter.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import Foundation
import Shared
import SystemPackage
import Configuration

final class CodeClimateFormatter: OutputFormatter {
let configuration: Configuration
Expand Down
1 change: 1 addition & 0 deletions Sources/PeripheryKit/Results/CsvFormatter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import Foundation
import Shared
import SourceGraph
import SystemPackage
import Configuration

final class CsvFormatter: OutputFormatter {
let configuration: Configuration
Expand Down
1 change: 1 addition & 0 deletions Sources/PeripheryKit/Results/GitHubActionsFormatter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import Foundation
import Shared
import SourceGraph
import SystemPackage
import Configuration

final class GitHubActionsFormatter: OutputFormatter {
let configuration: Configuration
Expand Down
1 change: 1 addition & 0 deletions Sources/PeripheryKit/Results/JsonFormatter.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import Foundation
import Shared
import SystemPackage
import Configuration

final class JsonFormatter: OutputFormatter {
let configuration: Configuration
Expand Down
3 changes: 2 additions & 1 deletion Sources/PeripheryKit/Results/OutputDeclarationFilter.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import FilenameMatcher
import Foundation
import Shared
import SystemPackage
import Configuration
import Utils

public final class OutputDeclarationFilter {
private let configuration: Configuration
Expand Down
2 changes: 2 additions & 0 deletions Sources/PeripheryKit/Results/OutputFormatter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import Foundation
import Shared
import SourceGraph
import SystemPackage
import Configuration
import BaseLogger

public protocol OutputFormatter: AnyObject {
var configuration: Configuration { get }
Expand Down
2 changes: 2 additions & 0 deletions Sources/PeripheryKit/Results/XcodeFormatter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import Foundation
import Shared
import SourceGraph
import SystemPackage
import Configuration
import BaseLogger

final class XcodeFormatter: OutputFormatter {
let configuration: Configuration
Expand Down
3 changes: 3 additions & 0 deletions Sources/ProjectDrivers/BazelProjectDriver.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import Foundation
import Shared
import SystemPackage
import Configuration
import Utils
import BaseLogger

public class BazelProjectDriver: ProjectDriver {
public static var isSupported: Bool {
Expand Down
2 changes: 2 additions & 0 deletions Sources/ProjectDrivers/GenericProjectDriver.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import Indexer
import Shared
import SwiftIndexStore
import SystemPackage
import Configuration
import Utils

public final class GenericProjectDriver {
struct GenericConfig: Decodable {
Expand Down
Loading

0 comments on commit 2978c5f

Please sign in to comment.