summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/lua/maven/MvnCentralDepScan.lua92
1 files changed, 45 insertions, 47 deletions
diff --git a/src/main/lua/maven/MvnCentralDepScan.lua b/src/main/lua/maven/MvnCentralDepScan.lua
index 5462c3d..3084979 100644
--- a/src/main/lua/maven/MvnCentralDepScan.lua
+++ b/src/main/lua/maven/MvnCentralDepScan.lua
@@ -7,20 +7,13 @@
]====================================================================]
---local AF_INET = require('scriptlee').posix.AF_INET
---local AF_INET6 = require('scriptlee').posix.AF_INET6
---local IPPROTO_TCP = require('scriptlee').posix.IPPROTO_TCP
---local SOCK_STREAM = require('scriptlee').posix.SOCK_STREAM
---local async = require("scriptlee").reactor.async
---local inaddrOfHostname = require('scriptlee').posix.inaddrOfHostname
--local newCond = require("scriptlee").posix.newCond -- cannot use. Too buggy :(
local newHttpClient = require("scriptlee").newHttpClient
local newSqlite = require("scriptlee").newSqlite
-local newTlsClient = assert(require("scriptlee").newTlsClient)
+local newTlsClient = require("scriptlee").newTlsClient
local newXmlParser = require("scriptlee").newXmlParser
local objectSeal = require("scriptlee").objectSeal
local sleep = require("scriptlee").posix.sleep
---local socket = require('scriptlee').posix.socket
local startOrExecute = require("scriptlee").reactor.startOrExecute
local out, log = io.stdout, io.stderr
@@ -212,12 +205,15 @@ end
function mod.getMvnArtifactKey( mvnArtifact )
- assert(type(mvnArtifact.artifactId) == "string", mvnArtifact.artifactId)
- assert(type(mvnArtifact.groupId) == "string", mvnArtifact.groupId)
- assert(type(mvnArtifact.version) == "string", mvnArtifact.version)
+ if type(mvnArtifact.artifactId) ~= "string" then error(tostring(mvnArtifact.artifactId))end
+ if type(mvnArtifact.groupId) ~= "string" then error(tostring(mvnArtifact.groupId))end
+ local version = mvnArtifact.version
+ local isVersionOk = (type(version) == "string")
+ if not isVersionOk then warn("Bad version: "..mvnArtifact.groupId.." "..mvnArtifact.artifactId
+ .." " ..tostring(version)) end
return mvnArtifact.groupId
.."\t".. mvnArtifact.artifactId
- .."\t".. mvnArtifact.version
+ .."\t".. (isVersionOk and version or "")
end
@@ -569,13 +565,15 @@ function mod.storeAsSqliteFile( app )
if a.dbId then
log:write("[WARN ] MvnArtifact "..tostring(a.dbId).." probably already exists. Insert it again\n")
end
- assert(a.groupId and a.artifactId and a.version)
+ assert(a.groupId and a.artifactId)
+ if not a.version then warn("a.version missing: "..a.groupId.." "..a.artifactId) end
if a.parentGroupId then assert(a.parentArtifactId and a.parentVersion)
else assert(not a.parentArtifactId and not a.parentVersion) end
+ local versionDbId = (a.version and mod.dbGetOrNewString(app, a.version) or nil)
stmt:reset()
stmt:bind(":groupId", mod.dbGetOrNewString(app, a.groupId))
stmt:bind(":artifactId", mod.dbGetOrNewString(app, a.artifactId))
- stmt:bind(":version", mod.dbGetOrNewString(app, a.version))
+ stmt:bind(":version", versionDbId)
stmt:bind(":parentGroupId", mod.dbGetOrNewString(app, a.parentGroupId))
stmt:bind(":parentArtifactId", mod.dbGetOrNewString(app, a.parentArtifactId))
stmt:bind(":parentVersion", mod.dbGetOrNewString(app, a.parentVersion))
@@ -589,7 +587,7 @@ function mod.storeAsSqliteFile( app )
stmt:reset()
stmt:bind(":groupId", mod.dbGetOrNewString(app, a.groupId))
stmt:bind(":artifactId", mod.dbGetOrNewString(app, a.artifactId))
- stmt:bind(":version", mod.dbGetOrNewString(app, a.version))
+ stmt:bind(":version", versionDbId)
stmt:bind(":parentGroupId", mod.dbGetOrNewString(app, a.parentGroupId))
stmt:bind(":parentArtifactId", mod.dbGetOrNewString(app, a.parentArtifactId))
stmt:bind(":parentVersion", mod.dbGetOrNewString(app, a.parentVersion))
@@ -630,15 +628,12 @@ function mod.storeAsSqliteFile( app )
end
end
if not depId then -- Artifact not stored yet. Do now.
- if not mvnDep.version then
- -- TODO mvnDep.version CAN be missing. Eg via depMgnt of
- -- unknown parent or similar
- mvnDep.version = "TODO_40ba845c5a1bd8"
- end
depId = insertMvnArtifact({
- groupId = mvnDep.groupId,
- artifactId = mvnDep.artifactId,
- version = mvnDep.version,
+ groupId = assert(mvnDep.groupId),
+ artifactId = assert(mvnDep.artifactId),
+ -- mvnDep.version MAY be missing. Eg via depMgnt of
+ -- unknown parent or similar
+ version = (mvnDep.version),
})
end
stmt:reset()
@@ -846,13 +841,14 @@ function mod.printCsvParents( app )
local rs = stmt:execute()
out:write("h;Created;"..mod.escapeCsvValue(os.date("%Y-%m-%d %H:%m:%S")).."\n")
out:write("c;GID;AID;Version;ParentGID;ParentAID;ParentVersion\n")
+ local nilVal = app.nullvalue
while rs:next() do
- out:write("r;") out:write(mod.escapeCsvValue(rs:value(1) or app.nullvalue))
- out:write(";") out:write(mod.escapeCsvValue(rs:value(2) or app.nullvalue))
- out:write(";") out:write(mod.escapeCsvValue(rs:value(3) or app.nullvalue))
- out:write(";") out:write(mod.escapeCsvValue(rs:value(4) or app.nullvalue))
- out:write(";") out:write(mod.escapeCsvValue(rs:value(5) or app.nullvalue))
- out:write(";") out:write(mod.escapeCsvValue(rs:value(6) or app.nullvalue))
+ out:write("r;") out:write(mod.escapeCsvValue(rs:value(1) or nilVal))
+ out:write(";") out:write(mod.escapeCsvValue(rs:value(2) or nilVal))
+ out:write(";") out:write(mod.escapeCsvValue(rs:value(3) or nilVal))
+ out:write(";") out:write(mod.escapeCsvValue(rs:value(4) or nilVal))
+ out:write(";") out:write(mod.escapeCsvValue(rs:value(5) or nilVal))
+ out:write(";") out:write(mod.escapeCsvValue(rs:value(6) or nilVal))
out:write("\n")
end
out:write("t;status;OK\n")
@@ -871,21 +867,21 @@ function mod.printCsvDependencies( app )
.." DepVersion.str"
.." FROM MvnArtifact AS A"
.." JOIN MvnDependency AS Dep ON Dep.mvnArtifactId = A.id"
- .." JOIN MvnArtifact AS D ON Dep.needsMvnArtifactId = D.id"
- .." JOIN String GroupId ON GroupId.id = A.groupId"
- .." JOIN String ArtifactId ON ArtifactId.id = A.artifactId"
- .." JOIN String Version ON Version.id = A.version"
- .." JOIN String DepGid ON DepGid.id = D.groupId"
- .." JOIN String DepAid ON DepAid.id = D.artifactId"
- .." JOIN String DepVersion ON DepVersion.id = D.version"
+ .." LEFT JOIN MvnArtifact AS D ON Dep.needsMvnArtifactId = D.id"
+ .." LEFT JOIN String GroupId ON GroupId.id = A.groupId"
+ .." LEFT JOIN String ArtifactId ON ArtifactId.id = A.artifactId"
+ .." LEFT JOIN String Version ON Version.id = A.version"
+ .." LEFT JOIN String DepGid ON DepGid.id = D.groupId"
+ .." LEFT JOIN String DepAid ON DepAid.id = D.artifactId"
+ .." LEFT JOIN String DepVersion ON DepVersion.id = D.version"
local stmt = app.preparedStmts[queryStr]
if not stmt then stmt = db:prepare(queryStr) app.preparedStmts[queryStr] = stmt end
stmt:reset()
local rs = stmt:execute()
out:write("h;Created;"..mod.escapeCsvValue(os.date("%Y-%m-%d %H:%m:%S")).."\n")
out:write("c;GID;AID;Version;DepGID;DepAID;DepVersion\n")
+ local nilVal = app.nullvalue
while rs:next() do
- local nilVal = "NULL"
out:write("r;") out:write(mod.escapeCsvValue(rs:value(1) or nilVal))
out:write(";") out:write(mod.escapeCsvValue(rs:value(2) or nilVal))
out:write(";") out:write(mod.escapeCsvValue(rs:value(3) or nilVal))
@@ -985,16 +981,18 @@ function mod.enrichFromCbacks( app, opts )
app.mvnArtifacts[key] = mvnArtifact
end
-- Check for missing poms.
- local key = mod.getMvnArtifactKey({
- artifactId = mvnArtifact.parentArtifactId,
- groupId = mvnArtifact.parentGroupId,
- version = mvnArtifact.parentVersion,
- })
- if not app.mvnArtifacts[key] then -- parent pom missing
- onParentPomMissing(
- mvnArtifact.parentGroupId,
- mvnArtifact.parentArtifactId,
- mvnArtifact.parentVersion)
+ if mvnArtifact.parentArtifactId then
+ local key = mod.getMvnArtifactKey({
+ artifactId = mvnArtifact.parentArtifactId,
+ groupId = mvnArtifact.parentGroupId,
+ version = mvnArtifact.parentVersion,
+ })
+ if not app.mvnArtifacts[key] then -- parent pom missing
+ onParentPomMissing(
+ mvnArtifact.parentGroupId,
+ mvnArtifact.parentArtifactId,
+ mvnArtifact.parentVersion)
+ end
end
end,
}