Skip to content

Instantly share code, notes, and snippets.

@zmwangx
Last active May 9, 2017 21:13
Show Gist options
  • Save zmwangx/4f4ff19bf8735d2c2612a2f9a58d6244 to your computer and use it in GitHub Desktop.
Save zmwangx/4f4ff19bf8735d2c2612a2f9a58d6244 to your computer and use it in GitHub Desktop.
homebrew-pypi-poet wrapper for handling multiple dependencies of non-PyPI software
#!/usr/bin/env zsh
# homebrew-pypi-poet for multiple packages.
#
# Usage:
#
# multipoet dep [dep ...]
#
# Example:
#
# multipoet urllib3 cryptography beautifulsoup4 requests
#
# Use this in a virtualenv (preferably a virtualenvwrapper tmpenv)!
setopt pipefail errexit
[[ -n $DEBUG ]] && setopt xtrace
if [[ -n $PYTHON ]]; then
pip=${PYTHON:h}/pip
poet=${PYTHON:h}/poet
else
pip=pip
poet=poet
fi
$pip install homebrew-pypi-poet >&2
for dep; do
if [[ $dep == requests ]]; then
$pip install 'requests[security]' >&2
else
$pip install $dep >&2
fi
done
typeset -A resources
for dep; do $poet -r $dep; echo; done | while IFS= read -r resource_line; do
[[ $resource_line =~ ' resource "([^"]+)" do' ]]
resource_name=$match[1]
IFS= read -r url_line
IFS= read -r checksum_line
IFS= read -r end_line
IFS= read -r blank_line
resources[$resource_name]=$resource_line$'\n'$url_line$'\n'$checksum_line$'\n'$end_line$'\n'
done
echo '-------------------------------------------------------------------------------' >&2
if (( $+commands[pbcopy] )); then
for resource_block in ${(io)resources}; do echo -E $resource_block; done | tee >(pbcopy)
echo '-------------------------------------------------------------------------------' >&2
echo 'resource blocks copied to pasteboard' >&2
else
for resource_block in ${(io)resources}; do echo -E $resource_block; done
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment