Skip to content

Conversation

@kl0tl
Copy link
Member

@kl0tl kl0tl commented Feb 14, 2021

Versions were computed when possible from the master branch of this repository, and dependencies are taken from bower.json files.

Details
#! /usr/bin/env bash
set -euo pipefail

function main {
  local org="$1"
  local bower_packages; bower_packages="$(curl --silent --show-error https://raw.githubusercontent.com/kl0tl/registry/fix-bower-packages/bower-packages.json)"
  local new_packages; new_packages="$(curl --silent --show-error https://raw.githubusercontent.com/kl0tl/registry/fix-bower-packages/new-packages.json)"
  local dependencies
  dhall-to-json --file "./src/groups/$org.dhall" > "./$org.json"
  if [ "$org" = purescript-contrib ]; then
    curl --silent --show-error https://raw.githubusercontent.com/kl0tl/package-sets/prepare-0.14/packages.dhall > ./packages.dhall
  fi
  for package_name in $(jq --raw-output 'keys[]' "./$org.json"); do
    echo "Upgrading purescript-$package_name"
    local repository_url; repository_url="$(jq --raw-output --arg package_name "purescript-$package_name" --arg fallback "$(jq --raw-output --arg package_name "purescript-$package_name" '.[$package_name]' <<< "$new_packages")" '.[$package_name] // $fallback' <<< "$bower_packages")"
    if [ "$repository_url" = "https://github.com/$org/purescript-$package_name.git" ]; then
      local raw_url; raw_url="$(sed -e 's/github\.com/raw\.githubusercontent\.com/' <<< "$repository_url")"
      if [ "$org" = purescript-contrib ]; then
        local bowerfile; bowerfile="$(curl --silent --show-error "$(sed -e 's/\.git$/\/main\/bower\.json/' <<< "$raw_url")")"
        local bower_dependencies; bower_dependencies="$(jq '.dependencies | keys? // [] | map(ltrimstr("purescript-"))' <<< "$bowerfile")"
        local bower_dev_dependencies; bower_dev_dependencies="$(jq --argjson dependencies "$bower_dependencies" '.devDependencies | keys? // [] | map(ltrimstr("purescript-")) | (. - $dependencies)' <<< "$bowerfile")"
        local spago_dependencies; spago_dependencies="$(curl --silent --show-error "$(sed -e 's/\.git$/\/main\/spago\.dhall/' <<< "$raw_url")" | dhall-to-json | jq '.dependencies - ["psci-support"]')"
        dependencies="$(jq --null-input --argjson spago_dependencies "$spago_dependencies" --argjson bower_dev_dependencies "$bower_dev_dependencies"  '$spago_dependencies - $bower_dev_dependencies')"
      else
        dependencies="$(curl --silent --show-error "$(sed -e 's/\.git$/\/master\/bower\.json/' <<< "$raw_url")" | jq '.dependencies | keys? // [] | map(ltrimstr("purescript-"))')"
      fi
      jq --arg package_name "$package_name" --argjson dependencies "$dependencies" '.[$package_name].dependencies = ($dependencies | sort)' "./$org.json" | \
      jq --arg package_name "$package_name" --arg repository_url "$repository_url" '.[$package_name].repo = $repository_url' | \
      jq --arg package_name "$package_name" '.[$package_name].version |= (. | ltrimstr("v") | split(".") | if (.[0] == "0") then ["0", (.[1] | tonumber | . + 1 | tostring), "0"] else [(.[0] | tonumber | . + 1 | tostring), "0", "0"] end | join(".") | "v" + .)' > "./$org.json.tmp"
    else
      jq --arg package_name "$package_name" 'del(.[$package_name])' "./$org.json" > "./$org.json.tmp"
    fi
    mv "./$org.json.tmp" "./$org.json"
  done
  json-to-dhall --file "./$org.json" > "./src/groups/$org.dhall"
  rm "./$org.json"
  if [ "$org" = purescript-contrib ]; then
    rm ./packages.dhall
  fi
  git --no-pager diff "./src/groups/$org.dhall"
}

case "${1-unexpected}" in
  purescript|purescript-contrib|purescript-node|purescript-web )
    main "$1";;
  * ) echo "Expecting one of purescript, purescript-contrib, purescript-node or purescript-web.";;
esac

We can only over approximate the dependencies of contrib libraries because their bower.json files are not up to date and their spago.dhall files list both runtime and test dependencies, so I verified manually all dependency additions to the contrib libraries.

This should not be merged until we release new versions of all those libraries.

@f-f f-f marked this pull request as ready for review February 26, 2021 18:58
@f-f
Copy link
Member

f-f commented Feb 26, 2021

@kl0tl @thomashoneyman I'm going to merge this one so that we can all work on the prepare-0.14 branch

@f-f f-f merged commit 7690b5a into purescript:prepare-0.14 Feb 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants