240 lines
6.1 KiB
Bash
Executable File
240 lines
6.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#
|
|
# Copyright 2015-2018 Nest Labs Inc. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
#
|
|
# Description:
|
|
# This file is a convenience script that will create a skeleton
|
|
# build layout using the nlbuild-autotools package.
|
|
#
|
|
|
|
YEAR=`date "+%Y"`
|
|
NAME=""
|
|
DESCRIPTION=""
|
|
DIR=""
|
|
VERSION="1.0"
|
|
verbose=1
|
|
|
|
#
|
|
# usage
|
|
#
|
|
# Display program usage.
|
|
#
|
|
usage() {
|
|
name=`basename $0`
|
|
|
|
echo "Usage: ${name} [ options ]"
|
|
|
|
if [ $1 -ne 0 ]; then
|
|
echo "Try '${name} -h' for more information."
|
|
fi
|
|
|
|
if [ $1 -ne 1 ]; then
|
|
echo ""
|
|
echo " -h, --help Print this help, then exit."
|
|
echo " -I DIR Specify directory DIR as the root of the "
|
|
echo " nlbuild-autotools repository."
|
|
echo " -v, --verbose Verbosely report mkskeleton progress (default: yes)."
|
|
echo " --package-description DESC Specify description DESC as a the "
|
|
echo " package description."
|
|
echo " --package-name NAME Specify name NAME as the package name."
|
|
echo " --package-version VERSION Specify version VERSION as the initial "
|
|
echo " version for the package (default: ${VERSION})."
|
|
echo " --package-year YEAR Specify year YEAR as the creation "
|
|
echo " year for the package (default: ${YEAR})."
|
|
echo " -q, --quiet Do not verbosely report mkskeleton progress (default: no)."
|
|
|
|
echo ""
|
|
fi
|
|
|
|
exit $1
|
|
}
|
|
|
|
#
|
|
# log
|
|
#
|
|
log() {
|
|
if [ ! -z ${verbose} ] && [ ${verbose} -eq 1 ]; then
|
|
echo $*
|
|
fi
|
|
}
|
|
|
|
transform() {
|
|
local from="${1}"
|
|
local to="${2}"
|
|
|
|
sed \
|
|
-e "s,\@NLBUILD_AUTOTOOLS_STEM\@,${DIR},g" \
|
|
-e "s,\@PACKAGE_DESCRIPTION\@,${DESCRIPTION},g" \
|
|
-e "s,\@PACKAGE_SHORT_LOWER\@,${LOWER},g" \
|
|
-e "s,\@PACKAGE_SHORT_UPPER\@,${UPPER},g" \
|
|
-e "s,\@PACKAGE_YEAR\@,${YEAR},g" \
|
|
< "${from}" > "${to}"
|
|
}
|
|
|
|
populate() {
|
|
local nlbuild="${1}"
|
|
local perm=${2}
|
|
local file="${3}"
|
|
local directory="${4}"
|
|
local stem="${file%.*}"
|
|
local extension="${file##*.}"
|
|
local from
|
|
local to
|
|
|
|
if [ -r "${nlbuild}/examples/${file}" ]; then
|
|
from="${nlbuild}/examples/${file}"
|
|
|
|
elif [ -r "${nlbuild}/examples/${stem}-${directory}.${extension}" ]; then
|
|
from="${nlbuild}/examples/${stem}-${directory}.${extension}"
|
|
|
|
elif [ "${directory}" = "." ] && [ -r "${nlbuild}/examples/${stem}-toplevel.${extension}" ]; then
|
|
from="${nlbuild}/examples/${stem}-toplevel.${extension}"
|
|
|
|
else
|
|
echo "Cannot find an example file \"${file}\" for directory \"${directory}\"."
|
|
exit 1
|
|
|
|
fi
|
|
|
|
to="${directory}/${file}"
|
|
|
|
log "Creating \"${to}\"..."
|
|
|
|
transform "${from}" "${to}"
|
|
|
|
if [ $? = 0 ]; then
|
|
chmod ${perm} "${to}"
|
|
fi
|
|
}
|
|
|
|
#
|
|
# link
|
|
#
|
|
link() {
|
|
local nlbuild="${1}"
|
|
local perm=${2}
|
|
local source="${3}"
|
|
local directory="${4}"
|
|
local from="${nlbuild}/scripts/${source}"
|
|
local to="${directory}/${source}"
|
|
|
|
log "Creating \"${to}\"..."
|
|
|
|
ln -sf "${from}" "${to}"
|
|
}
|
|
|
|
# Parse out any command line options
|
|
|
|
while [ ${#} -gt 0 ]; do
|
|
if [ ${1} == "-h" ] || [ ${1} == "--help" ]; then
|
|
usage 0
|
|
|
|
elif [ ${1} == "-I" ]; then
|
|
DIR="${2}"
|
|
shift 2
|
|
|
|
elif [ ${1} == "--package-description" ]; then
|
|
DESCRIPTION="${2}"
|
|
shift 2
|
|
|
|
elif [ ${1} == "--package-name" ]; then
|
|
NAME="${2}"
|
|
shift 2
|
|
|
|
UPPER="`echo ${NAME} | tr '[[:lower:]]' '[[:upper:]]'`"
|
|
LOWER="`echo ${NAME} | tr '[[:upper:]]' '[[:lower:]]'`"
|
|
|
|
elif [ ${1} == "--package-version" ]; then
|
|
VERSION="${2}"
|
|
shift 2
|
|
|
|
elif [ ${1} == "--package-year" ]; then
|
|
YEAR="${2}"
|
|
shift 2
|
|
|
|
elif [ ${1} == "-q" ] || [ ${1} == "--quiet" ]; then
|
|
verbose=0
|
|
shift 1
|
|
|
|
elif [ ${1} == "-v" ] || [ ${1} == "--verbose" ]; then
|
|
verbose=1
|
|
shift 1
|
|
|
|
else
|
|
usage 1
|
|
|
|
fi
|
|
done
|
|
|
|
# Sanity check the command line arguments
|
|
|
|
if [ -z "${DIR}" ]; then
|
|
echo "$0: No -I option specified. Please provide the location of the nlbuild-autotools directory."
|
|
exit 1
|
|
|
|
fi
|
|
|
|
if [ -z "${DESCRIPTION}" ]; then
|
|
echo "$0: Please provide a package description via --package-description."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "${NAME}" ]; then
|
|
echo "$0: Please provide a package name via --package-name."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "${VERSION}" ]; then
|
|
echo "$0: Please provide a package default version via --package-version."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "${YEAR}" ]; then
|
|
echo "$0: Please provide a package creation year via --package-year."
|
|
exit 1
|
|
fi
|
|
|
|
# Create the skeleton directories
|
|
|
|
DIRS="doc third_party include src tests"
|
|
|
|
for dir in ${DIRS}; do
|
|
log "Creating \"${dir}\"..."
|
|
mkdir -p "${dir}"
|
|
done
|
|
|
|
# Populate the skeleton directories
|
|
|
|
populate "${DIR}" 664 configure.ac .
|
|
populate "${DIR}" 775 bootstrap .
|
|
populate "${DIR}" 664 repos.conf .
|
|
populate "${DIR}" 664 Makefile.am .
|
|
populate "${DIR}" 664 Makefile-bootstrap .
|
|
populate "${DIR}" 664 Makefile.am doc
|
|
populate "${DIR}" 664 Doxyfile.in doc
|
|
populate "${DIR}" 664 Makefile.am third_party
|
|
populate "${DIR}" 664 Makefile.am src
|
|
populate "${DIR}" 664 Makefile.am tests
|
|
link "${DIR}" 775 bootstrap-configure .
|
|
|
|
# Create the default package version
|
|
|
|
log "Creating default version ${VERSION}..."
|
|
|
|
echo "${VERSION}" > ".default-version"
|