blob: 814de2cb61f3ed382a44e729317c49d45238bf05 (
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
|
# Bash startup file for better control of project environment.
#
# To have better control over the environment of each analysis step (Make
# recipe), besides having environment variables (directly included from
# Make), it may also be useful to have a Bash startup file (this file). All
# of the Makefiles set this file as the 'BASH_ENV' environment variable, so
# it is loaded into all the Make recipes within the project.
#
# The special 'PROJECT_STATUS' environment variable is defined in every
# top-level Makefile of the project. It defines the the state of the Make
# that is calling this script. It can have three values:
#
# configure_basic
# ---------------
# When doing basic configuration, therefore the executed steps cannot
# make any assumptions about the version of Bash (or any other
# program). Therefore it is important for any step in this step to be
# highly portable.
#
# configure_highlevel
# -------------------
# When building the higher-level programs, so the versions of the
# most basic tools are set and you may safely assume certain
# features.
#
# make
# ----
# When doing the project's analysis: all software have known
# versions.
#
# shell
# -----
# When the user has activated the interactive shell (with './project
# shell').
#
#
# Copyright (C) 2019-2023 Mohammad Akhlaghi <mohammad@akhlaghi.org>
#
# This script is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this script. If not, see <http://www.gnu.org/licenses/>.
# Interactive mode settings. We don't want these within the pipeline
# because they are useless there (for example the introduction message or
# prompt) and can un-necessarily slow down the running jobs (recall that
# the shell is executed at the start of each recipe).
if [ x$PROJECT_STATUS = xshell ]; then
# A small introductory message.
echo "----------------------------------------------------------------------"
echo "Welcome to the Maneage interactive shell for this project, running"
echo " $(sh --version | awk 'NR==1')"
echo
echo "This shell's home directory is the project's build directory:"
echo " HOME: $HOME"
echo
echo "This shell's startup file is in the project's source directory:"
echo " $PROJECT_RCFILE"
echo
echo "To return to your host shell, run the 'exit' command."
echo "----------------------------------------------------------------------"
# To activate colors in generic commands.
alias ls='ls --color=auto'
alias grep='grep --color=auto'
# Add the Git branch information to the command prompt only when Git is
# present. Also set the command-prompt color to purple for normal users
# and red when the root is running it.
if git --version &> /dev/null; then
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
else
parse_git_branch() { echo &> /dev/null; }
fi
if [ x$(whoami) = xroot ]; then
export PS1="[\[\033[01;31m\]\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\]]# "
else
export PS1="[\[\033[01;35m\]maneage@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\]]$ "
fi
fi
|