mirror of https://github.com/arendst/Tasmota.git
83 lines
2.6 KiB
Bash
83 lines
2.6 KiB
Bash
#!/bin/bash
|
|
# Generate a keywords.txt for the library that is suitable for the Arduino IDE.
|
|
# Expects to run from the top directory of the library.
|
|
|
|
# Set the locale for sorting
|
|
export LC_ALL=C
|
|
|
|
cat << EndOfTextEndOfTextEndOfText
|
|
#########################################
|
|
# Syntax Coloring Map For IRremoteESP8266
|
|
#########################################
|
|
|
|
################################################
|
|
# WARNING: Do NOT edit this file directly.
|
|
# It is generated by 'tools/mkkeywords'
|
|
# e.g. tools/mkkeywords > keywords.txt
|
|
################################################
|
|
|
|
#######################################################
|
|
# The Arduino IDE requires the use of a tab separator
|
|
# between the name and identifier. Without this tab the
|
|
# keyword is not highlighted.
|
|
#
|
|
# Reference: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification#keywords
|
|
#######################################################
|
|
|
|
#######################################
|
|
# Datatypes & Classes (KEYWORD1)
|
|
#######################################
|
|
|
|
EndOfTextEndOfTextEndOfText
|
|
|
|
CLASSES=$(grep "^class " src/*.h | cut -d' ' -f2 | sort -u)
|
|
# Manually add typedefs as they are hard to parse out.
|
|
CLASSES="${CLASSES} ir_params_t match_result_t"
|
|
for i in ${CLASSES}; do
|
|
echo -e "${i}\tKEYWORD1"
|
|
done | sort -du
|
|
|
|
cat << EndOfTextEndOfTextEndOfText
|
|
|
|
#######################################
|
|
# Methods and Functions (KEYWORD2)
|
|
#######################################
|
|
|
|
EndOfTextEndOfTextEndOfText
|
|
|
|
METHODS=$(egrep "^(u?int|void|bool|String|static|match_result_t).*\(" src/*.cpp|
|
|
cut -d' ' -f2- | sed 's/^.*:://' | cut -d'(' -f1 | sort -u |
|
|
grep -v ICACHE_RAM_ATTR)
|
|
for i in ${METHODS}; do
|
|
echo -e "${i}\tKEYWORD2"
|
|
done | sort -u
|
|
|
|
cat << EndOfTextEndOfTextEndOfText
|
|
|
|
#######################################
|
|
# Constants (LITERAL1)
|
|
#######################################
|
|
|
|
EndOfTextEndOfTextEndOfText
|
|
LITERALS=$(grep "^#define [A-Z]" src/*.cpp src/*.h |
|
|
while read ignore define ignore; do
|
|
echo ${define};
|
|
done | sort -u |
|
|
grep -v [\(\)] | grep -v ^_ | grep -v _\$ | grep -v VIRTUAL)
|
|
CONSTS=$(grep "^const " src/*.cpp src/*.h |
|
|
sed 's/\[.*\] =.*//;s/ =.*//;s/^.* k/k/')
|
|
ENUMS=$(cat src/*.h | while read a b; do
|
|
if [[ ${a} == "};" ]]; then
|
|
ENUM=0;
|
|
fi;
|
|
if [[ ${ENUM} -eq 1 ]]; then
|
|
echo $a | sed 's/,//g';
|
|
fi;
|
|
if [[ ${a} == "enum" ]]; then
|
|
ENUM=1;
|
|
fi;
|
|
done)
|
|
for i in ${LITERALS} ${CONSTS} ${ENUMS}; do
|
|
echo -e "${i}\tLITERAL1"
|
|
done | sort -u
|