forked from vieter-v/vieter
Added function to read .PKGINFO into struct
parent
b5224e8a63
commit
5616e7a4e2
|
@ -2,7 +2,7 @@ module archive
|
|||
|
||||
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) {
|
||||
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
|
||||
log_level_str := os.getenv_opt('LOG_LEVEL') or { 'WARN' }
|
||||
log_level := log.level_from_tag(log_level_str) or {
|
||||
|
@ -102,11 +102,11 @@ fn main() {
|
|||
}, port)
|
||||
}
|
||||
|
||||
// fn main() {
|
||||
// // archive.list_filenames()
|
||||
// info := archive.get_pkg_info('test/jjr-joplin-desktop-2.6.10-4-x86_64.pkg.tar.zst') or {
|
||||
// eprintln(err.msg)
|
||||
// return
|
||||
// }
|
||||
// println(info)
|
||||
// }
|
||||
fn main() {
|
||||
// archive.list_filenames()
|
||||
info := repo.get_pkg_info('test/jjr-joplin-desktop-2.6.10-4-x86_64.pkg.tar.zst') or {
|
||||
eprintln(err.msg)
|
||||
return
|
||||
}
|
||||
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
|
||||
|
||||
import os
|
||||
import archive
|
||||
|
||||
const pkgs_subpath = 'pkgs'
|
||||
|
Loading…
Reference in New Issue