-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathSetupDeveloperPC.sh
executable file
·163 lines (138 loc) · 6.49 KB
/
SetupDeveloperPC.sh
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#!/bin/bash
#
# SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <[email protected]>
#
# SPDX-License-Identifier: GPL-3.0-or-later
echo "This script is only meant for ArduPilot methodic configurator developers."
read -p "Do you want to develop ArduPilot methodic Configurator software on your PC? (y/N) " response
# Convert response to lowercase
response=${response,,}
if [[ ! $response =~ ^y(es)?$ ]]; then
echo "Setup canceled, install the software using 'pip install ardupilot_methodic_configurator' instead."
exit 0
fi
# Store the original directory
ORIGINAL_DIR=$(pwd)
# Change to the directory where the script resides
cd "$(dirname "$0")" || exit
InstallDependencies() {
echo "Updating package lists..."
if command -v apt-get &> /dev/null; then
sudo apt-get update
# Install Python3 PIL.ImageTk for GUI support
echo "Installing Python3 PIL.ImageTk..."
sudo apt-get install -y python3-pil.imagetk
else
echo "apt-get not found. Skipping system package updates."
fi
# Uninstall serial and pyserial to avoid conflicts
echo "Uninstalling serial and pyserial..."
sudo python3 -m pip uninstall -y serial pyserial
# Install the project dependencies
echo "Installing project dependencies..."
python3 -m pip install -e .[dev]
}
CreateDesktopEntry() {
# Get the directory of the script
prog_dir=$(realpath "$(dirname "$0")")/ardupilot_methodic_configurator
# Check if the system is Debian-based
if [ -f /etc/debian_version ] || [ -f /etc/os-release ] && grep -q 'ID_LIKE=.*debian.*' /etc/os-release; then
echo "Creating ardupilot_methodic_configurator.desktop for Debian-based systems..."
# Define the desktop entry content
desktop_entry="[Desktop Entry]\nName=ArduPilot Methodic Configurator\nComment=A clear ArduPilot configuration sequence\nExec=bash -c 'cd $prog_dir && python3 -m ardupilot_methodic_configurator'\nIcon=$prog_dir/ArduPilot_icon.png\nTerminal=true\nType=Application\nCategories=Development;\nKeywords=ardupilot;arducopter;drone;copter;scm"
# Create the .desktop file in the appropriate directory
echo -e "$desktop_entry" > "/home/$USER/.local/share/applications/ardupilot_methodic_configurator.desktop"
echo "ardupilot_methodic_configurator.desktop created successfully."
# Check if the ~/Desktop directory exists
if [ -d "$HOME/Desktop" ]; then
# Copy the .desktop file to the ~/Desktop directory
cp "/home/$USER/.local/share/applications/ardupilot_methodic_configurator.desktop" "$HOME/Desktop/"
# Mark it as trusted
chmod 755 "$HOME/Desktop/ardupilot_methodic_configurator.desktop"
echo "ardupilot_methodic_configurator.desktop copied to ~/Desktop."
else
echo "$HOME/Desktop directory does not exist. Skipping copy to Desktop."
fi
update-desktop-database ~/.local/share/applications/
else
echo "This system is not Debian-based. Skipping .desktop file creation."
fi
}
ConfigureGit() {
echo "Configuring Git settings..."
git config --local commit.gpgsign false
git config --local diff.tool meld
git config --local diff.astextplain.textconv astextplain
git config --local merge.tool meld
git config --local difftool.prompt false
git config --local mergetool.prompt false
git config --local mergetool.meld.cmd "meld \"\$LOCAL\" \"\$MERGED\" \"\$REMOTE\" --output \"\$MERGED\""
git config --local core.autocrlf false
git config --local core.fscache true
git config --local core.symlinks false
git config --local core.editor "code --wait --new-window"
git config --local alias.graph1 "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"
git config --local alias.graph2 "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all"
git config --local alias.graph "!git graph1"
git config --local alias.co checkout
git config --local alias.st status
git config --local alias.cm "commit -m"
git config --local alias.pom "push origin master"
git config --local alias.aa "add --all"
git config --local alias.df diff
git config --local alias.su "submodule update --init --recursive"
git config --local credential.helper manager
git config --local pull.rebase true
git config --local push.autoSetupRemote
git config --local init.defaultbranch master
git config --local sequence.editor "code --wait"
echo Git configuration applied successfully.
}
ConfigureVSCode() {
# Check for VSCode installation
echo "Checking for VSCode..."
if ! command -v code &> /dev/null; then
echo "VSCode is not installed. Please install VSCode before running this script."
exit 1
else
echo "Installing the markdownlint VSCode extension..."
if ! code --install-extension davidanson.vscode-markdownlint; then
echo "Failed to install markdownlint extension."
exit 1
fi
echo "Installing the Markdown Preview Enhanced extension..."
if ! code --install-extension shd101wyy.markdown-preview-enhanced; then
echo "Failed to install Markdown Preview Enhanced extension."
exit 1
fi
echo "Installing GitHub Copilot..."
if ! code --install-extension GitHub.copilot; then
echo "Failed to install GitHub Copilot extension."
exit 1
fi
echo "Installing the Conventional Commits VSCode extension..."
if ! code --install-extension vivaxy.vscode-conventional-commits; then
echo "Failed to install Conventional Commits VSCode extension."
exit 1
fi
echo "Installing the GitLens VSCode extension..."
if ! code --install-extension eamodio.gitlens; then
echo "Failed to install GitLens VSCode extension."
exit 1
fi
fi
}
# Call configuration functions
InstallDependencies
CreateDesktopEntry
ConfigureGit
ConfigureVSCode
activate-global-python-argcomplete
pre-commit install
# Run pre-commit
echo "running pre-commit checks on all Files"
pre-commit run -a
# Change back to the original directory
cd "$ORIGINAL_DIR" || exit
echo "Script completed successfully."
exit 0