#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
#

cp Dockerfile Dockerfile.profiling

sed -i -e 's/FROM\ alpine.*//g' "Dockerfile.profiling"
sed -i -e 's/apk\ update/apt-get\ update/g' "Dockerfile.profiling" 
sed -i -e 's/apk\ add/apt-get\ install\ -y/g' "Dockerfile.profiling" 
sed -i -e 's/apk\ del/apt-get\ remove\ -y/g' "Dockerfile.profiling"
sed -i -e 's/pcre-dev/libpcre2-dev/g' "Dockerfile.profiling"
sed -i -e 's/zlib/zlibc/g' "Dockerfile.profiling"
sed -i -e 's/zlibc-dev/lua-zlib\ lua-zlib-dev/g' "Dockerfile.profiling" 
sed -i -e 's/perl-test-longstring/libtest-longstring-perl/g' "Dockerfile.profiling"
sed -i -e 's/perl-list-moreutils/liblist-moreutils-perl/g' "Dockerfile.profiling" 
sed -i -e 's/perl-http-message/libhttp-message-perl/g' "Dockerfile.profiling" 
sed -i -e 's/geoip-dev/libgeoip-dev/g' "Dockerfile.profiling"
sed -i -e 's/jemalloc/libjemalloc1/g' "Dockerfile.profiling" 
sed -i -e 's/libjemalloc1-dev/libjemalloc-dev/g' "Dockerfile.profiling" 
sed -i -e 's/openssl-dev/libssl-dev/g' "Dockerfile.profiling" 
sed -i -e 's/--with-debug/--with-debug\ --with-dtrace-probes/g' "Dockerfile.profiling"
sed -i -e 's/OPENRESTY_VERSION=.*\ /OPENRESTY_VERSION=1.11.2.2\ /g' "Dockerfile.profiling"
sed -i -e 's/adduser\ -S.*/useradd\ nginx-api-gateway/g' "Dockerfile.profiling" 
sed -i -e 's/&&\ addgroup.*//g' "Dockerfile.profiling"
sed -i -e 's/ENTRYPOINT.*//g' "Dockerfile.profiling" 
sed -i -e 's/CMD.*//g' "Dockerfile.profiling"

cp api-gateway.conf api-gateway.conf.profiling
sed -i -e 's/worker_processes\ *auto;/worker_processes\ 1;/g' "api-gateway.conf.profiling"

cat .profiling.before | cat - Dockerfile.profiling > /tmp/out && mv /tmp/out Dockerfile.profiling
cat Dockerfile.profiling | cat - .profiling.after > /tmp/out && mv /tmp/out Dockerfile.profiling

if [[ -f "Dockerfile.profiling-e" ]]; then
	rm Dockerfile.profiling-e
fi
