Module: Brainiac::Plugins::Fizzy
- Defined in:
- lib/brainiac/plugins/fizzy.rb,
lib/brainiac/plugins/fizzy/cli.rb,
lib/brainiac/plugins/fizzy/hooks.rb,
lib/brainiac/plugins/fizzy/config.rb,
lib/brainiac/plugins/fizzy/helpers.rb,
lib/brainiac/plugins/fizzy/prompts.rb,
lib/brainiac/plugins/fizzy/version.rb,
lib/brainiac/plugins/fizzy/metadata.rb,
lib/brainiac/plugins/fizzy/planning.rb
Defined Under Namespace
Modules: Cli, Config, Helpers, Hooks, Planning, Prompts
Constant Summary collapse
- VERSION =
"0.0.5"
Class Method Summary collapse
-
.cli(args) ⇒ Object
Plugin CLI entry point — called by brainiac core's plugin delegation.
-
.completions ⇒ Object
Subcommand names for bash completion.
-
.configured? ⇒ Boolean
Returns true if Fizzy has at least one board configured.
- .handle_publish_or_triage(action, payload) ⇒ Object
-
.help_text ⇒ Object
Help text shown in
brainiac helpwhen the plugin is installed. -
.register(app) ⇒ Object
Called by Brainiac plugin system during server startup.
Class Method Details
.cli(args) ⇒ Object
Plugin CLI entry point — called by brainiac core's plugin delegation.
132 133 134 |
# File 'lib/brainiac/plugins/fizzy/cli.rb', line 132 def self.cli(args) Cli.run(args) end |
.completions ⇒ Object
Subcommand names for bash completion.
137 138 139 |
# File 'lib/brainiac/plugins/fizzy/cli.rb', line 137 def self.completions %w[config status setup] end |
.configured? ⇒ Boolean
Returns true if Fizzy has at least one board configured.
12 13 14 15 16 17 18 19 20 |
# File 'lib/brainiac/plugins/fizzy/metadata.rb', line 12 def self.configured? config_file = File.join(ENV.fetch("BRAINIAC_DIR", File.join(Dir.home, ".brainiac")), "fizzy.json") return false unless File.exist?(config_file) config = JSON.parse(File.read(config_file)) !(config["boards"] || {}).empty? rescue StandardError false end |
.handle_publish_or_triage(action, payload) ⇒ Object
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
# File 'lib/brainiac/plugins/fizzy.rb', line 177 def handle_publish_or_triage(action, payload) eventable = payload["eventable"] || {} card_number = eventable["number"]&.to_s if action == "card_triaged" && card_number return [200, { status: "ignored", reason: "self_move" }.to_json] if self_move_recent?(card_number) return [200, { status: "ignored", reason: "card_merged" }.to_json] if work_item_merged?(card_number) card_key = "card-#{card_number}" return [200, { status: "ignored", reason: "recently_completed" }.to_json] if recently_completed?(card_key) end if action == "card_published" assignees = eventable["assignees"] || [] return handle_card_assigned(payload) if assignees.any? { |a| local_agent_names.include?(a["name"]) } end handle_card_published(payload) end |
.help_text ⇒ Object
Help text shown in brainiac help when the plugin is installed.
23 24 25 |
# File 'lib/brainiac/plugins/fizzy/metadata.rb', line 23 def self.help_text " brainiac fizzy <command> Manage Fizzy boards" end |
.register(app) ⇒ Object
Called by Brainiac plugin system during server startup.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/brainiac/plugins/fizzy.rb', line 27 def register(app) # Load Fizzy config Brainiac::Plugins::Fizzy::Config.load! # Register channel prompt Brainiac.register_channel_prompt(:fizzy, Brainiac::Plugins::Fizzy::Prompts::CHANNEL, pre_post_check: Brainiac::Plugins::Fizzy::Prompts::PRE_POST_CHECK) # Register lifecycle hooks Brainiac::Plugins::Fizzy::Hooks.register_all! # Set up webhook route setup_routes(app) LOG.info "[Fizzy] Plugin registered (webhook: /fizzy)" end |