gl_lint 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70aa764f228d4331b343a9a8f5c6aa59177f17e289250c3a1a01a76f1b2d1002
4
- data.tar.gz: 9a60b75e56737988e02278de20e8faf49e802bde9f0e64f70112c864d9f65622
3
+ metadata.gz: 836ecbd9eb8d9a231c39ae7241b7070c1af7d146ba3c3228949e1cea281c8201
4
+ data.tar.gz: 373971c3b5a492c56afb983d1e53a44e354cb597ec9183d72dd8a5a15d2e077e
5
5
  SHA512:
6
- metadata.gz: ba11e437c2a9f9dbf57cc5d4a719907ad96f2f8094de2b6c89b52bccdd0c7c4bbd3e3f3091924ec36a0332cfa0ea1470599c5bc2de22536c89d2f1cff040d6b4
7
- data.tar.gz: f297f964e00bb7e8f7ee0613ecff2efad81655c3c61c86cf6ab7ccbb0ca3e0d782fbc04b0fa0ba3e9d1aaf7ee699a03a697195d8eb065bbf0588a76c10d9b95c
6
+ metadata.gz: a80e065d4e61a72eac3ed35a9045e4ab993f13a8f1851187a7cfa98735b92ceae26255d4e466cd7764e9e05d1f919b39a280bc06d90775876825d0641a068683
7
+ data.tar.gz: a7520aac3a6a0a9ea9a131d1b42ecd52c08c77fd7ae00b4734eaf535cb5b8277fcbb9bd40633496f0fb04fd4425bbf87b4c2fab7322db4b05f2ba8d089d0c8a9
data/README.md CHANGED
@@ -1,6 +1,13 @@
1
- # Give Lively Lint
1
+ # Give Lively Lint runner
2
+
3
+ `GLLint` is a Ruby gem that handles running linters against specific files (e.g. just the changed files from a branch). It leverages `git`, `rubocop` and `eslint`
4
+
5
+ This is particularly useful for large projects where you don't want to lint all the files in the project.
6
+
7
+ At Give Lively, we add a file to `bin/lint` and have it call this gem to lint with autocorrect.
8
+
9
+ GLLint also adds a way to create a yaml file with all the currently configured rubocop rules (`.rubocop_rules.yml`). This is done via `bin/lint --write-rubocop-rules`. This file is useful to compare what changes when updating Rubocop rules, changing gems or Ruby versions.
2
10
 
3
- Linting tool.
4
11
 
5
12
  ## Installation
6
13
 
@@ -18,11 +25,11 @@ Or install it yourself as:
18
25
 
19
26
  $ gem install gl_lint
20
27
 
21
- ## Usage
28
+ ### bin/lint
22
29
 
23
30
  Create a an executable `bin/lint` file with:
24
31
 
25
- `touch bin/lint && chmod 755 bin/lint`
32
+ `touch bin/lint && chmod +x bin/lint`
26
33
 
27
34
  Then add this to the file:
28
35
 
@@ -34,11 +41,11 @@ require 'gl_lint'
34
41
  GLLint.call_cli(app_root: File.expand_path('..', __dir__))
35
42
  ```
36
43
 
37
- Then run `bin/lint` to lint your changes
44
+ Then run `bin/lint` to lint your changes.
38
45
 
39
- Alternatively, if your project doesn't have JavaScript, add `linters: ['rubocop/]`
46
+ Alternatively, if your project doesn't have JavaScript, add `linters: ['rubocop']`
40
47
 
41
48
  ```ruby
42
49
  GLLint.call_cli(app_root: File.expand_path('..', __dir__),
43
- linters: ['rubocop'])
50
+ linters: ['rubocop'])
44
51
  ```
data/gl_lint.gemspec CHANGED
@@ -26,9 +26,6 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency 'optparse'
28
28
  spec.add_dependency 'rubocop'
29
- spec.add_dependency 'rubocop-performance'
30
- spec.add_dependency 'rubocop-rake'
31
- spec.add_dependency 'rubocop-rspec'
32
29
 
33
30
  spec.metadata['rubygems_mfa_required'] = 'true'
34
31
  end
data/lib/gl_lint/cli.rb CHANGED
@@ -2,7 +2,7 @@ require 'optparse'
2
2
 
3
3
  module GLLint
4
4
  class CLI
5
- LINTERS = %w[rubocop prettier].freeze
5
+ LINTERS = %w[rubocop eslint].freeze
6
6
  DEFAULT_TARGET = '--changed'.freeze
7
7
 
8
8
  TARGET_FILE_OPTS = [
@@ -33,11 +33,11 @@ module GLLint
33
33
  options[:linters] = ['rubocop']
34
34
  end
35
35
 
36
- parser.on('--prettier', 'Lints only with prettier') do
37
- raise "This project doesn't support rubocop" unless LINTERS.include?('prettier')
38
- raise "You can't pass both --rubocop and --prettier" if options[:linters] == ['rubocop']
36
+ parser.on('--eslint', 'Lints only with eslint') do
37
+ raise "This project doesn't support rubocop" unless LINTERS.include?('eslint')
38
+ raise "You can't pass both --rubocop and --eslint" if options[:linters] == ['rubocop']
39
39
 
40
- options[:linters] = ['prettier']
40
+ options[:linters] = ['eslint']
41
41
  end
42
42
 
43
43
  parser.on('--no-fix', 'Does not auto-fix') do
@@ -77,7 +77,9 @@ module GLLint
77
77
  options[:filenames] = ARGV
78
78
  puts "passed files: #{options[:filenames]}"
79
79
 
80
- raise "Passed both 'filenames' and 'target files': #{options[:target_files]}" if options[:target_files]
80
+ if options[:target_files]
81
+ raise "Passed both 'filenames' and 'target files': #{options[:target_files]}"
82
+ end
81
83
  end
82
84
  options[:target_files] ||= options[:default_target]
83
85
  options
@@ -7,10 +7,9 @@ module GLLint
7
7
  StyleGuide SupportedStyles].freeze
8
8
 
9
9
  def write_rules(app_root)
10
- puts 'Updating .rubocop_rules.yml'
10
+ puts "Updating .rubocop_rules.yml - version: #{rubocop_version}"
11
11
 
12
- enabled_rules = [['RuboCop-version', rubocop_version]] +
13
- rubocop_rules.map { |arr| stored_rule(app_root, arr) }.compact
12
+ enabled_rules = rubocop_rules.map { |arr| stored_rule(app_root, arr) }.compact
14
13
 
15
14
  File.write('.rubocop_rules.yml', YAML.dump(enabled_rules.to_h))
16
15
  end
@@ -35,7 +34,7 @@ module GLLint
35
34
  end
36
35
 
37
36
  def rubocop_version
38
- `rubocop -V`.strip.split("\n").first.split('[').first.strip
37
+ `rubocop -V`.strip.split("\n").first.split('[').first.strip.gsub(' running on', '')
39
38
  end
40
39
  end
41
40
  end
@@ -13,10 +13,10 @@ module GLLint
13
13
  # Make certain that schemas are ignored
14
14
  rubocop_files.reject! { |f| f.match?(%r{db/.*schema.rb}) }
15
15
 
16
- prettier_files = selected_files.grep(/\.(js|jsx|css)\z/)
16
+ eslint_files = selected_files.grep(/\.(js|jsx|css)\z/)
17
17
  end
18
18
 
19
- { rubocop: rubocop_files, prettier: prettier_files }
19
+ { rubocop: rubocop_files, eslint: eslint_files }
20
20
  end
21
21
 
22
22
  private
@@ -8,7 +8,7 @@ module GLLint
8
8
 
9
9
  lint_ruby_files(linters, target_files, files[:rubocop], lint_strategy)
10
10
 
11
- lint_prettier_files(linters, target_files, files[:prettier], lint_strategy)
11
+ lint_eslint_files(linters, target_files, files[:eslint], lint_strategy)
12
12
 
13
13
  puts '' # Add some space after printing linting out
14
14
 
@@ -59,15 +59,15 @@ module GLLint
59
59
  )
60
60
  end
61
61
 
62
- def lint_prettier_files(linters, target_files, files, strategy)
63
- return unless linters.include?('prettier')
62
+ def lint_eslint_files(linters, target_files, files, strategy)
63
+ return unless linters.include?('eslint')
64
64
 
65
- result = print_files(target_files, files, strategy, 'Prettier')
65
+ result = print_files(target_files, files, strategy, 'eslint')
66
66
  return if result == :skip_lint
67
67
 
68
68
  # Need to manually call eslint, the package.json script specifies the folders to lint
69
- prettier_command = strategy == :no_fix ? 'eslint' : 'eslint --fix'
70
- run_linter("yarn run #{prettier_command} #{files&.join(' ')}")
69
+ eslint_command = strategy == :no_fix ? 'eslint' : 'eslint --fix'
70
+ run_linter("yarn run #{eslint_command} #{files&.join(' ')}")
71
71
  end
72
72
  end
73
73
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GLLint
4
- VERSION = '0.5.0'
4
+ VERSION = '0.6.0'
5
5
  end
data/lib/gl_lint.rb CHANGED
@@ -12,8 +12,8 @@ module GLLint
12
12
  call(**options.except(:verbose, :default_target))
13
13
  end
14
14
 
15
- def call(app_root:, write_rubocop_rules: false, no_fix: false, list_only: false, unsafe_fix: false, linters: nil,
16
- target_files: nil, filenames: nil)
15
+ def call(app_root:, write_rubocop_rules: false, no_fix: false, list_only: false,
16
+ unsafe_fix: false, linters: nil, target_files: nil, filenames: nil)
17
17
 
18
18
  Dir.chdir(app_root) do
19
19
  if write_rubocop_rules
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gl_lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Give Lively
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-19 00:00:00.000000000 Z
11
+ date: 2025-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: optparse
@@ -38,48 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rubocop-performance
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rubocop-rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop-rspec
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
41
  description:
84
42
  email:
85
43
  executables: []