54 lines
1.2 KiB
Bash
54 lines
1.2 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
GIT_DIRS=("$HOME/work" "$HOME/projects" "$HOME/git" "$HOME/WebStormProjects" "$HOME/RiderProjects")
|
||
|
|
||
|
function open_app() {
|
||
|
application="$1"
|
||
|
project="$2"
|
||
|
|
||
|
|
||
|
exe=$(grep "Exec" "$HOME/.local/share/applications/jetbrains-$application.desktop" | sed 's/.*"\([^"]*\)".*/\1/')
|
||
|
$exe "$project" &> /dev/null &
|
||
|
}
|
||
|
|
||
|
function file_exists() {
|
||
|
project="$1"
|
||
|
file="$2"
|
||
|
files=($project/$file)
|
||
|
if [ -e "${files[0]}" ]; then
|
||
|
return 0
|
||
|
else
|
||
|
return 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
function open_project() {
|
||
|
project="$1"
|
||
|
|
||
|
if file_exists "$project" "pom.xml"; then
|
||
|
open_app "idea" "$project"
|
||
|
elif file_exists "$project" "package.json"; then
|
||
|
open_app "webstorm" "$project"
|
||
|
elif file_exists "$project" "cargo.toml" || file_exists "$project" "*.c"; then
|
||
|
open_app "clion" "$project"
|
||
|
elif file_exists "$project" "*.csproj"; then
|
||
|
open_app "rider" "$project"
|
||
|
elif file_exists "$project" "*.py"; then
|
||
|
open_app "pycharm" "$project"
|
||
|
elif file_exists "$project" "*.go"; then
|
||
|
open_app "goland" "$project"
|
||
|
else
|
||
|
open_app "idea" "$project"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
if [[ "$1" == "" ]]; then
|
||
|
for dir in $(echo ${GIT_DIRS[*]}); do
|
||
|
if [ -e "$dir" ]; then
|
||
|
find $dir -maxdepth 1 -mindepth 1 -type d
|
||
|
fi
|
||
|
done
|
||
|
else
|
||
|
open_project "$1"
|
||
|
fi
|