Skip to content

Commit

Permalink
chkupd v3.1
Browse files Browse the repository at this point in the history
  • Loading branch information
kreatoo committed Jun 25, 2023
1 parent d06ce75 commit 48492c7
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 4 deletions.
7 changes: 4 additions & 3 deletions src/chkupd/backends/repology.nim
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ include ../../kpkg/modules/runparser
proc repologyCheck(package: string, repo: string, autoUpdate = false,
skipIfDownloadFails = true) =
## Check against Repology database.
let pkgName = lastPathPart(package)
var client = newHttpClient()
var request = parseJson(client.getContent(
"https://repology.org/api/v1/project/"&package&"?repos_newest=1&newest=1"))
"https://repology.org/api/v1/project/"&pkgName&"?repos_newest=1&newest=1"))
var counter = 0
var version: string
let packageDir = repo&"/"&package
let packageDir = repo&"/"&pkgName

echo "chkupd v3 Repology backend"

Expand Down Expand Up @@ -50,7 +51,7 @@ proc repologyCheck(package: string, repo: string, autoUpdate = false,
waitFor download(source, filename)
except Exception:
if skipIfDownloadFails:
echo "WARN: '"&package&"' failed because of download. Skipping."
echo "WARN: '"&pkgName&"' failed because of download. Skipping."
return

# Replace the sha256sum
Expand Down
46 changes: 46 additions & 0 deletions src/chkupd/checkall.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import sequtils

proc checkAll(repo: string, backend = "repology", autoUpdate = true, autoBuild = true, jsonPath = "chkupd.json") =
## Checks all packages, and updates them automatically.
var failedUpdPackages: seq[string]
var failedBuildPackages: seq[string]
var pkgCount: int

case backend:
of "repology":
# this sounds stupid but i couldnt think of anything else lol
var pkgFailed = true

for i in toSeq(walkDirs(repo&"/*")):

if i == ".git" or i == ".github":
continue

echo "trying to update "&i
try:
repologyCheck(package = i, repo = repo, autoUpdate = autoUpdate, skipIfDownloadFails = false)
pkgFailed = false
echo "updating "&i&" successful"
except CatchableError:
failedUpdPackages = failedUpdPackages&i
echo "couldnt update "&i

if not pkgFailed and autoBuild:
echo "docker run -v ./"&repo&":/etc/kpkg/repos/main -it ghcr.io/kreatolinux/builder:latest kpkg build "&lastPathPart(i)
if execShellCmd("docker run -v "&repo&":/etc/kpkg/repos/main -v /var/cache/kpkg/archives:/var/cache/kpkg/archives -it ghcr.io/kreatolinux/builder:latest kpkg build -u -y "&lastPathPart(i)) != 0:
failedBuildPackages = failedBuildPackages&i
echo "couldnt build "&i
else:
echo "Not supported"

var json = %*
[
{
"successfulPkgCount": pkgCount,
"failedPkgCount": failedBuildPackages.len+failedUpdPackages.len,
"failedBuildPackages": failedBuildPackages,
"failedUpdPackages": failedUpdPackages
}
]

writeFile(jsonPath, $json)
12 changes: 11 additions & 1 deletion src/chkupd/chkupd.nim
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import cligen
include backends/repology
include checkall

clCfg.version = "chkupd v3"
clCfg.version = "chkupd v3.1"

dispatchMulti(
[
Expand All @@ -11,5 +12,14 @@ dispatchMulti(
"autoUpdate": "Autoupdate if older version is detected.",
"skipIfDownloadFails": "Skip autoupdate if the newer version couldn't be downloaded."
}
],
[
checkAll, help = {
"repo": "Repository name.",
"backend": "Backend name. Defaults to repology",
"autoUpdate": "Autoupdate if older version is detected.",
"autoBuild": "Build packages on a seperate container each time.",
"jsonPath": "Json output location (defaults to chkupd.json)"
}
]
)

0 comments on commit 48492c7

Please sign in to comment.