Class: RosettAi::Thor::Tasks::BehaviourManage

Inherits:
Thor
  • Object
show all
Defined in:
lib/rosett_ai/thor/tasks/behaviour.rb

Overview

Subcommand for managing behaviour files Must be defined before Behaviour class that references it

Instance Method Summary collapse

Instance Method Details

#add(name) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/rosett_ai/thor/tasks/behaviour.rb', line 40

def add(name)
  name = RosettAi::TextSanitizer.normalize_nfc(name)
  return if behaviour_exists?(name)

  description = options[:description] || RosettAi::Ui::TtyHelper.ask('Description:', option_hint: 'description')
  temp_file, temp_dir = create_temp_behaviour(name, description, options[:author])

  open_in_editor(temp_file)
  return cleanup_temp(temp_dir) unless valid_behaviour?(temp_file)

  save_behaviour(temp_file, name, temp_dir)
end

#delete(name) ⇒ Object

Raises:

  • (::Thor::Error)


94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/rosett_ai/thor/tasks/behaviour.rb', line 94

def delete(name)
  name = RosettAi::TextSanitizer.normalize_nfc(name)
  file_path = find_behaviour_file(name)
  raise ::Thor::Error, Rainbow(t('not_found', name: name)).red unless file_path

  display_usages(name)
  return unless deletion_confirmed?(name)

  File.delete(file_path)
  cleanup_compiled_rules(name)
  puts Rainbow(t('deleted', name: name)).green
end

#modify(name) ⇒ Object

Raises:

  • (::Thor::Error)


63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/rosett_ai/thor/tasks/behaviour.rb', line 63

def modify(name)
  name = RosettAi::TextSanitizer.normalize_nfc(name)
  file_path = find_behaviour_file(name)
  raise ::Thor::Error, Rainbow(t('not_found', name: name)).red unless file_path

  temp_file, temp_dir = create_temp_copy(file_path)
  (temp_file)

  open_in_editor(temp_file)
  return cleanup_temp(temp_dir) unless valid_behaviour?(temp_file)

  FileUtils.cp(temp_file, file_path)
  cleanup_temp(temp_dir)
  puts Rainbow(t('updated', name: name)).green
end