executor: node

parameters:
  cache-version:
    type: string
  npm-publish:
    type: boolean
    default: false
  dry-run:
    type: boolean
    default: false
  no-private:
    type: boolean
    default: false

steps:
  - checkout
  - restore-cache:
      version: << parameters.cache-version >>
      cache-name: dependencies
  - set-git-write-access
  - when:
      condition: << parameters.dry-run >>
      steps:
        - run:
            name: Run lerna version (dry run)
            command: yarn lerna version --yes <<# parameters.no-private >>--no-private <</ parameters.no-private >>--no-push --conventional-commits --conventional-graduate --no-git-tag-version --loglevel=verbose
  - unless:
      condition: << parameters.dry-run >>
      steps:
        - run:
            name: Run lerna version
            command: |
              GH_TOKEN=$GITHUB_TOKEN yarn lerna version --yes <<# parameters.no-private >>--no-private <</ parameters.no-private >> --push --conventional-commits --conventional-graduate --create-release=github --no-commit-hooks -m 'chore: release [skip ci]'
  - when:
      condition: << parameters.npm-publish >>
      steps:
        - npm-authenticate
        - run:
            name: Publish to npm registry
            command: yarn lerna publish from-git --yes
