11# -*- coding: utf-8 -*-
22
3+ """
4+ APT repositories
5+ """
6+
37from apt_repo import APTRepository
48from typing import Optional
59
610
711class GardenLinuxRepo (APTRepository ):
12+ """
13+ Class to reflect APT based GardenLinux repositories.
14+
15+ :author: Garden Linux Maintainers
16+ :copyright: Copyright 2024 SAP SE
17+ :package: gardenlinux
18+ :subpackage: apt
19+ :since: 0.7.0
20+ :license: https://www.apache.org/licenses/LICENSE-2.0
21+ Apache License, Version 2.0
22+ """
23+
824 def __init__ (
925 self ,
1026 dist : str ,
1127 url : Optional [str ] = "http://packages.gardenlinux.io/gardenlinux" ,
1228 components : Optional [list [str ]] = ["main" ],
13- ) -> None :
29+ ):
30+ """
31+ Constructor __init__(GardenLinuxRepo)
32+
33+ :param dist: Repository dist
34+ :param url: Repository url
35+ :param components: Repository components provided
36+
37+ :since: 0.7.0
38+ """
39+
1440 self .components = components
1541 self .url = url
1642 self .dist = dist
1743 self .repo = APTRepository (self .url , self .dist , self .components )
1844
1945 def get_package_version_by_name (self , name : str ) -> list [tuple [str , str ]]:
2046 """
21- :param str name: name of package to find
22- :returns: packages matching the input name
47+ Returns the package version matching the given name.
48+
49+ :param name: name of package to find
50+
51+ :return: (list) Packages matching the input name
52+ :since: 0.7.0
2353 """
54+
2455 return [
2556 (package .package , package .version )
2657 for package in self .repo .get_packages_by_name (name )
2758 ]
2859
29- def get_packages_versions (self ):
60+ def get_packages_versions (self ) -> list [ tuple [ str , str ]] :
3061 """
3162 Returns list of (package, version) tuples
63+
64+ :return: (list) Packages versions
65+ :since: 0.7.0
3266 """
67+
3368 return [(p .package , p .version ) for p in self .repo .packages ]
3469
3570
36- def compare_gardenlinux_repo_version (version_a : str , version_b : str ):
71+ def compare_gardenlinux_repo_version (
72+ version_a : str , version_b : str
73+ ) -> list [tuple [str , str , str ]]:
3774 """
38- :param str version_a: Version of first Garden Linux repo
39- :param str version_b: Version of first Garden Linux repo
75+ Compares differences between repository versions given.
4076
4177 Example: print(compare_gardenlinux_repo_version("1443.2", "1443.1"))
78+
79+ :param version_a: Version of first Garden Linux repo
80+ :param version_b: Version of first Garden Linux repo
81+
82+ :return: (list) Differences between repo a and repo b
83+ :since: 0.7.0
4284 """
85+
4386 return compare_repo (GardenLinuxRepo (version_a ), GardenLinuxRepo (version_b ))
4487
4588
4689def compare_repo (
4790 a : GardenLinuxRepo , b : GardenLinuxRepo , available_in_both : Optional [bool ] = False
48- ):
91+ ) -> list [ tuple [ str , str , str ]] :
4992 """
50- :param a GardenLinuxRepo: first repo to compare
51- :param b GardenLinuxRepo: second repo to compare
52- :returns: differences between repo a and repo b
93+ Compares differences between repositories given.
94+
95+ Example:
96+ gl_repo = GardenLinuxRepo("today")
97+ gl_repo_1592 = GardenLinuxRepo("1592.0")
98+ deb_testing = GardenLinuxRepo("testing", "https://deb.debian.org/debian/")
99+ print(compare_repo(gl_repo, gl_repo_1592, available_in_both=True))
100+ print(compare_repo(gl_repo, deb_testing, available_in_both=False))
101+
102+ :param a GardenLinuxRepo: First repo to compare
103+ :param b GardenLinuxRepo: Second repo to compare
104+ :param available_in_both: Compare packages available in both repos only
105+
106+ :return: (list) Differences between repo a and repo b
107+ :since: 0.7.0
53108 """
54109
55110 packages_a = dict (a .get_packages_versions ())
@@ -69,15 +124,3 @@ def compare_repo(
69124 )
70125 or (name not in packages_b or name not in packages_a )
71126 ]
72-
73-
74- # EXAMPLE USAGE.
75- # print(compare_gardenlinux_repo_version("1443.2", "1443.1"))
76-
77- # gl_repo = GardenLinuxRepo("today")
78- # gl_repo_1592 = GardenLinuxRepo("1592.0")
79- # deb_testing = GardenLinuxRepo("testing", "https://deb.debian.org/debian/")
80- # print(compare_repo(gl_repo, gl_repo_1592, available_in_both=True))
81- # print(compare_repo(gl_repo, deb_testing, available_in_both=True))
82- # # print(gl_repo.get_packages_versions())
83- # print(gl_repo.get_package_version_by_name("wget"))
0 commit comments