dpkg API

dpkg

package

API reference for the dpkg package.

F
function

NewDpkgInstance

Returns

error
extras/dpkg/dpkg.go:16-26
func NewDpkgInstance() error

{
	if DpkgInstanced {
		return errors.New("another dpkg instance already exists")
	}

	C.dpkg_program_init(C.CString("a.out"))
	C.modstatdb_open(C.msdbrw_available_readonly)

	DpkgInstanced = true
	return nil
}
F
function

DpkgDispose

Returns

error
extras/dpkg/dpkg.go:28-37
func DpkgDispose() error

{
	if !DpkgInstanced {
		return errors.New("no dpkg instance exists")
	}

	C.dpkg_program_done()

	DpkgInstanced = false
	return nil
}
F
function

getPackageVersion

Parameters

pkgName
string

Returns

string
extras/dpkg/dpkg.go:39-48
func getPackageVersion(pkgName string) string

{
	pkgInfo := C.pkg_hash_find_singleton(C.CString(pkgName))
	version := C.GoString(C.versiondescribe(&pkgInfo.configversion, C.vdew_nonambig))

	if version == "<none>" {
		version = ""
	}

	return version
}
F
function

DpkgGetPackageVersion

Parameters

pkgName
string

Returns

string
extras/dpkg/dpkg.go:50-56
func DpkgGetPackageVersion(pkgName string) string

{
	NewDpkgInstance()
	version := getPackageVersion(pkgName)
	DpkgDispose()

	return version
}
F
function

DpkgBatchGetPackageVersion

Parameters

pkgNames
[]string

Returns

[]string
extras/dpkg/dpkg.go:58-68
func DpkgBatchGetPackageVersion(pkgNames []string) []string

{
	versions := make([]string, len(pkgNames))

	NewDpkgInstance()
	for i := 0; i < len(pkgNames); i++ {
		versions[i] = getPackageVersion(pkgNames[i])
	}
	DpkgDispose()

	return versions
}
F
function

TestGetPackageVersion

Parameters

extras/dpkg/dpkg_test.go:8-15
func TestGetPackageVersion(t *testing.T)

{
	version := DpkgGetPackageVersion("git")
	fmt.Printf("Version: %s\n", version)

	if version != "1:2.40.1-1" {
		t.Fail()
	}
}
F
function

TestBatchGetPackageVersion

Parameters

extras/dpkg/dpkg_test.go:17-24
func TestBatchGetPackageVersion(t *testing.T)

{
	versions := DpkgBatchGetPackageVersion([]string{"git", "golang"})
	fmt.Printf("Versions: %v\n", versions)

	if versions[0] != "1:2.40.1-1" || versions[1] != "2:1.21~2" {
		t.Fail()
	}
}