2016-04-28 20:50:03 -04:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2017-03-02 03:22:24 -05:00
|
|
|
set -u -e -o pipefail
|
|
|
|
|
2017-03-05 04:49:10 -05:00
|
|
|
readonly currentDir=$(cd $(dirname $0); pwd)
|
|
|
|
source ${currentDir}/scripts/ci/_travis-fold.sh
|
2016-04-28 20:50:03 -04:00
|
|
|
|
2017-03-05 04:49:10 -05:00
|
|
|
# TODO(i): wrap into subshell, so that we don't pollute CWD, but not yet to minimize diff collision with Jason
|
|
|
|
cd ${currentDir}
|
2016-04-28 20:50:03 -04:00
|
|
|
|
2016-09-13 12:49:23 -04:00
|
|
|
PACKAGES=(core
|
|
|
|
compiler
|
|
|
|
common
|
2017-02-22 18:14:49 -05:00
|
|
|
animations
|
2016-09-13 12:49:23 -04:00
|
|
|
platform-browser
|
|
|
|
platform-browser-dynamic
|
fix(forms): make composition event buffering configurable (#15256)
This commit fixes a regression where `ngModel` no longer syncs
letter by letter on Android devices, and instead syncs at the
end of every word. This broke when we introduced buffering of
IME events so IMEs like Pinyin keyboards or Katakana keyboards
wouldn't display composition strings. Unfortunately, iOS devices
and Android devices have opposite event behavior. Whereas iOS
devices fire composition events for IME keyboards only, Android
fires composition events for Latin-language keyboards. For
this reason, languages like English don't work as expected on
Android if we always buffer. So to support both platforms,
composition string buffering will only be turned on by default
for non-Android devices.
However, we have also added a `COMPOSITION_BUFFER_MODE` token
to make this configurable by the application. In some cases, apps
might might still want to receive intermediate values. For example,
some inputs begin searching based on Latin letters before a
character selection is made.
As a provider, this is fairly flexible. If you want to turn
composition buffering off, simply provide the token at the top
level:
```ts
providers: [
{provide: COMPOSITION_BUFFER_MODE, useValue: false}
]
```
Or, if you want to change the mode based on locale or platform,
you can use a factory:
```ts
import {shouldUseBuffering} from 'my/lib';
....
providers: [
{provide: COMPOSITION_BUFFER_MODE, useFactory: shouldUseBuffering}
]
```
Closes #15079.
PR Close #15256
2017-03-20 20:38:33 -04:00
|
|
|
forms
|
2017-02-10 20:00:27 -05:00
|
|
|
http
|
2016-09-13 12:49:23 -04:00
|
|
|
platform-server
|
|
|
|
platform-webworker
|
|
|
|
platform-webworker-dynamic
|
|
|
|
upgrade
|
2016-11-09 16:33:33 -05:00
|
|
|
router
|
2016-09-13 12:49:23 -04:00
|
|
|
compiler-cli
|
2016-11-22 12:10:23 -05:00
|
|
|
language-service
|
2016-09-13 12:49:23 -04:00
|
|
|
benchpress)
|
2017-01-27 20:39:48 -05:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
NODE_PACKAGES=(compiler-cli
|
|
|
|
benchpress)
|
|
|
|
|
2016-09-13 12:49:23 -04:00
|
|
|
BUILD_ALL=true
|
|
|
|
BUNDLE=true
|
2016-11-18 12:24:57 -05:00
|
|
|
VERSION_PREFIX=$(node -p "require('./package.json').version")
|
|
|
|
VERSION_SUFFIX="-$(git log --oneline -1 | awk '{print $1}')"
|
|
|
|
REMOVE_BENCHPRESS=false
|
2017-01-27 20:39:48 -05:00
|
|
|
BUILD_EXAMPLES=true
|
2017-03-02 16:54:35 -05:00
|
|
|
COMPILE_SOURCE=true
|
|
|
|
TYPECHECK_ALL=true
|
2017-03-15 16:26:09 -04:00
|
|
|
BUILD_TOOLS=true
|
2016-09-13 12:49:23 -04:00
|
|
|
|
|
|
|
for ARG in "$@"; do
|
|
|
|
case "$ARG" in
|
2017-03-15 16:26:09 -04:00
|
|
|
--quick-bundle=*)
|
|
|
|
COMPILE_SOURCE=false
|
|
|
|
TYPECHECK_ALL=false
|
|
|
|
BUILD_EXAMPLES=false
|
|
|
|
BUILD_TOOLS=false
|
|
|
|
;;
|
2016-09-13 12:49:23 -04:00
|
|
|
--packages=*)
|
|
|
|
PACKAGES_STR=${ARG#--packages=}
|
|
|
|
PACKAGES=( ${PACKAGES_STR//,/ } )
|
|
|
|
BUILD_ALL=false
|
|
|
|
;;
|
|
|
|
--bundle=*)
|
|
|
|
BUNDLE=( "${ARG#--bundle=}" )
|
|
|
|
;;
|
2016-11-18 12:24:57 -05:00
|
|
|
--publish)
|
|
|
|
VERSION_SUFFIX=""
|
|
|
|
REMOVE_BENCHPRESS=true
|
|
|
|
;;
|
2017-01-27 20:39:48 -05:00
|
|
|
--examples=*)
|
|
|
|
BUILD_EXAMPLES=${ARG#--examples=}
|
|
|
|
;;
|
2017-03-02 16:54:35 -05:00
|
|
|
--compile=*)
|
|
|
|
COMPILE_SOURCE=${ARG#--compile=}
|
|
|
|
;;
|
|
|
|
--typecheck=*)
|
|
|
|
TYPECHECK_ALL=${ARG#--typecheck=}
|
|
|
|
;;
|
2017-03-15 16:26:09 -04:00
|
|
|
--tools=*)
|
|
|
|
BUILD_TOOLS=${ARG#--tools=}
|
|
|
|
;;
|
2016-09-13 12:49:23 -04:00
|
|
|
*)
|
|
|
|
echo "Unknown option $ARG."
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
2016-05-02 01:54:19 -04:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
#######################################
|
|
|
|
# Verifies a directory isn't in the ignored list
|
|
|
|
# Arguments:
|
|
|
|
# param1 - Path to check
|
|
|
|
# Returns:
|
|
|
|
# Boolean
|
|
|
|
#######################################
|
|
|
|
isIgnoredDirectory() {
|
|
|
|
name=$(basename ${1})
|
|
|
|
if [[ -f "${1}" || "${name}" == "src" || "${name}" == "test" || "${name}" == "integrationtest" ]]; then
|
|
|
|
return 0
|
|
|
|
else
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
#######################################
|
|
|
|
# Check if array contains an element
|
|
|
|
# Arguments:
|
|
|
|
# param1 - Element to check
|
|
|
|
# param2 - Array to look for element in
|
|
|
|
# Returns:
|
|
|
|
# None
|
|
|
|
#######################################
|
|
|
|
containsElement () {
|
|
|
|
local e
|
|
|
|
for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
|
|
|
|
return 1
|
2017-01-27 20:39:48 -05:00
|
|
|
}
|
|
|
|
|
2017-02-23 19:39:44 -05:00
|
|
|
#######################################
|
|
|
|
# Downlevel ES2015 to ESM/ES5
|
|
|
|
# Arguments:
|
2017-03-02 16:54:35 -05:00
|
|
|
# param1 - Source folder
|
|
|
|
# param2 - Naming suffix to apply. Must end in ".ts" (defaults to .es5.ts)
|
2017-02-23 19:39:44 -05:00
|
|
|
# Returns:
|
|
|
|
# None
|
|
|
|
#######################################
|
|
|
|
downlevelES2015() {
|
2017-03-02 16:54:35 -05:00
|
|
|
# Iterate over the files in this directory, converting to .es5.ts
|
|
|
|
regex="(.+).js"
|
|
|
|
for file in ${1}/*.js ; do
|
|
|
|
if [[ ${file} =~ $regex ]]; then
|
|
|
|
ts_file="${BASH_REMATCH[1]}${2:-".es5.ts"}"
|
|
|
|
cp ${file} ${ts_file}
|
|
|
|
|
2017-05-23 16:01:39 -04:00
|
|
|
echo "====== $TSC ${ts_file} --target es5 --module es2015 --noLib --sourceMap --importHelpers"
|
|
|
|
($TSC ${ts_file} --target es5 --module es2015 --noLib --sourceMap --importHelpers) > /dev/null 2>&1 || true
|
2017-03-16 15:55:15 -04:00
|
|
|
mapSources "${BASH_REMATCH[1]}${2:-".es5.js"}"
|
2017-03-02 16:54:35 -05:00
|
|
|
rm -f ${ts_file}
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
# Recurse for sub directories
|
|
|
|
for DIR in ${1}/* ; do
|
|
|
|
isIgnoredDirectory ${DIR} && continue
|
|
|
|
downlevelES2015 ${DIR}
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
#######################################
|
|
|
|
# Rollup index files recursively, ignoring blacklisted directories
|
|
|
|
# Arguments:
|
|
|
|
# param1 - Base source folder
|
2017-03-16 15:55:15 -04:00
|
|
|
# param2 - Destination directory
|
|
|
|
# param3 - Config file
|
2017-03-02 16:54:35 -05:00
|
|
|
# Returns:
|
|
|
|
# None
|
|
|
|
#######################################
|
|
|
|
rollupIndex() {
|
|
|
|
# Iterate over the files in this directory, rolling up each into ${2} directory
|
2017-03-16 15:55:15 -04:00
|
|
|
local regex=".+/(.+)/index.js"
|
2017-03-02 16:54:35 -05:00
|
|
|
if [[ "${1}/index.js" =~ $regex ]]; then
|
|
|
|
in_file="${1}/index.js"
|
|
|
|
out_file="${2}/${BASH_REMATCH[1]}.js"
|
|
|
|
|
|
|
|
echo "====== $ROLLUP -i ${in_file} -o ${out_file}"
|
2017-03-16 15:55:15 -04:00
|
|
|
|
|
|
|
if [[ -f "${3}" ]]; then
|
|
|
|
$ROLLUP -i ${in_file} -o ${out_file} -c ${3} --sourcemap
|
|
|
|
else
|
|
|
|
$ROLLUP -i ${in_file} -o ${out_file} --sourcemap
|
|
|
|
fi
|
2017-03-02 16:54:35 -05:00
|
|
|
cat ${LICENSE_BANNER} > ${out_file}.tmp
|
|
|
|
cat ${out_file} >> ${out_file}.tmp
|
|
|
|
mv ${out_file}.tmp ${out_file}
|
|
|
|
|
2017-03-16 15:55:15 -04:00
|
|
|
mapSources "${out_file}"
|
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
# Recurse for sub directories
|
|
|
|
for DIR in ${1}/* ; do
|
|
|
|
isIgnoredDirectory ${DIR} && continue
|
|
|
|
# NOTE: We need to re-run this regex and use the new match as Bash doesn't have closures
|
|
|
|
if [[ "${1}/index.js" =~ $regex ]]; then
|
2017-03-16 15:55:15 -04:00
|
|
|
rollupIndex ${DIR} ${2}/${BASH_REMATCH[1]} "$(dirname $3)/${BASH_REMATCH[1]}/rollup.config.js"
|
2017-03-02 16:54:35 -05:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#######################################
|
|
|
|
# Recursively runs rollup on any entry point that has a "rollup.config.js" file
|
|
|
|
# Arguments:
|
|
|
|
# param1 - Base source folder containing rollup.config.js
|
|
|
|
# Returns:
|
|
|
|
# None
|
|
|
|
#######################################
|
|
|
|
runRollup() {
|
2017-03-16 15:55:15 -04:00
|
|
|
local regex="dest: ['\"](.+)['\"],*"
|
|
|
|
if [[ -f "${1}/rollup.config.js" ]]; then
|
2017-03-02 16:54:35 -05:00
|
|
|
cd ${1}
|
|
|
|
|
|
|
|
echo "====== $ROLLUP -c ${1}/rollup.config.js"
|
2017-03-16 15:55:15 -04:00
|
|
|
$ROLLUP -c rollup.config.js --sourcemap
|
|
|
|
|
|
|
|
local dest_line=$(cat "${1}/rollup.config.js" | grep 'dest:')
|
|
|
|
if [[ ${dest_line} =~ $regex ]]; then
|
|
|
|
mapSources "${BASH_REMATCH[1]}"
|
|
|
|
fi
|
2017-03-02 16:54:35 -05:00
|
|
|
|
|
|
|
# Recurse for sub directories
|
|
|
|
for DIR in ${1}/* ; do
|
|
|
|
isIgnoredDirectory ${DIR} && continue
|
|
|
|
runRollup ${DIR}
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
#######################################
|
|
|
|
# Adds banners to all files in a directory
|
|
|
|
# Arguments:
|
|
|
|
# param1 - Directory to add license banners to
|
|
|
|
# Returns:
|
|
|
|
# None
|
|
|
|
#######################################
|
|
|
|
addBanners() {
|
|
|
|
for file in ${1}/*; do
|
2017-03-16 15:55:15 -04:00
|
|
|
if [[ -f ${file} && "${file##*.}" != "map" ]]; then
|
2017-03-02 16:54:35 -05:00
|
|
|
cat ${LICENSE_BANNER} > ${file}.tmp
|
|
|
|
cat ${file} >> ${file}.tmp
|
|
|
|
mv ${file}.tmp ${file}
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
#######################################
|
|
|
|
# Minifies files in a directory
|
|
|
|
# Arguments:
|
|
|
|
# param1 - Directory to minify
|
|
|
|
# Returns:
|
|
|
|
# None
|
|
|
|
#######################################
|
|
|
|
minify() {
|
|
|
|
# Iterate over the files in this directory, rolling up each into ${2} directory
|
|
|
|
regex="(.+).js"
|
|
|
|
files=(${1}/*)
|
|
|
|
echo "${files[@]}"
|
|
|
|
for file in "${files[@]}"; do
|
|
|
|
echo "${file}"
|
|
|
|
base_file=$( basename "${file}" )
|
2017-03-16 15:55:15 -04:00
|
|
|
if [[ "${base_file}" =~ $regex && "${base_file##*.}" != "map" ]]; then
|
|
|
|
local out_file=$(dirname "${file}")/${BASH_REMATCH[1]}.min.js
|
|
|
|
$UGLIFYJS -c --screw-ie8 --comments -o ${out_file} --source-map ${out_file}.map --source-map-include-sources ${file}
|
|
|
|
mapSources "${out_file}"
|
2017-03-02 16:54:35 -05:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
#######################################
|
|
|
|
# Recursively compile package
|
|
|
|
# Arguments:
|
|
|
|
# param1 - Source directory
|
|
|
|
# param2 - Out dir
|
|
|
|
# param3 - Package Name
|
|
|
|
# param4 - Is child (are we recursing?)
|
|
|
|
# Returns:
|
|
|
|
# None
|
|
|
|
#######################################
|
|
|
|
compilePackage() {
|
|
|
|
echo "====== [${3}]: COMPILING: ${NGC} -p ${1}/tsconfig-build.json"
|
|
|
|
# For NODE_PACKAGES items (not getting rolled up)
|
|
|
|
if containsElement "${PACKAGE}" "${NODE_PACKAGES[@]}"; then
|
|
|
|
$TSC -p ${1}/tsconfig-build.json
|
|
|
|
else
|
|
|
|
local package_name=$(basename "${2}")
|
|
|
|
$NGC -p ${1}/tsconfig-build.json
|
|
|
|
echo "====== Create ${1}/../${package_name}.d.ts re-export file for Closure"
|
|
|
|
echo "$(cat ${LICENSE_BANNER}) ${N} export * from './${package_name}/index'" > ${2}/../${package_name}.d.ts
|
2017-05-25 21:02:35 -04:00
|
|
|
echo "{\"__symbolic\":\"module\",\"version\":3,\"metadata\":{},\"exports\":[{\"from\":\"./${package_name}/index\"}],\"flatModuleIndexRedirect\":true}" > ${2}/../${package_name}.metadata.json
|
2017-03-02 16:54:35 -05:00
|
|
|
fi
|
|
|
|
|
|
|
|
for DIR in ${1}/* ; do
|
|
|
|
[ -d "${DIR}" ] || continue
|
|
|
|
BASE_DIR=$(basename "${DIR}")
|
|
|
|
# Skip over directories that are not nested entry points
|
|
|
|
[[ -e ${DIR}/tsconfig-build.json && "${BASE_DIR}" != "integrationtest" ]] || continue
|
|
|
|
compilePackage ${DIR} ${2}/${BASE_DIR} ${3} true
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
#######################################
|
2017-03-15 16:26:09 -04:00
|
|
|
# Moves typings and metadata files appropriately
|
2017-03-02 16:54:35 -05:00
|
|
|
# Arguments:
|
2017-03-15 16:26:09 -04:00
|
|
|
# param1 - Source of typings & metadata files
|
|
|
|
# param2 - Root of destination directory
|
|
|
|
# param3 - Package name (needed to correspond to name of d.ts and metadata.json files)
|
2017-03-02 16:54:35 -05:00
|
|
|
# Returns:
|
|
|
|
# None
|
|
|
|
#######################################
|
|
|
|
moveTypings() {
|
2017-03-15 16:26:09 -04:00
|
|
|
if [[ -f ${1}/index.d.ts && -f ${1}/index.metadata.json ]]; then
|
2017-03-02 16:54:35 -05:00
|
|
|
mv ${1}/index.d.ts ${1}/${2}.d.ts
|
|
|
|
mv ${1}/index.metadata.json ${1}/${2}.metadata.json
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
#######################################
|
|
|
|
# Adds a package.json in directories where needed (secondary entry point typings).
|
|
|
|
# This is read by NGC to be able to find the flat module index.
|
|
|
|
# Arguments:
|
|
|
|
# param1 - Source directory of typings files
|
|
|
|
# Returns:
|
|
|
|
# None
|
|
|
|
#######################################
|
|
|
|
addNgcPackageJson() {
|
|
|
|
for DIR in ${1}/* ; do
|
|
|
|
[ -d "${DIR}" ] || continue
|
|
|
|
# Confirm there is an index.d.ts and index.metadata.json file. If so, create
|
|
|
|
# the package.json and recurse.
|
|
|
|
if [[ -f ${DIR}/index.d.ts && -f ${DIR}/index.metadata.json ]]; then
|
|
|
|
echo '{"typings": "index.d.ts"}' > ${DIR}/package.json
|
|
|
|
addNgcPackageJson ${DIR}
|
|
|
|
fi
|
|
|
|
done
|
2017-01-27 20:39:48 -05:00
|
|
|
}
|
|
|
|
|
2017-03-16 15:55:15 -04:00
|
|
|
#######################################
|
|
|
|
# This is read by NGC to be able to find the flat module index.
|
|
|
|
# Arguments:
|
|
|
|
# param1 - JavaScript file on which to re-map sources
|
|
|
|
# Returns:
|
|
|
|
# None
|
|
|
|
#######################################
|
|
|
|
mapSources() {
|
|
|
|
if [[ -f "${1}.map" ]]; then
|
|
|
|
$MAP_SOURCES -f "${1}"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2016-11-18 12:24:57 -05:00
|
|
|
VERSION="${VERSION_PREFIX}${VERSION_SUFFIX}"
|
2017-05-22 13:06:46 -04:00
|
|
|
echo "====== BUILDING: Version ${VERSION}"
|
2016-11-18 12:24:57 -05:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
N="
|
|
|
|
"
|
|
|
|
TSC=`pwd`/node_modules/.bin/tsc
|
|
|
|
NGC="node --max-old-space-size=3000 dist/tools/@angular/tsc-wrapped/src/main"
|
2017-03-16 15:55:15 -04:00
|
|
|
MAP_SOURCES="node `pwd`/scripts/build/map_sources.js "
|
2016-09-13 12:49:23 -04:00
|
|
|
UGLIFYJS=`pwd`/node_modules/.bin/uglifyjs
|
2016-05-19 18:28:25 -04:00
|
|
|
TSCONFIG=./tools/tsconfig.json
|
2017-03-02 16:54:35 -05:00
|
|
|
ROLLUP=`pwd`/node_modules/.bin/rollup
|
2016-09-13 12:49:23 -04:00
|
|
|
|
2017-03-15 16:26:09 -04:00
|
|
|
if [[ ${BUILD_TOOLS} == true ]]; then
|
|
|
|
travisFoldStart "build tools" "no-xtrace"
|
|
|
|
echo "====== (tools)COMPILING: \$(npm bin)/tsc -p ${TSCONFIG} ====="
|
|
|
|
rm -rf ./dist/tools/
|
|
|
|
mkdir -p ./dist/tools/
|
|
|
|
$(npm bin)/tsc -p ${TSCONFIG}
|
2017-03-02 03:22:24 -05:00
|
|
|
|
2017-03-15 16:26:09 -04:00
|
|
|
cp ./tools/@angular/tsc-wrapped/package.json ./dist/tools/@angular/tsc-wrapped
|
|
|
|
travisFoldEnd "build tools"
|
|
|
|
fi
|
2017-03-02 03:22:24 -05:00
|
|
|
|
2016-05-19 18:28:25 -04:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
if [[ ${BUILD_ALL} == true && ${TYPECHECK_ALL} == true ]]; then
|
2017-03-15 16:26:09 -04:00
|
|
|
travisFoldStart "clean dist" "no-xtrace"
|
2017-03-02 03:22:24 -05:00
|
|
|
rm -rf ./dist/all/
|
2017-03-02 16:54:35 -05:00
|
|
|
rm -rf ./dist/packages
|
2017-03-02 03:22:24 -05:00
|
|
|
travisFoldEnd "clean dist"
|
|
|
|
|
2017-03-15 16:26:09 -04:00
|
|
|
travisFoldStart "copy e2e files" "no-xtrace"
|
2017-03-02 03:22:24 -05:00
|
|
|
mkdir -p ./dist/all/
|
|
|
|
|
2017-05-12 15:07:51 -04:00
|
|
|
(
|
|
|
|
echo "====== Copying files needed for e2e tests ====="
|
|
|
|
cp -r ./modules/playground ./dist/all/
|
|
|
|
cp -r ./modules/playground/favicon.ico ./dist/
|
|
|
|
#rsync -aP ./modules/playground/* ./dist/all/playground/
|
|
|
|
mkdir ./dist/all/playground/vendor
|
|
|
|
cd ./dist/all/playground/vendor
|
|
|
|
ln -s ../../../../node_modules/core-js/client/core.js .
|
|
|
|
ln -s ../../../../node_modules/zone.js/dist/zone.js .
|
|
|
|
ln -s ../../../../node_modules/zone.js/dist/long-stack-trace-zone.js .
|
|
|
|
ln -s ../../../../node_modules/systemjs/dist/system.src.js .
|
|
|
|
ln -s ../../../../node_modules/base64-js .
|
|
|
|
ln -s ../../../../node_modules/reflect-metadata/Reflect.js .
|
|
|
|
ln -s ../../../../node_modules/rxjs .
|
|
|
|
ln -s ../../../../node_modules/angular/angular.js .
|
|
|
|
ln -s ../../../../node_modules/hammerjs/hammer.js .
|
|
|
|
)
|
|
|
|
|
|
|
|
(
|
|
|
|
echo "====== Copying files needed for benchmarks ====="
|
|
|
|
cp -r ./modules/benchmarks ./dist/all/
|
|
|
|
cp -r ./modules/benchmarks/favicon.ico ./dist/
|
|
|
|
mkdir ./dist/all/benchmarks/vendor
|
|
|
|
cd ./dist/all/benchmarks/vendor
|
|
|
|
ln -s ../../../../node_modules/core-js/client/core.js .
|
|
|
|
ln -s ../../../../node_modules/zone.js/dist/zone.js .
|
|
|
|
ln -s ../../../../node_modules/zone.js/dist/long-stack-trace-zone.js .
|
|
|
|
ln -s ../../../../node_modules/systemjs/dist/system.src.js .
|
|
|
|
ln -s ../../../../node_modules/reflect-metadata/Reflect.js .
|
|
|
|
ln -s ../../../../node_modules/rxjs .
|
|
|
|
ln -s ../../../../node_modules/angular/angular.js .
|
|
|
|
ln -s ../../../../bower_components/polymer .
|
|
|
|
ln -s ../../../../node_modules/incremental-dom/dist/incremental-dom-cjs.js
|
|
|
|
)
|
2017-03-02 03:22:24 -05:00
|
|
|
travisFoldEnd "copy e2e files"
|
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
TSCONFIG="packages/tsconfig.json"
|
2017-03-15 16:26:09 -04:00
|
|
|
travisFoldStart "tsc -p ${TSCONFIG}" "no-xtrace"
|
2017-03-02 16:54:35 -05:00
|
|
|
$NGC -p ${TSCONFIG}
|
2017-03-02 03:22:24 -05:00
|
|
|
travisFoldEnd "tsc -p ${TSCONFIG}"
|
2017-03-02 16:54:35 -05:00
|
|
|
TSCONFIG="modules/tsconfig.json"
|
2017-03-15 16:26:09 -04:00
|
|
|
travisFoldStart "tsc -p ${TSCONFIG}" "no-xtrace"
|
2017-03-02 16:54:35 -05:00
|
|
|
$NGC -p ${TSCONFIG}
|
|
|
|
travisFoldEnd "tsc -p ${TSCONFIG}"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ ${BUILD_ALL} == true ]]; then
|
|
|
|
rm -rf ./dist/packages
|
|
|
|
if [[ ${BUNDLE} == true ]]; then
|
|
|
|
rm -rf ./dist/packages-dist
|
|
|
|
fi
|
2016-09-13 12:49:23 -04:00
|
|
|
fi
|
|
|
|
|
|
|
|
for PACKAGE in ${PACKAGES[@]}
|
2016-04-28 20:50:03 -04:00
|
|
|
do
|
2017-03-15 16:26:09 -04:00
|
|
|
travisFoldStart "build package: ${PACKAGE}" "no-xtrace"
|
2016-08-30 21:07:40 -04:00
|
|
|
PWD=`pwd`
|
2017-03-02 16:54:35 -05:00
|
|
|
ROOT_DIR=${PWD}/packages
|
|
|
|
SRC_DIR=${ROOT_DIR}/${PACKAGE}
|
|
|
|
ROOT_OUT_DIR=${PWD}/dist/packages
|
|
|
|
OUT_DIR=${ROOT_OUT_DIR}/${PACKAGE}
|
|
|
|
NPM_DIR=${PWD}/dist/packages-dist/${PACKAGE}
|
|
|
|
MODULES_DIR=${NPM_DIR}/@angular
|
|
|
|
BUNDLES_DIR=${NPM_DIR}/bundles
|
2016-11-16 12:17:19 -05:00
|
|
|
|
2017-05-22 13:06:46 -04:00
|
|
|
LICENSE_BANNER=${ROOT_DIR}/license-banner.txt
|
2016-04-28 20:50:03 -04:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
if [[ ${COMPILE_SOURCE} == true ]]; then
|
|
|
|
rm -rf ${OUT_DIR}
|
|
|
|
rm -f ${ROOT_OUT_DIR}/${PACKAGE}.js
|
|
|
|
compilePackage ${SRC_DIR} ${OUT_DIR} ${PACKAGE}
|
2017-01-12 20:35:02 -05:00
|
|
|
fi
|
2016-05-03 16:43:35 -04:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
if [[ ${BUNDLE} == true ]]; then
|
|
|
|
echo "====== BUNDLING ${PACKAGE}: ${SRC_DIR} ====="
|
|
|
|
rm -rf ${NPM_DIR} && mkdir -p ${NPM_DIR}
|
2017-01-27 20:39:48 -05:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
if ! containsElement "${PACKAGE}" "${NODE_PACKAGES[@]}"; then
|
2016-11-09 16:33:33 -05:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
echo "====== Copy ${PACKAGE} typings"
|
2017-03-15 16:26:09 -04:00
|
|
|
rsync -a --exclude=*.js --exclude=*.js.map ${OUT_DIR}/ ${NPM_DIR}
|
|
|
|
moveTypings ${NPM_DIR} ${PACKAGE}
|
2016-04-28 20:50:03 -04:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
(
|
|
|
|
cd ${SRC_DIR}
|
|
|
|
echo "====== Rollup ${PACKAGE}"
|
2017-03-16 15:55:15 -04:00
|
|
|
rollupIndex ${OUT_DIR} ${MODULES_DIR} ${ROOT_DIR}
|
2017-01-27 20:39:48 -05:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
echo "====== Downleveling ES2015 to ESM/ES5"
|
|
|
|
downlevelES2015 ${MODULES_DIR}
|
2017-01-27 20:39:48 -05:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
echo "====== Run rollup conversions on ${PACKAGE}"
|
|
|
|
runRollup ${SRC_DIR}
|
|
|
|
addBanners ${BUNDLES_DIR}
|
|
|
|
minify ${BUNDLES_DIR}
|
2017-02-22 18:14:49 -05:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
) 2>&1 | grep -v "as external dependency"
|
|
|
|
else
|
|
|
|
echo "====== Copy ${PACKAGE} node tool"
|
|
|
|
rsync -a ${OUT_DIR}/ ${NPM_DIR}
|
2017-02-22 18:14:49 -05:00
|
|
|
fi
|
2016-04-28 20:50:03 -04:00
|
|
|
|
2017-04-19 22:28:21 -04:00
|
|
|
echo "====== Copy ${PACKAGE} package.json and .externs.js files"
|
2017-03-02 16:54:35 -05:00
|
|
|
rsync -am --include="package.json" --include="*/" --exclude=* ${SRC_DIR}/ ${NPM_DIR}/
|
2017-04-19 22:28:21 -04:00
|
|
|
rsync -am --include="*.externs.js" --include="*/" --exclude=* ${SRC_DIR}/ ${NPM_DIR}/
|
2016-12-02 17:34:16 -05:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
cp ${ROOT_DIR}/README.md ${NPM_DIR}/
|
2016-09-13 12:49:23 -04:00
|
|
|
fi
|
|
|
|
|
2016-05-20 12:08:39 -04:00
|
|
|
|
2017-03-02 16:54:35 -05:00
|
|
|
if [[ -d ${NPM_DIR} ]]; then
|
2016-06-21 17:44:36 -04:00
|
|
|
(
|
2017-03-02 16:54:35 -05:00
|
|
|
echo "====== VERSION: Updating version references"
|
|
|
|
cd ${NPM_DIR}
|
|
|
|
echo "====== EXECUTE: perl -p -i -e \"s/0\.0\.0\-PLACEHOLDER/${VERSION}/g\" $""(grep -ril 0\.0\.0\-PLACEHOLDER .)"
|
|
|
|
perl -p -i -e "s/0\.0\.0\-PLACEHOLDER/${VERSION}/g" $(grep -ril 0\.0\.0\-PLACEHOLDER .) < /dev/null 2> /dev/null
|
|
|
|
)
|
2016-05-03 16:43:35 -04:00
|
|
|
fi
|
2017-01-12 20:35:02 -05:00
|
|
|
|
2017-03-02 03:22:24 -05:00
|
|
|
travisFoldEnd "build package: ${PACKAGE}"
|
2016-04-28 20:50:03 -04:00
|
|
|
done
|
2016-09-07 19:04:33 -04:00
|
|
|
|
2017-01-27 20:39:48 -05:00
|
|
|
if [[ ${BUILD_EXAMPLES} == true ]]; then
|
2017-03-15 16:26:09 -04:00
|
|
|
travisFoldStart "build examples" "no-xtrace"
|
2017-03-02 16:54:35 -05:00
|
|
|
echo "====== Building examples: ./packages/examples/build.sh ====="
|
|
|
|
./packages/examples/build.sh
|
2017-03-02 03:22:24 -05:00
|
|
|
travisFoldEnd "build examples"
|
2017-01-27 20:39:48 -05:00
|
|
|
fi
|
2016-11-18 12:24:57 -05:00
|
|
|
|
|
|
|
if [[ ${REMOVE_BENCHPRESS} == true ]]; then
|
2017-03-15 16:26:09 -04:00
|
|
|
travisFoldStart "remove benchpress" "no-xtrace"
|
2017-03-02 03:22:24 -05:00
|
|
|
echo ""
|
|
|
|
echo "==== Removing benchpress from publication"
|
|
|
|
rm -r dist/packages-dist/benchpress
|
|
|
|
travisFoldEnd "remove benchpress"
|
2016-11-18 12:24:57 -05:00
|
|
|
fi
|
2017-03-02 03:22:24 -05:00
|
|
|
|
|
|
|
|
|
|
|
# Print return arrows as a log separator
|
|
|
|
travisFoldReturnArrows
|