summaryrefslogtreecommitdiff
path: root/setup
diff options
context:
space:
mode:
Diffstat (limited to 'setup')
-rw-r--r--setup/linux/inst.sh88
-rw-r--r--setup/windows/inst.ps18
-rw-r--r--setup/windows/setup_jv_cli_template.iss42
-rw-r--r--setup/windows/uninst.ps139
4 files changed, 177 insertions, 0 deletions
diff --git a/setup/linux/inst.sh b/setup/linux/inst.sh
new file mode 100644
index 0000000..bbebeb8
--- /dev/null
+++ b/setup/linux/inst.sh
@@ -0,0 +1,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 export
+
+# 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)/export/jv_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!"
diff --git a/setup/windows/inst.ps1 b/setup/windows/inst.ps1
new file mode 100644
index 0000000..2e15dc3
--- /dev/null
+++ b/setup/windows/inst.ps1
@@ -0,0 +1,8 @@
+. ".\uninst.ps1"
+
+$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
+
+$parentDir = Split-Path -Parent $scriptDir
+Add-Content -Path $PROFILE -Value "`n# JustEnoughVCS - Begin #"
+Add-Content -Path $PROFILE -Value ". `"$parentDir\jv_cli.ps1`""
+Add-Content -Path $PROFILE -Value "# JustEnoughVCS - End #"
diff --git a/setup/windows/setup_jv_cli_template.iss b/setup/windows/setup_jv_cli_template.iss
new file mode 100644
index 0000000..124d897
--- /dev/null
+++ b/setup/windows/setup_jv_cli_template.iss
@@ -0,0 +1,42 @@
+#define MyAppName "JustEnoughVCS"
+#define MyAppVersion "<<<VERSION>>>"
+#define MyAppPublisher "<<<AUTHOR>>>"
+#define MyAppURL "<<<SITE>>>"
+
+[Setup]
+AppId={{8265DF21-F290-487E-9403-C2730EC31A03}
+AppName={#MyAppName}
+AppVersion={#MyAppVersion}
+AppPublisher={#MyAppPublisher}
+AppPublisherURL={#MyAppURL}
+AppSupportURL={#MyAppURL}
+AppUpdatesURL={#MyAppURL}
+DefaultDirName={autopf}\{#MyAppName}
+DefaultGroupName={#MyAppName}
+AllowNoIcons=yes
+LicenseFile=..\..\LICENSE
+PrivilegesRequired=lowest
+OutputDir=..\..\export\setup
+OutputBaseFilename=JustEnoughVCS For Windows
+SetupIconFile=..\..\docs\images\Yizi.ico
+SolidCompression=yes
+WizardStyle=modern dynamic
+
+[Languages]
+Name: "english"; MessagesFile: "compiler:Default.isl"
+
+[Files]
+Source: "..\..\export\*"; Excludes: "setup"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "inst.ps1"; DestDir: "{app}\scripts\"; Flags: ignoreversion
+Source: "uninst.ps1"; DestDir: "{app}\scripts\"; Flags: ignoreversion
+
+[Run]
+Filename: "powershell.exe"; Parameters: "-ExecutionPolicy Bypass -File ""{app}\scripts\inst.ps1"""; Flags: runhidden; Description: "Running post-installation script..."; StatusMsg: "Running post-installation script..."; AfterInstall: RunPostInstall
+
+[UninstallRun]
+Filename: "powershell.exe"; Parameters: "-ExecutionPolicy Bypass -File ""{app}\scripts\uninst.ps1"""; Flags: runhidden; RunOnceId: "UninstallScript"
+
+[Code]
+procedure RunPostInstall;
+begin
+end;
diff --git a/setup/windows/uninst.ps1 b/setup/windows/uninst.ps1
new file mode 100644
index 0000000..d5c898d
--- /dev/null
+++ b/setup/windows/uninst.ps1
@@ -0,0 +1,39 @@
+$profileContent = Get-Content $PROFILE -ErrorAction SilentlyContinue
+if ($profileContent) {
+ $startMarker = "# JustEnoughVCS - Begin #"
+ $endMarker = "# JustEnoughVCS - End #"
+ $newContent = @()
+ $insideBlock = $false
+ $foundStart = $false
+
+ foreach ($line in $profileContent) {
+ if ($line.Trim() -eq $startMarker) {
+ $insideBlock = $true
+ $foundStart = $true
+ continue
+ }
+ if ($line.Trim() -eq $endMarker) {
+ $insideBlock = $false
+ continue
+ }
+ if (-not $insideBlock) {
+ $newContent += $line
+ }
+ }
+
+ if ($foundStart -and $insideBlock) {
+ $newContent = @()
+ $insideBlock = $false
+ foreach ($line in $profileContent) {
+ if ($line.Trim() -eq $startMarker) {
+ $insideBlock = $true
+ continue
+ }
+ if (-not $insideBlock) {
+ $newContent += $line
+ }
+ }
+ }
+
+ $newContent | Set-Content $PROFILE
+}