diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..83e16f8 --- /dev/null +++ b/.rspec @@ -0,0 +1,2 @@ +--color +--require spec_helper diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..f7e84ec --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,3 @@ +AllCops: + Exclude: + - vendor/**/* diff --git a/.simplecov b/.simplecov new file mode 100644 index 0000000..4c1a5f7 --- /dev/null +++ b/.simplecov @@ -0,0 +1,8 @@ +require 'coveralls' + +SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[ + SimpleCov::Formatter::HTMLFormatter, + Coveralls::SimpleCov::Formatter, +] + +SimpleCov.start { add_filter '/spec/' } diff --git a/.travis.yml b/.travis.yml index 348801e..a050099 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,14 @@ language: ruby + rvm: - - 2.0.0 + - 2.0 + - 2.1 + - 2.2 + script: bundle exec rake + before_install: - gem update --system + services: - redis-server diff --git a/.yardopts b/.yardopts new file mode 100644 index 0000000..e72742d --- /dev/null +++ b/.yardopts @@ -0,0 +1,5 @@ +--protected +--private +--markup markdown +- +LICENSE diff --git a/Gemfile b/Gemfile index b4e2a20..222c596 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,6 @@ -source "https://rubygems.org" +source 'https://rubygems.org' +# Specify your gem's dependencies in lita-tox.gemspec gemspec + +gem 'coveralls', require: false diff --git a/README.md b/README.md index 0e97593..64e5d1d 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,8 @@ -# lita-tox +Lita::Adapters::Tox +=================== -[![Build Status](https://travis-ci.org/braiden-vasco/lita-tox.png?branch=master)](https://travis-ci.org/braiden-vasco/lita-tox) -[![Coverage Status](https://coveralls.io/repos/braiden-vasco/lita-tox/badge.png)](https://coveralls.io/r/braiden-vasco/lita-tox) +[![Gem Version](https://badge.fury.io/rb/lita-tox.svg)](http://badge.fury.io/rb/lita-tox) +[![Build Status](https://travis-ci.org/braiden-vasco/lita-tox.svg)](https://travis-ci.org/braiden-vasco/lita-tox) +[![Coverage Status](https://coveralls.io/repos/braiden-vasco/lita-tox/badge.svg)](https://coveralls.io/r/braiden-vasco/lita-tox) -TODO: Add a description of the plugin. - -## Installation - -Add lita-tox to your Lita instance's Gemfile: - -``` ruby -gem "lita-tox" -``` - -## Configuration - -TODO: Describe any configuration attributes the plugin exposes. - -## Usage - -TODO: Describe the plugin's features and how to use them. +[Tox](https://tox.chat) adapter for the Lita chat bot diff --git a/Rakefile b/Rakefile index c92b11e..3f05d37 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,31 @@ -require "bundler/gem_tasks" -require "rspec/core/rake_task" +require 'rubygems' -RSpec::Core::RakeTask.new(:spec) +gemspec = Gem::Specification.load('lita-tox.gemspec') -task default: :spec +github_user, github_project = + gemspec.homepage.scan(%r{^https://github\.com/([^/]+)/([^/]+)/?$})[0] + +require 'bundler/gem_tasks' + +task default: [:spec, :lint] + +require 'rspec/core/rake_task' +RSpec::Core::RakeTask.new + +task lint: [:rubocop] + +require 'rubocop/rake_task' +RuboCop::RakeTask.new + +require 'yard' +YARD::Rake::YardocTask.new + +desc 'Generate changelog' +task :changelog, [:token] do |_t, args| + cmd = 'github_changelog_generator' + cmd << " -u #{github_user}" + cmd << " -p #{github_project}" + cmd << " -t #{args[:token]}" if args[:token] + + sh cmd +end diff --git a/bin/console b/bin/console new file mode 100755 index 0000000..8a51fab --- /dev/null +++ b/bin/console @@ -0,0 +1,14 @@ +#!/usr/bin/env ruby + +require 'bundler/setup' +require 'lita/tox' + +# You can add fixtures and/or initialization code here to make experimenting +# with your gem easier. You can also use a different console, if you like. + +# (If you use this, don't forget to add pry to your Gemfile!) +# require "pry" +# Pry.start + +require 'irb' +IRB.start diff --git a/bin/setup b/bin/setup new file mode 100755 index 0000000..b65ed50 --- /dev/null +++ b/bin/setup @@ -0,0 +1,7 @@ +#!/bin/bash +set -euo pipefail +IFS=$'\n\t' + +bundle install + +# Do any other automated setup that you need to do here diff --git a/lib/lita-tox.rb b/lib/lita-tox.rb index 6b12e0f..edb9a2f 100644 --- a/lib/lita-tox.rb +++ b/lib/lita-tox.rb @@ -1,7 +1,9 @@ -require "lita" +# rubocop:disable Style/FileName + +require 'lita' Lita.load_locales Dir[File.expand_path( - File.join("..", "..", "locales", "*.yml"), __FILE__ + File.join('..', '..', 'locales', '*.yml'), __FILE__ )] -require "lita/adapters/tox" +require 'lita/adapters/tox' diff --git a/lita-tox.gemspec b/lita-tox.gemspec index ac7f626..9f59317 100644 --- a/lita-tox.gemspec +++ b/lita-tox.gemspec @@ -1,26 +1,34 @@ +# coding: utf-8 + Gem::Specification.new do |spec| - spec.name = "lita-tox" - spec.version = "0.1.0" - spec.authors = ["Braiden Vasco"] - spec.email = ["braiden-vasco@mailtor.net"] - spec.description = "TODO: Add a description" - spec.summary = "TODO: Add a summary" - spec.homepage = "TODO: Add a homepage" - spec.license = "TODO: Add a license" - spec.metadata = { "lita_plugin_type" => "adapter" } + spec.name = 'lita-tox' + spec.version = '0.0.0' + spec.authors = ['Braiden Vasco'] + spec.email = ['braiden-vasco@mailtor.net'] - spec.files = `git ls-files`.split($/) - spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } - spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) - spec.require_paths = ["lib"] + spec.summary = 'Tox adapter for the Lita chat bot' + spec.description = 'Tox adapter for the Lita chat bot.' + spec.homepage = 'https://github.com/braiden-vasco/lita-tox' + spec.license = 'MIT' - spec.add_runtime_dependency "lita", ">= 4.4" + spec.metadata['lita_plugin_type'] = 'adapter' - spec.add_development_dependency "bundler", "~> 1.3" - spec.add_development_dependency "pry-byebug" - spec.add_development_dependency "rake" - spec.add_development_dependency "rack-test" - spec.add_development_dependency "rspec", ">= 3.0.0" - spec.add_development_dependency "simplecov" - spec.add_development_dependency "coveralls" + spec.files = `git ls-files -z`.split("\x0").reject do |f| + f.match(%r{^(test|spec|features)/}) + end + + spec.bindir = 'exe' + spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } + spec.require_paths = ['lib'] + + spec.add_development_dependency 'bundler', '~> 1.7' + spec.add_development_dependency 'rake', '~> 10.0' + spec.add_development_dependency 'rubocop', '~> 0.31' + spec.add_development_dependency 'rspec', '~> 3.3' + spec.add_development_dependency 'simplecov', '~> 0.10' + spec.add_development_dependency 'yard', '~> 0.8' + spec.add_development_dependency 'redcarpet', '~> 3.3' + spec.add_development_dependency 'github_changelog_generator', '~> 1.6' + + spec.add_runtime_dependency 'lita', '~> 4.4' end diff --git a/spec/lita/adapters/tox_spec.rb b/spec/lita/adapters/tox_spec.rb index 340598c..5554123 100644 --- a/spec/lita/adapters/tox_spec.rb +++ b/spec/lita/adapters/tox_spec.rb @@ -1,4 +1,2 @@ -require "spec_helper" - describe Lita::Adapters::Tox, lita: true do end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 189c063..f1cf5a8 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,14 +1,109 @@ -require "simplecov" -require "coveralls" -SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[ - SimpleCov::Formatter::HTMLFormatter, - Coveralls::SimpleCov::Formatter -] -SimpleCov.start { add_filter "/spec/" } +# This should be on the top of the file +require 'simplecov' -require "lita-tox" -require "lita/rspec" +# rubocop:disable Style/BlockComments -# A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin -# was generated with Lita 4, the compatibility mode should be left disabled. +require 'lita-tox' +require 'lita/rspec' + +# A compatibility mode is provided for older plugins upgrading from Lita 3. +# Since this plugin was generated with Lita 4, the compatibility mode +# should be left disabled. Lita.version_3_compatibility_mode = false + +# This file was generated by the `rspec --init` command. Conventionally, all +# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. +# The generated `.rspec` file contains `--require spec_helper` which will cause +# this file to always be loaded, without a need to explicitly require it in any +# files. +# +# Given that it is always loaded, you are encouraged to keep this file as +# light-weight as possible. Requiring heavyweight dependencies from this file +# will add to the boot time of your test suite on EVERY test run, even for an +# individual file that may not need all of that loaded. Instead, consider making +# a separate helper file that requires the additional dependencies and performs +# the additional setup, and require it from the spec files that actually need +# it. +# +# The `.rspec` file also contains a few flags that are not defaults but that +# users commonly want. +# +# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration +RSpec.configure do |config| + # rspec-expectations config goes here. You can use an alternate + # assertion/expectation library such as wrong or the stdlib/minitest + # assertions if you prefer. + config.expect_with :rspec do |expectations| + # This option will default to `true` in RSpec 4. It makes the `description` + # and `failure_message` of custom matchers include text for helper methods + # defined using `chain`, e.g.: + # be_bigger_than(2).and_smaller_than(4).description + # # => "be bigger than 2 and smaller than 4" + # ...rather than: + # # => "be bigger than 2" + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + + # rspec-mocks config goes here. You can use an alternate test double + # library (such as bogus or mocha) by changing the `mock_with` option here. + config.mock_with :rspec do |mocks| + # Prevents you from mocking or stubbing a method that does not exist on + # a real object. This is generally recommended, and will default to + # `true` in RSpec 4. + mocks.verify_partial_doubles = true + end + +# The settings below are suggested to provide a good initial experience +# with RSpec, but feel free to customize to your heart's content. +=begin + # These two settings work together to allow you to limit a spec run + # to individual examples or groups you care about by tagging them with + # `:focus` metadata. When nothing is tagged with `:focus`, all examples + # get run. + config.filter_run :focus + config.run_all_when_everything_filtered = true + + # Allows RSpec to persist some state between runs in order to support + # the `--only-failures` and `--next-failure` CLI options. We recommend + # you configure your source control system to ignore this file. + config.example_status_persistence_file_path = "spec/examples.txt" + + # Limits the available syntax to the non-monkey patched syntax that is + # recommended. For more details, see: + # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax + # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ + # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching + config.disable_monkey_patching! + + # This setting enables warnings. It's recommended, but in some cases may + # be too noisy due to issues in dependencies. + config.warnings = true + + # Many RSpec users commonly either run the entire suite or an individual + # file, and it's useful to allow more verbose output when running an + # individual spec file. + if config.files_to_run.one? + # Use the documentation formatter for detailed output, + # unless a formatter has already been configured + # (e.g. via a command-line flag). + config.default_formatter = 'doc' + end + + # Print the 10 slowest examples and example groups at the + # end of the spec run, to help surface which specs are running + # particularly slow. + config.profile_examples = 10 + + # Run specs in random order to surface order dependencies. If you find an + # order dependency and want to debug it, you can fix the order by providing + # the seed, which is printed after each run. + # --seed 1234 + config.order = :random + + # Seed global randomization in this process using the `--seed` CLI option. + # Setting this allows you to use `--seed` to deterministically reproduce + # test failures related to randomization by passing the same `--seed` value + # as the one that triggered the failure. + Kernel.srand config.seed +=end +end