Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move Configuration to separate module #798

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 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 @@ -90,6 +103,17 @@ var targets: [PackageDescription.Target] = [
.product(name: "Yams", package: "Yams"),
.product(name: "SystemPackage", package: "swift-system"),
.product(name: "FilenameMatcher", package: "swift-filename-matcher"),
.target(name: "BaseLogger"),

]
),
.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(
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
Loading