Class: Rufio::RakefileParser
- Inherits:
-
Object
- Object
- Rufio::RakefileParser
- Defined in:
- lib/rufio/rakefile_parser.rb
Overview
Rakefileをパースしてタスク名を抽出するパーサー正規表現ベースでtask定義を検出し、コマンドモードからrake:task_name 形式で実行可能にする
Constant Summary collapse
- RAKEFILE_NAMES =
%w[Rakefile rakefile Rakefile.rb].freeze
- TASK_PATTERN =
/^\s*task\s+[:'"]?(\w+)/.freeze
Instance Method Summary collapse
-
#complete(prefix) ⇒ Array<String>
Tab補完候補を取得.
-
#initialize(directory = nil) ⇒ RakefileParser
constructor
A new instance of RakefileParser.
-
#rakefile_exists? ⇒ Boolean
Rakefileが存在するかどうか.
-
#tasks ⇒ Array<String>
Rakefileからタスク名を抽出.
-
#update_directory(directory) ⇒ Object
ディレクトリ変更時にキャッシュを無効化.
Constructor Details
#initialize(directory = nil) ⇒ RakefileParser
Returns a new instance of RakefileParser.
12 13 14 15 |
# File 'lib/rufio/rakefile_parser.rb', line 12 def initialize(directory = nil) @directory = directory @tasks_cache = nil end |
Instance Method Details
#complete(prefix) ⇒ Array<String>
Tab補完候補を取得
41 42 43 |
# File 'lib/rufio/rakefile_parser.rb', line 41 def complete(prefix) tasks.select { |name| name.start_with?(prefix) } end |
#rakefile_exists? ⇒ Boolean
Rakefileが存在するかどうか
28 29 30 |
# File 'lib/rufio/rakefile_parser.rb', line 28 def rakefile_exists? !!find_rakefile end |
#tasks ⇒ Array<String>
Rakefileからタスク名を抽出
34 35 36 |
# File 'lib/rufio/rakefile_parser.rb', line 34 def tasks @tasks_cache ||= parse_tasks end |
#update_directory(directory) ⇒ Object
ディレクトリ変更時にキャッシュを無効化
19 20 21 22 23 24 |
# File 'lib/rufio/rakefile_parser.rb', line 19 def update_directory(directory) return if @directory == directory @directory = directory @tasks_cache = nil end |