Skip to content

Commit

Permalink
Update from Hummingbird Project Template (#12)
Browse files Browse the repository at this point in the history
* Update from hummingbird-project-template 572d468b2cabeca286314c5a35196bd42445c8ef

* run swift-format

* Remove .swiftformat

---------

Co-authored-by: adam-fowler <[email protected]>
Co-authored-by: Adam Fowler <[email protected]>
  • Loading branch information
3 people authored Nov 28, 2024
1 parent 4f13bde commit a289487
Show file tree
Hide file tree
Showing 8 changed files with 111 additions and 72 deletions.
6 changes: 1 addition & 5 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,12 @@ concurrency:

jobs:
validate:
runs-on: macOS-latest
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Install Dependencies
run: |
brew install mint
mint install NickLockwood/[email protected] --no-link
- name: run script
run: ./scripts/validate.sh
63 changes: 63 additions & 0 deletions .swift-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{
"version" : 1,
"indentation" : {
"spaces" : 4
},
"tabWidth" : 4,
"fileScopedDeclarationPrivacy" : {
"accessLevel" : "private"
},
"spacesAroundRangeFormationOperators" : false,
"indentConditionalCompilationBlocks" : false,
"indentSwitchCaseLabels" : false,
"lineBreakAroundMultilineExpressionChainComponents" : false,
"lineBreakBeforeControlFlowKeywords" : false,
"lineBreakBeforeEachArgument" : true,
"lineBreakBeforeEachGenericRequirement" : true,
"lineLength" : 150,
"maximumBlankLines" : 1,
"respectsExistingLineBreaks" : true,
"prioritizeKeepingFunctionOutputTogether" : true,
"multiElementCollectionTrailingCommas" : true,
"rules" : {
"AllPublicDeclarationsHaveDocumentation" : false,
"AlwaysUseLiteralForEmptyCollectionInit" : false,
"AlwaysUseLowerCamelCase" : false,
"AmbiguousTrailingClosureOverload" : true,
"BeginDocumentationCommentWithOneLineSummary" : false,
"DoNotUseSemicolons" : true,
"DontRepeatTypeInStaticProperties" : true,
"FileScopedDeclarationPrivacy" : true,
"FullyIndirectEnum" : true,
"GroupNumericLiterals" : true,
"IdentifiersMustBeASCII" : true,
"NeverForceUnwrap" : false,
"NeverUseForceTry" : false,
"NeverUseImplicitlyUnwrappedOptionals" : false,
"NoAccessLevelOnExtensionDeclaration" : true,
"NoAssignmentInExpressions" : true,
"NoBlockComments" : true,
"NoCasesWithOnlyFallthrough" : true,
"NoEmptyTrailingClosureParentheses" : true,
"NoLabelsInCasePatterns" : true,
"NoLeadingUnderscores" : false,
"NoParensAroundConditions" : true,
"NoVoidReturnOnFunctionSignature" : true,
"OmitExplicitReturns" : true,
"OneCasePerLine" : true,
"OneVariableDeclarationPerLine" : true,
"OnlyOneTrailingClosureArgument" : true,
"OrderedImports" : true,
"ReplaceForEachWithForLoop" : true,
"ReturnVoidInsteadOfEmptyTuple" : true,
"UseEarlyExits" : false,
"UseExplicitNilCheckInConditions" : false,
"UseLetInEveryBoundCaseVariable" : false,
"UseShorthandTypeNames" : true,
"UseSingleLinePropertyGetter" : false,
"UseSynthesizedInitializer" : false,
"UseTripleSlashForDocumentationComments" : true,
"UseWhereClausesInForLoops" : false,
"ValidateDocumentationComments" : false
}
}
26 changes: 0 additions & 26 deletions .swiftformat

This file was deleted.

2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ The main development branch of the repository is `main`.

### Formatting

We use Nick Lockwood's SwiftFormat for formatting code. PRs will not be accepted if they haven't be formatted. The current version of SwiftFormat we are using is v0.53.10.
We use Apple's swift-format for formatting code. PRs will not be accepted if they haven't be formatted.
24 changes: 15 additions & 9 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,26 @@ let package = Package(
name: "swift-jobs-redis",
platforms: [.macOS(.v14), .iOS(.v17), .tvOS(.v17)],
products: [
.library(name: "JobsRedis", targets: ["JobsRedis"]),
.library(name: "JobsRedis", targets: ["JobsRedis"])
],
dependencies: [
.package(url: "https://github.com/hummingbird-project/swift-jobs.git", from: "1.0.0-beta.4"),
.package(url: "https://github.com/swift-server/RediStack.git", from: "1.4.0"),
],
targets: [
.target(name: "JobsRedis", dependencies: [
.product(name: "Jobs", package: "swift-jobs"),
.product(name: "RediStack", package: "RediStack"),
]),
.testTarget(name: "JobsRedisTests", dependencies: [
.byName(name: "JobsRedis"),
.product(name: "Jobs", package: "swift-jobs"),
]),
.target(
name: "JobsRedis",
dependencies: [
.product(name: "Jobs", package: "swift-jobs"),
.product(name: "RediStack", package: "RediStack"),
]
),
.testTarget(
name: "JobsRedisTests",
dependencies: [
.byName(name: "JobsRedis"),
.product(name: "Jobs", package: "swift-jobs"),
]
),
]
)
28 changes: 15 additions & 13 deletions Sources/JobsRedis/RedisJobQueue.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,14 @@
//===----------------------------------------------------------------------===//

import Atomics
import Jobs
import NIOCore
import RediStack

import struct Foundation.Data
import struct Foundation.Date
import class Foundation.JSONDecoder
import struct Foundation.UUID
import Jobs
import NIOCore
import RediStack

/// Redis implementation of job queue driver
public final class RedisJobQueue: JobQueueDriver {
Expand All @@ -37,11 +38,12 @@ public final class RedisJobQueue: JobQueueDriver {
public init(_ value: String) {
let parts = value.components(separatedBy: ":")
self.id = parts[0]
self.delayUntil = if parts.count > 1 {
Self.toMillisecondsFromString(value: parts[1])
} else {
0
}
self.delayUntil =
if parts.count > 1 {
Self.toMillisecondsFromString(value: parts[1])
} else {
0
}
}

static func toMilliseconds(value: Double?) -> Int64 {
Expand All @@ -52,7 +54,7 @@ public final class RedisJobQueue: JobQueueDriver {
}

static func toMillisecondsFromString(value: String) -> Int64 {
return Int64(value) ?? 0
Int64(value) ?? 0
}

func isDelayed() -> Bool {
Expand Down Expand Up @@ -153,7 +155,7 @@ public final class RedisJobQueue: JobQueueDriver {
/// - Parameter key: Metadata key
/// - Returns: Associated ByteBuffer
public func getMetadata(_ key: String) async throws -> ByteBuffer? {
return try await self.redisConnectionPool.wrappedValue.get(.init(key)).get().byteBuffer
try await self.redisConnectionPool.wrappedValue.get(.init(key)).get().byteBuffer
}

/// Set job queue metadata
Expand Down Expand Up @@ -231,7 +233,7 @@ public final class RedisJobQueue: JobQueueDriver {
}

func get(jobId: JobID) async throws -> ByteBuffer? {
return try await self.redisConnectionPool.wrappedValue.get(jobId.redisKey).get().byteBuffer
try await self.redisConnectionPool.wrappedValue.get(jobId.redisKey).get().byteBuffer
}

func set(jobId: JobID, buffer: ByteBuffer) async throws {
Expand Down Expand Up @@ -264,7 +266,7 @@ extension RedisJobQueue {
}

public func makeAsyncIterator() -> AsyncIterator {
return .init(queue: self)
.init(queue: self)
}
}

Expand Down Expand Up @@ -292,6 +294,6 @@ extension ByteBuffer {
}

public func convertedToRESPValue() -> RESPValue {
return .bulkString(self)
.bulkString(self)
}
}
9 changes: 6 additions & 3 deletions Tests/JobsRedisTests/RedisJobsTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import Atomics
import Foundation
import Jobs
@testable import JobsRedis
import Logging
import NIOConcurrencyHelpers
import NIOCore
Expand All @@ -24,6 +23,8 @@ import RediStack
import ServiceLifecycle
import XCTest

@testable import JobsRedis

extension XCTestExpectation {
convenience init(description: String, expectedFulfillmentCount: Int) {
self.init(description: description)
Expand Down Expand Up @@ -209,7 +210,8 @@ final class RedisJobsTests: XCTestCase {
let pendingJobs = try await jobQueue.queue.redisConnectionPool.wrappedValue.llen(of: jobQueue.queue.configuration.queueKey).get()
XCTAssertEqual(pendingJobs, 0)

let processingJobs = try await jobQueue.queue.redisConnectionPool.wrappedValue.llen(of: jobQueue.queue.configuration.processingQueueKey).get()
let processingJobs = try await jobQueue.queue.redisConnectionPool.wrappedValue.llen(of: jobQueue.queue.configuration.processingQueueKey)
.get()
XCTAssertEqual(processingJobs, 0)
}
XCTAssertEqual(currentJobTryCount.withLockedValue { $0 }, 2)
Expand Down Expand Up @@ -296,7 +298,8 @@ final class RedisJobsTests: XCTestCase {
let pendingJobs = try await jobQueue.queue.redisConnectionPool.wrappedValue.llen(of: jobQueue.queue.configuration.queueKey).get()
XCTAssertEqual(pendingJobs, 0)
let failedJobs = try await jobQueue.queue.redisConnectionPool.wrappedValue.llen(of: jobQueue.queue.configuration.failedQueueKey).get()
let processingJobs = try await jobQueue.queue.redisConnectionPool.wrappedValue.llen(of: jobQueue.queue.configuration.processingQueueKey).get()
let processingJobs = try await jobQueue.queue.redisConnectionPool.wrappedValue.llen(of: jobQueue.queue.configuration.processingQueueKey)
.get()
XCTAssertEqual(failedJobs + processingJobs, 1)
}
}
Expand Down
25 changes: 10 additions & 15 deletions scripts/validate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,22 +31,16 @@ SWIFT_FORMAT_VERSION=0.53.10
set -eu
here="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

which swiftformat > /dev/null 2>&1 || (echo "swiftformat not installed. You can install it using 'brew install swiftformat'" ; exit -1)

function replace_acceptable_years() {
# this needs to replace all acceptable forms with 'YEARS'
sed -e 's/20[12][0-9]-20[12][0-9]/YEARS/' -e 's/20[12][0-9]/YEARS/' -e '/^#!/ d'
}

printf "=> Checking format... "
FIRST_OUT="$(git status --porcelain)"
if [[ -n "${CI-""}" ]]; then
printf "(using v$(mint run NickLockwood/SwiftFormat@"$SWIFT_FORMAT_VERSION" --version)) "
mint run NickLockwood/SwiftFormat@"$SWIFT_FORMAT_VERSION" . > /dev/null 2>&1
else
printf "(using v$(swiftformat --version)) "
swiftformat . > /dev/null 2>&1
fi
git ls-files -z '*.swift' | xargs -0 swift format format --parallel --in-place
git diff --exit-code '*.swift'

SECOND_OUT="$(git status --porcelain)"
if [[ "$FIRST_OUT" != "$SECOND_OUT" ]]; then
printf "\033[0;31mformatting issues!\033[0m\n"
Expand All @@ -55,29 +49,30 @@ if [[ "$FIRST_OUT" != "$SECOND_OUT" ]]; then
else
printf "\033[0;32mokay.\033[0m\n"
fi
exit
printf "=> Checking license headers... "
tmp=$(mktemp /tmp/.soto-core-sanity_XXXXXX)

exit 0

for language in swift-or-c; do
declare -a matching_files
declare -a exceptions
expections=( )
matching_files=( -name '*' )
case "$language" in
swift-or-c)
exceptions=( -path '*Sources/INIParser/*' -o -path '*Sources/CSotoExpat/*' -o -path '*Benchmark/.build/*' -o -name Package.swift)
exceptions=( -path '*/Benchmarks/.build/*' -o -name Package.swift)
matching_files=( -name '*.swift' -o -name '*.c' -o -name '*.h' )
cat > "$tmp" <<"EOF"
//===----------------------------------------------------------------------===//
//
// This source file is part of the Hummingbird open source project
// This source file is part of the Hummingbird server framework project
//
// Copyright (c) YEARS the Hummingbird authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Hummingbird authors
// See hummingbird/CONTRIBUTORS.txt for the list of Hummingbird authors
//
// SPDX-License-Identifier: Apache-2.0
//
Expand All @@ -89,13 +84,13 @@ EOF
cat > "$tmp" <<"EOF"
##===----------------------------------------------------------------------===##
##
## This source file is part of the Hummingbird open source project
## This source file is part of the Hummingbird server framework project
##
## Copyright (c) YEARS the Hummingbird authors
## Licensed under Apache License v2.0
##
## See LICENSE.txt for license information
## See CONTRIBUTORS.txt for the list of Hummingbird authors
## See hummingbird/CONTRIBUTORS.txt for the list of Hummingbird authors
##
## SPDX-License-Identifier: Apache-2.0
##
Expand Down

0 comments on commit a289487

Please sign in to comment.