Initial commit
This commit is contained in:
69
skills/ruby-bundler/scripts/bundle_add.sh
Executable file
69
skills/ruby-bundler/scripts/bundle_add.sh
Executable file
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
# Add a gem to Gemfile and install it
|
||||
|
||||
set -e
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: $0 <gem_name> [version] [--group=GROUP]"
|
||||
echo "Example: $0 pry-byebug '~> 3.10' --group=development"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
GEM_NAME=$1
|
||||
VERSION=${2:-}
|
||||
GROUP=""
|
||||
|
||||
# Parse group argument
|
||||
for arg in "$@"; do
|
||||
if [[ $arg == --group=* ]]; then
|
||||
GROUP="${arg#*=}"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "📦 Adding gem: $GEM_NAME"
|
||||
|
||||
# Check if Gemfile exists
|
||||
if [ ! -f "Gemfile" ]; then
|
||||
echo "❌ Error: No Gemfile found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Determine gem line to add
|
||||
if [ -n "$VERSION" ] && [[ ! $VERSION == --* ]]; then
|
||||
GEM_LINE="gem '$GEM_NAME', '$VERSION'"
|
||||
else
|
||||
GEM_LINE="gem '$GEM_NAME'"
|
||||
fi
|
||||
|
||||
# Add to appropriate group
|
||||
if [ -n "$GROUP" ]; then
|
||||
echo "Adding to group: $GROUP"
|
||||
|
||||
# Check if group exists
|
||||
if grep -q "group :$GROUP do" Gemfile; then
|
||||
# Add to existing group (before the 'end')
|
||||
sed -i.bak "/group :$GROUP do/a\\
|
||||
$GEM_LINE
|
||||
" Gemfile && rm Gemfile.bak
|
||||
else
|
||||
# Create new group at end of file
|
||||
echo "" >> Gemfile
|
||||
echo "group :$GROUP do" >> Gemfile
|
||||
echo " $GEM_LINE" >> Gemfile
|
||||
echo "end" >> Gemfile
|
||||
fi
|
||||
else
|
||||
# Add to main section (after source line)
|
||||
sed -i.bak "/^source /a\\
|
||||
$GEM_LINE
|
||||
" Gemfile && rm Gemfile.bak
|
||||
fi
|
||||
|
||||
echo "✅ Added to Gemfile"
|
||||
echo ""
|
||||
echo "Running bundle install..."
|
||||
bundle install
|
||||
|
||||
echo ""
|
||||
echo "✅ Gem installed successfully"
|
||||
bundle info "$GEM_NAME"
|
||||
Reference in New Issue
Block a user