core: Separate SQL current and upgrade scripts
[quassel.git] / src / core / SQL / updateSQLResource.sh
index e5c99e4..83a9366 100755 (executable)
@@ -29,18 +29,28 @@ cat > "$SQL_RES_FILE" <<EOF
 <qresource>
 EOF
 
-# In a subshell, change to the SQL directory so find output remains consistent,
+# In a subshell, use C locale to sort consistently regardless of
+# language, change to SQL directory so find output stays consistent,
 # then...
 # Find all files with a .sql ending...
 # | ...sort the results by version
 # | ...modify the beginning to change '.[...]' into '    <file>./SQL[...]' (add the directory path back)
 #   ...and modify the end to add '[...]</file>'
 # | ...append to the resource file.
-(cd "$SCRIPT_DIR" ; find . -name "*.sql" | sort -t/ -k2,2 -k3n | sed -e "s/^./    <file>.\/$SQL_DIR_NAME/g" -e "s/$/<\/file>/g" >> "$SQL_RES_FILE" )
+(export LC_ALL="C" ; cd "$SCRIPT_DIR" ; find . -name "*.sql" | sort --field-separator=/ --key=2,2 --key=4n | sed -e "s/^./    <file>.\/$SQL_DIR_NAME/g" -e "s/$/<\/file>/g" >> "$SQL_RES_FILE" )
 # Newer versions of sort support a "--version-sort" flag to naturally sort.
 # Unfortunately, some supported platforms don't yet have that version.
-# For now, "-t/ -k2,2 -k3n" does -almost- the same thing (there's a difference
-# when sorting periods versus underscores).
+# For now, "--field-separator=/ --key=2,2 --key=4n" does -almost- the same
+# thing (there's a difference when sorting periods versus underscores).
+#
+# Further explanation for sort command:
+# --field-separator=/
+#   > Separate fields by "/"
+# --key=2,2
+#   > Sort by the second field, i.e. "SQLite" or "Postgres"
+# --key=4n
+#   > Sort by the fourth field using numeric comparison
+#     (e.g. the "##" in "SQL/[database]/versions/##")
 
 # Add the Qt resource footer
 cat >> "$SQL_RES_FILE" <<EOF