You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

update-gemspec 1.2 kB

2 years ago
1234567891011121314151617181920212223242526272829303132
  1. #!/usr/bin/env bash
  2. #
  3. # Updates the *.gemspec in the current directory to use the latest releases of gems
  4. #
  5. set -uf -o pipefail
  6. IFS=$'\n'
  7. gemspec=$(find . -type f -maxdepth 1 -name "*.gemspec")
  8. if [ "${gemspec}" = "" ]; then
  9. exit 0
  10. fi
  11. add_dependency_lines=$(cat ${gemspec} | grep "s.add_[a-z_]*dependency '[^']*'")
  12. if [ $? -ne 0 ]; then
  13. # No add_dependency_lines found - nothing to do
  14. exit 0
  15. fi
  16. set -e
  17. gems=$(echo "${add_dependency_lines}" | tr -s ' ' | cut -d ' ' -f3 | cut -d"'" -f 2)
  18. while read -r gem; do
  19. echo "upgrading ${gem}"
  20. if [ "${gem}" = "bundler" ]; then
  21. cat "${gemspec}" | sed "s/\(s.add_[a-z_]*dependency\) '${gem}'.*/\1 '${gem}', '>= 1.16.2'/" > ${gemspec}.tmp
  22. else
  23. gem_line=$(gem list "${gem}" --remote --all --no-prerelease | grep "^${gem}\s")
  24. latest_patch_version=$(echo "${gem_line}" | cut -d'(' -f2 | cut -d')' -f1 | cut -d',' -f1 | cut -d' ' -f1)
  25. latest_minor_version=$(echo "${latest_patch_version}" | cut -d. -f1,2)
  26. cat "${gemspec}" | sed "s/\(s.add_[a-z_]*dependency\) '${gem}'.*/\1 '${gem}', '~> ${latest_minor_version}', '>= ${latest_patch_version}'/" > ${gemspec}.tmp
  27. fi
  28. mv ${gemspec}.tmp ${gemspec}
  29. done <<< "${gems}"

No Description

Contributors (1)