class Act::Command
Constants
- CONTEXT_LINES
Public Class Methods
arguments()
click to toggle source
# File lib/act/command.rb, line 16 def self.arguments [ CLAide::Argument.new('PATH', false), ] end
completion_description()
click to toggle source
Calls superclass method
# File lib/act/command.rb, line 32 def self.completion_description description = super # _path_files function description[:paths] = :all_files description end
new(argv)
click to toggle source
Calls superclass method
# File lib/act/command.rb, line 39 def initialize(argv) @stdin = STDIN.read unless STDIN.tty? @open = argv.flag?('open') @prettify = argv.flag?('prettify', false) @number_lines = argv.flag?('line-numbers', false) @lexer = argv.option('lexer', false) @always_color = argv.flag?('always-color') @file_string = argv.shift_argument super end
options()
click to toggle source
Calls superclass method
# File lib/act/command.rb, line 22 def self.options [ ['--open', 'Open the file in $EDITOR instead of printing it'], ['--prettify', 'Prettify output'], ['--always-color', 'Always color the output'], ['--line-numbers', 'Show output with line numbers'], ['--lexer=NAME', 'Use the given lexer'], ].concat(super) end
Public Instance Methods
cat_file(file)
click to toggle source
@return [void]
# File lib/act/command.rb, line 124 def cat_file(file) string = File.read(file.path) if file.from_line && file.to_line string = Helper.select_lines(string, file.from_line, file.to_line) end cat_string(string, file) end
cat_string(string, file = nil)
click to toggle source
# File lib/act/command.rb, line 132 def cat_string(string, file = nil) if string path = file.path if file @lexer ||= Helper.lexer(path, string) string = Helper.strip_indentation(string) string = Helper.prettify(string, @lexer) if @prettify string = Helper.syntax_highlight(string, @lexer) if ansi_output? || @always_color string = Helper.add_line_numbers(string, file.from_line, file.highlight_line) if @number_lines && file UI.puts UI.tty? ? "\n#{string}" : string else UI.warn '[!] Nothing to show' end end
infer_local_path(path)
click to toggle source
@return [String, Nil]
# File lib/act/command.rb, line 96 def infer_local_path(path) path_components = Pathname(path).each_filename.to_a until path_components.empty? path_components.shift candidate = File.join(path_components) if File.exist?(candidate) return candidate end end end
open_file(file)
click to toggle source
@return [void]
# File lib/act/command.rb, line 109 def open_file(file) line = file.highlight_line || file.from_line command = Helper.open_in_editor_command(file.path, line) UI.puts command if self.verbose? if defined? Bundler Bundler.with_clean_env do system(command) end else system(command) end end
pre_process_file_string(string)
click to toggle source
@return [String]
# File lib/act/command.rb, line 90 def pre_process_file_string(string) string.sub(/https?:\/\//, '') end
run()
click to toggle source
# File lib/act/command.rb, line 57 def run if @stdin && !@open cat_string(@stdin) return end @file_string ||= '.' clean_file_string = pre_process_file_string(@file_string) file = ArgumentParser.parse_file_information(clean_file_string, CONTEXT_LINES) path_exists = File.exist?(file.path) unless path_exists inferred = infer_local_path(file.path) if inferred file.path = inferred path_exists = true end end if @open open_file(file) else if path_exists cat_file(file) else UI.warn '[!] File not found' end end end
validate!()
click to toggle source
Calls superclass method
# File lib/act/command.rb, line 50 def validate! super help! 'A file is required.' unless @file_string || @open || @stdin end