diff --git a/fgaddon/aircraft_updates.py b/fgaddon/aircraft_updates.py new file mode 100644 index 0000000..14195f7 --- /dev/null +++ b/fgaddon/aircraft_updates.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +# +# Script to summarize changes to fgaddon Aircraft based on svn activity. +# +# Primarily intended to provide a list of aircraft that have been significantly +# updated since the last release for the change log. + +import os, sys +import os.path +import re +from collections import defaultdict +import subprocess +import math +import shlex + +extensions = ["*", "ac", "xml", "png", "jpg"] + +if (len(sys.argv) != 4): + print("Summarize fgaddon/Aircraft changes in a given branch between two dates.") + print("") + print("Usage: " + sys.argv[0] + " ") + print(" \tSVN branch to check (e.g trunk, branches/release-2020.3") + print(" \tStart date (e.g. 2020-04-27)") + print(" \tEnd date (e.g. 2020-10-11") + exit(1) + + +branch = sys.argv[1] +from_date = sys.argv[2] +to_date = sys.argv[3] + +# Create a format string listing changes to all the file types above +tableformat = "{:<25}{:>4}" +for ext in extensions: + tableformat = tableformat + "{:>5}" + +# Check an individual aircraft for changes since date and output them +def check_aircraft(aircraft): + # This command lists all the changed files since date for a given aircraft + svn_log = "svn log https://svn.code.sf.net/p/flightgear/fgaddon/" + branch + "/Aircraft/" + aircraft + " -r {" + from_date + "}:{" + to_date + "} -v -q" + process = subprocess.Popen(shlex.split(svn_log), stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) + stdout, stderr = process.communicate() + + # Now collect some data + count = [] + for ext in extensions: + regexp = " [AM] .*\." + ext + "$" + count.append(len(re.findall(regexp, stdout, flags=re.MULTILINE))) + + # Find completely new aircraft. + regexp = " A /.*/Aircraft/" + aircraft + "$" + new_aircraft = "" + if (re.findall(regexp, stdout, flags=re.MULTILINE)): + new_aircraft = "NEW" + + # Only output if we have more than 100 changes or it's a new aircraft + if ((count[0] > 100) or (new_aircraft == "NEW")): + print(tableformat.format(aircraft, new_aircraft, count[0], count[1], count[2], count[3], count[4])) + + + +svn_list = "svn list https://svn.code.sf.net/p/flightgear/fgaddon/" + branch + "/Aircraft/" +process = subprocess.Popen(shlex.split(svn_list), stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) +stdout, stderr = process.communicate() + +print(tableformat.format("Aircraft", "New?", extensions[0], extensions[1], extensions[2], extensions[3], extensions[4])) + +aircraft_list = re.split("/\n", stdout) +for ac in aircraft_list: + check_aircraft(ac) diff --git a/fgaddon/find_md5file.py b/fgaddon/find_md5file.py new file mode 100644 index 0000000..25cdc58 --- /dev/null +++ b/fgaddon/find_md5file.py @@ -0,0 +1,25 @@ +#!/usr/bin/python + +import os, sys, re, fnmatch +import hashlib, glob + + +def md5(fname): + hash_md5 = hashlib.md5() + with open(fname, "rb") as f: + for chunk in iter(lambda: f.read(4096), b""): + hash_md5.update(chunk) + return hash_md5.hexdigest() + + +filepath = sys.argv[1] +searchpath = sys.argv[2] + +digest = md5(filepath) +print("Checking for " + digest) + +wavfiles = glob.glob(searchpath + "/**/*.wav", recursive=True) + +for f in wavfiles: + if (md5(f) == digest): + print(f) \ No newline at end of file