From e2450637bd1672138cfca9d1471e55c4a819e66d Mon Sep 17 00:00:00 2001 From: zlalvani Date: Tue, 30 Apr 2024 00:21:42 -0400 Subject: [PATCH] mv README before publish --- .github/workflows/publish-cli-on-merge.yml | 1 + .../workflows/verify-readme-duplicated.yml | 29 ---- apps/cli/README.md | 161 ------------------ 3 files changed, 1 insertion(+), 190 deletions(-) delete mode 100644 .github/workflows/verify-readme-duplicated.yml delete mode 100644 apps/cli/README.md diff --git a/.github/workflows/publish-cli-on-merge.yml b/.github/workflows/publish-cli-on-merge.yml index c305f0e..60f7b55 100644 --- a/.github/workflows/publish-cli-on-merge.yml +++ b/.github/workflows/publish-cli-on-merge.yml @@ -56,6 +56,7 @@ jobs: - run: pnpm install --frozen-lockfile - run: pnpm --filter=bumpgen run build + - run: cp README.md apps/cli/README.md # copy the README to the CLI folder so it gets published - run: pnpm --filter=bumpgen publish --tag latest --access public --no-git-checks env: NODE_AUTH_TOKEN: "${{ secrets.NPM_TOKEN }}" diff --git a/.github/workflows/verify-readme-duplicated.yml b/.github/workflows/verify-readme-duplicated.yml deleted file mode 100644 index f4c7877..0000000 --- a/.github/workflows/verify-readme-duplicated.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Verify Readme Duplicated - -on: - pull_request: - branches: [main] - types: [opened, synchronize] - paths: - - README.md - - apps/cli/README.md - -jobs: - check-readmes: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Verify that the readmes are the same - run: | - FILE1='README.md' - FILE2='apps/cli/README.md' - HASH1=$(sha256sum $FILE1 | awk '{print $1}') - HASH2=$(sha256sum $FILE2 | awk '{print $1}') - if [ "$HASH1" == "$HASH2" ]; then - echo "Readmes are the same." - else - echo "Repo README and CLI README are different." - exit 1 - fi diff --git a/apps/cli/README.md b/apps/cli/README.md deleted file mode 100644 index 9399846..0000000 --- a/apps/cli/README.md +++ /dev/null @@ -1,161 +0,0 @@ -

- logo -

- -

- - - - - - - - - - - - -

- -## 📝 Summary - -`bumpgen` bumps your **TypeScript / TSX** dependencies and makes code changes for you if anything breaks. - -![demo]() - -Here's a common scenario: - -> you: "I should upgrade to the latest version of x, it has banging new features and impressive performance improvements" -> -> you (5 minutes later): _nevermind, that broke a bunch of stuff_ - -Then use `bumpgen`! - -**How does it work?** - -- `bumpgen` builds your project to understand what broke when a dependency was bumped -- Then `bumpgen` uses [ts-morph](https://github.com/dsherret/ts-morph) to create an _abstract syntax tree_ from your code, to understand the relationships between statements -- It also uses the AST to get type definitions for external methods to understand how to use new package versions -- `bumpgen` then creates a _plan graph_ DAG to execute things in the correct order to handle propagating changes (ref: [arxiv 2309.12499](https://huggingface.co/papers/2309.12499)) - -> `bumpgen` only supports typescript and tsx at the moment, but we're working on adding support for other strongly typed languages like C#, Java and Go - -## 🚀 Get Started - -To get started, you'll need an OpenAI API key. `gpt-4-turbo-preview` from OpenAI is the only supported model at this time, though we plan on supporting more soon. - -Then, run `bumpgen`: - -``` -> export LLM_API_KEY="" -> cd ~/my-repository -> npm install -g bumpgen -> bumpgen @tanstack/react-query 5.28.14 -``` - -where `@tanstack/react-query` is the package you want to bump and `5.28.14` is the version you want to bump to. - -You can also run `bumpgen` without arguments and select which package to upgrade from the menu. Use `bumpgen --help` for a complete list of options. - -> If you'd like to be first in line to try the `bumpgen` GitHub App to replace your usage of dependabot + renovatebot, sign up [here](https://www.xeol.io/beta) - -## Limitations - -There are some limitations you should know about. - -- `bumpgen` relies on build errors to determine what needs to be fixed. If an issue is caused by a behavioral change, `bumpgen` won't detect it. -- `bumpgen` can't handle multiple packages at the same time. It will fail to upgrade packages that require peer dependencies to be updated the same time to work such as `@octokit/core` and `@octokit/plugin-retry`. -- `bumpgen` is not good with very large frameworks like `vue`. These kind of upgrades (and vue 2 -> 3 specifically) can be arduous even for a human. - -## 🏙️ Architecture - -``` - > bumpgen @tanstack/react-query 5.28.14 - │ -┌┬─────▼──────────────────────────────────────────────────────────────────────┐ -││ CLI │ -└┴─────┬──▲───────────────────────────────────────────────────────────────────┘ - │ │ -┌┬─────▼──┴───────────────────────────────────────────────────────────────────┐ -││ Core (Codeplan) │ -││ │ -││ ┌───────────────────────────────────┐ ┌──────────────────────────────────┐ │ -││ │ Plan Graph │ │ Abstract Syntax Tree │ │ -││ │ │ │ │ │ -││ │ │ │ │ │ -││ │ ┌─┐ │ │ ┌─┐ │ │ -││ │ ┌──┴─┘ │ │ ┌──┴─┴──┐ │ │ -││ │ │ │ │ │ │ │ │ -││ │ ┌▼┐ ┌──┼─┼──┐ ┌▼┐ ┌▼┐ │ │ -││ │ └─┴──┐ │ │ │ │ ┌──┴─┴──┐ └─┘ │ │ -││ │ │ │ │ ▼ │ │ │ │ -││ │ ┌▼┐ ▲ │ │ ┌▼┐ ┌▼┐ │ │ -││ │ └─┴──┐ │ │ │ │ └─┘ ┌──┴─┴──┐ │ │ -││ │ │ └──┼─┼──┘ │ │ │ │ -││ │ ┌▼┐ │ │ ┌▼┐ ┌▼┐ │ │ -││ │ └─┘ │ │ └─┘ └─┘ │ │ -││ │ │ │ │ │ -││ │ │ │ │ │ -││ │ │ │ │ │ -││ │ │ │ │ │ -││ └───────────────────────────────────┘ └──────────────────────────────────┘ │ -││ │ -└┴─────┬──▲───────────────────────────────────────────────────────────────────┘ - │ │ -┌┬─────▼──┴───────────────────────────┐ ┌┬───────────────────────────────────┐ -││ Prompt Context │ ││ LLM │ -││ │ ││ │ -││ - plan graph │ ││ GPT4-Turbo, Claude 3, BYOM │ -││ - errors ├──►│ │ -││ - code │ ││ │ -││ ◄──┼│ │ -││ │ ││ │ -││ │ ││ │ -││ │ ││ │ -└┴────────────────────────────────────┘ └┴───────────────────────────────────┘ -``` - -#### Abstract Syntax Tree - -The AST is generated from **[ts-morph](https://github.com/dsherret/ts-morph)**. This AST allows `bumpgen` to understand the relationship between nodes in a codebase. - -#### Plan Graph - -The plan graph is a concept detailed in **[codeplan](https://huggingface.co/papers/2309.12499)** by Microsoft. The plan graph allows `bumpgen` to not only fix an issue at a point but also fix the 2nd order breaking changes from the fix itself. In short, it allows `bumpgen` to propagate a fix to the rest of the codebase. - -#### Prompt Context - -We pass the plan graph, the error, and the actual file with the breaking change as context to the LLM to maximize its ability to fix the issue. - -#### LLM - -We only support `gpt-4-turbo-preview` at this time. - -

- meme -

- -## ⏱️ Benchmark - -``` -bumpgen + GPT-4 Turbo ██████████░░░░░░░░░░░ 45% (67 tasks) -``` - -We benchmarked `bumpgen` with GPT-4 Turbo against a [suite](https://github.com/xeol-io/swe-bump-bench) of version bumps with breaking changes. You can check out the evals [here](https://github.com/xeol-io/swe-bump-bench/tree/main/evals/bumpgen/v_8df9f7de936707815eb12e226517a1b0023383eb). - -## 🎁 Contributing - -Contributions are welcome! To get set up for development, see [Development](./.github/development.md). - -#### Roadmap - -- [x] codeplan -- [x] Typescript/TSX support -- [ ] `bumpgen` GitHub app -- [ ] Embeddings for different package versions -- [ ] Use test runners as an oracle -- [ ] C# support -- [ ] Java support -- [ ] Go support - -[Join](https://discord.gg/J7E9BqVHkG) our Discord community to contribute, learn more, and ask questions!