Merge pull request #3823 from ntrel/msg-tree-search
[geany-mirror.git] / scripts / update-python-identifiers.sh
blobbd3cff58d8e32d67139f115ded884609b8accd67
1 #!/bin/sh
3 # Author: Colomban Wendling <colomban@geany.org>
4 # License: GPL v2 or later
6 # Updates the `identifiers` entry in data/filetypes.python.in.
7 # Requires Python 3.10+.
9 set -e
11 file=data/filedefs/filetypes.python.in
13 [ -f "$file" ]
15 # sort_filter [exclude...]
16 sort_filter() {
17 python3 -c '\
18 from sys import stdin; \
19 items=set(stdin.read().strip().split("\n")); \
20 exclude=['"$(for a in "$@"; do printf "'%s', " "$a"; done)"']; \
21 print(" ".join(sorted([i for i in items if i not in exclude])))
25 keywords=$(python3 -c 'from keyword import kwlist, softkwlist; print("\n".join(kwlist + softkwlist))')
26 builtins=$(python3 -c 'print("\n".join(dir(__builtins__)))')
28 primary=$(echo "$keywords" | sort_filter)
29 # builtins, but excluding keywords that are already listed in primary=
30 identifiers=$(echo "$builtins" | sort_filter $primary)
32 sed -e "s/^primary=.*$/primary=$primary/" \
33 -e "s/^identifiers=.*$/identifiers=$identifiers/" \
34 -i "$file"