Skip to content

Commit 20104c8

Browse files
authored
fix: normalize and save repo url in rubygems (#4330)
Signed-off-by: Mouad BANI <mouad-mb@outlook.com>
1 parent a4d2422 commit 20104c8

3 files changed

Lines changed: 29 additions & 1 deletion

File tree

services/apps/packages_worker/src/rubygems/normalize.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { canonicalizeRepoUrl } from '../utils/canonicalizeRepoUrl'
2+
13
import {
24
NormalizedRubyGemsOwner,
35
NormalizedRubyGemsPackage,
@@ -15,10 +17,12 @@ function nonEmpty(value: string | null | undefined): string | null {
1517

1618
export function normalizeRubyGemsPackage(doc: RubyGemsGemResponse): NormalizedRubyGemsPackage {
1719
const licenses = doc.licenses && doc.licenses.length > 0 ? doc.licenses : null
20+
const declaredRepositoryUrl = nonEmpty(doc.source_code_uri)
1821
return {
1922
description: nonEmpty(doc.info),
2023
homepage: nonEmpty(doc.homepage_uri),
21-
declaredRepositoryUrl: nonEmpty(doc.source_code_uri),
24+
declaredRepositoryUrl,
25+
repo: declaredRepositoryUrl ? canonicalizeRepoUrl(declaredRepositoryUrl) : null,
2226
licenses,
2327
licensesRaw: licenses ? licenses.join(', ') : null,
2428
latestVersion: nonEmpty(doc.version),

services/apps/packages_worker/src/rubygems/runRubyGemsCoreLoop.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import {
22
QueryExecutor,
33
RubyGemsPackageToSync,
4+
getOrCreateRepoByUrl,
45
listRubyGemsPackagesToSync,
56
logAuditFieldChange,
67
recordDownloadSnapshot,
78
upsertPackage,
9+
upsertPackageRepo,
810
} from '@crowd/data-access-layer'
911
import { getServiceChildLogger } from '@crowd/logging'
1012

@@ -106,6 +108,7 @@ async function processPackage(
106108
description: normalized.description,
107109
homepage: normalized.homepage,
108110
declaredRepositoryUrl: normalized.declaredRepositoryUrl,
111+
repositoryUrl: normalized.repo?.url ?? null,
109112
licenses: normalized.licenses,
110113
licensesRaw: normalized.licensesRaw,
111114
latestVersion: normalized.latestVersion,
@@ -114,6 +117,24 @@ async function processPackage(
114117
})
115118
pkgChanged.forEach((f) => changed.add(f))
116119

120+
if (normalized.repo) {
121+
const { id: repoId, changedFields: repoChanged } = await getOrCreateRepoByUrl(
122+
t,
123+
normalized.repo.url,
124+
normalized.repo.host,
125+
)
126+
repoChanged.forEach((f) => changed.add(f))
127+
128+
const linkChanged = await upsertPackageRepo(
129+
t,
130+
packageDbId.toString(),
131+
repoId,
132+
'declared',
133+
0.8,
134+
)
135+
linkChanged.forEach((f) => changed.add(f))
136+
}
137+
117138
if (normalized.totalDownloads > 0) {
118139
const dlChanged = await recordDownloadSnapshot(t, {
119140
packageId: packageDbId,

services/apps/packages_worker/src/rubygems/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { CanonicalRepo } from '../utils/canonicalizeRepoUrl'
2+
13
export interface BatchResult {
24
processed: number
35
skipped: number
@@ -43,6 +45,7 @@ export interface NormalizedRubyGemsPackage {
4345
description: string | null
4446
homepage: string | null
4547
declaredRepositoryUrl: string | null
48+
repo: CanonicalRepo | null
4649
licenses: string[] | null
4750
licensesRaw: string | null
4851
latestVersion: string | null

0 commit comments

Comments
 (0)