Skip to content

Instantly share code, notes, and snippets.

@elentok
Created April 14, 2013 12:44
Show Gist options
  • Select an option

  • Save elentok/5382582 to your computer and use it in GitHub Desktop.

Select an option

Save elentok/5382582 to your computer and use it in GitHub Desktop.
Returns a list of your gems and their licenses
#!/bin/zsh
get_gems() {
cat Gemfile |
sed 's/^ *//' |
sed -E '/^(group|end|source|#)/d' |
sed '/^ *$/d' |
sed "s/^gem ['\"]//" |
sed "s/['\"].*$//" |
grep -vE '(api_client|mobile_web)' |
sort
}
get_licenses() {
cd $GEM_HOME/gems
for file in `get_license_files`; do
license=`get_license $file`
gem=`clean_gem_name $file`
if [[ $license != "" ]]; then
echo "$gem, $license"
fi
done
}
get_license_files() {
find -E . -iregex '.*(license|readme).*'
}
get_license() {
grep -iE '\b(MIT|GPL|ruby license|apache)\b' $1 | head -1 | sed -E "s/^[ \t]+//"
}
clean_gem_name() {
echo $1 | sed 's#./##' | sed -E 's/-[0-9.]+.*$//'
}
get_gem_licenses() {
gems=`get_gems`
if [ ! -e '/tmp/licenses.txt' ]; then
get_licenses | uniq > /tmp/licenses.txt
fi
get_gems | while read gem
do
license=`cat /tmp/licenses.txt | grep "^$gem,"`
if [[ $license == "" ]]; then
license="$gem, ???"
fi
echo "$license"
done
#for gem ($gems); do
##license=`echo $licenses | grep "^$gem,"`
##echo "[[[$gem]]], [[[$license]]]"
#done
}
get_gem_licenses
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment