forked from vieter-v/vieter
Added function to read .PKGINFO into struct
parent
b5224e8a63
commit
5616e7a4e2
|
@ -2,7 +2,7 @@ module archive
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
pub fn get_pkg_info(pkg_path string) ?string {
|
pub fn pkg_info_string(pkg_path string) ?string {
|
||||||
if !os.is_file(pkg_path) {
|
if !os.is_file(pkg_path) {
|
||||||
return error("'$pkg_path' doesn't exist or isn't a file.")
|
return error("'$pkg_path' doesn't exist or isn't a file.")
|
||||||
}
|
}
|
||||||
|
|
18
src/main.v
18
src/main.v
|
@ -54,7 +54,7 @@ fn reader_to_file(mut reader io.BufferedReader, length int, path string) ? {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main2() {
|
||||||
// Configure logger
|
// Configure logger
|
||||||
log_level_str := os.getenv_opt('LOG_LEVEL') or { 'WARN' }
|
log_level_str := os.getenv_opt('LOG_LEVEL') or { 'WARN' }
|
||||||
log_level := log.level_from_tag(log_level_str) or {
|
log_level := log.level_from_tag(log_level_str) or {
|
||||||
|
@ -102,11 +102,11 @@ fn main() {
|
||||||
}, port)
|
}, port)
|
||||||
}
|
}
|
||||||
|
|
||||||
// fn main() {
|
fn main() {
|
||||||
// // archive.list_filenames()
|
// archive.list_filenames()
|
||||||
// info := archive.get_pkg_info('test/jjr-joplin-desktop-2.6.10-4-x86_64.pkg.tar.zst') or {
|
info := repo.get_pkg_info('test/jjr-joplin-desktop-2.6.10-4-x86_64.pkg.tar.zst') or {
|
||||||
// eprintln(err.msg)
|
eprintln(err.msg)
|
||||||
// return
|
return
|
||||||
// }
|
}
|
||||||
// println(info)
|
println(info)
|
||||||
// }
|
}
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
module repo
|
||||||
|
|
||||||
|
import archive
|
||||||
|
import time
|
||||||
|
|
||||||
|
struct PkgInfo {
|
||||||
|
mut:
|
||||||
|
// Single values
|
||||||
|
name string
|
||||||
|
base string
|
||||||
|
version string
|
||||||
|
description string
|
||||||
|
size i64
|
||||||
|
csize i64
|
||||||
|
url string
|
||||||
|
arch string
|
||||||
|
build_date i64
|
||||||
|
packager string
|
||||||
|
md5sum string
|
||||||
|
sha256sum string
|
||||||
|
pgpsig string
|
||||||
|
pgpsigsize i64
|
||||||
|
|
||||||
|
// Array values
|
||||||
|
groups []string
|
||||||
|
licenses []string
|
||||||
|
replaces []string
|
||||||
|
depends []string
|
||||||
|
conflicts []string
|
||||||
|
provides []string
|
||||||
|
optdepends []string
|
||||||
|
makedepends []string
|
||||||
|
checkdepends []string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_pkg_info(pkg_path string) ?PkgInfo {
|
||||||
|
pkg_info_str := archive.pkg_info_string(pkg_path) ?
|
||||||
|
mut pkg_info := PkgInfo{}
|
||||||
|
|
||||||
|
mut i := 0
|
||||||
|
mut j := 0
|
||||||
|
|
||||||
|
// Iterate over the entire string
|
||||||
|
for line in pkg_info_str.split_into_lines() {
|
||||||
|
// Skip any comment lines
|
||||||
|
if line.starts_with('#') {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
parts := line.split_nth('=', 2)
|
||||||
|
|
||||||
|
if parts.len < 2 {
|
||||||
|
return error('Invalid line detected.')
|
||||||
|
}
|
||||||
|
|
||||||
|
value := parts[1].trim_space()
|
||||||
|
key := parts[0].trim_space()
|
||||||
|
|
||||||
|
match key {
|
||||||
|
// Single values
|
||||||
|
'pkgname' { pkg_info.name = value }
|
||||||
|
'pkgbase' { pkg_info.base = value }
|
||||||
|
'pkgver' { pkg_info.version = value }
|
||||||
|
'pkgdesc' { pkg_info.description = value }
|
||||||
|
'csize' { pkg_info.csize = value.int() }
|
||||||
|
'size' { pkg_info.size = value.int() }
|
||||||
|
'url' { pkg_info.url = value }
|
||||||
|
'arch' { pkg_info.arch = value }
|
||||||
|
'builddate' { pkg_info.build_date = value.int() }
|
||||||
|
'packager' { pkg_info.packager = value }
|
||||||
|
'md5sum' { pkg_info.md5sum = value }
|
||||||
|
'sha256sum' { pkg_info.sha256sum = value }
|
||||||
|
'pgpsig' { pkg_info.pgpsig = value }
|
||||||
|
'pgpsigsize' { pkg_info.pgpsigsize = value.int() }
|
||||||
|
|
||||||
|
// Array values
|
||||||
|
'group' { pkg_info.groups << value }
|
||||||
|
'license' { pkg_info.licenses << value }
|
||||||
|
'replaces' { pkg_info.replaces << value }
|
||||||
|
'depend' { pkg_info.depends << value }
|
||||||
|
'conflict' { pkg_info.conflicts << value }
|
||||||
|
'provides' { pkg_info.provides << value }
|
||||||
|
'optdepend' { pkg_info.optdepends << value }
|
||||||
|
'makedepend' { pkg_info.makedepends << value }
|
||||||
|
'checkdepend' { pkg_info.checkdepends << value }
|
||||||
|
else { return error("Invalid key '$key'.") }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pkg_info
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
module repo
|
module repo
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import archive
|
||||||
|
|
||||||
const pkgs_subpath = 'pkgs'
|
const pkgs_subpath = 'pkgs'
|
||||||
|
|
Loading…
Reference in New Issue