forked from vieter-v/vieter
refactor(package): split module into two files
parent
3636dd92db
commit
9493796160
|
@ -0,0 +1,5 @@
|
||||||
|
# package
|
||||||
|
|
||||||
|
This module handles both parsing the published Arch tarballs & the contents of
|
||||||
|
their `.PKGINFO` files, as well as generating the contents of the database
|
||||||
|
archives' `desc` & `files` files.
|
|
@ -0,0 +1,103 @@
|
||||||
|
module package
|
||||||
|
|
||||||
|
// format_entry returns a string properly formatted to be added to a desc file.
|
||||||
|
[inline]
|
||||||
|
fn format_entry(key string, value string) string {
|
||||||
|
return '\n%$key%\n$value\n'
|
||||||
|
}
|
||||||
|
|
||||||
|
// full_name returns the properly formatted name for the package, including
|
||||||
|
// version & architecture
|
||||||
|
pub fn (pkg &Pkg) full_name() string {
|
||||||
|
p := pkg.info
|
||||||
|
return '$p.name-$p.version-$p.arch'
|
||||||
|
}
|
||||||
|
|
||||||
|
// filename returns the correct filename of the package file
|
||||||
|
pub fn (pkg &Pkg) filename() string {
|
||||||
|
ext := match pkg.compression {
|
||||||
|
0 { '.tar' }
|
||||||
|
1 { '.tar.gz' }
|
||||||
|
6 { '.tar.xz' }
|
||||||
|
14 { '.tar.zst' }
|
||||||
|
else { panic("Another compression code shouldn't be possible. Faulty code: $pkg.compression") }
|
||||||
|
}
|
||||||
|
|
||||||
|
return '${pkg.full_name()}.pkg$ext'
|
||||||
|
}
|
||||||
|
|
||||||
|
// to_desc returns a desc file valid string representation
|
||||||
|
pub fn (pkg &Pkg) to_desc() !string {
|
||||||
|
p := pkg.info
|
||||||
|
|
||||||
|
// filename
|
||||||
|
mut desc := '%FILENAME%\n$pkg.filename()\n'
|
||||||
|
|
||||||
|
desc += format_entry('NAME', p.name)
|
||||||
|
desc += format_entry('BASE', p.base)
|
||||||
|
desc += format_entry('VERSION', p.version)
|
||||||
|
|
||||||
|
if p.description.len > 0 {
|
||||||
|
desc += format_entry('DESC', p.description)
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.groups.len > 0 {
|
||||||
|
desc += format_entry('GROUPS', p.groups.join_lines())
|
||||||
|
}
|
||||||
|
|
||||||
|
desc += format_entry('CSIZE', p.csize.str())
|
||||||
|
desc += format_entry('ISIZE', p.size.str())
|
||||||
|
|
||||||
|
sha256sum := pkg.checksum()!
|
||||||
|
|
||||||
|
desc += format_entry('SHA256SUM', sha256sum)
|
||||||
|
|
||||||
|
// TODO add pgpsig stuff
|
||||||
|
|
||||||
|
if p.url.len > 0 {
|
||||||
|
desc += format_entry('URL', p.url)
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.licenses.len > 0 {
|
||||||
|
desc += format_entry('LICENSE', p.licenses.join_lines())
|
||||||
|
}
|
||||||
|
|
||||||
|
desc += format_entry('ARCH', p.arch)
|
||||||
|
desc += format_entry('BUILDDATE', p.build_date.str())
|
||||||
|
desc += format_entry('PACKAGER', p.packager)
|
||||||
|
|
||||||
|
if p.replaces.len > 0 {
|
||||||
|
desc += format_entry('REPLACES', p.replaces.join_lines())
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.conflicts.len > 0 {
|
||||||
|
desc += format_entry('CONFLICTS', p.conflicts.join_lines())
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.provides.len > 0 {
|
||||||
|
desc += format_entry('PROVIDES', p.provides.join_lines())
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.depends.len > 0 {
|
||||||
|
desc += format_entry('DEPENDS', p.depends.join_lines())
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.optdepends.len > 0 {
|
||||||
|
desc += format_entry('OPTDEPENDS', p.optdepends.join_lines())
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.makedepends.len > 0 {
|
||||||
|
desc += format_entry('MAKEDEPENDS', p.makedepends.join_lines())
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.checkdepends.len > 0 {
|
||||||
|
desc += format_entry('CHECKDEPENDS', p.checkdepends.join_lines())
|
||||||
|
}
|
||||||
|
|
||||||
|
return '$desc\n'
|
||||||
|
}
|
||||||
|
|
||||||
|
// to_files returns a files file valid string representation
|
||||||
|
pub fn (pkg &Pkg) to_files() string {
|
||||||
|
return '%FILES%\n$pkg.files.join_lines()\n'
|
||||||
|
}
|
|
@ -174,104 +174,3 @@ pub fn read_pkg_archive(pkg_path string) !Pkg {
|
||||||
compression: compression_code
|
compression: compression_code
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// format_entry returns a string properly formatted to be added to a desc file.
|
|
||||||
fn format_entry(key string, value string) string {
|
|
||||||
return '\n%$key%\n$value\n'
|
|
||||||
}
|
|
||||||
|
|
||||||
// full_name returns the properly formatted name for the package, including
|
|
||||||
// version & architecture
|
|
||||||
pub fn (pkg &Pkg) full_name() string {
|
|
||||||
p := pkg.info
|
|
||||||
return '$p.name-$p.version-$p.arch'
|
|
||||||
}
|
|
||||||
|
|
||||||
// filename returns the correct filename of the package file
|
|
||||||
pub fn (pkg &Pkg) filename() string {
|
|
||||||
ext := match pkg.compression {
|
|
||||||
0 { '.tar' }
|
|
||||||
1 { '.tar.gz' }
|
|
||||||
6 { '.tar.xz' }
|
|
||||||
14 { '.tar.zst' }
|
|
||||||
else { panic("Another compression code shouldn't be possible. Faulty code: $pkg.compression") }
|
|
||||||
}
|
|
||||||
|
|
||||||
return '${pkg.full_name()}.pkg$ext'
|
|
||||||
}
|
|
||||||
|
|
||||||
// to_desc returns a desc file valid string representation
|
|
||||||
pub fn (pkg &Pkg) to_desc() !string {
|
|
||||||
p := pkg.info
|
|
||||||
|
|
||||||
// filename
|
|
||||||
mut desc := '%FILENAME%\n$pkg.filename()\n'
|
|
||||||
|
|
||||||
desc += format_entry('NAME', p.name)
|
|
||||||
desc += format_entry('BASE', p.base)
|
|
||||||
desc += format_entry('VERSION', p.version)
|
|
||||||
|
|
||||||
if p.description.len > 0 {
|
|
||||||
desc += format_entry('DESC', p.description)
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.groups.len > 0 {
|
|
||||||
desc += format_entry('GROUPS', p.groups.join_lines())
|
|
||||||
}
|
|
||||||
|
|
||||||
desc += format_entry('CSIZE', p.csize.str())
|
|
||||||
desc += format_entry('ISIZE', p.size.str())
|
|
||||||
|
|
||||||
sha256sum := pkg.checksum()!
|
|
||||||
|
|
||||||
desc += format_entry('SHA256SUM', sha256sum)
|
|
||||||
|
|
||||||
// TODO add pgpsig stuff
|
|
||||||
|
|
||||||
if p.url.len > 0 {
|
|
||||||
desc += format_entry('URL', p.url)
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.licenses.len > 0 {
|
|
||||||
desc += format_entry('LICENSE', p.licenses.join_lines())
|
|
||||||
}
|
|
||||||
|
|
||||||
desc += format_entry('ARCH', p.arch)
|
|
||||||
desc += format_entry('BUILDDATE', p.build_date.str())
|
|
||||||
desc += format_entry('PACKAGER', p.packager)
|
|
||||||
|
|
||||||
if p.replaces.len > 0 {
|
|
||||||
desc += format_entry('REPLACES', p.replaces.join_lines())
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.conflicts.len > 0 {
|
|
||||||
desc += format_entry('CONFLICTS', p.conflicts.join_lines())
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.provides.len > 0 {
|
|
||||||
desc += format_entry('PROVIDES', p.provides.join_lines())
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.depends.len > 0 {
|
|
||||||
desc += format_entry('DEPENDS', p.depends.join_lines())
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.optdepends.len > 0 {
|
|
||||||
desc += format_entry('OPTDEPENDS', p.optdepends.join_lines())
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.makedepends.len > 0 {
|
|
||||||
desc += format_entry('MAKEDEPENDS', p.makedepends.join_lines())
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.checkdepends.len > 0 {
|
|
||||||
desc += format_entry('CHECKDEPENDS', p.checkdepends.join_lines())
|
|
||||||
}
|
|
||||||
|
|
||||||
return '$desc\n'
|
|
||||||
}
|
|
||||||
|
|
||||||
// to_files returns a files file valid string representation
|
|
||||||
pub fn (pkg &Pkg) to_files() string {
|
|
||||||
return '%FILES%\n$pkg.files.join_lines()\n'
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue