Skip to content

Commit

Permalink
Merge pull request #11 from taji-taji/logger
Browse files Browse the repository at this point in the history
  • Loading branch information
taji-taji authored Jul 31, 2022
2 parents eb42523 + f3b0e9b commit 2b2fe07
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 11 deletions.
21 changes: 18 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,17 @@ let package = Package(
// ...
dependencies: [
// Danger
.package(name: "danger-swift", url: "https://github.com/danger/swift.git", from: "3.0.0"), // dev
.package(url: "https://github.com/danger/swift.git", from: "3.0.0"), // dev
// Danger Plugins
// Add the line below.
.package(name: "DangerSwiftPeriphery", url: "https://github.com/taji-taji/DangerSwiftPeriphery.git", from: "1.0.0"), // dev
.package(url: "https://github.com/taji-taji/DangerSwiftPeriphery.git", from: "1.0.0"), // dev
],
targets: [
// ...
// Add DangerSwiftPeriphery to dependencies in DangerDependencies.
.target(name: "DangerDependencies",
dependencies: [
.product(name: "Danger", package: "danger-swift"),
.product(name: "Danger", package: "swift"),
"DangerSwiftPeriphery",
]),
// ...
Expand Down Expand Up @@ -106,4 +106,19 @@ import DangerSwiftPeriphery
DangerPeriphery.scan(peripheryExecutable: "/path/to/periphery")
```

### Debug print

The option for Debug can be used to output debugging information.
This can be done in one of the following ways.

1. `verbose` argument
- Set the `verbose` argument of the scan method to true. (Default: false)
```swift
// in Dangerfile.swift
DangerPeriphery.scan(verbose: true)
```

2. `DANGER_SWIFT_PERIPHERY_DEBUG` environment variables
- Set `DANGER_SWIFT_PERIPHERY_DEBUG=1` in the environment where danger-swift is run.
This environment variable overrides the value of the `verbose` argument described above.

17 changes: 12 additions & 5 deletions Sources/DangerSwiftPeriphery/DangerPeriphery.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,26 @@ import Danger

public struct DangerPeriphery {
public static func scan(peripheryExecutable: String = "swift run periphery",
@PeripheryArgumentsBuilder arguments: () -> [String] = { [] }) {
@PeripheryArgumentsBuilder arguments: () -> [String] = { [] },
verbose: Bool = false) {
scan(peripheryExecutable: peripheryExecutable,
arguments: arguments())
arguments: arguments(),
verbose: verbose)
}

public static func scan(peripheryExecutable: String = "swift run periphery",
arguments: [PeripheryArguments] = []) {
arguments: [PeripheryArguments] = [],
verbose: Bool = false) {
scan(peripheryExecutable: peripheryExecutable,
arguments: arguments.map { $0.optionString })
arguments: arguments.map { $0.optionString },
verbose: verbose)
}

public static func scan(peripheryExecutable: String = "swift run periphery",
arguments: [String] = []) {
arguments: [String] = [],
verbose: Bool = false) {
Logger.shared.verbose = verbose

// make dependencies
let commandBuilder = PeripheryScanCommandBuilder(peripheryExecutable: peripheryExecutable,
additionalArguments: arguments)
Expand Down
17 changes: 17 additions & 0 deletions Sources/DangerSwiftPeriphery/Logger.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import Foundation

final class Logger {
static var shared = Logger()
var verbose = false

private var debugFromEnv: Bool {
guard let debugEnv = ProcessInfo.processInfo.environment["DANGER_SWIFT_PERIPHERY_DEBUG"] else { return false }
return ["1", "true", "yes"].contains(debugEnv.lowercased())
}
private let packageRootPath = #file.replacingOccurrences(of: "Sources/DangerSwiftPeriphery/Logger.swift", with: "")

func debug(file: String = #file, function: String = #function, line: Int = #line, _ message: String) {
guard verbose || debugFromEnv else { return }
print("[\(Date())] \(file.replacingOccurrences(of: packageRootPath, with: "")):\(function)#\(line): \(message)")
}
}
5 changes: 3 additions & 2 deletions Sources/DangerSwiftPeriphery/PeripheryScanExecutor.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ struct PeripheryScanExecutor<SE: ShellExecutable>: PeripheryScanExecutable {
switch shellExecutor.execute(commandBuilder.command) {
case .success(let output):
var outputLines = output.split(whereSeparator: \.isNewline)
outputLines.removeAll(where: { $0.hasPrefix(self.warnPrefix) })
outputLines.removeAll(where: { $0.hasPrefix(warnPrefix) })
Logger.shared.debug("scan output: \(outputLines)")
return outputLines.joined(separator: "\n")
case .failure(let error):
throw error
Expand All @@ -37,7 +38,7 @@ struct PeripheryScanExecutor<SE: ShellExecutable>: PeripheryScanExecutable {
extension PeripheryScanExecutor where SE == ShellExecutor {
init(commandBuilder: PeripheryScanCommandBuilder) {
self.commandBuilder = commandBuilder
self.shellExecutor = .init()
shellExecutor = .init()
}
}

Expand Down
1 change: 1 addition & 0 deletions Sources/DangerSwiftPeriphery/PullRequestDiffProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ struct PullRequestDiffProvider: PullRequestDiffProvidable {
func diff(forFile file: String) -> Result<FileDiff.Changes, Error> {
switch dangerDSL.utils.diff(forFile: file, sourceBranch: sourceBranch()) {
case .success(let diff):
Logger.shared.debug("changes for \(file):\(diff.changes)")
return .success(diff.changes)
case .failure(let error):
return .failure(error)
Expand Down
3 changes: 2 additions & 1 deletion Sources/DangerSwiftPeriphery/ShellExecutor.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ struct ShellExecutor: ShellExecutable {

func execute(_ command: String, arguments: [String] = []) -> Result<String, CommandError> {
let script = "\(command) \(arguments.joined(separator: " "))"
print("Executing \(script)")
Logger.shared.debug("command started: \(script)")

let env = ProcessInfo.processInfo.environment
let task = Process()
Expand All @@ -44,6 +44,7 @@ struct ShellExecutor: ShellExecutable {

let status = task.terminationStatus
if status == 0 {
Logger.shared.debug("command output: " + outputMessage!)
return .success(outputMessage!)
} else {
return .failure(.init(status: status, description: errorMessage!))
Expand Down

0 comments on commit 2b2fe07

Please sign in to comment.