-
Notifications
You must be signed in to change notification settings - Fork 0
/
dmake
executable file
·73 lines (72 loc) · 3.29 KB
/
dmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/sh -x
# helper script to run make using GNU AWK with colorizing in development.
#
# /*
# *
# * This program is free software: you can redistribute it and/or modify
# * it under the terms of the GNU General Public License as published by
# * the Free Software Foundation, either version 3 of the License, or
# * (at your option) any later version.
# *
# * This program is distributed in the hope that it will be useful,
# * but WITHOUT ANY WARRANTY; without even the implied warranty of
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# * GNU General Public License for more details.
# *
# * You should have received a copy of the GNU General Public License
# * along with this program. If not, see <http://www.gnu.org/licenses/>.
# *
# * The four essential freedoms with GNU GPL software:
# * The freedom to run the program, for any purpose
# * The freedom to study how the program works, and change it to make it do what you wish
# * The freedom to redistribute copies so you can help others
# * The freedom to distribute copies of your modified versions to others
# */
#
# GNU / Linux is user-friendly. It's just particular who its friends are :)
#
# Only for GNU LINUX console:
#
# \033 ascii ESCape
# \033[<NUM>G move to column <NUM> (linux console, xterm, not vt100)
# \033[<NUM>C move <NUM> columns forward but only upto last column
# \033[<NUM>D move <NUM> columns backward but only upto first column
# \033[<NUM>A move <NUM> rows up
# \033[<NUM>B move <NUM> rows down
# \033[1m switch on bold
# \033[31m switch on red
# \033[32m switch on green
# \033[33m switch on yellow
# \033[m switch off color/bold
# \017 exit alternate mode (xterm, vt100, linux console)
# \033[10m exit alternate mode (linux console)
# \015 carriage return (without newline)
# Black 0;30 Dark Gray 1;30
# Blue 0;34 Light Blue 1;34
# Green 0;32 Light Green 1;32
# Cyan 0;36 Light Cyan 1;36
# Red 0;31 Light Red 1;31
# Purple 0;35 Light Purple 1;35
# Brown 0;33 Yellow 1;33
# Light Gray 0;37 White 1;37
#
# normally 4 args to make should be oke. otherwise argv() to do.
# add colors for enter/leave dir
# if errors then run script to mailto or otherwise
# if errors then run script to start emacs on the file
rm -v -f dsmake.output
rm -v -f dsmake.errors
rm -v -f dsmake.warnings
make $1 $2 $3 $4 2>&1 |
gawk '
function toul() { print "\033[4m"; }
function tobold() { print "\033[36m"; }
function isentermakedir(thetext) { n = match(thetext, /[ ]Entering/); return n; }
function isleavemakedir(thetext) { n = match(thetext, /[ ]Leaving/); return n; }
function isgccerr(thetext) { n = match(thetext, /[ ]error:/); return n; }
function isgccwarning(thetext) { n = match(thetext, /[ ]warning:/); return n; }
BEGIN { tobold(); print "\033[34m"; print ":)" > "dsmake.output" }
/^/ { print $0 > "dsmake.output"; print "\033[34m"; if(isgccerr($0)) { print "\033[31m"; print $0 > "dsmake.errors"; } ; if(isgccwarning($0)) { print "\033[35m"; print $0 > "dsmake.warnings" } ; print $0; next; }
END { print "end of make" > "dsmake.output"; print "\033[37m"; print "\033[10m"; }
'
# end.