GithubHelp home page GithubHelp logo

pronto's Introduction

Pronto

Code Climate Build Status Gem Version Dependency Status Inline docs

Pronto runs analysis quickly by checking only the relevant changes. Created to be used on pull requests, but also works locally and integrates with GitLab and Bitbucket. Perfect if want to find out quickly if branch introduces changes that conform to your styleguide, are DRY, don't introduce security holes and more.

Pronto demo

Installation

Pronto's installation is standard for a Ruby gem:

$ gem install pronto

You'll also want to install some runners to go along with the main gem:

$ gem install pronto-rubocop
$ gem install pronto-flay

If you'd rather install Pronto using bundler, you don't need to require it, unless you're gonna run it from Ruby (via Rake task, for example):

gem 'pronto'
gem 'pronto-rubocop', require: false
gem 'pronto-flay', require: false

Usage

Pronto runs the checks on a diff between the current HEAD and the provided commit-ish (default is master).

Local Changes

Navigate to the repository you want to run Pronto on, and:

git checkout feature/branch

# Analyze diff of committed changes on current branch and master:
pronto run

# Analyze diff of uncommitted changes and master:
pronto run --index

# Analyze *all* changes since the *initial* commit (may take some time):
pronto run --commit=$(git log --pretty=format:%H | tail -1)

Just run pronto without any arguments to see what Pronto is capable of.

Available Options

Command flag Description
--exit-code Exits with non-zero code if there were any warnings/errors.
-c/--commit Commit for the diff.
-i/--index Analyze changes in git index (staging area).
-r/--runner Run only the passed runners.
-f/--formatters Pick output formatters.

GitHub Integration

You can run Pronto as a step of your CI builds and get the results as comments on GitHub commits using GithubFormatter or GithubPullRequestFormatter.

Add Pronto runners you want to use to your Gemfile:

Set the GITHUB_ACCESS_TOKEN environment variable or value in .pronto.yml to OAuth token that has access to the repository.

Then just run it:

$ GITHUB_ACCESS_TOKEN=token pronto run -f github -c origin/master

or, if you want comments to appear on pull request diff, instead of commit:

$ GITHUB_ACCESS_TOKEN=token pronto run -f github_pr -c origin/master

Use GithubStatusFormatter to submit commit status:

$ GITHUB_ACCESS_TOKEN=token pronto run -f github_status -c origin/master

It's possible to combine multiple formatters. To get both pull request comments and commit status summary use:

$ GITHUB_ACCESS_TOKEN=token PULL_REQUEST_ID=id pronto run -f github_status github_pr -c origin/master

As an alternative, you can also set up a rake task:

Pronto::GemNames.new.to_a.each { |gem_name| require "pronto/#{gem_name}" }

formatter = Pronto::Formatter::GithubFormatter.new # or GithubPullRequestFormatter
status_formatter = Pronto::Formatter::GithubStatusFormatter.new
formatters = [formatter, status_formatter]
Pronto.run('origin/master', '.', formatters)

GitLab Integration

You can run Pronto as a step of your CI builds and get the results as comments on GitLab commits using GitlabFormatter.

note: this requires at least GitLab v7.5.0

Set the GITLAB_API_ENDPOINT environment variable or value in .pronto.yml to your API endpoint URL. If you are using Gitlab.com's hosted service your endpoint will be https://gitlab.com/api/v3. Set the GITLAB_API_PRIVATE_TOKEN environment variable or value in `.pronto.yml to your Gitlab private token which you can find in your account settings.

Then just run it:

$ GITLAB_API_ENDPOINT="https://gitlab.com/api/v3" GITLAB_API_PRIVATE_TOKEN=token pronto run -f gitlab -c origin/master

Bitbucket Integration

You can run Pronto as a step of your CI builds and get the results as comments on Bitbucket commits using BitbucketFormatter or BitbucketPullRequestFormatter.

Add Pronto runners you want to use to your Gemfile:

Set the BITBUCKET_USERNAME and BITBUCKET_PASSWORD environment variables or values in .pronto.yml. .

Then just run it:

$ BITBUCKET_USERNAME=user BITBUCKET_PASSWORD=pass pronto run -f bitbucket -c origin/master

or, if you want comments to appear on pull request diff, instead of commit:

$ BITBUCKET_USERNAME=user BITBUCKET_PASSWORD=pass pronto run -f bitbucket_pr -c origin/master

Configuration

The behavior of Pronto can be controlled via the .pronto.yml configuration file. It must be placed in your project directory.

The file has the following format:

all:
  exclude:
    - 'spec/**/*'
github:
  slug: mmozuras/pronto
  access_token: B26354
  api_endpoint: https://api.github.com/
  web_endpoint: https://github.com/
gitlab:
  slug: mmozuras/42
  api_private_token: 46751
  api_endpoint: https://api.vinted.com/gitlab
bitbucket:
  slug: mmozuras/pronto
  username: user
  password: pass
  web_endpoint: https://bitbucket.org/
max_warnings: 150
verbose: false

All properties that can be specified via .pronto.yml, can also be specified via environment variables. Their names will be the upcased path to the property. For example: GITHUB_SLUG or GITLAB_API_PRIVATE_TOKEN. Environment variables will always take precedence over values in configuration file.

Runners

Pronto can run various tools and libraries, as long as there's a runner for it. Currently available:

Articles

Articles to help you to get started:

Make a Pull Request to add something you wrote or found useful.

Changelog

Pronto's changelog is available here.

Copyright

Copyright (c) 2013-2016 Mindaugas Mozūras. See LICENSE for further details.

pronto's People

Contributors

abinoam avatar ajanauskas avatar andyw8 avatar carakan avatar d-unsed avatar dankohn avatar deees avatar doits avatar edk avatar eliotsykes avatar gabealmer avatar garysweaver avatar hovancik avatar hsbt avatar jamiew avatar jeroenj avatar jhass avatar maksimabramchuk avatar mknapik avatar mmozuras avatar mvz avatar nbekirov avatar raimondasv avatar rrrene avatar seikichi avatar siebertm avatar skateman avatar spajus avatar tadast avatar yoshiori avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.