Build Information
Successful build of SwiftWeather with Swift 5.10 for macOS (SPM).
Build Command
env DEVELOPER_DIR=/Applications/Xcode-15.4.0.app xcrun swift build --arch arm64
Build Log
========================================
RunAll
========================================
Builder version: 4.41.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/wadetregaskis/SwiftWeather.git
Reference: 3.0.0
Initialized empty Git repository in /Users/builder/builds/TDmZkXJm/0/finestructure/swiftpackageindex-builder/spi-builder-workspace/.git/
From https://github.com/wadetregaskis/SwiftWeather
* tag 3.0.0 -> FETCH_HEAD
HEAD is now at 827b5b3 Added "Unit" prefixes to the custom units, as it Foundation's convention.
Cloned https://github.com/wadetregaskis/SwiftWeather.git
Revision (git rev-parse @):
827b5b3dbd27c9362bc3517e28d668e9cf735180
SPI manifest file found: $workDir/.spi.yml
SUCCESS checkout https://github.com/wadetregaskis/SwiftWeather.git at 3.0.0
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/builder/builds/TDmZkXJm/0/finestructure/swiftpackageindex-builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/builder/builds/TDmZkXJm/0/finestructure/swiftpackageindex-builder/spi-builder-workspace/.resolve-product-dependencies",
"dependencies": [
{
"identity": "swiftweather",
"name": "SwiftWeather",
"url": "https://github.com/wadetregaskis/SwiftWeather.git",
"version": "unspecified",
"path": "/Users/builder/builds/TDmZkXJm/0/finestructure/swiftpackageindex-builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/SwiftWeather",
"dependencies": [
]
}
]
}
Fetching https://github.com/wadetregaskis/SwiftWeather.git from cache
Fetched https://github.com/wadetregaskis/SwiftWeather.git from cache (0.21s)
Creating working copy for https://github.com/wadetregaskis/SwiftWeather.git
Working copy of https://github.com/wadetregaskis/SwiftWeather.git resolved at 3.0.0 (827b5b3)
warning: '.resolve-product-dependencies': dependency 'swiftweather' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 5.10
Building package at path: $workDir
https://github.com/wadetregaskis/SwiftWeather.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-15.4.0.app xcrun swift build --arch arm64
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-33747A42983211AE.txt
[3/18] Emitting module SwiftWeather
[4/20] Compiling SwiftWeather WundergroundDevice.swift
[5/20] Compiling SwiftWeather WundergroundError.swift
[6/20] Compiling SwiftWeather Wunderground.swift
[7/20] Compiling SwiftWeather WundergroundCurrentReport.swift
[8/20] Compiling SwiftWeather Zip.swift
[9/20] Compiling SwiftWeather SwiftWeather.swift
[10/20] Compiling SwiftWeather AmbientWeatherStationGeolocation.swift
[11/20] Compiling SwiftWeather AmbientWeatherStationInfo.swift
[12/20] Compiling SwiftWeather WeatherErrors.swift
[13/20] Compiling SwiftWeather WeatherSensor.swift
[14/20] Compiling SwiftWeather Data+String.swift
[15/20] Compiling SwiftWeather Unit+Custom.swift
[16/20] Compiling SwiftWeather AmbientWeatherSensor.swift
[17/20] Compiling SwiftWeather AmbientWeatherStationGeoType.swift
[18/20] Compiling SwiftWeather AmbientWeather.swift
[19/20] Compiling SwiftWeather AmbientWeatherDevice.swift
[20/20] Compiling SwiftWeather AmbientWeatherReport.swift
Build complete! (7.44s)
Build complete.
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $workDir/.docs/wadetregaskis/swiftweather/3.0.0
Repository: wadetregaskis/SwiftWeather
Swift version used: 5.10
Target: SwiftWeather
Generating documentation for 'SwiftWeather'...
Converting documentation...
warning: 'init' doesn't exist at '/SwiftWeather/AmbientWeather/defaultConfiguration'
--> Sources/SwiftWeather/AmbientWeather/AmbientWeather.swift:135:66-135:70
133 | internal let session: URLSession
134 |
135 + /// The default network connectivity configuration used by ``init``.
136 | ///
137 | /// This returns a new ``URLSessionConfiguration`` instance every time it is read, so you may customise the returned value without worrying about the changes affecting future values returned by this property.
warning: 'URLSessionConfiguration' doesn't exist at '/SwiftWeather/AmbientWeather/defaultConfiguration'
--> Sources/SwiftWeather/AmbientWeather/AmbientWeather.swift:137:30-137:53
135 | /// The default network connectivity configuration used by ``init``.
136 | ///
137 + /// This returns a new ``URLSessionConfiguration`` instance every time it is read, so you may customise the returned value without worrying about the changes affecting future values returned by this property.
138 | ///
139 | /// Some configuration options are particularly important for correct function, such as turning off concurrent connections in order to lessen the probability of rate-limiting errors from the AmbientWeather API. Be conservative about what you change, and test thoroughly.
warning: 'WeatherError.invalidAPIKey' doesn't exist at '/SwiftWeather/AmbientWeather/init(applicationKey:apiKey:sessionConfiguration:)'
--> Sources/SwiftWeather/AmbientWeather/AmbientWeather.swift:169:21-169:47
167 | /// - Parameter apiKey: The API (user) key. This is a key assigned to each of your users, that functions essentially as their access credientials. Typically you do _not_ hard-code this into your application, but rather require your users to input it. You may wish to direct your users to https://ambientweather.net/account to create their API keys.
168 | /// - Parameter sessionConfiguration: An optional configuration to use for network connectivity. Generally if you wish to customise this you should start with ``defaultConfiguration`` and customise that, in order to inherit any settings which are important to correct function.
169 + /// - Throws: ``WeatherError.invalidAPIKey`` or ``AmbientWeatherError.invalidApplicationKey`` if either of the keys are obviously invalid (e.g. blank).
170 | public init(applicationKey: String,
171 | apiKey: String,
warning: 'AmbientWeatherError.invalidApplicationKey' doesn't exist at '/SwiftWeather/AmbientWeather/init(applicationKey:apiKey:sessionConfiguration:)'
--> Sources/SwiftWeather/AmbientWeather/AmbientWeather.swift:169:55-169:96
167 | /// - Parameter apiKey: The API (user) key. This is a key assigned to each of your users, that functions essentially as their access credientials. Typically you do _not_ hard-code this into your application, but rather require your users to input it. You may wish to direct your users to https://ambientweather.net/account to create their API keys.
168 | /// - Parameter sessionConfiguration: An optional configuration to use for network connectivity. Generally if you wish to customise this you should start with ``defaultConfiguration`` and customise that, in order to inherit any settings which are important to correct function.
169 + /// - Throws: ``WeatherError.invalidAPIKey`` or ``AmbientWeatherError.invalidApplicationKey`` if either of the keys are obviously invalid (e.g. blank).
170 | public init(applicationKey: String,
171 | apiKey: String,
warning: 'WeatherPlatform.nearbyDevices' doesn't exist at '/SwiftWeather/WeatherError/locationServicesDisabled'
--> Sources/SwiftWeather/WeatherErrors.swift:12:161-12:190
10 | case notSupportedByPlatform
11 |
12 + /// Location services are disabled (either specifically for this application, or system-wide), and therefore APIs that rely on the current location (e.g. ``WeatherPlatform.nearbyDevices``) cannot function.
13 | case locationServicesDisabled
14 |
warning: 'WeatherPlatform.nearbyDevices' doesn't exist at '/SwiftWeather/WeatherError/locationNotAvailable'
--> Sources/SwiftWeather/WeatherErrors.swift:15:91-15:120
13 | case locationServicesDisabled
14 |
15 + /// The current location is not available, and therefore APIs that rely on it (e.g. ``WeatherPlatform.nearbyDevices``) cannot function.
16 | case locationNotAvailable
17 |
warning: 'WeatherDevice.latestReport' doesn't exist at '/SwiftWeather/WeatherError/noReportsAvailable'
--> Sources/SwiftWeather/WeatherErrors.swift:36:95-36:121
34 | case invalidDate(string: String, expectedFormat: String)
35 |
36 + /// Thrown whenever there are no reports available from APIs which expect them, such as ``WeatherDevice.latestReport``, . This is not usually an error in the strictest sense - it is valid for weather devices to exist but not have generated a report.
37 | case noReportsAvailable // TODO: Maybe remove this, and instead just return nil from such APIs.
38 | }
warning: 'Measurement' doesn't exist at '/SwiftWeather/WeatherSensor/type'
--> Sources/SwiftWeather/WeatherSensor.swift:26:191-26:202
24 | /// The weather sensor type.
25 | ///
26 + /// In addition to direct utility for e.g. categorising / grouping sensors in UI, this can be helpful to infer the units of the ``measurement`` - but only when ``measurement`` isn't a ``Measurement`` instance. When it is such an instance the exact units are specified within the measurement.
27 | public let type: WeatherSensorType
28 |
warning: 'Measurement' doesn't exist at '/SwiftWeather/WeatherSensor/measurement'
--> Sources/SwiftWeather/WeatherSensor.swift:53:43-53:54
51 | /// The sensor measurement.
52 | ///
53 + /// Most sensors use the Foundation ``Measurement`` data type, but some use other types - e.g. ``Date`` for dates & times, ``Int`` for battery status / levels, etc.
54 | public let measurement: any Sendable
55 |
warning: 'Date' doesn't exist at '/SwiftWeather/WeatherSensor/measurement'
--> Sources/SwiftWeather/WeatherSensor.swift:53:102-53:106
51 | /// The sensor measurement.
52 | ///
53 + /// Most sensors use the Foundation ``Measurement`` data type, but some use other types - e.g. ``Date`` for dates & times, ``Int`` for battery status / levels, etc.
54 | public let measurement: any Sendable
55 |
warning: 'Int' doesn't exist at '/SwiftWeather/WeatherSensor/measurement'
--> Sources/SwiftWeather/WeatherSensor.swift:53:130-53:133
51 | /// The sensor measurement.
52 | ///
53 + /// Most sensors use the Foundation ``Measurement`` data type, but some use other types - e.g. ``Date`` for dates & times, ``Int`` for battery status / levels, etc.
54 | public let measurement: any Sendable
55 |
warning: 'String' doesn't exist at '/SwiftWeather/WeatherSensor/FormatStyle'
--> Sources/SwiftWeather/WeatherSensor.swift:78:73-78:79
76 |
77 | extension WeatherSensor { // Formatting
78 + /// A FormatStyle that creates human-readable representations, as ``String``s, from ``WeatherSensor``s.
79 | ///
80 | /// Warning: while nominally this supports the ``Codable`` protocol (as required of all FormatStyles), it actually does not. Attempts to use it for coding or decoding will throw an exception.
warning: 'Codable' doesn't exist at '/SwiftWeather/WeatherSensor/FormatStyle'
--> Sources/SwiftWeather/WeatherSensor.swift:80:54-80:61
78 | /// A FormatStyle that creates human-readable representations, as ``String``s, from ``WeatherSensor``s.
79 | ///
80 + /// Warning: while nominally this supports the ``Codable`` protocol (as required of all FormatStyles), it actually does not. Attempts to use it for coding or decoding will throw an exception.
81 | public struct FormatStyle: Foundation.FormatStyle {
82 | public typealias FormatInput = WeatherSensor
warning: 'Measurement' doesn't exist at '/SwiftWeather/WeatherSensor/FormatStyle/init(components:numbers:dates:units:unitStyle:)'
--> Sources/SwiftWeather/WeatherSensor.swift:119:92-119:103
117 | /// - units: Specifies how to format units w.r.t. equivalent scales (e.g. Celsius vs Fahrenheit).
118 | ///
119 + /// Note that this only applies to ``WeatherSensor/measurement``s that are ``Measurement`` instances - for all other types, where the units are only available via ``WeatherSensor/unit``, the units are used as-is.
120 | /// - unitStyle: Specifies how to format units w.r.t. style / brevity.
121 | ///
warning: 'unit' doesn't exist at '/SwiftWeather/WeatherSensor'
--> Sources/SwiftWeather/WeatherSensor.swift:119:194-119:198
117 | /// - units: Specifies how to format units w.r.t. equivalent scales (e.g. Celsius vs Fahrenheit).
118 | ///
119 + /// Note that this only applies to ``WeatherSensor/measurement``s that are ``Measurement`` instances - for all other types, where the units are only available via ``WeatherSensor/unit``, the units are used as-is.
120 | /// - unitStyle: Specifies how to format units w.r.t. style / brevity.
121 | ///
warning: 'Measurement' doesn't exist at '/SwiftWeather/WeatherSensor/FormatStyle/init(components:numbers:dates:units:unitStyle:)'
--> Sources/SwiftWeather/WeatherSensor.swift:122:92-122:103
120 | /// - unitStyle: Specifies how to format units w.r.t. style / brevity.
121 | ///
122 + /// Note that this only applies to ``WeatherSensor/measurement``s that are ``Measurement`` instances - for all other types, where the units are only available via ``WeatherSensor/unit``, the units are used as-is.
123 | public init(components: Components = [.name, .valueAndUnit],
124 | numbers: NumberFormatter? = nil,
warning: 'unit' doesn't exist at '/SwiftWeather/WeatherSensor'
--> Sources/SwiftWeather/WeatherSensor.swift:122:194-122:198
120 | /// - unitStyle: Specifies how to format units w.r.t. style / brevity.
121 | ///
122 + /// Note that this only applies to ``WeatherSensor/measurement``s that are ``Measurement`` instances - for all other types, where the units are only available via ``WeatherSensor/unit``, the units are used as-is.
123 | public init(components: Components = [.name, .valueAndUnit],
124 | numbers: NumberFormatter? = nil,
warning: 'init' doesn't exist at '/SwiftWeather/Wunderground/defaultConfiguration'
--> Sources/SwiftWeather/Wunderground/Wunderground.swift:17:66-17:70
15 | internal let session: URLSession
16 |
17 + /// The default network connectivity configuration used by ``init``.
18 | ///
19 | /// This returns a new ``URLSessionConfiguration`` instance every time it is read, so you may customise the returned value without worrying about the changes affecting future values returned by this property.
warning: 'URLSessionConfiguration' doesn't exist at '/SwiftWeather/Wunderground/defaultConfiguration'
--> Sources/SwiftWeather/Wunderground/Wunderground.swift:19:30-19:53
17 | /// The default network connectivity configuration used by ``init``.
18 | ///
19 + /// This returns a new ``URLSessionConfiguration`` instance every time it is read, so you may customise the returned value without worrying about the changes affecting future values returned by this property.
20 | ///
21 | /// Some configuration options are particularly important for correct function. Be conservative about what you change, and test thoroughly.
warning: 'WeatherError.invalidAPIKey' doesn't exist at '/SwiftWeather/Wunderground/init(apiKey:sessionConfiguration:)'
--> Sources/SwiftWeather/Wunderground/Wunderground.swift:50:21-50:47
48 | /// - Parameter apiKey: The API (user) key. This is a key assigned to each of your users, that functions essentially as their access credientials. Typically you do _not_ hard-code this into your application, but rather require your users to input it. You may wish to direct your users to https://www.wunderground.com/member/api-keys to create / retrieve their API key.
49 | /// - Parameter sessionConfiguration: An optional configuration to use for network connectivity. Generally if you wish to customise this you should start with ``defaultConfiguration`` and customise that, in order to inherit any settings which are important to correct function.
50 + /// - Throws: ``WeatherError.invalidAPIKey`` if the `apiKey` is obviously invalid (e.g. blank).
51 | public init(apiKey: String, sessionConfiguration: URLSessionConfiguration = defaultConfiguration) throws {
52 | guard !apiKey.isEmpty else {
warning: 'nearbyDevices' doesn't exist at '/SwiftWeather/Wunderground/devices(near:)'
--> Sources/SwiftWeather/Wunderground/Wunderground.swift:255:48-255:61
253 | /// Precisely which devices are returned may vary between requests for the same location.
254 | ///
255 + /// If you just want nearby devices, use ``nearbyDevices``.
256 | ///
257 | /// - Parameter location: The location to search near. If the given location represents an area (rather than a precise point) it is _not_ guaranteed that all stations within that area are returned.Conversion complete! (0.24s)
Generated DocC archive at '/Users/builder/builds/TDmZkXJm/0/finestructure/swiftpackageindex-builder/spi-builder-workspace/.docs/wadetregaskis/swiftweather/3.0.0'
Fetching https://github.com/apple/swift-docc-plugin from cache
Fetched https://github.com/apple/swift-docc-plugin from cache (0.27s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.3.0 (0.03s)
Fetching https://github.com/apple/swift-docc-symbolkit from cache
Fetched https://github.com/apple/swift-docc-symbolkit from cache (0.53s)
Computing version for https://github.com/apple/swift-docc-symbolkit
Computed https://github.com/apple/swift-docc-symbolkit at 1.0.0 (0.06s)
Creating working copy for https://github.com/apple/swift-docc-symbolkit
Working copy of https://github.com/apple/swift-docc-symbolkit resolved at 1.0.0
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.3.0
Building for debugging...
[0/8] Write sources
[3/8] Write snippet-extract-entitlement.plist
[4/8] Write swift-version-33747A42983211AE.txt
[6/52] Compiling Snippets Snippet.swift
[7/52] Emitting module Snippets
[8/52] Compiling Snippets SnippetParser.swift
[9/52] Compiling SymbolKit SourceOrigin.swift
[10/52] Compiling SymbolKit GenericConstraints.swift
[11/52] Compiling SymbolKit Swift.swift
[12/52] Compiling SymbolKit SemanticVersion.swift
[13/52] Compiling SymbolKit AccessControl.swift
[14/52] Compiling SymbolKit Availability.swift
[15/52] Compiling SymbolKit AvailabilityItem.swift
[16/52] Compiling SymbolKit Domain.swift
[17/52] Compiling SymbolKit DeclarationFragments.swift
[18/52] Compiling SymbolKit Fragment.swift
[19/52] Compiling SymbolKit FragmentKind.swift
[20/52] Compiling SymbolKit FunctionParameter.swift
[21/57] Compiling SymbolKit Mixin+Equals.swift
[22/57] Compiling SymbolKit Mixin+Hash.swift
[23/57] Compiling SymbolKit Mixin.swift
[24/57] Compiling SymbolKit LineList.swift
[25/57] Compiling SymbolKit Position.swift
[26/57] Compiling SymbolKit SourceRange.swift
[27/57] Compiling SymbolKit Generics.swift
[28/57] Compiling SymbolKit Namespace.swift
[29/57] Compiling SymbolKit Symbol.swift
[30/57] Compiling SymbolKit SymbolKind.swift
[31/57] Compiling SymbolKit SymbolGraph.swift
[32/57] Compiling SymbolKit SPI.swift
[33/57] Compiling SymbolKit Snippet.swift
[34/57] Compiling SymbolKit Extension.swift
[35/57] Compiling SymbolKit GenericConstraint.swift
[36/57] Compiling SymbolKit GenericParameter.swift
[37/57] Compiling SymbolKit FunctionSignature.swift
[38/57] Compiling SymbolKit Identifier.swift
[39/57] Compiling SymbolKit KindIdentifier.swift
[40/57] Compiling SymbolKit Location.swift
[41/57] Compiling SymbolKit Mutability.swift
[42/57] Compiling SymbolKit Names.swift
[43/57] Emitting module SymbolKit
[44/57] Compiling SymbolKit Metadata.swift
[45/57] Compiling SymbolKit Module.swift
[46/57] Compiling SymbolKit OperatingSystem.swift
[47/57] Compiling SymbolKit Platform.swift
[48/57] Compiling SymbolKit Relationship.swift
[49/57] Compiling SymbolKit RelationshipKind.swift
[50/57] Compiling SymbolKit GraphCollector.swift
[51/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[52/57] Compiling SymbolKit UnifiedSymbol.swift
[53/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[54/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[55/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[56/61] Compiling snippet_extract URL+Status.swift
[57/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Emitting module snippet_extract
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract
[60/61] Applying snippet-extract
Build complete! (9.44s)
Building for debugging...
[0/1] Write swift-version-33747A42983211AE.txt
Build complete! (0.16s)
484
4 /Users/builder/builds/TDmZkXJm/0/finestructure/swiftpackageindex-builder/spi-builder-workspace/.docs/wadetregaskis/swiftweather/3.0.0
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $workDir/.docs/wadetregaskis/swiftweather/3.0.0
File count: 484
Doc size: 4.0MB
Preparing doc bundle ...
Uploading prod-wadetregaskis-swiftweather-3.0.0-7e23071d.zip to s3://spi-docs-inbox/prod-wadetregaskis-swiftweather-3.0.0-7e23071d.zip
Copying... [18%]
Copying... [27%]
Copying... [36%]
Copying... [44%]
Copying... [53%]
Copying... [62%]
Copying... [71%]
Copying... [89%]
Copying... [98%]
Copying... [100%]
Done.