UNPKG

detect-secrets-js

Version:

A JavaScript implementation of Yelp's detect-secrets tool - no Python required

137 lines (123 loc) 4.97 kB
const { exec } = require('child_process'); const os = require('os'); const util = require('util'); const execAsync = util.promisify(exec); async function installGitleaks() { const platform = os.platform(); try { console.log('Attempting to install Gitleaks...'); if (platform === 'win32') { try { await execAsync('choco -v'); console.log('Installing Gitleaks using Chocolatey...'); await execAsync('choco install gitleaks -y'); return; } catch { // If Chocolatey isn't available, show manual installation instructions console.log('\n⚠️ Chocolatey is not installed on your system.'); console.log('\nTo install Gitleaks, you have several options:'); console.log('\n1. Install using Chocolatey (Recommended):'); console.log( ' a. First install Chocolatey by following instructions at:' ); console.log(' https://chocolatey.org/install'); console.log(' b. Then run: choco install gitleaks -y'); console.log('\n2. Manual Installation:'); console.log( ' a. Visit: https://github.com/gitleaks/gitleaks/releases' ); console.log( ' b. Download the latest Windows zip file (gitleaks_8.24.2_windows_x64.zip)' ); console.log(' c. Extract the gitleaks.exe file'); console.log( ' d. Add it to your PATH or copy it to a directory in your PATH' ); console.log(' (e.g., C:\\Windows\\System32)'); console.log('\n3. Using Scoop (Alternative):'); console.log(' a. Install Scoop from https://scoop.sh'); console.log(' b. Run: scoop install gitleaks'); console.log('\nAfter installation, verify by running:'); console.log('gitleaks version'); throw new Error( 'Please install Gitleaks using one of the methods above and try again.' ); } } else if (platform === 'darwin') { // macOS - try Homebrew try { await execAsync('brew -v'); console.log('Installing Gitleaks using Homebrew...'); await execAsync('brew install gitleaks'); } catch { throw new Error( 'Homebrew is not installed. Please install Gitleaks manually:\n' + '1. Install Homebrew (https://brew.sh/)\n' + '2. Then run: brew install gitleaks' ); } } else { // Linux - try different package managers try { // Try apt-get (Debian/Ubuntu) await execAsync('apt-get -v'); console.log('Installing Gitleaks using apt...'); await execAsync( 'sudo apt-get update && sudo apt-get install -y gitleaks' ); } catch { try { // Try yum (RHEL/CentOS) await execAsync('yum -v'); console.log('Installing Gitleaks using yum...'); await execAsync('sudo yum install -y gitleaks'); } catch { throw new Error( 'Could not install Gitleaks automatically. Please install manually:\n' + 'Visit: https://github.com/gitleaks/gitleaks#installation' ); } } } console.log('Gitleaks installed successfully!'); } catch (error) { if (error.message.includes('Please install Gitleaks')) { // This is our custom error with instructions, exit gracefully process.exit(1); } // For unexpected errors, show general guidance console.error('\n❌ Failed to install Gitleaks automatically.'); console.log('\nPlease install Gitleaks manually:'); if (platform === 'win32') { console.log('\nWindows Installation Options:'); console.log('1. Download the latest release from:'); console.log(' https://github.com/gitleaks/gitleaks/releases'); console.log('2. Extract the zip file'); console.log('3. Add gitleaks.exe to your system PATH'); console.log('\nOr use a package manager:'); console.log('- Chocolatey: choco install gitleaks'); console.log('- Scoop: scoop install gitleaks'); } else if (platform === 'darwin') { console.log('\nmacOS Installation:'); console.log('1. Using Homebrew (recommended):'); console.log(' brew install gitleaks'); console.log('\n2. Manual installation:'); console.log( ' Download from https://github.com/gitleaks/gitleaks/releases' ); } else { console.log('\nLinux Installation:'); console.log( '1. Download from https://github.com/gitleaks/gitleaks/releases' ); console.log('2. Extract and move to /usr/local/bin:'); console.log(' sudo mv gitleaks /usr/local/bin/'); console.log(' sudo chmod +x /usr/local/bin/gitleaks'); } console.log('\nAfter installation, verify by running:'); console.log('gitleaks version'); process.exit(1); } } // Run the installation installGitleaks().catch(console.error);