Skip to content
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
29 changes: 29 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: build

on:
pull_request: { types: [opened, reopened, synchronize] }

jobs:
build:
runs-on: runs-on=${{ github.run_id }}/cpu=8/ram=32/family=m7a/image=ubuntu24-full-x64/spot=false

timeout-minutes: 60

container: swift:6.0-jammy

defaults:
run:
shell: bash

env:
SWIFT_BACKTRACE: "enable=yes,sanitize=yes,threads=all,images=all,interactive=no,symbolicate=fast,limit=none"

steps:
- name: Configure git
run: git config --global --add safe.directory '*'

- name: Check out ${{ github.event.repository.name }}
uses: actions/checkout@v4

- name: Build ${{ github.event.repository.name }}
run: swift build --force-resolved-versions -v -j 1 -c release
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request: { types: [opened, reopened, synchronize, ready_for_review] }
# pull_request: { types: [opened, reopened, synchronize, ready_for_review] }
push: { branches: [main] }

jobs:
Expand Down
12 changes: 6 additions & 6 deletions Lambdas/GHHooks/Extensions/Embed+Equtable.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import DiscordModels

extension Embed: @retroactive Equatable {
extension DiscordModels.Embed: Equatable {
public static func == (lhs: Embed, rhs: Embed) -> Bool {
lhs.title == rhs.title && lhs.type == rhs.type && lhs.description == rhs.description && lhs.url == rhs.url
&& lhs.timestamp?.date == rhs.timestamp?.date && lhs.color == rhs.color && lhs.footer == rhs.footer
Expand All @@ -9,34 +9,34 @@ extension Embed: @retroactive Equatable {
}
}

extension Embed.Media: @retroactive Equatable {
extension DiscordModels.Embed.Media: Equatable {
public static func == (lhs: Embed.Media, rhs: Embed.Media) -> Bool {
lhs.url.asString == rhs.url.asString && lhs.proxy_url ?== rhs.proxy_url && lhs.height ?== rhs.height
&& lhs.width ?== rhs.width
}
}

extension Embed.Footer: @retroactive Equatable {
extension DiscordModels.Embed.Footer: Equatable {
public static func == (lhs: Embed.Footer, rhs: Embed.Footer) -> Bool {
lhs.icon_url?.asString == rhs.icon_url?.asString && lhs.text == rhs.text && lhs.proxy_icon_url
?== rhs.proxy_icon_url
}
}

extension Embed.Provider: @retroactive Equatable {
extension DiscordModels.Embed.Provider: Equatable {
public static func == (lhs: Embed.Provider, rhs: Embed.Provider) -> Bool {
lhs.url == rhs.url && lhs.name == rhs.name
}
}

extension Embed.Author: @retroactive Equatable {
extension DiscordModels.Embed.Author: Equatable {
public static func == (lhs: Embed.Author, rhs: Embed.Author) -> Bool {
lhs.url == rhs.url && lhs.icon_url?.asString == rhs.icon_url?.asString && lhs.name == rhs.name
&& lhs.proxy_icon_url ?== rhs.proxy_icon_url
}
}

extension Embed.Field: @retroactive Equatable {
extension DiscordModels.Embed.Field: Equatable {
public static func == (lhs: Embed.Field, rhs: Embed.Field) -> Bool {
lhs.name == rhs.name && lhs.value == rhs.value && lhs.inline ?== rhs.inline
}
Expand Down
21 changes: 15 additions & 6 deletions Package.resolved

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

8 changes: 4 additions & 4 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
// swift-tools-version:6.0
// swift-tools-version:5.10
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
name: "Penny",
platforms: [
.macOS(.v15)
.macOS(.v14)
],
dependencies: [
.package(url: "https://github.com/apple/swift-nio.git", from: "2.57.0"),
.package(url: "https://github.com/swift-server/async-http-client.git", from: "1.21.0"),
.package(url: "https://github.com/apple/swift-crypto.git", from: "3.1.0"),
.package(url: "https://github.com/apple/swift-collections.git", from: "1.0.0"),
.package(url: "https://github.com/vapor/jwt-kit.git", from: "5.0.1"),
.package(url: "https://github.com/vapor/jwt-kit.git", exact: "5.0.0-rc.1"),
.package(url: "https://github.com/apple/swift-atomics.git", from: "1.1.0"),
.package(url: "https://github.com/apple/swift-log.git", from: "1.5.2"),
.package(url: "https://github.com/apple/swift-algorithms", from: "1.0.0"),
Expand Down Expand Up @@ -115,6 +115,7 @@ let package = Package(
.target(
name: "LambdasShared",
dependencies: [
.product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"),
.product(name: "SotoSecretsManager", package: "soto"),
.product(name: "SotoCore", package: "soto-core"),
.product(name: "Logging", package: "swift-log"),
Expand Down Expand Up @@ -232,7 +233,6 @@ var testsSwiftSettings: [SwiftSetting] {
}

extension PackageDescription.Target {
@MainActor
static func lambdaTarget(
name: String,
additionalDependencies: [PackageDescription.Target.Dependency]
Expand Down
6 changes: 3 additions & 3 deletions Sources/Penny/Handlers/ReactionHandler/ReactionCache.swift
Original file line number Diff line number Diff line change
Expand Up @@ -217,9 +217,9 @@ extension Calendar {
}

// MARK: +Emoji
extension Emoji: @retroactive Equatable {}
extension Emoji: @retroactive Hashable {
public static func == (lhs: Emoji, rhs: Emoji) -> Bool {
extension DiscordModels.Emoji: Equatable {}
extension DiscordModels.Emoji: Hashable {
public static func == (lhs: DiscordModels.Emoji, rhs: DiscordModels.Emoji) -> Bool {
switch (lhs.id, rhs.id) {
case let (.some(id1), .some(id2)):
return id1 == id2
Expand Down
10 changes: 0 additions & 10 deletions Sources/Shared/BackgroundProcessor.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import ServiceLifecycle
import Synchronization

package final class BackgroundProcessor: Service {
package typealias WorkItem = @Sendable () async -> Void
Expand All @@ -15,16 +14,7 @@ package final class BackgroundProcessor: Service {

package func run() async {
await withTaskGroup(of: Void.self) { taskGroup in
let maxConcurrentTasks = 8
let workIndex = Atomic(UInt(0))

for await work in self.stream.cancelOnGracefulShutdown() {
let index = workIndex.add(1, ordering: .relaxed).oldValue
if index >= maxConcurrentTasks {
/// Wait for the next task first,
/// as a way of limiting how many tasks are concurrently run
_ = await taskGroup.next()
}
taskGroup.addTask {
await work()
}
Expand Down