libjxl

FORK: libjxl patches used on blog
git clone https://git.neptards.moe/blog/libjxl.git
Log | Files | Refs | Submodules | README | LICENSE

transform_sources_list.py (1890B)


      1 #!/usr/bin/env python3
      2 # Copyright (c) the JPEG XL Project Authors. All rights reserved.
      3 #
      4 # Use of this source code is governed by a BSD-style
      5 # license that can be found in the LICENSE file.
      6 
      7 import sys
      8 
      9 def find_key(entries : list[str], key: str) -> int:
     10   prefix = f"{key.lower()}: "
     11   for i in range(len(entries)):
     12     if entries[i].lower().startswith(prefix):
     13       return i
     14   return -1
     15 
     16 def set_value(entries: list[str], key: str, value: str):
     17   new_line = f'{key}: {value}'
     18   # TODO(eustas): deal with repeated items
     19   idx = find_key(entries, key)
     20   if idx < 0:
     21     entries.append(new_line)
     22   else:
     23     entries[idx] = new_line
     24 
     25 def transform_deb_822(archs):
     26   sources_path = "/etc/apt/sources.list.d/debian.sources"
     27   with open(sources_path) as f:
     28     lines = [line.rstrip() for line in f]
     29   lines.append('')
     30   entries = []
     31   entry = []
     32   for line in lines:
     33     if len(line) == 0:
     34       if len(entry) > 0:
     35         entries.append(entry)
     36       entry = []
     37     else:
     38       entry.append(line)
     39 
     40   new_entries = []
     41   for entry in entries:
     42     types_key = find_key(entry, "Types")
     43     if types_key < 0:
     44       continue
     45     if "types: deb" != entry[types_key].lower():
     46       continue
     47     deb_entry = entry[:]
     48     for arch in archs:
     49       deb_entry.append(f"Architectures-Add: {arch}")
     50     new_entries.append(deb_entry)
     51     deb_src_entry = deb_entry[:]
     52     set_value(deb_src_entry, "Types", "deb-src")
     53     new_entries.append(deb_src_entry)
     54 
     55   new_lines = []
     56   for entry in new_entries:
     57     if len(new_lines) > 0:
     58       new_lines.append("")
     59     new_lines.extend(entry)
     60 
     61   with open(sources_path, "w") as f:
     62     f.write('\n'.join(new_lines))
     63 
     64 def main():
     65   if len(sys.argv) != 2:
     66     print(f"Usage: {sys.argv[1]} ARCHS")
     67     sys.exit(1)
     68   archs_str = sys.argv[1]
     69   archs = archs_str.split(',')
     70   if True:
     71     transform_deb_822(archs)
     72   else:
     73     sys.exit(1)
     74 
     75 if __name__ == '__main__':
     76   main()