summaryrefslogtreecommitdiff
path: root/scripts/setup_rvi_node.sh
blob: a14a54f987a5a402156313d253839dc234c824af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/bin/sh
#
# Copyright (C) 2014, Jaguar Land Rover
#
# This program is licensed under the terms and conditions of the
# Mozilla Public License, version 2.0.  The full text of the 
# Mozilla Public License is at https://www.mozilla.org/MPL/2.0/
#

#
# Setup an RVI release with a configuration file.
#
# This script will setup a directory with with the same name
# as the release name. The script uses Ulf Wiger's setup application 
# (github.com/Feuerlabs/setup) to generate the release.
# 
# With the -d argument, a developer release will be built with
# only
#
#  Once setup, the RVI node can be started with ./rvi_node <release_na,e?
#
#  Please note that the generated release will depend on the built
#
#  In order to create a standalone release, use create_rvi_release.sh
#

SELF_DIR=$(dirname $(readlink -f "$0"))
SETUP_GEN=$SELF_DIR/setup_gen  # Ulf's kitchen sink setup utility

usage() {
    echo "Usage: $0 [-d] -n node_name -c config_file"
    echo "  -n node_name     Specify the name of the rvi node to setup"
    echo 
    echo "  -c config_file   Specifies the setup config file to use when setting "
    echo "                   up the node"
    echo 
    echo "  -d               Create a development release. See below."
    echo 
    echo "The generated node will be created in a subdirectory with the same"
    echo "name as the node name."
    echo 
    echo "The created node can be started with: $SELF_DIR/rvi_node -n node_name"
    echo 
    echo "If the node was created with the -d flag, you need to start"
    echo "the node with $SELF_DIR/rvi_node -d -n node_name"
    echo
    echo "Configuration file examples can be found in hvac_demo/vehicle.config"
    echo 
    echo "The -d flag creates a development release that uses the erlang "
    echo "binaries found in ebin/ and deps/*/ebin. This means that new builds,"
    echo "created by make, can be run directly through "
    echo "$SELF_DIR/rvi_node -n node_name without having to run ./setup_rvi_node.sh ."
    echo
    echo "If the -d flag is omitted, the release will be self-contained in the "
    echo "newly created subdirectory rel/[node_name]."
    echo "This directory, containing a standard erlang reltool release, "
    echo "including the erlang runtime system, can be copied as a stand alone"
    echo "system to a destination node."
    echo 
    echo "Configuration file examples can be found in hvac_demo/vehicle.config"
    exit 1
}


build_type=rel
while getopts "dn:c:" o; do
    case "${o}" in
        n)
            NODE_NAME=${OPTARG}
            ;;
        c)
            CONFIG_NAME=${OPTARG}
            ;;
        d)
            build_type=dev
            ;;

        *)
            usage
            ;;
    esac
done

if [ -z "${NODE_NAME}" ] ; then
    echo "Missing -n flag"
    usage
fi
if [ -z "${CONFIG_NAME}" ] ; then
    echo "Missing -c flag"
    usage
fi


export ERL_LIBS=$PWD/components:$PWD/deps:$ERL_LIBS:$PWD 
echo  "Setting up node $NODE_NAME."
rm -rf $NODE_NAME
$SETUP_GEN $NODE_NAME $CONFIG_NAME $NODE_NAME

if [ "${build_type}" = "dev" ]
then
    echo "RVI Node $NODE_NAME has been setup."
    echo "Launch with $SELF_DIR/rvi_node.sh -n $NODE_NAME"
    exit
else
    echo "Building stand alone release for $NODE_NAME"
    # Copy the newly created config file.
    rm -rf rel/$NODE_NAME
    cp $NODE_NAME/sys.config rel/files/sys.config
    ./rebar generate 
    # Rename the release after the node name
    mv rel/rvi rel/$NODE_NAME
    echo "Stand alone release for $NODE_NAME created under project "
    echo "root directory's ./rel/$NODE_NAME."
    echo
    echo "Start:              ./rel/$NODE_NAME/bin/rvi start"
    echo "Attach console:     ./rel/$NODE_NAME/bin/rvi attach"
    echo "Stop:               ./rel/$NODE_NAME/bin/rvi stop"
    echo "Start console mode: ./rel/$NODE_NAME/bin/rvi console"
    echo 
    echo "Start dev mode:     ./rvi_node.sh -n $NODE_NAME"
    echo 
    echo "./rel/$NODE_NAME can be copied and installed on its destination host."

fi

exit 0