summaryrefslogtreecommitdiff
path: root/lang/ruby/replace.mk
blob: 4ee9ae2168f55c90737a8788f57911826a8e5219 (plain)
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
# $NetBSD: replace.mk,v 1.1.1.1 2004/11/27 13:57:21 taca Exp $
#

.ifndef _RUBY_REPLACE_MK
_RUBY_REPLACE_MK=	# defined

# fix shebang line.
#
# REPLACE_RUBY		replace shebang line of specified files.
# REPLACE_RUBY_DIRS	replace shebang line of files under specified
#			directories.
# REPLACE_FILE_PAT	specify pattern to match target files under
#			REPLACE_RUBY_DIRS directories.
#
REPLACE_FILE_PAT?=	*.rb

.if defined(REPLACE_RUBY) || defined(REPLACE_RUBY_DIRS)
pre-configure: replace-ruby-scripts replace-ruby-dirs

.if defined(REPLACE_RUBY) && !empty(REPLACE_RUBY)
replace-ruby-scripts:
	${_PKG_SILENT}${_PKG_DEBUG}for s in ${REPLACE_RUBY}; do \
		case $${s} in \
		/*)	f=$${s};; \
		*)	f=${WRKSRC}/$${s};; \
		esac; \
		${ECHO_MSG} "===>  Fixing the #! line of $${s}"; \
		${SED}	-e '1s| *[a-z0-9_/\.-][a-z0-9_/\.-]*/env *||g' \
			-e '1s| *[a-z0-9_/\.-]*ruby|${RUBY}|' $$f > $$f.tmp; \
		if ${CMP} -s $$f $$f.tmp; then \
			${RM} $$f.tmp; \
		else \
			${MV} $$f.tmp $$f; \
		fi; \
	done
.else
replace-ruby-scripts:
.endif

.for f in ${REPLACE_FILE_PAT}
_REPLACE_FILE_PAT+= -o -name "${f}"
.endfor
_REPLACE_FILE_FIND_ARGS=\( ${_REPLACE_FILE_PAT:S/-o//1} \)

.if defined(REPLACE_RUBY_DIRS) && !empty(REPLACE_RUBY_DIRS)
replace-ruby-dirs:
	${_PKG_SILENT}${_PKG_DEBUG}${FIND} ${REPLACE_RUBY_DIRS} \
	    -type f ${_REPLACE_FILE_FIND_ARGS} -print | \
	    while read f; do \
		${SED}	-e '1s| *[a-z0-9_/\.-][a-z0-9_/\.-]*/env *||g' \
			-e '1s| *[a-z0-9_/\.-]*ruby|${RUBY}|' $$f > $$f.tmp; \
		if ${CMP} -s $$f $$f.tmp; then \
			${RM} $$f.tmp; \
		else \
			${MV} $$f.tmp $$f; \
		fi; \
	    done
.else
replace-ruby-dirs:
.endif

.endif # defined(REPLACE_RUBY) || defined(REPLACE_RUBY_DIRS)
.endif # _RUBY_REPLACE_MK