ぜのぜ

しりとりしようぜのぜのぜのぜ

315日目

日記

専用品は最高

今日書いたコード

func connectToSpeedSensor(uuid: UUID) -> ConnectingWithPeripheralFuture {
    // ...

    return .init { [weak self] promise in
        self?.speedSensorPromise = promise

        if let speedSensor = self?.connectedSpeedSensor {
            self?.centralManager.cancelPeripheralConnection(speedSensor)
        }

        self?.connectingSpeedSensorUUID = uuid
        self?.centralManager.connect(peripheral, options: nil)
    }
}

感想

結果が渡されるメソッドでspeedSensorPromiseを呼ぶのでself?.centralManager.connect(peripheral, options: nil)を後にしたんだけど、これってお作法としてありなんすかね。speedSensorPromiseがどう使われるかに依存してるのよくない気がする。

312日目

現象

BuildTools/Package.swiftがこうで、

// swift-tools-version:5.1
import PackageDescription

let package = Package(
    name: "BuildTools",
    platforms: [.macOS(.v10_11)],
    dependencies: [
        .package(url: "https://github.com/nicklockwood/SwiftFormat", from: "0.49.0"),
        .package(url: "https://github.com/uber/mockolo.git", from: "1.1.2"),
    ],
    targets: [.target(name: "BuildTools", path: "")]
)

Build Phaseにこれを追加するとコケる。

swift run -c release --package-path BuildTools mockolo -s "$SRCROOT" -d Mocks.swift

エラーはこれ。

'buildtools': error: invalidManifestFormat("<unknown>:0: warning: using sysroot for \'iPhoneSimulator\' but targeting \'MacOSX\'\n<unknown>:0: error: unable to load standard library for target \'x86_64-apple-macosx11.0\'", diagnosticFile: nil)

原因

原因はこれで、

macOS 向けにビルドしようとしているのに、利用するSDKiOSシミュレーター用になっているため XcodeのBuild Phasesでmintを実行する時の注意点 - Qiita

"macOS向けに"というのはBuildTools/Package.swiftのこの部分?

    platforms: [.macOS(.v10_11)],

と思って.iOS(.v13)に変えてみたけど同じだったのでこっちかな。

// https://github.com/uber/mockolo/blob/0a714a24f74a2dd5f7db9826f5e3c56a729d2622/Package.swift#L24
    platforms: [
        .macOS(.v10_15),
    ],

ほげ

Build Phaseのスクリプトを変更すればいい。

# before
# swift run -c release --package-path BuildTools mockolo -s "$SRCROOT" -d Mocks.swift
xcrun --sdk macosx swift run -c release --package-path BuildTools mockolo -s "$SRCROOT" -d Mocks.swift

xcrunは何者かというのと、swiftにも--sdkオプションがあるけどそれだと動かないのは宿題*1ということで。後者はエラーを見る限り適当なパスを指定すれば動く気がする。

*1:いいリンクがあればほしいっす

310日目

日記

伊勢参りのレポート書かなきゃ…

今日書いたコード

いくつかテストを書いた · Gurrium/Komusou@fec254a · GitHub

感想

やっとテストを書けた。そしてモックライブラリが欲しい動機を手に入れた。『言語都市』というSF小説で、実際に見たもの以外は言葉で表現できない種族が出てくるがその気持がわかった。あの小説は読むのに体力がいるので実はまだ読み切れていない。三体全部読むよりきつい。