diff options
Diffstat (limited to 'build-aux/gl/build-aux/inline-source')
-rwxr-xr-x | build-aux/gl/build-aux/inline-source | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/build-aux/gl/build-aux/inline-source b/build-aux/gl/build-aux/inline-source new file mode 100755 index 00000000..4bd26b10 --- /dev/null +++ b/build-aux/gl/build-aux/inline-source @@ -0,0 +1,154 @@ +#! /bin/sh + +# Output the contents of a shell script with sourced files inlined. +# Written by Gary V. Vaughan, 2012 + +# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# Source required external libraries: +. `echo "$0" |${SED-sed} 's|[^/]*$||'`"funclib.sh" +. `echo "$0" |${SED-sed} 's|[^/]*$||'`"options-parser" + +# Set a version string for *this* script. +scriptversion=2012-10-11.10; # UTC + + +# 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/>. + +# Please report bugs or propose patches to bug-libtool@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Run 'build-aux/inline-source --help' for help with using this script +# from the command line. + +# Recursively scan through a FILE passed on the command line, replacing +# either of the following: +# . "relative/file" +# . `echo "$0" |edit`"relative/file" +# with the contents of the referenced files. + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +usage='$progpath [OPTION]... FILE' + +# Short help message in response to '-h'. +usage_message='Options: + --debug enable verbose shell tracing + --version print version information and exit + -h, --help print help message and exit +' + +long_help_message="\ +Report bugs to <bug-libtool@gnu.org> +General help using GNU software: <http://www.gnu.org/gethelp/>." + +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# require_AWK +# ----------- +# Search for a "not hopeless" awk. +require_AWK=func_require_AWK +func_require_AWK () +{ + $debug_cmd + + test -n "$AWK" || { + # Find the first executable in the list. + for _G_prog in gawk mawk nawk awk + do + require_AWK_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for _G_dir in $PATH + do + IFS=$require_AWK_IFS + if test -f "$_G_dir/$_G_prog" && test -x "$_G_dir/$_G_prog" + then + AWK=$_G_dir/$_G_prog + break 2 + fi + done + IFS=$require_AWK_IFS + done + } + + test -n "$AWK" || func_fatal_error "\ +Please install GNU Awk, or 'export AWK=/path/to/gnu/awk'." + + func_verbose "found '$AWK'." + + require_AWK=: +} + + +## --------------- ## +## Core functions. ## +## --------------- ## + +# func_include LINE +# ----------------- +# Output the contents of file included by LINE. +func_include () +{ + $require_AWK + + test -f "$1" \ + || func_fatal_error "file '$1' not found" + + _G_scriptdir=`echo "$1" |$SED 's|[^/]*$||'` + test -n "$_G_scriptdir" || _G_scriptdir="./" + + $AWK ' + /^\. ['\''"].*['\''"]$/ { + file = substr ($2, 2, length ($2) -2); + system (sprintf ("'$progpath' %s", file)); + next; + } + + /^\. `echo [^`]*`['\''"][^'\''"]*['\''"]$/ { + tail = substr ($0, match ($0, /`['\''"]/)); + file = substr (tail, 3, length (tail) -3); + system (sprintf ("'$progpath' '"$_G_scriptdir"'%s", file)); + next; + } + + { print; } + ' < "$1" +} + +func_include "$1" + +exit 0 + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: |