Skip to content

Command Line Interface

Brendan Maginnis edited this page Oct 8, 2020 · 1 revision

Sourcery Command Line Interface

Installation and usage

Installation

Sourcery command line interface can be installed by running:

pip install sourcery-cli

Login

Once installed you can interactively login with:

sourcery login

which will open up a browser tab and ask for confirmation. This is only needed once per computer.

Please be aware that the Sourcery CLI requires a Team subscription to use. You can upgrade here.

Usage

To display suggested refactorings as a diff:

sourcery refactor {file_or_directory}

And to apply those changes to the files:

sourcery refactor --in-place {file_or_directory}

Command line options

Sourcery provides a few options for running. You can list them by running sourcery refactor --help

sourcery refactor --help

Usage: sourcery refactor [OPTIONS] [SRC]...

  Refactor SRC files/directories. Reads from stdin when SRC is -

Options:
  -c, --code TEXT     Refactor the code passed in as a string.
  --check             Return exit code 1 if refactorings found.  [default:
                      False]

  --diff / --no-diff  Output a diff for each file on stdout.  [default: True]
  --in-place          Make changes to files in place  [default: False]
  -h, --help          Show this message and exit.

Configuration

Sourcery reads configuration settings from .sourcery.yaml in the project directory. Full details are described here.

Precommit Hook

Sourcery works great with pre-commit. Once you have it installed, add this to the .pre-commit-config.yaml in your repository:

repos:
  - repo: https://github.com/sourcery-ai/sourcery
    rev: v0.8.0 # Get the latest tag from https://github.com/sourcery-ai/sourcery/tags
    hooks:
      - id: sourcery
      # - args: [--in-place]  Automatically apply the refactorings in the hook

Then run pre-commit install and you're ready to go.

Continuous Integration

Here's a script to run Sourcery in CI that will fail the job if any refactorings are found:

# Install sourcery
pip install sourcery-cli
# Login - store SOURCERY_TOKEN in a secret/masked environment variable
sourcery login --token $SOURCERY_TOKEN
# Find changed files and pass them to Sourcery
git diff master --name-only | xargs sourcery refactor --check