From e8c15ee31e69ac3d73330b1f4a93404be837c2ca Mon Sep 17 00:00:00 2001 From: Peter Somogyvari Date: Mon, 19 Apr 2021 13:26:15 -0700 Subject: [PATCH] docs(build.md): add build script decision tree Signed-off-by: Peter Somogyvari --- BUILD.md | 24 +++++++++++++++++- README.md | 4 +++ .../build-script-decision-tree-2021-03-06.odp | Bin 0 -> 15424 bytes .../build-script-decision-tree-2021-03-06.png | Bin 0 -> 27885 bytes 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 docs/images/build-script-decision-tree-2021-03-06.odp create mode 100644 docs/images/build-script-decision-tree-2021-03-06.png diff --git a/BUILD.md b/BUILD.md index 6c3a021c05..89d7d6aa0a 100644 --- a/BUILD.md +++ b/BUILD.md @@ -1,4 +1,4 @@ -# Hyperledger Cactus SDK Build Instructions +# Hyperledger Cactus Build Instructions This is the place to start if you want to give Cactus a spin on your local machine or if you are planning on contributing. @@ -128,3 +128,25 @@ At this point, with the running API server, you can We recommend you use WSL or WSL2 or any Linux VM. We test most frequently on Ubuntu LTS which at the time of this writing means 18.04 and/or 20.04. + +## Build Script Decision Tree + +The `npm run watch` script should cover 99% of the cases when it comes to working +on Cactus code and having it recompile, but for that last 1% you'll need to +get your hands dirty with the rest of the build scripts. Usually this is only +needed when you are adding new dependencies (npm packages) as part of something +that you are implementing. + +There are a lot of different build scripts in Cactus in order to provide contributors +fine(r) grained control over what parts of the framework they wish build. + +> Q: Why the complexity of so many build scripts? +> +> A: We could just keep it simple with a single build script that builds everything +always, but that would be a nightmare to wait for after having changed a single +line of code for example. + +To figure out which script could work for rebuilding Cactus, please follow +the following decision tree (and keep in mind that we have `npm run watch` too) + +![Build Script Decision Tree](./docs/images/build-script-decision-tree-2021-03-06.png) diff --git a/README.md b/README.md index 63152dd083..61ee3b6154 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,10 @@ Once the last command has finished executing, open link printed on the console w * [Project Wiki](https://wiki.hyperledger.org/display/cactus): Schedule and logs of the maintainer meetings * [Whitepaper](./whitepaper/whitepaper.md): The official document on Cactus design specifications +* [Contributing](./CONTRIBUTING.md): How to get from an idea to an approved pull request +* [Build](./BUILD.md): Instructions on how to set up the project for development + + ![Build Script Decision Tree](./docs/images/build-script-decision-tree-2021-03-06.png) ## Contact * mailing list: [cactus@lists.hyperledger.org](mailto:cactus@lists.hyperledger.org) diff --git a/docs/images/build-script-decision-tree-2021-03-06.odp b/docs/images/build-script-decision-tree-2021-03-06.odp new file mode 100644 index 0000000000000000000000000000000000000000..0d01e55bf1448e2936aaac089cc125b1fdfcb053 GIT binary patch literal 15424 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 Np{A=^rEC}We*uSHIx7GG literal 0 HcmV?d00001