diff options
author | Annie-Claude Côté <hello@annie.codes> | 2018-06-20 15:03:54 -0400 |
---|---|---|
committer | Annie-Claude Côté <hello@annie.codes> | 2018-07-04 14:29:35 -0400 |
commit | 1996fbe2a3e46ff5698bfa3812afb7f42cdfa899 (patch) | |
tree | 410e7b7d701d990b7e084db56381c4ac43de34f7 /railties/lib/rails | |
parent | 1edc7263c897f92b019d469b2861eb92419308da (diff) | |
download | rails-1996fbe2a3e46ff5698bfa3812afb7f42cdfa899.tar.gz rails-1996fbe2a3e46ff5698bfa3812afb7f42cdfa899.tar.bz2 rails-1996fbe2a3e46ff5698bfa3812afb7f42cdfa899.zip |
Adds a Rails::Command for Notes
* It is called with `rails notes`
* It defaults to displaying [OPTIMIZE, FIXME and TODO] annotations
* It accepts custom annotations by using `rails notes -a CUSTOM_ANNOTATION OTHER_ANNOTATION`
* It defaults to look for annotations in [app config db lib test] as dictated by SourceAnnotationExtractor
* It supports ENV["SOURCE_ANNOTATION_DIRECTORIES"] but adds a deprecation warning and recommends using register_directories instead
Diffstat (limited to 'railties/lib/rails')
-rw-r--r-- | railties/lib/rails/commands/notes/notes_command.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/railties/lib/rails/commands/notes/notes_command.rb b/railties/lib/rails/commands/notes/notes_command.rb new file mode 100644 index 0000000000..8895cb0707 --- /dev/null +++ b/railties/lib/rails/commands/notes/notes_command.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require "rails/source_annotation_extractor" + +module Rails + module Command + class NotesCommand < Base # :nodoc: + class_option :annotations, aliases: "-a", desc: "Filter by specific annotations, e.g. Foobar TODO", type: :array, default: %w(OPTIMIZE FIXME TODO) + + def perform(*) + deprecation_warning + display_annotations + end + + private + def display_annotations + annotations = options[:annotations] + tag = (annotations.length > 1) + + Rails::SourceAnnotationExtractor.enumerate annotations.join("|"), tag: tag, dirs: directories + end + + def directories + Rails::SourceAnnotationExtractor::Annotation.directories + source_annotation_directories + end + + def deprecation_warning + return if source_annotation_directories.empty? + ActiveSupport::Deprecation.warn("`SOURCE_ANNOTATION_DIRECTORIES` will be deprecated in Rails 6.1. You can add default directories by using config.annotations.register_directories instead.") + end + + def source_annotation_directories + ENV["SOURCE_ANNOTATION_DIRECTORIES"].to_s.split(",") + end + end + end +end |