keela 0.0.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Keela
4
+ # Base class for detection strategies.
5
+ #
6
+ # Subclasses define how to find definitions and detect usage for
7
+ # different types of code (methods, scopes, etc.)
8
+ #
9
+ class Strategy
10
+ # Human-readable name for this strategy (e.g., "methods", "scopes")
11
+ def name
12
+ raise NotImplementedError, "#{self.class} must implement #name"
13
+ end
14
+
15
+ # Regex pattern to match files that may contain definitions
16
+ # (e.g., /app\/models/ for scopes)
17
+ def definition_file_pattern
18
+ raise NotImplementedError, "#{self.class} must implement #definition_file_pattern"
19
+ end
20
+
21
+ # Extract a definition name from a line of code, or nil if no definition found
22
+ def extract_definition(line)
23
+ raise NotImplementedError, "#{self.class} must implement #extract_definition"
24
+ end
25
+
26
+ # Build a regex to detect usage of the given definition name
27
+ def usage_regex(name)
28
+ raise NotImplementedError, "#{self.class} must implement #usage_regex"
29
+ end
30
+
31
+ # Whether to skip lines that start with # (comments)
32
+ def skip_comments?
33
+ false
34
+ end
35
+
36
+ # Override this method for strategies that need custom file parsing
37
+ # (e.g., YAML files for I18n keys).
38
+ # Returns an array of { name:, file: } hashes, or nil to use default line-by-line parsing.
39
+ def extract_definitions_from_file(_filepath, _lines)
40
+ nil
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Keela
4
+ VERSION = "0.2.0"
5
+ end
data/lib/keela.rb CHANGED
@@ -1,5 +1,36 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "keela/version"
4
+ require_relative "keela/configuration"
5
+ require_relative "keela/config_file"
6
+ require_relative "keela/strategy"
7
+ require_relative "keela/strategies/methods"
8
+ require_relative "keela/strategies/scopes"
9
+ require_relative "keela/strategies/constants"
10
+ require_relative "keela/strategies/delegations"
11
+ require_relative "keela/strategies/attributes"
12
+ require_relative "keela/strategies/i18n_keys"
13
+ require_relative "keela/reporter"
14
+ require_relative "keela/baseline"
15
+ require_relative "keela/scanner"
16
+
3
17
  module Keela
4
- VERSION = '0.0.2'
18
+ class Error < StandardError; end
19
+ class ConfigurationError < Error; end
20
+
21
+ class << self
22
+ attr_writer :configuration
23
+
24
+ def configuration
25
+ @configuration ||= Configuration.new
26
+ end
27
+
28
+ def configure
29
+ yield(configuration)
30
+ end
31
+
32
+ def reset_configuration!
33
+ @configuration = Configuration.new
34
+ end
35
+ end
5
36
  end
metadata CHANGED
@@ -1,26 +1,90 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keela
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kerri Miller
8
- bindir: bin
8
+ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies: []
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: parallel
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.20'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.20'
26
+ - !ruby/object:Gem::Dependency
27
+ name: rainbow
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: ruby-progressbar
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.11'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.11'
12
54
  description: Like the famous CSI dog who found what others missed, Keela detects unused
13
55
  methods and scopes in your Ruby codebase.
14
56
  email: kerrizor@kerrizor.com
15
- executables: []
57
+ executables:
58
+ - keela
16
59
  extensions: []
17
60
  extra_rdoc_files: []
18
61
  files:
62
+ - CHANGELOG.md
63
+ - LICENSE.txt
64
+ - README.md
65
+ - exe/keela
19
66
  - lib/keela.rb
67
+ - lib/keela/baseline.rb
68
+ - lib/keela/config_file.rb
69
+ - lib/keela/configuration.rb
70
+ - lib/keela/reporter.rb
71
+ - lib/keela/scanner.rb
72
+ - lib/keela/strategies/attributes.rb
73
+ - lib/keela/strategies/constants.rb
74
+ - lib/keela/strategies/delegations.rb
75
+ - lib/keela/strategies/i18n_keys.rb
76
+ - lib/keela/strategies/methods.rb
77
+ - lib/keela/strategies/scopes.rb
78
+ - lib/keela/strategy.rb
79
+ - lib/keela/version.rb
20
80
  homepage: https://github.com/kerrizor/keela
21
81
  licenses:
22
82
  - MIT
23
- metadata: {}
83
+ metadata:
84
+ homepage_uri: https://github.com/kerrizor/keela
85
+ source_code_uri: https://github.com/kerrizor/keela
86
+ changelog_uri: https://github.com/kerrizor/keela/blob/main/CHANGELOG.md
87
+ bug_tracker_uri: https://github.com/kerrizor/keela/issues
24
88
  rdoc_options: []
25
89
  require_paths:
26
90
  - lib