aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib
diff options
context:
space:
mode:
authorAnnie-Claude Côté <hello@annie.codes>2018-06-20 15:03:54 -0400
committerAnnie-Claude Côté <hello@annie.codes>2018-07-04 14:29:35 -0400
commit1996fbe2a3e46ff5698bfa3812afb7f42cdfa899 (patch)
tree410e7b7d701d990b7e084db56381c4ac43de34f7 /railties/lib
parent1edc7263c897f92b019d469b2861eb92419308da (diff)
downloadrails-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')
-rw-r--r--railties/lib/rails/commands/notes/notes_command.rb37
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