mirror of
https://github.com/bolucat/Archive.git
synced 2025-09-27 12:33:06 +08:00
76 lines
2.1 KiB
Python
Executable File
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()
|