Class: StandupMD::Cli
- Inherits:
-
Object
- Object
- StandupMD::Cli
- Includes:
- Helpers
- Defined in:
- lib/standup_md/cli.rb,
lib/standup_md/cli/helpers.rb
Overview
Class for handing the command-line interface.
Defined Under Namespace
Modules: Helpers
Constant Summary collapse
- ZSH_COMPLETION_FILE =
::File.( ::File.join(__dir__, "..", "..", "completion", "zsh", "_standup") ).freeze
Instance Attribute Summary collapse
-
#entry ⇒ StandupMD::Entry
readonly
The entry searched for, usually today.
-
#file ⇒ StandupMD::File
readonly
The file loaded.
-
#options ⇒ Array
readonly
Arguments passed at runtime.
Class Method Summary collapse
-
.config ⇒ StandupMD::Config::Cli
Access to the class’s configuration.
-
.echo(msg) ⇒ nil
Prints output if
verboseis true. -
.execute(options = []) ⇒ Object
Creates an instance of
StandupMDand runs what the user requested. -
.zsh_completion_instructions ⇒ String
Prints zsh completion setup instructions.
Instance Method Summary collapse
-
#echo(msg) ⇒ nil
Quick access to
Cli.echo. -
#edit ⇒ nil
Opens the file in an editor.
-
#file_date_argument? ⇒ Boolean
Was a file date argument passed?.
-
#initialize(options = [], load_config: true) ⇒ Cli
constructor
Constructor.
-
#load_preferences ⇒ nil
Load the preference file.
-
#preference_file_loaded? ⇒ boolean
Has the preference file been loaded?.
-
#write? ⇒ Boolean
Should the file be written?.
-
#write_file ⇒ Boolean
Writes entries to the file.
-
#zsh_completion_requested? ⇒ Boolean
Was zsh completion output requested?.
Methods included from Helpers
Constructor Details
#initialize(options = [], load_config: true) ⇒ Cli
Constructor. Sets defaults.
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/standup_md/cli.rb', line 118 def initialize( = [], load_config: true) @config = self.class.config @preference_file_loaded = false @file_date_argument = false @zsh_completion_requested = false @options = return if load_zsh_completion_request() load_preferences if load_config load_runtime_preferences() return if zsh_completion_requested? @file = find_file @file&.load @entry = @file.nil? ? nil : new_entry(@file) end |
Instance Attribute Details
#entry ⇒ StandupMD::Entry (readonly)
The entry searched for, usually today.
84 85 86 |
# File 'lib/standup_md/cli.rb', line 84 def entry @entry end |
#file ⇒ StandupMD::File (readonly)
The file loaded.
96 97 98 |
# File 'lib/standup_md/cli.rb', line 96 def file @file end |
#options ⇒ Array (readonly)
Arguments passed at runtime.
90 91 92 |
# File 'lib/standup_md/cli.rb', line 90 def @options end |
Class Method Details
.config ⇒ StandupMD::Config::Cli
Access to the class’s configuration.
20 21 22 |
# File 'lib/standup_md/cli.rb', line 20 def self.config @config ||= StandupMD.config.cli end |
.echo(msg) ⇒ nil
Prints output if verbose is true.
28 29 30 |
# File 'lib/standup_md/cli.rb', line 28 def self.echo(msg) puts msg if config.verbose end |
.execute(options = []) ⇒ Object
Creates an instance of StandupMD and runs what the user requested.
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/standup_md/cli.rb', line 64 def self.execute( = []) new().tap do |exe| if exe.zsh_completion_requested? puts zsh_completion_instructions next end exe.write_file if exe.write? if config.print exe.print(exe.entry) elsif config.edit exe.edit end end end |
.zsh_completion_instructions ⇒ String
Prints zsh completion setup instructions.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/standup_md/cli.rb', line 36 def self.zsh_completion_instructions completion_dir = ::File.dirname(ZSH_COMPLETION_FILE) <<~INSTRUCTIONS Zsh completion file: #{ZSH_COMPLETION_FILE} To load it directly, add this before compinit runs: fpath=("#{completion_dir}" $fpath) autoload -Uz compinit compinit Or symlink it into your own completion directory: mkdir -p ~/.zsh/completions ln -sf "#{ZSH_COMPLETION_FILE}" ~/.zsh/completions/_standup Then make sure that directory is in fpath before compinit runs: fpath=(~/.zsh/completions $fpath) autoload -Uz compinit compinit INSTRUCTIONS end |
Instance Method Details
#echo(msg) ⇒ nil
Quick access to Cli.echo.
186 187 188 |
# File 'lib/standup_md/cli.rb', line 186 def echo(msg) self.class.echo(msg) end |
#edit ⇒ nil
Opens the file in an editor. Abandons the script.
160 161 162 163 |
# File 'lib/standup_md/cli.rb', line 160 def edit echo "Opening file in #{@config.editor}" exec("#{@config.editor} #{file.name}") end |
#file_date_argument? ⇒ Boolean
Was a file date argument passed?
102 103 104 |
# File 'lib/standup_md/cli.rb', line 102 def file_date_argument? @file_date_argument end |
#load_preferences ⇒ nil
Load the preference file.
139 140 141 142 143 144 145 146 |
# File 'lib/standup_md/cli.rb', line 139 def load_preferences if ::File.exist?(@config.preference_file) ::StandupMD.load_config_file(@config.preference_file) @preference_file_loaded = true else echo "Preference file #{@config.preference_file} does not exist." end end |
#preference_file_loaded? ⇒ boolean
Has the preference file been loaded?
152 153 154 |
# File 'lib/standup_md/cli.rb', line 152 def preference_file_loaded? @preference_file_loaded end |
#write? ⇒ Boolean
Should the file be written?
178 179 180 |
# File 'lib/standup_md/cli.rb', line 178 def write? !!(@config.write && !read_only? && entry) end |
#write_file ⇒ Boolean
Writes entries to the file.
169 170 171 172 |
# File 'lib/standup_md/cli.rb', line 169 def write_file echo "Writing file #{file.name}" file.write end |
#zsh_completion_requested? ⇒ Boolean
Was zsh completion output requested?
110 111 112 |
# File 'lib/standup_md/cli.rb', line 110 def zsh_completion_requested? @zsh_completion_requested end |