Skip to content

Commit 3a1b7ed

Browse files
authored
Merge pull request #15 from tayloraswift/package-tags
create an HTML interface for viewing information about repo tags and associated symbol graphs
2 parents c2e43f0 + 297f13a commit 3a1b7ed

File tree

75 files changed

+1759
-325
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+1759
-325
lines changed

Assets/css/Admin.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/css/Admin.css.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/css/Main.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/css/Main.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/HTTPServer/Channels/HTTPServerOperation.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import NIOCore
22
import NIOHTTP1
33

4+
/// A user-defined type for a server’s representation of an HTTP request.
5+
///
6+
/// The purpose of this abstraction is to allow the server delegate type to reject malformed
7+
/// or invalid requests before the server creates a promise on its event loop. The conforming
8+
/// type’s initializer witnesses do not have any access to the instance state of the delegate,
9+
/// so the implementation should only attempt to validate the request’s structure.
410
public
511
protocol HTTPServerOperation:Sendable
612
{

Sources/ModuleGraphs/Repositories/Repository.Pin.State.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@ extension Repository.Pin.State:CustomStringConvertible
2828
{
2929
switch self.version.canonical
3030
{
31-
case .stable(.release(let version)):
32-
return "\(version) (stable, release, \(self.revision))"
33-
3431
case .stable(let version):
3532
return "\(version) (stable, \(self.revision))"
3633

Sources/SemanticVersionTests/Main.swift

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,53 @@ enum Main:SyncTests
77
static
88
func run(tests:Tests)
99
{
10-
if let tests:TestGroup = tests / "version-parsing" / "valid"
10+
if let tests:TestGroup = tests / "SemanticVersion" / "Release"
11+
{
12+
tests.expect(SemanticVersion.init("0.1.2") ==? .release(.v(0, 1, 2)))
13+
}
14+
if let tests:TestGroup = tests / "SemanticVersion" / "Release" / "V"
15+
{
16+
tests.expect(SemanticVersion.init(refname: "v0.1.2") ==? .release(.v(0, 1, 2)))
17+
}
18+
19+
if let tests:TestGroup = tests / "SemanticVersion" / "Prerelease"
20+
{
21+
tests.expect(SemanticVersion.init(refname: "0.1.2-rc3") ==?
22+
.prerelease(.v(0, 1, 2), "rc3"))
23+
}
24+
if let tests:TestGroup = tests / "SemanticVersion" / "Prerelease" / "V"
25+
{
26+
tests.expect(SemanticVersion.init(refname: "v0.1.2-rc3") ==?
27+
.prerelease(.v(0, 1, 2), "rc3"))
28+
}
29+
30+
if let tests:TestGroup = tests / "SemanticVersion" / "Build"
31+
{
32+
tests.expect(SemanticVersion.init(refname: "0.1.2+build3") ==?
33+
.release(.v(0, 1, 2), build: "build3"))
34+
}
35+
if let tests:TestGroup = tests / "SemanticVersion" / "Build" / "V"
36+
{
37+
tests.expect(SemanticVersion.init(refname: "v0.1.2+build3") ==?
38+
.release(.v(0, 1, 2), build: "build3"))
39+
}
40+
41+
if let tests:TestGroup = tests / "SemanticVersion" / "PrereleaseBuild"
42+
{
43+
tests.expect(SemanticVersion.init(refname: "0.1.2-rc3+build3") ==?
44+
.prerelease(.v(0, 1, 2), "rc3", build: "build3"))
45+
}
46+
if let tests:TestGroup = tests / "SemanticVersion" / "PrereleaseBuild" / "V"
47+
{
48+
tests.expect(SemanticVersion.init(refname: "v0.1.2-rc3+build3") ==?
49+
.prerelease(.v(0, 1, 2), "rc3", build: "build3"))
50+
}
51+
52+
if let tests:TestGroup = tests / "PatchVersion" / "Valid"
1153
{
1254
tests.expect(PatchVersion.init("0.1.2") ==? .v(0, 1, 2))
1355
}
14-
if let tests:TestGroup = tests / "version-parsing" / "invalid"
56+
if let tests:TestGroup = tests / "PatchVersion" / "Invalid"
1557
{
1658
if let tests:TestGroup = tests / "empty"
1759
{
@@ -50,7 +92,7 @@ enum Main:SyncTests
5092
tests.expect(nil: PatchVersion.init("0.1.99999"))
5193
}
5294
}
53-
if let tests:TestGroup = tests / "mask-parsing" / "valid"
95+
if let tests:TestGroup = tests / "NumericVersion" / "Valid"
5496
{
5597
if let tests:TestGroup = tests / "major"
5698
{
@@ -65,7 +107,7 @@ enum Main:SyncTests
65107
tests.expect(NumericVersion.init("1.2.3") ==? .patch(.v(1, 2, 3)))
66108
}
67109
}
68-
if let tests:TestGroup = tests / "mask-parsing" / "invalid"
110+
if let tests:TestGroup = tests / "NumericVersion" / "Invalid"
69111
{
70112
if let tests:TestGroup = tests / "empty"
71113
{

Sources/SemanticVersions/AnyVersion.Canonical.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ extension AnyVersion.Canonical:CustomStringConvertible
1717
{
1818
switch self
1919
{
20-
case .stable(.release(let version)): return "\(version) (stable, release)"
2120
case .stable(let version): return "\(version) (stable)"
2221
case .unstable(let name): return "\(name) (unstable)"
2322
}

Sources/SemanticVersions/SemanticVersion.swift

Lines changed: 64 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,29 @@
11
@frozen public
2-
enum SemanticVersion:Equatable, Hashable, Comparable, Sendable
2+
enum SemanticVersion:Equatable, Hashable, Sendable
33
{
4-
case release(PatchVersion)
5-
6-
@available(*, unavailable, message: "unimplemented")
7-
case prerelease
4+
case release (PatchVersion, build:String? = nil)
5+
case prerelease (PatchVersion, String, build:String? = nil)
86
}
97
extension SemanticVersion
108
{
9+
@inlinable public
10+
var patch:PatchVersion
11+
{
12+
switch self
13+
{
14+
case .release (let version, build: _): return version
15+
case .prerelease(let version, _, build: _): return version
16+
}
17+
}
18+
19+
@available(*, deprecated, message: "use 'patch' or switch explicitly instead")
1120
@inlinable public
1221
var release:PatchVersion?
1322
{
1423
switch self
1524
{
16-
case .release(let version): return version
17-
case .prerelease: return nil
25+
case .release(let version, _): return version
26+
case .prerelease: return nil
1827
}
1928
}
2029
}
@@ -25,7 +34,17 @@ extension SemanticVersion:CustomStringConvertible
2534
{
2635
switch self
2736
{
28-
case .release(let version): return "\(version)"
37+
case .release(let version, build: nil):
38+
return "\(version)"
39+
40+
case .release(let version, build: let build?):
41+
return "\(version)+\(build)"
42+
43+
case .prerelease(let version, let alpha, build: nil):
44+
return "\(version)-\(alpha)"
45+
46+
case .prerelease(let version, let alpha, build: let build?):
47+
return "\(version)-\(alpha)+\(build)"
2948
}
3049
}
3150
}
@@ -34,14 +53,49 @@ extension SemanticVersion:LosslessStringConvertible
3453
@inlinable public
3554
init?(_ string:some StringProtocol)
3655
{
37-
if let version:NumericVersion = .init(string)
56+
let patch:PatchVersion
57+
let alpha:String?
58+
let build:String?
59+
60+
var i:String.Index = string.endIndex
61+
62+
if let plus:String.Index = string.lastIndex(of: "+")
3863
{
39-
self = .release(.init(padding: version))
64+
build = .init(string[string.index(after: plus)...])
65+
i = plus
66+
}
67+
else
68+
{
69+
build = nil
70+
}
71+
72+
if let dash:String.Index = string[..<i].lastIndex(of: "-")
73+
{
74+
alpha = .init(string[string.index(after: dash) ..< i])
75+
i = dash
76+
}
77+
else
78+
{
79+
alpha = nil
80+
}
81+
82+
if let version:NumericVersion = .init(string[..<i])
83+
{
84+
patch = .init(padding: version)
4085
}
4186
else
4287
{
4388
return nil
4489
}
90+
91+
if let alpha:String
92+
{
93+
self = .prerelease(patch, alpha, build: build)
94+
}
95+
else
96+
{
97+
self = .release(patch, build: build)
98+
}
4599
}
46100
}
47101
extension SemanticVersion:RawRepresentable

Sources/SymbolGraphs/Metadata/AnyVersion (ext).swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ extension AnyVersion:BSONEncodable
1010
{
1111
switch self.canonical
1212
{
13-
case .stable(.release(let version)):
13+
case .stable(.release(let version, build: nil)):
1414
version.encode(to: &field)
1515

16-
case .unstable(let name):
17-
name.encode(to: &field)
16+
case let other:
17+
"\(other)".encode(to: &field)
1818
}
1919
}
2020
}
@@ -28,7 +28,7 @@ extension AnyVersion:BSONDecodable
2828
switch $0
2929
{
3030
case .int64(let int64):
31-
return .stable(.release(.init(rawValue: int64)))
31+
return .stable(.release(.init(rawValue: int64), build: nil))
3232

3333
case .string(let utf8):
3434
return .init(String.init(bson: utf8))

Sources/SymbolGraphs/Metadata/SymbolGraphMetadata.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,12 @@ extension SymbolGraphMetadata
8989
let display:String
9090
switch swift.canonical
9191
{
92-
case .stable(.release(let version)):
92+
case .stable(.release(let version, _)):
9393
display = "Swift \(version.minor)"
9494

95+
case .stable(let version):
96+
display = "Swift \(version)"
97+
9598
case .unstable:
9699
display = "Swift Nightly"
97100
}

Sources/UnidocAnalysis/Volume (ext).swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ extension Volume
1010
func siteMap() -> SiteMap<PackageIdentifier>
1111
{
1212
var lines:[UInt8] = []
13-
for master:Volume.Master in self.masters
13+
for master:Volume.Master in self.vertices
1414
{
1515
switch master
1616
{
@@ -37,7 +37,7 @@ extension Volume
3737
var procs:[Unidoc.Scalar: [Shoot]] = [:]
3838
var types:Types = .init()
3939

40-
for master:Master in self.masters
40+
for master:Master in self.vertices
4141
{
4242
switch master
4343
{

Sources/UnidocAnalysisTests/Main.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ enum Main:SyncTests
4646
}
4747
}
4848
let culture:Unidoc.Scalar = swift_malibu.id + 1 * .module
49-
let records:Volume = .init(latest: nil,
50-
masters:
49+
let volume:Volume = .init(latest: nil,
50+
vertices:
5151
[
5252
.culture(.init(id: swift_malibu.BarbieCore.id,
5353
module: .init(name: "BarbieCore", type: .regular))),
@@ -135,7 +135,7 @@ enum Main:SyncTests
135135
latest: true,
136136
patch: nil))
137137

138-
let (_, trees):(_, [Volume.TypeTree]) = records.indexes()
138+
let (_, trees):(_, [Volume.TypeTree]) = volume.indexes()
139139
if let tree:Volume.TypeTree = tests.expect(value: trees.first { $0.id == culture })
140140
{
141141
tests.expect(tree ==? .init(id: culture, rows:

0 commit comments

Comments
 (0)