Giter Site home page Giter Site logo

jordanmartinez / purescript-ecosystem-update Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 3.0 1.16 MB

Some code that helps us update the PureScript ecosystem when a breaking changes PureScript release is made

Shell 2.20% Dhall 1.93% JavaScript 0.60% PureScript 95.26%
purescript breaking-changes ecosystem

purescript-ecosystem-update's Introduction

purescript-ecosystem-update

This repo stores scripts for forking, updating, and submitting PRs for the core, contrib, node, and web PureScript orgainzations' libraries.

Why

Breaking changes made in libraries are done at the same time as when breaking changes are made in the PureScript compiler. Thus, we have to update all the foundational libraries for the PureScript ecosystem. This entails forking, updating, and submitting and merging many PRs. The scripts in this repo enable a streamlined workflow to make this update process easier.

How: The intended workflow

By Example

# Create a separate folder for containing both the scripts
# and the local copies of the repos
mkdir ps-libs
cd ps-libs

# Clone this repo and enter it
git clone [email protected]:JordanMartinez/purescript-ecosystem-update.git 0.15
cd 0.15

spago build

# Fix any errors produced by the init command
./peu.js init

# Clone all repos locally using `gh` without getting rate-limited
./peu.js cloneAll
# Generate information used by most other commands
./peu.js releaseInfo
# Generate the order in which libraries need to be updated
./peu.js updateOrder

# At this point, one can modify this program to do
# release-specific changes across all repos.
# If a single file is going to be changed, the `getFile`
# command can help see what all the edge cases are immediately.
./peu.js getFile .github/workflows/ci.yml

# Once this program has been updated to do all changes,
# one can start updating them by doing the following:

# For each repo...
  # See what the next library to update is
./peu.js updateOrder
head -n 5 files/order/updated-pkgs
  # Verify that it compiles and will pass CI locally
./peu.js compile prelude
  # Submit a PR via `gh`
./peu.js pr prelude
  # Mark library as updated
echo "prelude" >> files/order/updated-pkgs
  # Loop

# Once all libraries are updated,
# this program will need to be updated once more
# to do release-specific things
./peu.js release

# Once the scripts are tested and work across the repos,
# one can easily open a PR for them
./peu.js release --submit-pr
echo "prelude" >> files/order/released-pkgs
./peu.js release --submit-pr
echo "effect" >> files/order/released-pkgs
# ...

# Once all libraries are releasd and an initial package set
# is released, we can see which libraries are unblocked:
./peu.js spagoOrder
echo "interpolate" >> files/order/released-pkgs

Folder Structure

When setup correctly, the project structure should look like this:

ps-libs/
  0.15/
    peu.js
    ...
  lib/
    prelude/
    .../
    node-fs/
    .../

purescript-ecosystem-update's People

Contributors

jordanmartinez avatar kl0tl avatar sigma-andex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.