Files
Archive/yass/scripts/get-debian-name.py
2024-10-28 19:35:26 +01:00

76 lines
2.1 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import subprocess
def check_string_output(command):
return subprocess.check_output(command, stderr=subprocess.STDOUT).decode().strip()
_codenames_db = {}
def open_ubuntu_csv_file(csvpath):
import csv
with open(csvpath, newline='') as csvfile:
reader = csv.DictReader(csvfile, delimiter=',')
for row in reader:
version = row['version'].replace(' LTS', '')
codename = row['series']
key = codename
value = 'ubuntu-' + version + '-' + codename
_codenames_db[key] = value
def open_debian_csv_file(csvpath):
import csv
with open(csvpath, newline='') as csvfile:
reader = csv.DictReader(csvfile, delimiter=',')
for row in reader:
version = row['version']
codename = row['series']
key = codename
if version:
value = 'debian-' + version + '-' + codename
else:
value = 'debian-' + codename
_codenames_db[key] = value
def init_codenames_from_distro_info_data():
try:
open_ubuntu_csv_file('/usr/share/distro-info/ubuntu.csv')
except IOError:
# shipped by distro-info-data 0.60ubuntu0.2
open_ubuntu_csv_file('./distro-info/ubuntu.csv')
pass
try:
open_debian_csv_file('/usr/share/distro-info/debian.csv')
except IOError:
# shipped by distro-info-data 0.60ubuntu0.2
open_debian_csv_file('./distro-info/debian.csv')
pass
def main():
os.chdir(os.path.dirname(os.path.abspath(__file__)))
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('codename', nargs='?', help='Debian Distribution Name')
args = parser.parse_args()
codename = args.codename
if not codename:
codename = check_string_output(['lsb_release', '-sc']).lower()
init_codenames_from_distro_info_data()
if codename in _codenames_db:
print(_codenames_db[codename])
else:
id = check_string_output(['lsb_release', '-si']).lower()
release = check_string_output(['lsb_release', '-sr'])
if codename != 'n/a':
print("%s-%s-%s" % (id, release, codename))
else:
print("%s-%s" % (id, release))
if __name__ == '__main__':
main()