class Rbnotes::Commands::Pick
Picks a timestamp with a picker program, like `fzf`.
Public Instance Methods
execute(args, conf)
click to toggle source
# File lib/rbnotes/commands/pick.rb, line 14 def execute(args, conf) @opts = {} parse_opts(args) if args.empty? default_behavior = conf[:list_default] || DEFAULT_BEHAVIOR args << default_behavior end utils = Rbnotes.utils patterns = utils.read_timestamp_patterns(args, enum_week: @opts[:enum_week]) repo = Textrepo.init(conf) stamps = utils.find_notes(patterns, repo) return if stamps.empty? list = [] stamps.each { |timestamp| list << utils.make_headline(timestamp, repo.read(timestamp)) } picker = conf[:picker] unless picker.nil? picker_opts = conf[:picker_option] cmds = [picker] cmds.concat(picker_opts.split) unless picker_opts.nil? require 'open3' result = Open3.pipeline_rw(cmds) { |stdin, stdout, _| stdin.puts list stdin.close stdout.read } puts result else puts list end end