summaryrefslogtreecommitdiff
path: root/scripts/installation.sh
blob: 5e853b6e5f019ef66e2e5acc91e1af72a6593f50 (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
# Check if required tools are installed
echo "Checking for required tools..."
if ! command -v cargo &> /dev/null; then
    echo "Error: cargo is not installed. Please install Rust and Cargo first."
    exit 1
fi
if ! command -v git &> /dev/null; then
    echo "Error: git is not installed. Please install git first."
    exit 1
fi

# Set installation directory to current directory
echo "Installation directory set to current directory: $(pwd)"
install_dir="$(pwd)"

# Clone or update repos
echo "Cloning or updating repositories..."
mkdir -p "$install_dir"
cd "$install_dir"

# Function to clone or pull repository
clone_or_pull() {
    local repo_url="$1"
    local repo_name=$(basename "$repo_url")

    if [ -d "$repo_name" ]; then
        echo "Repository $repo_name already exists, pulling latest changes..."
        cd "$repo_name"
        git pull origin main
        cd ..
    else
        echo "Cloning $repo_name..."
        git clone "$repo_url"
    fi
}

# Clone or update repositories
clone_or_pull https://github.com/JustEnoughVCS/CommandLine
clone_or_pull https://github.com/JustEnoughVCS/VersionControl

# Setup VersionControl repo
echo "Setting up VersionControl..."
cd VersionControl
chmod +x setup.sh
./setup.sh

# Build CLI
echo "Building CLI..."
cd ../CommandLine
cargo build --release
cargo pub

# Configure shell to include CLI in PATH
echo "Now adding JustEnoughVCS CLI to your environment. Please select your target shell:"
echo "1) ~/.zshrc (Zsh)"
echo "2) ~/.bashrc (Bash)"
echo "3) ~/.config/fish/config.fish (Fish)"
echo "4) Skip shell configuration"
echo -n "Enter your choice (1-4): "
read choice

case $choice in
    1)
        config_file="$HOME/.zshrc"
        ;;
    2)
        config_file="$HOME/.bashrc"
        ;;
    3)
        config_file="$HOME/.config/fish/config.fish"
        ;;
    4)
        echo "Skipping shell configuration."
        echo "Installation completed! You can manually add the CLI to your PATH later."
        exit 0
        ;;
    *)
        echo "Invalid choice. Skipping shell configuration."
        exit 0
        ;;
esac

cli_path="$(pwd)/.temp/publish/cli.sh"
echo "# JustEnoughVCS CLI" >> "$config_file"
echo "source \"$cli_path\"" >> "$config_file"
echo "CLI has been added to $config_file"
echo "Please restart your shell or run: source $config_file"
echo "Installation completed successfully!"