changes to scripts
This commit is contained in:
parent
e5bf66dc8a
commit
b9a3eef410
11 changed files with 281 additions and 177 deletions
0
.brew_lists/brew_list.txt.backup
Normal file
0
.brew_lists/brew_list.txt.backup
Normal file
130
.brew_lists/brew_list.txt.new
Executable file → Normal file
130
.brew_lists/brew_list.txt.new
Executable file → Normal file
|
|
@ -1,130 +0,0 @@
|
||||||
autoconf
|
|
||||||
bat
|
|
||||||
bats-core
|
|
||||||
bfg
|
|
||||||
brotli
|
|
||||||
c-ares
|
|
||||||
ca-certificates
|
|
||||||
cairo
|
|
||||||
coreutils
|
|
||||||
curl
|
|
||||||
ddgr
|
|
||||||
docker
|
|
||||||
docker-completion
|
|
||||||
dog
|
|
||||||
eza
|
|
||||||
fd
|
|
||||||
fontconfig
|
|
||||||
freetype
|
|
||||||
fzf
|
|
||||||
gcc
|
|
||||||
gettext
|
|
||||||
gh
|
|
||||||
giflib
|
|
||||||
git
|
|
||||||
gitleaks
|
|
||||||
glib
|
|
||||||
gmp
|
|
||||||
go
|
|
||||||
gpatch
|
|
||||||
graphite2
|
|
||||||
harfbuzz
|
|
||||||
hyperfine
|
|
||||||
ical-buddy
|
|
||||||
icu4c
|
|
||||||
isl
|
|
||||||
jpeg-turbo
|
|
||||||
jq
|
|
||||||
julia
|
|
||||||
krb5
|
|
||||||
libevent
|
|
||||||
libgit2
|
|
||||||
libidn2
|
|
||||||
liblinear
|
|
||||||
libmpc
|
|
||||||
libnghttp2
|
|
||||||
libpng
|
|
||||||
libssh2
|
|
||||||
libtiff
|
|
||||||
libunistring
|
|
||||||
libuv
|
|
||||||
libvterm
|
|
||||||
libx11
|
|
||||||
libxau
|
|
||||||
libxcb
|
|
||||||
libxdmcp
|
|
||||||
libxext
|
|
||||||
libxrender
|
|
||||||
little-cms2
|
|
||||||
lpeg
|
|
||||||
lua
|
|
||||||
luajit
|
|
||||||
luarocks
|
|
||||||
luv
|
|
||||||
lz4
|
|
||||||
lzo
|
|
||||||
m4
|
|
||||||
marp-cli
|
|
||||||
mbedtls@2
|
|
||||||
mpdecimal
|
|
||||||
mpfr
|
|
||||||
msgpack
|
|
||||||
ncurses
|
|
||||||
neovim
|
|
||||||
nmap
|
|
||||||
node
|
|
||||||
oniguruma
|
|
||||||
opam
|
|
||||||
openblas
|
|
||||||
openjdk
|
|
||||||
openldap
|
|
||||||
openlibm
|
|
||||||
openssl@3
|
|
||||||
p7zip
|
|
||||||
pcre
|
|
||||||
pcre2
|
|
||||||
pixman
|
|
||||||
pkg-config
|
|
||||||
postgresql@14
|
|
||||||
pyenv
|
|
||||||
python@3.11
|
|
||||||
python@3.12
|
|
||||||
readline
|
|
||||||
ripgrep
|
|
||||||
rtmpdump
|
|
||||||
sk
|
|
||||||
skhd
|
|
||||||
sqlite
|
|
||||||
starship
|
|
||||||
stow
|
|
||||||
tmux
|
|
||||||
tree
|
|
||||||
tree-sitter
|
|
||||||
unibilium
|
|
||||||
utf8proc
|
|
||||||
uv
|
|
||||||
xorgproto
|
|
||||||
xz
|
|
||||||
yabai
|
|
||||||
zoxide
|
|
||||||
zsh
|
|
||||||
zstd
|
|
||||||
base
|
|
||||||
docker
|
|
||||||
drawio
|
|
||||||
firefox
|
|
||||||
font-symbols-only-nerd-font
|
|
||||||
google-drive
|
|
||||||
hiddenbar
|
|
||||||
insomnia
|
|
||||||
logi-options-plus
|
|
||||||
maccy
|
|
||||||
miniforge
|
|
||||||
mos
|
|
||||||
pycharm
|
|
||||||
raycast
|
|
||||||
spotify
|
|
||||||
vscodium
|
|
||||||
wezterm
|
|
||||||
zoom
|
|
||||||
zotero
|
|
||||||
0
.brew_lists/cask_list.txt.backup
Normal file
0
.brew_lists/cask_list.txt.backup
Normal file
19
.brew_lists/cask_list.txt.new
Executable file → Normal file
19
.brew_lists/cask_list.txt.new
Executable file → Normal file
|
|
@ -1,19 +0,0 @@
|
||||||
base
|
|
||||||
docker
|
|
||||||
drawio
|
|
||||||
firefox
|
|
||||||
font-symbols-only-nerd-font
|
|
||||||
google-drive
|
|
||||||
hiddenbar
|
|
||||||
insomnia
|
|
||||||
logi-options-plus
|
|
||||||
maccy
|
|
||||||
miniforge
|
|
||||||
mos
|
|
||||||
pycharm
|
|
||||||
raycast
|
|
||||||
spotify
|
|
||||||
vscodium
|
|
||||||
wezterm
|
|
||||||
zoom
|
|
||||||
zotero
|
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1,3 +1,6 @@
|
||||||
*.log
|
*.log
|
||||||
__pycache__*
|
__pycache__*
|
||||||
|
|
||||||
|
pip*
|
||||||
|
poertry
|
||||||
|
|
||||||
|
|
|
||||||
1
poetry
Symbolic link
1
poetry
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
/Users/jfraeys/Library/Application Support/pypoetry/venv/bin/poetry
|
||||||
|
|
@ -56,4 +56,3 @@ fi
|
||||||
|
|
||||||
# Run the provided command
|
# Run the provided command
|
||||||
"$@"
|
"$@"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,18 +17,19 @@ set_fzf_theme() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Set fzf theme based on appearance
|
# Set FZF theme based on appearance
|
||||||
if [[ $appearance == *"Dark"* || -n "$TMUX" ]]; then
|
if [[ $appearance == *"Dark"* || -n "$TMUX" ]]; then
|
||||||
FZF_DEFAULT_OPTS="--color=bg+:#272822,bg:#272822,spinner:#f92672,hl:#66d9ee,fg:#f8f8f2,header:#f92672,info:#66d9ee,pointer:#a6e22e,marker:#a6e22e,fg+:#f8f8f2,prompt:#66d9ee,hl+:#66d9ee"
|
# Monokai (Dark Theme) with slight adjustments
|
||||||
|
FZF_DEFAULT_OPTS="--color=bg+:#272822,bg:#272822,spinner:#ff669d,hl:#66d9ee,fg:#f8f8f2,header:#ff669d,info:#66d9ee,pointer:#a6e22e,marker:#a6e22e,fg+:#e8e8e3,prompt:#66d9ee,hl+:#66d9ee"
|
||||||
else
|
else
|
||||||
FZF_DEFAULT_OPTS="--color=bg+:#fdf6e3,bg:#fdf6e3,spinner:#d33682,hl:#b58900,fg:#657b83,header:#d33682,info:#268bd2,pointer:#859900,marker:#859900,fg+:#657b83,prompt:#268bd2,hl+:#b58900"
|
# Solarized Light with better contrast for readability
|
||||||
|
FZF_DEFAULT_OPTS="--color=bg+:#fdf6e3,bg:#fdf6e3,spinner:#d33682,hl:#cb4b16,fg:#586e75,header:#d33682,info:#268bd2,pointer:#859900,marker:#859900,fg+:#073642,prompt:#268bd2,hl+:#cb4b16"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# export FZF_DEFAULT_OPTS
|
|
||||||
|
|
||||||
echo "$FZF_DEFAULT_OPTS"
|
echo "$FZF_DEFAULT_OPTS"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Call the function to set FZF_DEFAULT_OPTS
|
# Call the function if executed directly
|
||||||
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||||
set_fzf_theme "$1"
|
set_fzf_theme "$1"
|
||||||
|
fi
|
||||||
|
|
|
||||||
171
scripts/kaggle_manager
Executable file
171
scripts/kaggle_manager
Executable file
|
|
@ -0,0 +1,171 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Default settings
|
||||||
|
DATASET_DIR="data/raw" # Directory to store downloaded datasets
|
||||||
|
NOTEBOOK_DIR="notebooks" # Directory to store downloaded notebooks
|
||||||
|
COMMIT_MESSAGE="Added dataset or notebook" # Default commit message
|
||||||
|
VERBOSE=0 # Default verbosity flag
|
||||||
|
|
||||||
|
# Usage function
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 [options]"
|
||||||
|
echo " -d, --dataset Kaggle dataset name (e.g., 'username/dataset-name') to download"
|
||||||
|
echo " -n, --notebook Kaggle notebook URL suffix (e.g., 'username/notebook-name') to download"
|
||||||
|
echo " -s, --submit Notebook file to submit to a competition"
|
||||||
|
echo " -c, --competition Competition name for notebook submission"
|
||||||
|
echo " -g, --git Flag to add and commit changes to Git after download or submission"
|
||||||
|
echo " -v, --verbose Enable verbose output"
|
||||||
|
echo " -h, --help Display this help message"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parse command-line arguments
|
||||||
|
COMMIT_FLAG=0
|
||||||
|
DATASET_NAME=""
|
||||||
|
NOTEBOOK_NAME=""
|
||||||
|
NOTEBOOK_FILE=""
|
||||||
|
COMPETITION_NAME=""
|
||||||
|
|
||||||
|
while [[ "$#" -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
-d | --dataset)
|
||||||
|
DATASET_NAME="$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-n | --notebook)
|
||||||
|
NOTEBOOK_NAME="$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-s | --submit)
|
||||||
|
NOTEBOOK_FILE="$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-c | --competition)
|
||||||
|
COMPETITION_NAME="$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-g | --git) COMMIT_FLAG=1 ;;
|
||||||
|
-v | --verbose) VERBOSE=1 ;;
|
||||||
|
-h | --help) usage ;; # Call usage function for help
|
||||||
|
*) usage ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# Extract Kaggle credentials from kaggle.json
|
||||||
|
if ! KAGGLE_USERNAME=$(jq -r .username ~/.kaggle/kaggle.json) || ! KAGGLE_KEY=$(jq -r .key ~/.kaggle/kaggle.json); then
|
||||||
|
echo "Failed to retrieve Kaggle credentials from kaggle.json."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if credentials were successfully extracted
|
||||||
|
if [[ -z "$KAGGLE_USERNAME" || -z "$KAGGLE_KEY" ]]; then
|
||||||
|
echo "Kaggle credentials are empty. Please check your kaggle.json file."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Function to echo messages if verbosity is enabled
|
||||||
|
verbose_echo() {
|
||||||
|
if [[ $VERBOSE -eq 1 ]]; then
|
||||||
|
echo "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Download dataset
|
||||||
|
if [[ -n "$DATASET_NAME" ]]; then
|
||||||
|
# Create the dataset directory if it doesn't exist
|
||||||
|
mkdir -p "$DATASET_DIR"
|
||||||
|
|
||||||
|
# Download the dataset using curl
|
||||||
|
verbose_echo "Downloading dataset: $DATASET_NAME to $DATASET_DIR"
|
||||||
|
if ! curl -L -o "${DATASET_DIR}/dataset.zip" \
|
||||||
|
-u "$KAGGLE_USERNAME:$KAGGLE_KEY" \
|
||||||
|
"https://www.kaggle.com/api/v1/datasets/download/$DATASET_NAME"; then
|
||||||
|
echo "Failed to download dataset: $DATASET_NAME"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Unzip the dataset and remove the zip file
|
||||||
|
verbose_echo "Unzipping dataset..."
|
||||||
|
if ! unzip -o "${DATASET_DIR}/dataset.zip" -d "$DATASET_DIR"; then
|
||||||
|
echo "Failed to unzip dataset."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm "${DATASET_DIR}/dataset.zip"
|
||||||
|
|
||||||
|
# Git add and commit if the flag is set
|
||||||
|
if [[ $COMMIT_FLAG -eq 1 ]]; then
|
||||||
|
if ! git add "$DATASET_DIR"; then
|
||||||
|
echo "Failed to add dataset to Git."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! git commit -m "$COMMIT_MESSAGE: Dataset $DATASET_NAME"; then
|
||||||
|
echo "Failed to commit dataset to Git."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
verbose_echo "Committed dataset $DATASET_NAME to Git."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Download notebook
|
||||||
|
if [[ -n "$NOTEBOOK_NAME" ]]; then
|
||||||
|
# Create the notebook directory if it doesn't exist
|
||||||
|
mkdir -p "$NOTEBOOK_DIR"
|
||||||
|
|
||||||
|
# Download the notebook using curl
|
||||||
|
verbose_echo "Downloading notebook: $NOTEBOOK_NAME to $NOTEBOOK_DIR"
|
||||||
|
if ! curl -L -o "${NOTEBOOK_DIR}/${NOTEBOOK_NAME##*/}.ipynb" \
|
||||||
|
-u "$KAGGLE_USERNAME:$KAGGLE_KEY" \
|
||||||
|
"https://www.kaggle.com/api/v1/kernels/source/$NOTEBOOK_NAME"; then
|
||||||
|
echo "Failed to download notebook: $NOTEBOOK_NAME"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Git add and commit if the flag is set
|
||||||
|
if [[ $COMMIT_FLAG -eq 1 ]]; then
|
||||||
|
if ! git add "$NOTEBOOK_DIR"; then
|
||||||
|
echo "Failed to add notebook to Git."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! git commit -m "$COMMIT_MESSAGE: Notebook $NOTEBOOK_NAME"; then
|
||||||
|
echo "Failed to commit notebook to Git."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
verbose_echo "Committed notebook $NOTEBOOK_NAME to Git."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Submit a notebook to a Kaggle competition
|
||||||
|
if [[ -n "$NOTEBOOK_FILE" && -n "$COMPETITION_NAME" ]]; then
|
||||||
|
verbose_echo "Submitting notebook: $NOTEBOOK_FILE to competition $COMPETITION_NAME"
|
||||||
|
|
||||||
|
# Submit the notebook
|
||||||
|
if ! curl -L -X POST \
|
||||||
|
-F "file=@${NOTEBOOK_FILE}" \
|
||||||
|
-u "$KAGGLE_USERNAME:$KAGGLE_KEY" \
|
||||||
|
"https://www.kaggle.com/api/v1/competitions/submissions/upload/$COMPETITION_NAME"; then
|
||||||
|
echo "Notebook submission failed."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Notebook submitted successfully!"
|
||||||
|
|
||||||
|
# Git add and commit if the flag is set
|
||||||
|
if [[ $COMMIT_FLAG -eq 1 ]]; then
|
||||||
|
if ! git add "$NOTEBOOK_FILE"; then
|
||||||
|
echo "Failed to add submitted notebook to Git."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! git commit -m "$COMMIT_MESSAGE: Submitted notebook $NOTEBOOK_FILE to $COMPETITION_NAME"; then
|
||||||
|
echo "Failed to commit submitted notebook to Git."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
verbose_echo "Committed submitted notebook $NOTEBOOK_FILE to Git."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If no operation was specified
|
||||||
|
if [[ -z "$DATASET_NAME" && -z "$NOTEBOOK_NAME" && -z "$NOTEBOOK_FILE" ]]; then
|
||||||
|
echo "No operation specified. Please provide a dataset, notebook, or submission to process."
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
@ -69,20 +69,22 @@ handle_terminal() {
|
||||||
local selected="$1"
|
local selected="$1"
|
||||||
local selected_name
|
local selected_name
|
||||||
|
|
||||||
if pgrep -x tmux >/dev/null && [[ -n "$TMUX" ]]; then
|
|
||||||
selected_name=$(basename "$selected" | tr '.' '_')
|
selected_name=$(basename "$selected" | tr '.' '_')
|
||||||
|
local full_path="${selected/#\~/$HOME}"
|
||||||
|
|
||||||
|
if pgrep -x tmux >/dev/null && [[ -n "$TMUX" ]]; then
|
||||||
if ! tmux has-session -t="$selected_name" 2>/dev/null; then
|
if ! tmux has-session -t="$selected_name" 2>/dev/null; then
|
||||||
tmux new-session -ds "$selected_name" -c "$selected"
|
tmux new-session -ds "$selected_name" -c "$selected"
|
||||||
fi
|
fi
|
||||||
tmux switch-client -t "$selected_name"
|
tmux switch-client -t "$selected_name"
|
||||||
elif command -v wezterm >/dev/null && wezterm --version | grep -q "wezterm"; then
|
elif command -v wezterm >/dev/null && wezterm --version | grep -q "wezterm"; then
|
||||||
local tab_id
|
local workspace_exists
|
||||||
tab_id=$(wezterm cli list | awk -v selected="$selected" 'match($0, "file://.*" selected) {print $2; exit}')
|
workspace_exists=$(wezterm cli list-workspaces | grep -w "$selected_name")
|
||||||
if [[ -z $tab_id ]]; then
|
|
||||||
wezterm cli spawn --cwd "$selected"
|
if [[ -z $workspace_exists ]]; then
|
||||||
else
|
wezterm cli create-workspace --name "$selected_name" --cwd "$full_path" # Create a new workspace
|
||||||
wezterm cli activate-tab --tab-id "$tab_id"
|
|
||||||
fi
|
fi
|
||||||
|
wezterm cli switch-to-workspace --name "$selected_name"
|
||||||
else
|
else
|
||||||
echo "Warning: No terminal multiplexer detected (tmux or WezTerm)." >&2
|
echo "Warning: No terminal multiplexer detected (tmux or WezTerm)." >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ set_package_manager() {
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "Unsupported operating system. Exiting."
|
echo "Unsupported operating system $(uname). Exiting."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
@ -141,23 +141,36 @@ set_package_manager() {
|
||||||
# Function to handle auto-updates for Homebrew
|
# Function to handle auto-updates for Homebrew
|
||||||
handle_auto_update() {
|
handle_auto_update() {
|
||||||
if [ "$ENABLE_AUTO_UPDATE" == true ] && [ "$PACKAGE_MANAGER" == "brew" ]; then
|
if [ "$ENABLE_AUTO_UPDATE" == true ] && [ "$PACKAGE_MANAGER" == "brew" ]; then
|
||||||
|
if command_exists brew; then
|
||||||
brew autoupdate --start --upgrade --cleanup
|
brew autoupdate --start --upgrade --cleanup
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to install and configure zsh
|
# Function to install and configure zsh
|
||||||
install_and_configure_shell() {
|
install_and_configure_shell() {
|
||||||
if ! command_exists zsh; then
|
if ! command_exists zsh; then
|
||||||
install_dependencies "$PACKAGE_MANAGER" zsh
|
install_dependencies "$PACKAGE_MANAGER" zsh
|
||||||
if [ ! -d "$HOME/.oh-my-zsh" ]; then
|
# Replaced by zinit in .zshrc
|
||||||
git clone https://github.com/ohmyzsh/ohmyzsh.git "$HOME/.oh-my-zsh"
|
# if [ ! -d "$HOME/.oh-my-zsh" ]; then
|
||||||
fi
|
# git clone https://github.com/ohmyzsh/ohmyzsh.git "$HOME/.oh-my-zsh"
|
||||||
|
# fi
|
||||||
|
if [ "$SHELL" != "$(command -v zsh)" ]; then
|
||||||
chsh -s "$(command -v zsh)"
|
chsh -s "$(command -v zsh)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
exec zsh -l
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to install essential tools
|
# Function to install essential tools
|
||||||
install_essential_tools() {
|
install_essential_tools() {
|
||||||
|
if ! command_exists curl; then
|
||||||
|
install_dependencies "$PACKAGE_MANAGER" curl
|
||||||
|
fi
|
||||||
|
if ! command_exists unzip; then
|
||||||
|
install_dependencies "$PACKAGE_MANAGER" unzip
|
||||||
|
fi
|
||||||
if ! command_exists git; then
|
if ! command_exists git; then
|
||||||
install_dependencies "$PACKAGE_MANAGER" git fd ripgrep fzf tree
|
install_dependencies "$PACKAGE_MANAGER" git fd ripgrep fzf tree
|
||||||
fi
|
fi
|
||||||
|
|
@ -166,18 +179,80 @@ install_essential_tools() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to install programming languages
|
# Function to install Go
|
||||||
install_programming_languages() {
|
install_go() {
|
||||||
case $PACKAGE_MANAGER in
|
case $PACKAGE_MANAGER in
|
||||||
"brew") install_dependencies "$PACKAGE_MANAGER" go python ;;
|
"brew") install_dependencies "$PACKAGE_MANAGER" go ;;
|
||||||
"apt-get") install_dependencies "$PACKAGE_MANAGER" golang python3 python3-pip ;;
|
"apt-get" | "yum") install_dependencies "$PACKAGE_MANAGER" golang ;;
|
||||||
"yum") install_dependencies "$PACKAGE_MANAGER" golang python3 python3-pip ;;
|
*)
|
||||||
|
echo "Unsupported package manager: $PACKAGE_MANAGER"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Function to install Python and Poetry
|
||||||
|
install_python() {
|
||||||
|
# Check if "global" argument is passed
|
||||||
|
GLOBAL_INSTALL=true
|
||||||
|
if [[ "$1" == "local" ]]; then
|
||||||
|
GLOBAL_INSTALL=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install pyenv if it's not already installed
|
||||||
|
if ! command -v pyenv >/dev/null 2>&1; then
|
||||||
|
echo "Installing pyenv..."
|
||||||
|
curl https://pyenv.run | bash
|
||||||
|
|
||||||
|
# Set up pyenv in the current shell session
|
||||||
|
export PATH="$HOME/.pyenv/bin:$PATH"
|
||||||
|
eval "$(pyenv init --path)"
|
||||||
|
eval "$(pyenv init -)"
|
||||||
|
eval "$(pyenv virtualenv-init -)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure Python 3.7+ is installed via pyenv
|
||||||
|
REQUIRED_VERSION="3.7.0"
|
||||||
|
# Function to check if the installed Python version is at least the required version
|
||||||
|
check_python_version() {
|
||||||
|
INSTALLED_VERSION=$(python -c "import sys; print('{}.{}'.format(sys.version_info.major, sys.version_info.minor))")
|
||||||
|
|
||||||
|
if [[ $(printf '%s\n' "$REQUIRED_VERSION" "$INSTALLED_VERSION" | sort -V | head -n 1) == "$REQUIRED_VERSION" ]]; then
|
||||||
|
echo "Python version $INSTALLED_VERSION is installed and meets the requirement."
|
||||||
|
else
|
||||||
|
echo "Python version is less than $REQUIRED_VERSION. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_python_version
|
||||||
|
|
||||||
|
# Set Python version globally or locally
|
||||||
|
if [[ "$GLOBAL_INSTALL" == true ]]; then
|
||||||
|
echo "Setting Python $REQUIRED_VERSION as the global version..."
|
||||||
|
pyenv global "$REQUIRED_VERSION"
|
||||||
|
else
|
||||||
|
echo "Setting Python $REQUIRED_VERSION as the local version..."
|
||||||
|
pyenv local "$REQUIRED_VERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Rehash pyenv to make the new version available
|
||||||
|
pyenv rehash
|
||||||
|
|
||||||
|
# Install Poetry using the pyenv-installed Python
|
||||||
|
echo "Installing Poetry..."
|
||||||
|
curl -sSL https://install.python-poetry.org | python3 -
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install all programming languages
|
||||||
|
install_programming_languages() {
|
||||||
|
install_go
|
||||||
|
install_python global # Pass "global" as an argument to set Python globally
|
||||||
|
}
|
||||||
|
|
||||||
# Function to install MesloLGS Nerd Font
|
# Function to install MesloLGS Nerd Font
|
||||||
install_meslolgs_nerd_font() {
|
install_meslolgs_nerd_font() {
|
||||||
if [ ! -f "$HOME/.local/share/fonts/MesloLGS NF Regular.tff" ]; then
|
if [ ! -f "$HOME/.local/share/fonts/MesloLGS NF Regular.ttf" ]; then
|
||||||
mkdir -p ~/.local/share/fonts
|
mkdir -p ~/.local/share/fonts
|
||||||
cd ~/.local/share/fonts || return
|
cd ~/.local/share/fonts || return
|
||||||
curl -fLo "MesloLGS NF Regular.ttf" https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Meslo.zip
|
curl -fLo "MesloLGS NF Regular.ttf" https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Meslo.zip
|
||||||
|
|
@ -202,6 +277,8 @@ start_shell() {
|
||||||
zsh
|
zsh
|
||||||
elif command -v bash &>/dev/null; then
|
elif command -v bash &>/dev/null; then
|
||||||
bash
|
bash
|
||||||
|
elif command -v fish &>/dev/null; then
|
||||||
|
fish
|
||||||
else
|
else
|
||||||
echo "Neither zsh nor bash is installed. Please install one of them manually."
|
echo "Neither zsh nor bash is installed. Please install one of them manually."
|
||||||
fi
|
fi
|
||||||
|
|
@ -253,4 +330,3 @@ fi
|
||||||
|
|
||||||
show_installed_dependencies
|
show_installed_dependencies
|
||||||
start_shell
|
start_shell
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue