Swiftpack.co - taji-taji/DangerSwiftPeriphery as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by taji-taji.
taji-taji/DangerSwiftPeriphery 1.2.1
Danger Swift plugin to run Periphery on CI.
⭐️ 4
🕓 4 days ago
.package(url: "https://github.com/taji-taji/DangerSwiftPeriphery.git", from: "1.2.1")

DangerSwiftPeriphery

Danger Swift plugin to run Periphery on CI.

Test MIT License

Features

This plugin will comment unreferenced code detected by periphery via Danger Swift.

Image

Requirements

  • Swift 5.5.2 or later

Usage

Preparation

Package.swift

let package = Package(
    // ...
    dependencies: [
        // Danger
        .package(url: "https://github.com/danger/swift.git", from: "3.0.0"), // dev
        // Danger Plugins
        // Add the line below.
        .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: "swift"),
                    "DangerSwiftPeriphery",
                ]),
        // ...
    ]
)

Dangerfile.swift

Set scan options

If you have a .periphery.yml file, simply include the following in Dangerfile.swift

import Danger
import DangerSwiftPeriphery

DangerPeriphery.scan()

Alternatively, periphery options can be passed as arguments.

import Danger
import DangerSwiftPeriphery

DangerPeriphery.scan(arguments: [
    "--workspace MaApp.xcworkspace",
    "--schemes MyApp",
    "--index-store-path /path/to/index/store",
    "--skip-build"
])

// or use PeripheryArguments enum as array
DangerPeriphery.scan(arguments: [
    PeripheryArguments.workspace("MaApp.xcworkspace"),
    PeripheryArguments.schemes(["MyApp"]),
    PeripheryArguments.indexStorePath("/path/to/index/store"),
    PeripheryArguments.skipBuild
])

// or use PeripheryArguments enum with resultBuilder
DangerPeriphery.scan {
    PeripheryArguments.workspace("MaApp.xcworkspace")
    PeripheryArguments.schemes(["MyApp"])
    PeripheryArguments.indexStorePath("/path/to/index/store")
    PeripheryArguments.skipBuild
}

// All three scan methods above behave the same.

In the future, if a new option is added to Periphery, and it is undefined in this plugin, you can use .custom. For example, if a new version of Periphery adds an option --new-option that is undefined in PeripheryArguments of this plugin, you can use PeripheryArguments.custom("--new-option foo") to use --new-option.

Handle scan result manually

By setting the shouldComment option to false, this plugin will not comment on the target pull request.
You can manually handle the scan results by setting this option to false and using the return value of the scan method.

import Danger
import DangerSwiftPeriphery

let result = DangerPeriphery.scan(shouldComment: false)

// handle scan result manually
switch result {
case let .success(violations):
    // handle scan violations
    for violation in violations {
        warn(message: violation.message,
             file: violation.filePath,
             line: violation.line)
    }
case let .failure(error):
    // handle scan error
    fail(error.localizedDescription)
}

Specify periphery executable

You may also specify the location of periphery binaries.

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)
    // 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.

GitHub

link
Stars: 4
Last commit: 4 days ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Dependencies

Release Notes

1.2.1
4 days ago

What's Changed

Full Changelog: https://github.com/taji-taji/DangerSwiftPeriphery/compare/1.2.0...1.2.1

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics