Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auto Git Config Script Added and Tab_Data TOML Updated. #448

Closed
wants to merge 10 commits into from
1 change: 1 addition & 0 deletions tabs/system-setup/tab_data.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,4 @@ script = "3-global-theme.sh"
[[data]]
name = "Remove Snaps"
script = "4-remove-snaps.sh"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

Remove this line...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fam007e ONCE AGAIN, this extra line has not been removed, please remove it

89 changes: 89 additions & 0 deletions tabs/utils/git-auto-conf-cli.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#!/bin/sh -e

# Import common utilities
. ../common-script.sh

# Install Git if it's not already present
installGit() {
if ! command -v git >/dev/null 2>&1; then
printf "Git is not installed. Installing it now...\n"

case "$PACKAGER" in
pacman|xbps-install)
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm git
;;
apt-get|nala|dnf|zypper)
"$ESCALATION_TOOL" "$PACKAGER" install -y git
;;
nix-env)
nix-env -iA nixpkgs.git
;;
*)
printf "%sGit installation not supported for this package manager%s\n" "$RED" "$RC"
exit 1
;;
esac

printf "%sGit installed successfully.%s\n" "$GREEN" "$RC"
else
printf "Git is already installed.\n"
fi
}

# Function to prompt for GitHub configuration
setup_git_config() {
# Prompt for GitHub email
printf "Enter your GitHub email address: "
read email

# Prompt for SSH key type
printf "Choose your SSH key type:\n"
printf "1. Ed25519 (recommended)\n"
printf "2. RSA (legacy)\n"
printf "Enter your choice (1 or 2): "
read key_type

# Set key algorithm based on user choice
case "$key_type" in
1) key_algo="ed25519" ;;
2) key_algo="rsa" ;;
*)
printf "Invalid choice. Exiting.\n"
exit 1
;;
esac

# Prompt for custom key name
printf "Enter a custom SSH key name (leave blank for default): "
read key_name

# Set the SSH key path based on user input
ssh_key_path="${HOME}/.ssh/${key_name:-id_$key_algo}"

# Generate SSH key with specified type and email
ssh-keygen -t "$key_algo" -C "$email" -f "$ssh_key_path"

# Prompt for passphrase usage
printf "Do you want to use a passphrase? (y/n): "
read use_passphrase

# If user opts for a passphrase, add key to SSH agent
if [ "$use_passphrase" = "y" ]; then
if ! ssh-add -l >/dev/null 2>&1; then
eval "$(ssh-agent -s)"
fi
ssh-add "$ssh_key_path"
else
printf "Skipping passphrase setup.\n"
fi

fam007e marked this conversation as resolved.
Show resolved Hide resolved
printf "SSH key generation and setup completed.\n"
printf "Please copy the SSH key and add it to your GitHub account.\n"
printf "Then run this command to verify the SSH connection:\n"
printf "ssh -T [email protected]\n"
}

# Main execution
checkEnv
installGit
setup_git_config
4 changes: 4 additions & 0 deletions tabs/utils/tab_data.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ script = "bluetooth-control.sh"
name = "Numlock on Startup"
script = "numlock.sh"

[[data]]
name = "Git Configuration"
script = "git-auto-conf-cli.sh"

[[data]]
name = "Monitor Control"

Expand Down