aboutsummaryrefslogtreecommitdiff
path: root/src/core/locker.nim
diff options
context:
space:
mode:
authoraethrvmn <me@aethrvmn.gr>2025-11-01 11:35:29 +0000
committeraethrvmn <me@aethrvmn.gr>2025-11-01 11:35:29 +0000
commit158e4b82db4430a134c7ee868a8d5b826c4c5343 (patch)
tree81ac757264921fe32d4575193eb5832f542c6d2d /src/core/locker.nim
parentcleanup (diff)
small restructure underway
Diffstat (limited to '')
-rw-r--r--src/core/locker.nim112
1 files changed, 0 insertions, 112 deletions
diff --git a/src/core/locker.nim b/src/core/locker.nim
index f4e90e9..e69de29 100644
--- a/src/core/locker.nim
+++ b/src/core/locker.nim
@@ -1,112 +0,0 @@
-import std / [
- os,
- json,
- strformat
-]
-
-import ./manager
-
-proc lockPath*(): string =
- let
- homeDir: string = getHomeDir()
- lockDir: string = homeDir / ".local" / "tesserae"
- ensureDir(lockDir)
- result = lockDir / "tesserae.lock"
-
-proc loadLock*(): JsonNode =
- let lockFile: string = lockPath()
- result = %*{}
- if fileExists(lockFile):
- try:
- result = parseFile(lockFile)
- except JsonParsingError:
- echo "JsonParsingError. Treating the lockfile as non existant"
- result = %*{}
-
-proc writeLock*(jsonObject: JsonNode) =
- let lockFile: string = lockPath()
- writeFile(lockFile, jsonObject.pretty())
-
-proc updateLock*(
- packageName: string,
- sourceURL: string,
- sourceDir: string,
- chosenTag: string,
- configPath: string
-) =
- ## Updates the lockfile
- var lock: JsonNode = loadLock()
- let
- config: string = readConfigFile(configPath)
- jsonObject: JsonNode = %*{
- "source": { "url": sourceURL },
- "sha256": computeSHA256(sourceDir, chosenTag)
- "tag": chosenTag,
- "config": config
- # I should probably add a sha256 thingy
- }
- lock[packageName] = jsonObject
- writeLock(lock)
- echo "Updated {packageName}".fmt
-
-proc needRebuildLock*(
- packageName: string,
- sourceURL: string,
- sourceDir: string,
- chosenTag: string,
- configPath: string
-): bool =
- ## Checks whether the following have changed:\n
- ## - source (repo url)
- ## - sha256
- ## - tag (new release, manually updated, etc)
- ## - config file of package
- result = false
- let lockFile = loadLock()
-
- if not lockFile.hasKey(packageName):
- echo "{packageName} added to queue".fmt
- return true
-
- else:
- let package = lockFile[packageName]
- if not package.hasKey("source"):
- echo "Could not find source for package {packageName}".fmt
- echo "{packageName} added to queue".fmt
- return true
- if package["source"].hasKey("url"):
- let packageSource: string = package["source"]["url"].getStr
- if packageSource != sourceURL:
- echo "Source URL for package {packageName} has changed".fmt
- echo "{packageName} added to queue".fmt
- return true
-
-
- if not package.hasKey("sha256"):
- echo "sha256 not found for package {packageName}".fmt
- echo "{packageName} added to queue".fmt
- return true
- if package["sha256"].getStr != computeSHA256(sourceDir, chosenTag):
- echo "sha256 mismatch for package {packageName}".fmt
- echo "{packageName} added to queue".fmt
- return true
-
-
- if not package.hasKey("tag"):
- echo "Could not find release tag for package {packageName}".fmt
- echo "{packageName} added to queue".fmt
- return true
- if package["tag"].getStr != chosenTag:
- echo "Release tag has changed from {package["tag"]} -> {chosenTag}".fmt
- echo "{packageName} added to queue".fmt
- return true
-
-
- if not package.hasKey("config"):
- echo "Configuration file not found for package {packageName}".fmt
- echo "{packageName} added to queue"
- return true
- if package["config"].getStr != readConfigFile(configPath):
- echo "Configuration file changed for package {packageName}".fmt
- echo "{packageName} added to queue".fmt
- return true
Directive (EU) 2019/790, Article 4(3); all rights regarding Text and Data Mining (TDM) are reserved.