Class: Tetra::Subcommand
- Inherits:
-
Clamp::Command
- Object
- Clamp::Command
- Tetra::Subcommand
- Includes:
- Logging
- Defined in:
- lib/tetra/ui/subcommand.rb
Overview
implements common options and utility methods
Direct Known Subclasses
ChangeSourcesSubcommand, DryRunSubcommand, GenerateAllSubcommand, GenerateKitSubcommand, GenerateScriptSubcommand, GenerateSpecSubcommand, GetPomSubcommand, InitSubcommand, MoveJarsToKitSubcommand, PatchSubcommand
Instance Method Summary collapse
-
#bypass_parsing(args) ⇒ Object
override default option parsing to pass options to other commands.
-
#checking_exceptions ⇒ Object
handles most fatal exceptions.
-
#configure_log_level(verbose, very_verbose, very_very_verbose) ⇒ Object
maps verbosity options to log level.
-
#ensure_dry_running(state, project) ⇒ Object
prints an error message and exits unless a dry-running condition is met.
-
#format_path(path, project) ⇒ Object
generates a version of path relative to the current directory.
-
#print_generation_result(project, result_path, conflict_count = 0) ⇒ Object
outputs output of a file generation.
- #verbose=(flag) ⇒ Object
- #very_verbose=(flag) ⇒ Object
-
#very_very_verbose=(flag) ⇒ Object
verbosity handlers.
Methods included from Logging
Instance Method Details
#bypass_parsing(args) ⇒ Object
override default option parsing to pass options to other commands
40 41 42 43 44 45 46 |
# File 'lib/tetra/ui/subcommand.rb', line 40 def bypass_parsing(args) log.level = ::Logger::WARN if args.delete "--verbose" log.level = ::Logger::INFO if args.delete "--very-verbose" log.level = ::Logger::DEBUG if args.delete "--very-very-verbose" @options = args end |
#checking_exceptions ⇒ Object
handles most fatal exceptions
89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/tetra/ui/subcommand.rb', line 89 def checking_exceptions yield rescue Errno::EACCES, Errno::ENOENT, Errno::EEXIST => e $stderr.puts e rescue Tetra::NoProjectDirectoryError => e $stderr.puts "#{e.directory} is not a tetra project directory, see \"tetra init\"" rescue Tetra::GitAlreadyInitedError $stderr.puts "This directory is already a tetra project" rescue Tetra::ExecutionFailed => e $stderr.puts "Failed to run `#{e.commandline}` (exit status #{e.status})" rescue Interrupt $stderr.puts "Execution interrupted by the user" end |
#configure_log_level(verbose, very_verbose, very_very_verbose) ⇒ Object
maps verbosity options to log level
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/tetra/ui/subcommand.rb', line 27 def configure_log_level(verbose, very_verbose, very_very_verbose) if very_very_verbose log.level = ::Logger::DEBUG elsif very_verbose log.level = ::Logger::INFO elsif verbose log.level = ::Logger::WARN else log.level = ::Logger::ERROR end end |
#ensure_dry_running(state, project) ⇒ Object
prints an error message and exits unless a dry-running condition is met. Conditions can be: :is_in_progress, :is_not_in_progress or :has_finished
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/tetra/ui/subcommand.rb', line 51 def ensure_dry_running(state, project) dry_running = project.dry_running? has_finished = !project.version.nil? condition_met = case state when :is_in_progress dry_running when :is_not_in_progress !dry_running when :has_finished !dry_running && has_finished end if condition_met yield else handle_dry_run_error(state, dry_running, has_finished) end end |
#format_path(path, project) ⇒ Object
generates a version of path relative to the current directory
78 79 80 81 82 83 84 85 86 |
# File 'lib/tetra/ui/subcommand.rb', line 78 def format_path(path, project) path_obj = Pathname.new(path) full_path = if path_obj.relative? File.join(project.full_path, path) else path end Pathname.new(full_path).relative_path_from(Pathname.new(Dir.pwd)) end |
#print_generation_result(project, result_path, conflict_count = 0) ⇒ Object
outputs output of a file generation
72 73 74 75 |
# File 'lib/tetra/ui/subcommand.rb', line 72 def print_generation_result(project, result_path, conflict_count = 0) puts "#{format_path(result_path, project)} generated" puts "Warning: #{conflict_count} unresolved conflicts, please review and commit" if conflict_count.positive? end |
#verbose=(flag) ⇒ Object
22 23 24 |
# File 'lib/tetra/ui/subcommand.rb', line 22 def verbose=(flag) configure_log_level(flag, very_verbose?, very_very_verbose?) end |
#very_verbose=(flag) ⇒ Object
18 19 20 |
# File 'lib/tetra/ui/subcommand.rb', line 18 def very_verbose=(flag) configure_log_level(verbose?, flag, very_very_verbose?) end |
#very_very_verbose=(flag) ⇒ Object
verbosity handlers
14 15 16 |
# File 'lib/tetra/ui/subcommand.rb', line 14 def very_very_verbose=(flag) configure_log_level(verbose?, very_verbose?, flag) end |