Skip to content
Open
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
120 changes: 67 additions & 53 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,69 +9,83 @@ language: generic

matrix:
include:
- os: osx
osx_image: xcode10
install:
- node -v
- npm install -g danger
- make install
script:
- swift test
- danger-swift ci

- os: osx
name: Swift 5.0
osx_image: xcode10.2
install:
- node -v
- npm install -g danger
- make install
script:
- swift test
- danger-swift ci
# - os: osx
# osx_image: xcode10
# install:
# - node -v
# - npm install -g danger
# - make install
# script:
# - swift test
# - danger-swift ci

- os: osx
osx_image: xcode10
install:
- echo "Installing and testing via homebrew"
- brew tap danger/tap
- brew install danger-swift
script:
- danger-swift pr https://github.com/danger/swift/pull/153
# - os: osx
# name: Swift 5.0
# osx_image: xcode10.2
# install:
# - node -v
# - npm install -g danger
# - make install
# script:
# # - swift test
# - DEBUG='*' swift run danger-swift ci

- os: linux
language: generic
sudo: required
dist: trusty
name: Swift 5.0
install:
- node -v
- npm install -g danger
- echo '5.0' > .swift-version
- eval "$(curl -sL https://swiftenv.fuller.li/install.sh)"
- swiftenv global 4.2
- swiftenv global 5.0
script:
- swift test
- sudo chmod -R a+rwx /usr/local/
- make install
- DEBUG="*" danger-swift ci
# - swift test
- DEBUG='*' swift run danger-swift ci
# - os: osx
# osx_image: xcode10
# install:
# - echo "Installing and testing via homebrew"
# - brew tap danger/tap
# - brew install danger-swift
# script:
# - danger-swift pr https://github.com/danger/swift/pull/153

- os: osx
name: Danger with SPM
osx_image: xcode10
install:
- node -v
- npm install -g danger
script:
- swift run danger-swift ci
# - os: linux
# language: generic
# sudo: required
# dist: trusty
# install:
# - node -v
# - npm install -g danger
# - eval "$(curl -sL https://swiftenv.fuller.li/install.sh)"
# - swiftenv global 4.2
# script:
# - swift test
# - sudo chmod -R a+rwx /usr/local/
# - make install
# - DEBUG="*" danger-swift ci

- os: linux
name: Danger with SPM
language: generic
sudo: required
dist: trusty
install:
- node -v
- npm install -g danger
- eval "$(curl -sL https://swiftenv.fuller.li/install.sh)"
- swiftenv global 4.2
script:
- swift run danger-swift ci
# - os: osx
# name: Danger with SPM
# osx_image: xcode10
# install:
# - node -v
# - npm install -g danger
# script:
# - swift run danger-swift ci

# - os: linux
# name: Danger with SPM
# language: generic
# sudo: required
# dist: trusty
# install:
# - node -v
# - npm install -g danger
# - eval "$(curl -sL https://swiftenv.fuller.li/install.sh)"
# - swiftenv global 4.2
# script:
# - swift run danger-swift ci
37 changes: 4 additions & 33 deletions Dangerfile.swift
Original file line number Diff line number Diff line change
@@ -1,42 +1,13 @@
import Danger
import Foundation

let danger = Danger()

// fileImport: DangerfileExtensions/ChangelogCheck.swift
checkChangelog()

if danger.git.createdFiles.count + danger.git.modifiedFiles.count - danger.git.deletedFiles.count > 300 {
warn("Big PR, try to keep changes smaller if you can")
}

let swiftFilesWithCopyright = danger.git.createdFiles.filter {
$0.fileType == .swift
&& danger.utils.readFile($0).contains("// Created by")
}

if !swiftFilesWithCopyright.isEmpty {
let files = swiftFilesWithCopyright.joined(separator: ", ")
warn("In Danger JS we don't include copyright headers, found them in: \(files)")
danger.warn("Big PR, try to keep changes smaller if you can")
}

SwiftLint.lint(inline: true, directory: "Sources")

// Support running via `danger local`
if danger.github != nil {
// These checks only happen on a PR
if danger.github.pullRequest.title.contains("WIP") {
warn("PR is classed as Work in Progress")
}

// TODO: We're still figuring this out
_ = danger.github.api.me { response in
print("OK")
switch response {
case let .success(user):
message(user.name ?? "")
case .failure:
break
}
}
if case let .github(github) = danger.remote {
let title = github.pullRequest.title
danger.message(title)
}
2 changes: 1 addition & 1 deletion DangerfileExtensions/ChangelogCheck.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ func checkChangelog() {
let changelogChanged = allSourceFiles.contains("CHANGELOG.md")
let sourceChanges = allSourceFiles.first(where: { $0.hasPrefix("Sources") })

let isTrivial = (danger.github != nil) && danger.github.pullRequest.title.contains("#trivial")
let isTrivial = danger.github?.pullRequest.title.contains("#trivial") ?? false

if !isTrivial, !changelogChanged, sourceChanges != nil {
danger.warn("""
Expand Down
28 changes: 14 additions & 14 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// swift-tools-version:4.2
// swift-tools-version:5.0

import PackageDescription

Expand Down
16 changes: 10 additions & 6 deletions Sources/Danger/Danger.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,20 @@ import Foundation
#endif
import Logger

// MARK: - DangerRunner
public let runner = DangerRunner()

public var danger: DangerDSL {
return runner.dsl
}

final class DangerRunner {
static let shared = DangerRunner()
// MARK: - DangerRunner

public final class DangerRunner {
let logger: Logger
let dsl: DangerDSL
public let dsl: DangerDSL
var results = DangerResults()

private init() {
public init() {
let isVerbose = CommandLine.arguments.contains("--verbose") || (ProcessInfo.processInfo.environment["DEBUG"] != nil)
let isSilent = CommandLine.arguments.contains("--silent")
logger = Logger(isVerbose: isVerbose, isSilent: isSilent)
Expand Down Expand Up @@ -64,7 +68,7 @@ final class DangerRunner {
// MARK: - Public Functions

public func Danger() -> DangerDSL {
return DangerRunner.shared.dsl
return danger
}

// MARK: - Private Functions
Expand Down
47 changes: 25 additions & 22 deletions Sources/Danger/DangerDSL.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,15 @@ public struct DSL: Decodable {
}

public struct DangerDSL: Decodable {
public enum Remote {
case github(GitHub)
case bitbucketServer(BitBucketServer)
case unknown
}

public let git: Git

public private(set) var github: GitHub!

public let bitbucketServer: BitBucketServer!
public let remote: Remote

public let utils: DangerUtils

Expand All @@ -32,10 +36,14 @@ public struct DangerDSL: Decodable {
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
git = try container.decode(Git.self, forKey: .git)
github = try container.decodeIfPresent(GitHub.self, forKey: .github)
bitbucketServer = try container.decodeIfPresent(BitBucketServer.self, forKey: .bitbucketServer)

let settings = try container.decode(Settings.self, forKey: .settings)

// if let github = try container.decodeIfPresent(GitHub.self, forKey: .github) {
// remote = .github(github)
// } else if let bitbucketServer = try container.decodeIfPresent(BitBucketServer.self, forKey: .bitbucketServer) {
// remote = .bitbucketServer(bitbucketServer)
// } else {
remote = .unknown
// }

// File map is used so that libraries can make tests without
// doing a lot of internal hacking for danger, or weird DI in their
Expand All @@ -47,29 +55,24 @@ public struct DangerDSL: Decodable {
} catch {
utils = DangerUtils(fileMap: [:])
}

// Setup the OctoKit once all other
if runningOnGithub {
let config: TokenConfiguration

if let baseURL = settings.github.baseURL {
config = TokenConfiguration(settings.github.accessToken, url: baseURL)
} else {
config = TokenConfiguration(settings.github.accessToken)
}

github.api = Octokit(config)
}
}
}

extension DangerDSL {
var runningOnGithub: Bool {
return github != nil
if case .github = remote {
return true
} else {
return false
}
}

var runningOnBitbucketServer: Bool {
return bitbucketServer != nil
if case .bitbucketServer = remote {
return true
} else {
return false
}
}

var supportsSuggestions: Bool {
Expand Down
Loading