# 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.
#!/bin/bash
npm run clean:install
echo 'Build Complete'
git checkout gh-pages
echo 'Created and Checked out gh-pages branch'

cp -f ./target/gh-pages.package.json ./package.json
npm install
mkdir ./node_modules/nifi-fds
cp -Rf ./target/platform/ ./node_modules/nifi-fds/platform
cp -Rf ./target/demo-app/ ./demo-app
cp -f ./target/gh-pages.index.html ./index.html
cp -f ./target/gh-pages.systemjs.config.js ./demo-app/systemjs.config.js
echo 'Tracking files'
git add -A .
echo 'Commiting files'
git commit -m 'gh-pages update'
echo 'Pushing files into gh-pages branch'
git push apache gh-pages:gh-pages
