Class: DeployPlugin
- Inherits:
-
Campfire::PollingBot::Plugin
- Object
- Campfire::PollingBot::Plugin
- DeployPlugin
- Defined in:
- lib/campfire/polling_bot/plugins/deploy/deploy_plugin.rb
Overview
Plugin to get a list of commits that are on deck to be deployed
Constant Summary
Constants inherited from Campfire::PollingBot::Plugin
Campfire::PollingBot::Plugin::HALT
Instance Attribute Summary
Attributes inherited from Campfire::PollingBot::Plugin
Instance Method Summary collapse
Methods inherited from Campfire::PollingBot::Plugin
accepts, #accepts?, accepts?, bot, bot=, directory, directory=, inherited, #initialize, load_all, load_plugin_classes, #logger, logger, priority, #priority, requires_config, requires_config?, #requires_config?, setup_database, subclasses, #to_s
Constructor Details
This class inherits a constructor from Campfire::PollingBot::Plugin
Instance Method Details
#default_project ⇒ Object
110 111 112 113 |
# File 'lib/campfire/polling_bot/plugins/deploy/deploy_plugin.rb', line 110 def default_project (config && config['default_project']) || (projects.size == 1 ? projects.keys.first : nil) end |
#help ⇒ Object
95 96 97 98 99 100 101 102 103 104 |
# File 'lib/campfire/polling_bot/plugins/deploy/deploy_plugin.rb', line 95 def help help_lines = [ ["what's on deck for <project>?", "shortlog of changes not yet deployed to production"], ["what's on deck for <project> staging?", "shortlog of changes not yet deployed to staging"], ] if default_project help_lines << ["what's on deck?", "shortlog of changes not yet deployed to #{default_project}"] end return help_lines end |
#process(message) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/campfire/polling_bot/plugins/deploy/deploy_plugin.rb', line 8 def process() case .command when /deploy\s([^\s\!]+)(?:(?: to)? (staging|nine|production))?( with migrations)?/ project, env, migrate = $1, $2, $3 name = env ? "#{project} #{env}" : project env ||= "production" if not projects.any? bot.say("Sorry #{.person}, I don't know about any projects. Please configure the deploy plugin.") return HALT end project ||= default_project if project.nil? bot.say("Sorry #{.person}, I don't have a default project. Here are the projects I do know about:") bot.paste(projects.keys.sort.join("\n")) return HALT end project.downcase! info = project_info(project) if info.nil? bot.say("Sorry #{.person}, I don't know anything about #{name}. Here are the projects I do know about:") bot.paste(projects.keys.sort.join("\n")) return HALT end bot.say("Okay, trying to deploy #{name}...") begin deploy = migrate ? "deploy:migrations" : "deploy" git(project, "bundle exec cap #{env} #{deploy}") rescue => e bot.log_error(e) bot.say("Sorry #{.person}, I couldn't deploy #{name}.") return HALT end bot.say("Done.") return HALT when /on deck(?: for ([^\s\?]+)( staging)?)?/ project, staging = $1, $2 project ||= default_project name = staging ? "#{project} staging" : project if not projects.any? bot.say("Sorry #{.person}, I don't know about any projects. Please configure the deploy plugin.") return HALT end if project.nil? bot.say("Sorry #{.person}, I don't have a default project. Here are the projects I do know about:") bot.paste(projects.keys.sort.join("\n")) return HALT end project.downcase! info = project_info(project) if info.nil? bot.say("Sorry #{.person}, I don't know anything about #{name}. Here are the projects I do know about:") bot.paste(projects.keys.sort.join("\n")) return HALT end range = nil begin range = "#{deployed_revision(project, staging)}..HEAD" shortlog = project_shortlog(project, range) rescue => e bot.log_error(e) bot.say("Sorry #{.person}, I couldn't get what's on deck for #{name}.") return HALT end if shortlog.nil? || shortlog =~ /\A\s*\Z/ bot.say("There's nothing on deck for #{name} right now.") return HALT end bot.say("Here's what's on deck for #{name}:") bot.paste("$ git shortlog #{range}\n\n#{shortlog}") return HALT end end |
#projects ⇒ Object
106 107 108 |
# File 'lib/campfire/polling_bot/plugins/deploy/deploy_plugin.rb', line 106 def projects (config && config['projects']) || {} end |