mirror of
https://github.com/SinTan1729/random.git
synced 2024-12-25 20:58:37 -06:00
Added update-lure-checksums.py
This commit is contained in:
parent
2ae3a8ec4c
commit
8236c8c8aa
1 changed files with 75 additions and 0 deletions
75
update-lure-checksums.py
Normal file
75
update-lure-checksums.py
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
#!/bin/env python3
|
||||||
|
|
||||||
|
# This is a script to update checksums for sources in lure build scripts
|
||||||
|
# This is a crude analog for updpkgsums for PKGBUILD files
|
||||||
|
# The script assumed that matching sources* and checksums* lines are already there
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import time
|
||||||
|
|
||||||
|
# Check if the build script exists
|
||||||
|
if not os.path.isfile('lure.sh'):
|
||||||
|
print("Couldn't find a lure.sh file in the current directory.")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
with open('lure.sh', 'r') as script_file:
|
||||||
|
script = script_file.readlines()
|
||||||
|
|
||||||
|
vars = {}
|
||||||
|
for line in script:
|
||||||
|
if '=' not in line or '\t' in line:
|
||||||
|
continue
|
||||||
|
var, val = line.strip('\n').split('=')
|
||||||
|
vars[var] = val.strip('""').strip("''")
|
||||||
|
|
||||||
|
for src_type in [k for k in vars.keys() if "sources" in k]:
|
||||||
|
suffix = src_type.split('_')[1]
|
||||||
|
if suffix != "":
|
||||||
|
suffix = "_"+suffix
|
||||||
|
|
||||||
|
# Read all the links
|
||||||
|
links = [link.strip('""').strip("''")
|
||||||
|
for link in vars[src_type].strip('()').split()]
|
||||||
|
|
||||||
|
# Get the old sums
|
||||||
|
old_sums = vars["checksums"+suffix].strip('()').split()
|
||||||
|
old_sums = [sum.strip('""').strip("''") for sum in old_sums]
|
||||||
|
|
||||||
|
checksums = []
|
||||||
|
for i, link in enumerate(links):
|
||||||
|
if old_sums[i] == 'SKIP':
|
||||||
|
checksums.append('SKIP')
|
||||||
|
continue
|
||||||
|
# Try to do variable expansions (works up to one level, should be enough)
|
||||||
|
to_replace = list(set(re.findall('(\${.+?})', link)))
|
||||||
|
for str in to_replace:
|
||||||
|
str_clean = str.strip('${}')
|
||||||
|
link = link.replace(str, vars[str_clean])
|
||||||
|
|
||||||
|
filename = subprocess.run(
|
||||||
|
['curl', '-sLO', '-w', '%{filename_effective}', link], stdout=subprocess.PIPE)
|
||||||
|
filename = filename.stdout.decode('utf-8')
|
||||||
|
|
||||||
|
checksum = subprocess.run(
|
||||||
|
['sha256sum', filename], stdout=subprocess.PIPE)
|
||||||
|
checksum = checksum.stdout.decode('utf-8').split()[0]
|
||||||
|
checksums.append(checksum)
|
||||||
|
|
||||||
|
# Build the output line
|
||||||
|
sum_out = "checksums"+suffix+"=('"+"' '".join(checksums)+"')\n"
|
||||||
|
for i, line in enumerate(script):
|
||||||
|
if "checksums"+suffix in line:
|
||||||
|
script[i] = sum_out
|
||||||
|
print("Updated checksums for "+suffix[1:]+" sources")
|
||||||
|
|
||||||
|
timestamp = "{}".format(int(time.time()))
|
||||||
|
|
||||||
|
with open(timestamp, 'w') as tempfile:
|
||||||
|
tempfile.writelines(script)
|
||||||
|
|
||||||
|
os.rename('lure.sh', "lure-"+timestamp+".sh")
|
||||||
|
os.rename(timestamp, 'lure.sh')
|
||||||
|
|
||||||
|
print("Done!")
|
Loading…
Reference in a new issue