Skip to content
This repository has been archived by the owner on Apr 11, 2023. It is now read-only.

chore: yarn link scripts and docs #116

Merged
merged 1 commit into from
Oct 12, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ node_modules
config
babel.config.js
generated
scripts
41 changes: 40 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,45 @@
yarn
```

If you're working in this repo, you're likely also working in [web](https://github.com/shapeshift/web). Run the following command to automatically `yarn link` all the packages in this repo so they can also be linked in `web`

```bash
➜ yarn link-packages
yarn run v1.22.15
$ node scripts/linkPackages.js link
success Registered "@shapeshiftoss/asset-service".
info You can now run `yarn link "@shapeshiftoss/asset-service"` in the projects where you want to use this package and it will be used instead.
success Registered "@shapeshiftoss/chain-adapters".
info You can now run `yarn link "@shapeshiftoss/chain-adapters"` in the projects where you want to use this package and it will be used instead.
success Registered "@shapeshiftoss/market-service".
info You can now run `yarn link "@shapeshiftoss/market-service"` in the projects where you want to use this package and it will be used instead.
success Registered "@shapeshiftoss/swapper".
info You can now run `yarn link "@shapeshiftoss/swapper"` in the projects where you want to use this package and it will be used instead.
success Registered "@shapeshiftoss/types".
info You can now run `yarn link "@shapeshiftoss/types"` in the projects where you want to use this package and it will be used instead.

✨ Done in 0.47s.
```

Similary you can unlink packages, which can be useful for debugging failing CI runs
```bash
➜ yarn unlink-packages
yarn run v1.22.15
$ node scripts/linkPackages.js unlink
success Unregistered "@shapeshiftoss/asset-service".
info You can now run `yarn unlink "@shapeshiftoss/asset-service"` in the projects where you no longer want to use this package.
success Unregistered "@shapeshiftoss/chain-adapters".
info You can now run `yarn unlink "@shapeshiftoss/chain-adapters"` in the projects where you no longer want to use this package.
success Unregistered "@shapeshiftoss/market-service".
info You can now run `yarn unlink "@shapeshiftoss/market-service"` in the projects where you no longer want to use this package.
success Unregistered "@shapeshiftoss/swapper".
info You can now run `yarn unlink "@shapeshiftoss/swapper"` in the projects where you no longer want to use this package.
success Unregistered "@shapeshiftoss/types".
info You can now run `yarn unlink "@shapeshiftoss/types"` in the projects where you no longer want to use this package.

✨ Done in 0.37s.
```

## Testing

Bug fixes and features should always come with tests, when applicable. Test files should live next to the file they are testing. Before submitting your changes in a pull request, always run the full test suite.
Expand All @@ -23,7 +62,7 @@ yarn test:dev

**Helpful Testing Process**

One technique that can helpful when writing tests, is to reference the coverage report for the file/function/feature you're testing. To do this, run `yarn test:dev` from your terminal. This will generate a coverage report for the project in the `coverage` directory. To view the report, open the file `coverage/lcov-report/index.html`.
One technique that can helpful when writing tests, is to reference the coverage report for the file/function/feature you're testing. To do this, run `yarn test:dev` from your terminal. This will generate a coverage report for the project in the `coverage` directory. To view the report, open the file `coverage/lcov-report/index.html`.

## Contributing

Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
"clean": "rimraf node_modules dist packages/**/dist",
"dev": "lerna run dev --stream --parallel",
"lint": "eslint --cache .",
"link-packages": "node scripts/linkPackages.js link",
"unlink-packages": "node scripts/linkPackages.js unlink",
"test": "jest",
"test:dev": "jest --watch",
"type-check": "lerna run type-check",
Expand Down
19 changes: 19 additions & 0 deletions scripts/linkPackages.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const { readdirSync } = require('fs')
const util = require('util')
const exec = util.promisify(require('child_process').exec)

async function main() {
// link or unlink
const args = process.argv.slice(2)
const prefix = args[0] === 'unlink' ? 'un' : ''
// get package names
const lsPackages = readdirSync('packages', { withFileTypes: true })
const packageDirectories = lsPackages.filter(dir => dir.isDirectory())
const packageNames = packageDirectories.map(({ name }) => name)
// do linky things
const promises = packageNames.map(async package => (await exec(`cd packages/${package} && yarn ${prefix}link --colors`)).stdout)
const result = (await Promise.all(promises)).join('')
console.log(result)
}

main()