@@ -38,7 +38,7 @@ module Agents |
||
38 | 38 |
'expected_receive_period_in_days' => "2", |
39 | 39 |
'group_by_path' => "filter", |
40 | 40 |
'value_path' => "count", |
41 |
- 'message' => "A peak was found" |
|
41 |
+ 'message' => "A peak of {{count}} was found in {{filter}}" |
|
42 | 42 |
} |
43 | 43 |
end |
44 | 44 |
|
@@ -1,34 +1,35 @@ |
||
1 | 1 |
#!/usr/bin/env ruby |
2 | 2 |
require 'open3' |
3 |
+require 'io/console' |
|
3 | 4 |
|
4 | 5 |
unless `which heroku` =~ /heroku/ |
5 | 6 |
puts "It looks like the heroku command line tool hasn't been installed yet. Please install" |
6 |
- puts "the Heroku Toolback from https://toolbelt.heroku.com, run 'heroku auth:login', and then" |
|
7 |
+ puts "the Heroku Toolbelt from https://toolbelt.heroku.com, run 'heroku auth:login', and then" |
|
7 | 8 |
puts "run this script again." |
8 | 9 |
exit 1 |
9 | 10 |
end |
10 | 11 |
|
11 | 12 |
def capture(cmd, opts = {}) |
12 | 13 |
o, s = Open3.capture2e(cmd, opts) |
13 |
- o |
|
14 |
+ o.strip |
|
14 | 15 |
end |
15 | 16 |
|
16 |
-def ask(question) |
|
17 |
+def ask(question, opts = {}) |
|
17 | 18 |
print question + " " |
18 | 19 |
STDOUT.flush |
19 |
- gets.strip |
|
20 |
+ (opts[:noecho] ? STDIN.noecho(&:gets) : gets).strip |
|
20 | 21 |
end |
21 | 22 |
|
22 |
-def nag(question) |
|
23 |
+def nag(question, opts = {}) |
|
23 | 24 |
answer = '' |
24 | 25 |
while answer.length == 0 |
25 |
- answer = ask(question) |
|
26 |
+ answer = ask(question, opts) |
|
26 | 27 |
end |
27 | 28 |
answer |
28 | 29 |
end |
29 | 30 |
|
30 | 31 |
def yes?(question) |
31 |
- ask(question) =~ /^y/i |
|
32 |
+ ask(question + " (y/n)") =~ /^y/i |
|
32 | 33 |
end |
33 | 34 |
|
34 | 35 |
def grab_heroku_config |
@@ -44,6 +45,11 @@ def grab_heroku_config |
||
44 | 45 |
config |
45 | 46 |
end |
46 | 47 |
|
48 |
+unless File.exists?(File.expand_path("~/.netrc")) && File.read(File.expand_path("~/.netrc")) =~ /heroku/ |
|
49 |
+ puts "It looks like you need to log in to Heroku. Please run 'heroku auth:login' before continuing." |
|
50 |
+ exit 1 |
|
51 |
+end |
|
52 |
+ |
|
47 | 53 |
puts "Welcome #{`heroku auth:whoami`.strip}! It looks like you're logged into Heroku." |
48 | 54 |
puts |
49 | 55 |
|
@@ -51,7 +57,7 @@ info = capture("heroku info") |
||
51 | 57 |
if info =~ /No app specified/i |
52 | 58 |
puts "It looks like you don't have a Heroku app set up yet for this repo." |
53 | 59 |
puts "You can either exit now and run 'heroku create', or I can do it for you." |
54 |
- if yes?("Would you like me to create a heroku app for you now in this repo? (y/n)") |
|
60 |
+ if yes?("Would you like me to create a Heroku app for you now in this repo?") |
|
55 | 61 |
puts `heroku create` |
56 | 62 |
info = capture("heroku info") |
57 | 63 |
else |
@@ -72,7 +78,7 @@ if config.length > 0 |
||
72 | 78 |
puts |
73 | 79 |
puts "Your current Heroku config:" |
74 | 80 |
config.each do |key, value| |
75 |
- puts ' ' + key + ' ' * (20 - key.length) + '= ' + value |
|
81 |
+ puts ' ' + key + ' ' * (25 - [key.length, 25].min) + '= ' + value |
|
76 | 82 |
end |
77 | 83 |
end |
78 | 84 |
|
@@ -105,7 +111,7 @@ unless config['SMTP_DOMAIN'] && config['SMTP_USER_NAME'] && config['SMTP_PASSWOR |
||
105 | 111 |
puts "Okay, let's setup outgoing email settings. The simplest solution is to use the free sendgrid Heroku addon." |
106 | 112 |
puts "If you'd like to use your own server, or your Gmail account, please see .env.example and set" |
107 | 113 |
puts "SMTP_DOMAIN, SMTP_USER_NAME, SMTP_PASSWORD, and SMTP_SERVER with 'heroku config:set'." |
108 |
- if yes?("Should I enable the free sendgrid addon? (y/n)") |
|
114 |
+ if yes?("Should I enable the free sendgrid addon?") |
|
109 | 115 |
puts capture("heroku addons:add sendgrid") |
110 | 116 |
puts capture("heroku config:set SMTP_SERVER=smtp.sendgrid.net") |
111 | 117 |
puts capture("heroku config:set SMTP_DOMAIN=heroku.com") |
@@ -124,4 +130,29 @@ unless config['SMTP_DOMAIN'] && config['SMTP_USER_NAME'] && config['SMTP_PASSWOR |
||
124 | 130 |
end |
125 | 131 |
end |
126 | 132 |
|
133 |
+branch = capture("git rev-parse --abbrev-ref HEAD") |
|
134 |
+if yes?("Should I push your current branch (#{branch}) to heroku?") |
|
135 |
+ puts "This may take a moment..." |
|
136 |
+ puts capture("git push heroku #{branch}:master -f") |
|
137 |
+ |
|
138 |
+ puts "Running database migrations..." |
|
139 |
+ puts capture("heroku run rake db:migrate") |
|
140 |
+ |
|
141 |
+ puts |
|
142 |
+ puts |
|
143 |
+ puts "I can make an admin user on your new Huginn instance and setup some example Agents." |
|
144 |
+ if yes?("Should I create a new admin user and some example Agents?") |
|
145 |
+ seed_email = nag "Okay, what is your email address?" |
|
146 |
+ seed_username = nag "And what username would you like to login as?" |
|
147 |
+ seed_password = nag "Finally, what password would you like to use?", noecho: true |
|
148 |
+ puts "\nJust a moment..." |
|
149 |
+ |
|
150 |
+ capture("heroku run rake db:seed SEED_EMAIL=#{seed_email} SEED_USERNAME=#{seed_username} SEED_PASSWORD=#{seed_password}") |
|
151 |
+ puts |
|
152 |
+ puts |
|
153 |
+ puts "Okay, you should be all set! Visit https://#{app_name}.herokuapp.com and login as '#{seed_username}' with your password." |
|
154 |
+ end |
|
155 |
+end |
|
156 |
+ |
|
157 |
+puts |
|
127 | 158 |
puts "Done!" |
@@ -1,10 +1,10 @@ |
||
1 | 1 |
# This file should contain all the record creation needed to seed the database with its default values. |
2 | 2 |
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). |
3 | 3 |
|
4 |
-user = User.find_or_initialize_by(:email => "admin@example.com") |
|
5 |
-user.username = "admin" |
|
6 |
-user.password = "password" |
|
7 |
-user.password_confirmation = "password" |
|
4 |
+user = User.find_or_initialize_by(:email => ENV['SEED_EMAIL'] || "admin@example.com") |
|
5 |
+user.username = ENV['SEED_USERNAME'] || "admin" |
|
6 |
+user.password = ENV['SEED_PASSWORD'] || "password" |
|
7 |
+user.password_confirmation = ENV['SEED_PASSWORD'] || "password" |
|
8 | 8 |
user.invitation_code = User::INVITATION_CODES.first |
9 | 9 |
user.admin = true |
10 | 10 |
user.save! |