Commit 17b7973
Changed files (14)
.github
workflows
exe
lib
jive
test
.github/workflows/ci.yml
@@ -12,10 +12,17 @@ jobs:
ruby-version: ['2.5', '2.6', '2.7', '3.0']
steps:
- uses: actions/checkout@v2
- - name: Set up Ruby
- uses: ruby/setup-ruby@v1
+ - uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version }}
bundler-cache: true
- - name: Running tests…
- run: ./bin/test
+ - run: ./bin/test
+ style:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: '3'
+ bundler-cache: true
+ - run: ./bin/style
bin/console
@@ -1,4 +1,5 @@
#!/usr/bin/env ruby
+# frozen_string_literal: true
require "bundler/setup"
require "jive"
bin/style
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+cd "$(dirname "$0")/.."
+
+bundle exec rubocop "$@"
bin/test
@@ -3,4 +3,10 @@ set -e
cd "$(dirname "$0")/.."
-bundle exec ruby -Ilib:test test/**/*_test.rb
+export RUBYOPT="-Ilib:test"
+
+if [ $# -gt 0 ]; then
+ bundle exec ruby "$@"
+else
+ bundle exec ruby test/**/*_test.rb
+fi
exe/jive
@@ -1,3 +1,4 @@
-#!/usr/bin/env ruby
+#!/usr/bin/env -S ruby --disable-gems
+# frozen_string_literal: true
require "jive"
lib/jive/version.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Jive
VERSION = "0.1.0"
end
lib/jive.rb
@@ -23,12 +23,13 @@ module Jive
def self.popen_with_detail(command, path = Dir.pwd, env = {})
FileUtils.mkdir_p(path) unless File.directory?(path)
- captured_stdout = ''
- captured_stderr = ''
+ captured_stdout = ""
+ captured_stderr = ""
exit_status = nil
start = Time.now
- Open3.popen3(env.merge('PWD' => path), *Array(command), { chdir: path }) do |stdin, stdout, stderr, wait_thr|
+ Open3.popen3(env.merge("PWD" => path), *Array(command),
+ { chdir: path }) do |stdin, stdout, stderr, wait_thr|
out_reader = Thread.new { stdout.read }
err_reader = Thread.new { stderr.read }
@@ -39,14 +40,15 @@ module Jive
captured_stderr = err_reader.value
exit_status = wait_thr.value
end
- Result.new(command, captured_stdout, captured_stderr, exit_status, Time.now - start)
+ Result.new(command, captured_stdout, captured_stderr, exit_status,
+ Time.now - start)
end
end
class BatchRunner
attr_reader :runner, :stdout
- def initialize(runner: Runner.new, stdout: STDOUT)
+ def initialize(runner: Runner.new, stdout: $stdout)
@runner = runner
@stdout = stdout
end
@@ -54,27 +56,27 @@ module Jive
def run(tasks, verbose: true)
runner.run(tasks) do |command, &run|
stdout.puts
- stdout.puts "$ #{command.join(' ')}"
+ stdout.puts "$ #{command.join(" ")}"
result = run.call
stdout.print result.stdout if verbose
stdout.print result.stderr if verbose
stdout.puts "==> Finished in #{result.duration} seconds"
stdout.puts
end
- stdout.puts '==================================================='
+ stdout.puts "==================================================="
if runner.all_success_and_clean?
- stdout.puts 'Passed successfully.'
- return 0
+ stdout.puts "Passed successfully."
+ 0
elsif runner.all_success?
- stdout.puts 'Passed successfully, but we have warnings:'
+ stdout.puts "Passed successfully, but we have warnings:"
stdout.puts
emit_warnings
- return 2
+ 2
else
- stdout.puts 'Something failed:'
+ stdout.puts "Something failed:"
emit_warnings
emit_errors
- return 1
+ 1
end
end
@@ -83,7 +85,7 @@ module Jive
def emit_warnings
runner.warned_results.each do |result|
stdout.puts
- stdout.puts "**** #{result.command.join(' ')} had the following warning(s):"
+ stdout.puts "**** #{result.command.join(" ")} had the following warning(s):"
stdout.puts
stdout.puts result.stderr
stdout.puts
@@ -93,7 +95,7 @@ module Jive
def emit_errors
runner.failed_results.each do |result|
stdout.puts
- stdout.puts "**** #{result.command.join(' ')} failed with the following error(s):"
+ stdout.puts "**** #{result.command.join(" ")} failed with the following error(s):"
stdout.puts
stdout.puts result.stdout
stdout.puts result.stderr
test/unit/jive_test.rb
@@ -1,7 +1,9 @@
-require 'test_helper'
+# frozen_string_literal: true
+
+require "test_helper"
class JiveTest < Minitest::Test
- def test_version
+ def test_that_it_has_a_version_number
refute_nil Jive::VERSION
end
end
test/test_helper.rb
@@ -1,3 +1,5 @@
-require 'minitest'
-require 'minitest/autorun'
-require 'jive'
+# frozen_string_literal: true
+
+$LOAD_PATH.unshift File.expand_path("../lib", __dir__)
+require "jive"
+require "minitest/autorun"
.rubocop.yml
@@ -0,0 +1,16 @@
+AllCops:
+ TargetRubyVersion: 2.5
+
+Layout/LineLength:
+ Max: 120
+
+Style/Documentation:
+ Enabled: false
+
+Style/StringLiterals:
+ Enabled: true
+ EnforcedStyle: double_quotes
+
+Style/StringLiteralsInInterpolation:
+ Enabled: true
+ EnforcedStyle: double_quotes
Gemfile
@@ -1,4 +1,10 @@
+# frozen_string_literal: true
+
source "https://rubygems.org"
# Specify your gem's dependencies in jive.gemspec
gemspec
+
+gem "minitest", "~> 5.0"
+gem "rake", "~> 13.0"
+gem "rubocop", "~> 1.7"
Gemfile.lock
@@ -7,17 +7,38 @@ PATH
GEM
remote: https://rubygems.org/
specs:
+ ast (2.4.2)
minitest (5.14.3)
- rake (10.5.0)
+ parallel (1.20.1)
+ parser (3.0.0.0)
+ ast (~> 2.4.1)
+ rainbow (3.0.0)
+ rake (13.0.3)
+ regexp_parser (2.0.3)
+ rexml (3.2.4)
+ rubocop (1.9.1)
+ parallel (~> 1.10)
+ parser (>= 3.0.0.0)
+ rainbow (>= 2.2.2, < 4.0)
+ regexp_parser (>= 1.8, < 3.0)
+ rexml
+ rubocop-ast (>= 1.2.0, < 2.0)
+ ruby-progressbar (~> 1.7)
+ unicode-display_width (>= 1.4.0, < 3.0)
+ rubocop-ast (1.4.1)
+ parser (>= 2.7.1.5)
+ ruby-progressbar (1.11.0)
thor (1.1.0)
+ unicode-display_width (2.0.0)
PLATFORMS
ruby
DEPENDENCIES
jive!
- minitest (~> 5.14)
- rake (~> 10.0)
+ minitest (~> 5.0)
+ rake (~> 13.0)
+ rubocop (~> 1.7)
BUNDLED WITH
2.2.8
jive.gemspec
@@ -1,6 +1,6 @@
-lib = File.expand_path("lib", __dir__)
-$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
-require "jive/version"
+# frozen_string_literal: true
+
+require_relative "lib/jive/version"
Gem::Specification.new do |spec|
spec.name = "jive"
@@ -8,23 +8,24 @@ Gem::Specification.new do |spec|
spec.authors = ["mo khan"]
spec.email = ["mo@mokhan.ca"]
- spec.summary = %q{The art just comes.}
- spec.description = %q{The art just comes.}
+ spec.summary = "The art just comes."
+ spec.description = "The art just comes."
spec.homepage = "https://rubygems.org/gems/jive"
spec.license = "MIT"
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
spec.metadata["homepage_uri"] = spec.homepage
# Specify which files should be added to the gem when it is released.
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
+ `git ls-files -z`.split("\x0").reject do |f|
+ f.match(%r{^(test|spec|features)/})
+ end
end
spec.bindir = "exe"
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]
spec.add_dependency "thor", "~> 1.1"
- spec.add_development_dependency "rake", "~> 10.0"
- spec.add_development_dependency "minitest", "~> 5.14"
end
Rakefile
@@ -1,1 +1,14 @@
+# frozen_string_literal: true
+
require "bundler/gem_tasks"
+require "rake/testtask"
+require "rubocop/rake_task"
+
+Rake::TestTask.new(:test) do |task|
+ task.libs << "lib"
+ task.libs << "test"
+ task.test_files = FileList["test/**/*_test.rb"]
+end
+RuboCop::RakeTask.new
+
+task default: %i[test rubocop]