Skip to content

Instantly share code, notes, and snippets.

@jaysin586
Last active November 18, 2024 21:39
Show Gist options
  • Save jaysin586/63cde4167bcd30f933588ce24260326f to your computer and use it in GitHub Desktop.
Save jaysin586/63cde4167bcd30f933588ce24260326f to your computer and use it in GitHub Desktop.
Pip Tools helper functions
# Compile all requirements.in files in current directory
# Usage: pipcompile [--quiet|-q] [--verbose|-v]
pipcompile() {
local quiet=false
# Parse arguments
while [[ "$#" -gt 0 ]]; do
case $1 in
--quiet|-q) quiet=true ;;
--verbose|-v) quiet=false ;;
*) echo "Unknown parameter: $1"; return 1 ;;
esac
shift
done
# Check pip-tools version and update if needed
echo "πŸ” Checking pip-tools version..."
local current_version=$(pip freeze | grep pip-tools | cut -d'=' -f3)
if [ "$quiet" = true ]; then
pip install --upgrade pip-tools >/dev/null 2>&1
else
pip install --upgrade pip-tools
fi
local new_version=$(pip freeze | grep pip-tools | cut -d'=' -f3)
if [ "$current_version" != "$new_version" ]; then
echo "πŸš€ Updated pip-tools from $current_version to $new_version"
else
echo "✨ pip-tools is already at the latest version ($current_version)"
fi
# Check if any .in files exist
if ! compgen -G "*.in" > /dev/null; then
echo "❌ No .in files found in current directory"
return 1
fi
echo "πŸ“¦ Compiling requirements files..."
for f in *.in; do
if [ "$quiet" = true ]; then
echo "πŸ”„ Compiling $f..."
pip-compile "$f" --upgrade >/dev/null 2>&1
echo "βœ… Done $f"
else
echo "πŸ”„ Compiling $f..."
pip-compile "$f" --upgrade
echo "βœ… Done $f"
fi
done
echo "πŸŽ‰ All requirements files compiled!"
}
# Sync all requirements*.txt files in current directory
# Usage: pipsync [--verbose|-v]
pipsync() {
local quiet=true
# Parse arguments
while [[ "$#" -gt 0 ]]; do
case $1 in
--verbose|-v) quiet=false ;;
*) echo "Unknown parameter: $1"; return 1 ;;
esac
shift
done
# Check pip-tools version and update if needed
echo "πŸ” Checking pip-tools version..."
local current_version=$(pip freeze | grep pip-tools | cut -d'=' -f3)
if [ "$quiet" = true ]; then
pip install --upgrade pip-tools >/dev/null 2>&1
else
pip install --upgrade pip-tools
fi
local new_version=$(pip freeze | grep pip-tools | cut -d'=' -f3)
if [ "$current_version" != "$new_version" ]; then
echo "πŸš€ Updated pip-tools from $current_version to $new_version"
else
echo "✨ pip-tools is already at the latest version ($current_version)"
fi
# Check if any requirements*.txt files exist
if ! compgen -G "requirements*.txt" > /dev/null; then
echo "❌ No requirements*.txt files found in current directory"
return 1
fi
echo "πŸ“¦ Syncing requirements files..."
for f in requirements*.txt; do
echo "πŸ”„ Syncing $f..."
if [ "$quiet" = true ]; then
pip-sync "$f" >/dev/null 2>&1
else
pip-sync "$f"
fi
echo "βœ… Done $f"
done
echo "πŸŽ‰ All requirements files synced!"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment