Class: WritersRoom::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/writers_room/cli.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ CLI

Handle global options



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/writers_room/cli.rb', line 38

def initialize(*args)
  super

  # Handle --help
  if options[:help]
    require_relative "help_formatter"
    HelpFormatter.print_comprehensive_help
    exit 0
  end

  # Handle --version
  if options[:version]
    puts "WritersRoom #{WritersRoom::VERSION}"
    exit 0
  end
end

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/writers_room/cli.rb', line 30

def self.exit_on_failure?
  true
end

Instance Method Details

#chatObject



73
74
75
76
# File 'lib/writers_room/cli.rb', line 73

def chat
  require_relative "cli/chat"
  Commands::Chat.new.chat
end

#configObject



112
113
114
115
# File 'lib/writers_room/cli.rb', line 112

def config
  require_relative "cli/config"
  Commands::Config.new.config
end

#direct(scene_file) ⇒ Object



131
132
133
134
# File 'lib/writers_room/cli.rb', line 131

def direct(scene_file)
  require_relative "cli/direct"
  Commands::Direct.new([], options).direct(scene_file)
end

#help(command = nil) ⇒ Object



61
62
63
64
65
66
67
68
69
70
# File 'lib/writers_room/cli.rb', line 61

def help(command = nil)
  if options[:verbose]
    require_relative "help_formatter"
    HelpFormatter.print_comprehensive_help
  elsif command
    self.class.command_help(shell, command)
  else
    super
  end
end

#init(project_name) ⇒ Object



106
107
108
109
# File 'lib/writers_room/cli.rb', line 106

def init(project_name)
  require_relative "cli/init"
  Commands::Init.new([], options).init(project_name)
end

#produce(*scene_files) ⇒ Object



150
151
152
153
# File 'lib/writers_room/cli.rb', line 150

def produce(*scene_files)
  require_relative "cli/produce"
  Commands::Produce.new([], options).produce(*scene_files)
end

#reportObject



165
166
167
168
# File 'lib/writers_room/cli.rb', line 165

def report
  require_relative "cli/report"
  Commands::Report.new.report
end

#statusObject



174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/writers_room/cli.rb', line 174

def status
  context = WritersRoom::ContextDetector.new.detect

  unless context.in_project?
    say "Not inside a WritersRoom project.", :yellow
    say "Run 'wr init PROJECT_NAME' to create one.", :white
    return
  end

  state = context.project_state
  say state.summary

  workflow = WritersRoom::Workflow.new(context.medium)
  steps = workflow.next_steps(context.project_path)
  if steps.any?
    say "\nNext steps:", :cyan
    steps.each { |s| say "  - #{s}", :white }
  end
end

#versionObject



79
80
81
82
# File 'lib/writers_room/cli.rb', line 79

def version
  require_relative "cli/version"
  Commands::Version.new.version
end