site_hook 0.8.2 → 0.9.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.rspec +0 -2
- data/.rubocop.yml +2 -0
- data/Gemfile +1 -5
- data/Rakefile +35 -3
- data/bin/site_hook +5 -1
- data/features/get_help.feature +3 -0
- data/features/step_definitions/get_help_step_definition.rb +1 -0
- data/features/step_definitions/my_steps.rb +3 -0
- data/features/support/env.rb +1 -0
- data/lib/site_hook.rb +2 -28
- data/lib/site_hook/cli.rb +22 -39
- data/lib/site_hook/commands/config_class.rb +22 -68
- data/lib/site_hook/commands/jekyll_class.rb +38 -0
- data/lib/site_hook/commands/server_class.rb +38 -34
- data/lib/site_hook/config.rb +390 -14
- data/lib/site_hook/config_sections.rb +60 -9
- data/lib/site_hook/deprecate.rb +34 -11
- data/lib/site_hook/env/env.rb +2 -0
- data/lib/site_hook/exceptions.rb +26 -2
- data/lib/site_hook/log.rb +20 -15
- data/lib/site_hook/logger.rb +94 -173
- data/lib/site_hook/loggers.rb +10 -0
- data/lib/site_hook/loggers/access.rb +20 -0
- data/lib/site_hook/loggers/app.rb +78 -0
- data/lib/site_hook/loggers/build.rb +77 -0
- data/lib/site_hook/loggers/fake.rb +52 -0
- data/lib/site_hook/loggers/git.rb +81 -0
- data/lib/site_hook/loggers/hook.rb +74 -0
- data/lib/site_hook/methods.rb +26 -0
- data/lib/site_hook/paths.rb +65 -2
- data/lib/site_hook/prelogger.rb +88 -0
- data/lib/site_hook/prompt.rb +14 -0
- data/lib/site_hook/prompts/prompt_project.rb +48 -0
- data/lib/site_hook/runner.rb +36 -0
- data/lib/site_hook/sender.rb +4 -9
- data/lib/site_hook/string_ext.rb +57 -0
- data/lib/site_hook/version.rb +2 -2
- data/lib/site_hook/webhook.rb +120 -129
- data/site_hook.gemspec +39 -22
- data/spec/spec_helper.rb +13 -0
- data/spec/string_ext_spec.rb +10 -0
- metadata +87 -85
- data/CODE_OF_CONDUCT.md +0 -74
- data/bin/console +0 -14
- data/lib/site_hook/assets/css/styles.css +0 -26
- data/lib/site_hook/commands/debug_class.rb +0 -29
- data/lib/site_hook/config_sections/cli.rb +0 -24
- data/lib/site_hook/config_sections/log_levels.rb +0 -15
- data/lib/site_hook/config_sections/projects.rb +0 -22
- data/lib/site_hook/const.rb +0 -10
- data/lib/site_hook/gem.rb +0 -26
- data/lib/site_hook/persist.rb +0 -14
- data/lib/site_hook/prompts/gen_config.rb +0 -48
- data/lib/site_hook/spinner.rb +0 -19
- data/lib/site_hook/views/layout.haml +0 -24
- data/lib/site_hook/views/webhooks.haml +0 -7
@@ -0,0 +1,10 @@
|
|
1
|
+
module SiteHook
|
2
|
+
module Loggers
|
3
|
+
autoload :Access, 'site_hook/loggers/access'
|
4
|
+
autoload :App, 'site_hook/loggers/app'
|
5
|
+
autoload :Build, 'site_hook/loggers/build'
|
6
|
+
autoload :Fake, 'site_hook/loggers/fake'
|
7
|
+
autoload :Git, 'site_hook/loggers/git'
|
8
|
+
autoload :Hook, 'site_hook/loggers/hook'
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module SiteHook
|
2
|
+
module Loggers
|
3
|
+
class Access
|
4
|
+
def initialize(base: 'ACCESS')
|
5
|
+
@@loggers = {
|
6
|
+
stdout: ::Logger.new(STDOUT, progname: base),
|
7
|
+
file: ::Logger.new(SiteHook::Paths.make_log_name(base), progname: base)
|
8
|
+
}
|
9
|
+
end
|
10
|
+
# @param [Symbol] level log level to log at
|
11
|
+
# @param [Object] obj some kind of object or msg to log
|
12
|
+
def log(obj)
|
13
|
+
@@loggers.each do |_type, logger|
|
14
|
+
|
15
|
+
logger.<< "[#{Time.now}] #{obj}\n"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module SiteHook
|
2
|
+
module Loggers
|
3
|
+
class App
|
4
|
+
def initialize(base:, level:)
|
5
|
+
@@levels = {
|
6
|
+
unknown: ::Logger::UNKNOWN,
|
7
|
+
fatal: ::Logger::FATAL,
|
8
|
+
error: ::Logger::ERROR,
|
9
|
+
info: ::Logger::INFO,
|
10
|
+
debug: ::Logger::DEBUG
|
11
|
+
}
|
12
|
+
@@loggers = {
|
13
|
+
stdout: ::Logger.new(STDOUT, progname: base),
|
14
|
+
stderr: ::Logger.new(STDERR, progname: base),
|
15
|
+
file: ::Logger.new(SiteHook::Paths.make_log_name(base, level), progname: base)
|
16
|
+
}
|
17
|
+
@@loggers.each do |_logger, obj|
|
18
|
+
obj.datetime_format = '%Y-%m-%dT%H:%M:%S%Z'
|
19
|
+
obj.formatter = proc do |severity, datetime, progname, msg|
|
20
|
+
"#{severity} [#{datetime}] #{progname} —— #{msg}\n"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def unknown(obj)
|
26
|
+
@@loggers.each do |_key, value|
|
27
|
+
value.unknown(obj)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def error(obj)
|
32
|
+
@@loggers.each do |_key, value|
|
33
|
+
value.error(obj)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def info(obj)
|
38
|
+
@@loggers.each do |key, value|
|
39
|
+
next if key == :stderr
|
40
|
+
value.info(obj)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def fatal(obj)
|
45
|
+
@@loggers.each do |key, value|
|
46
|
+
next if key == :stderr
|
47
|
+
value.fatal(obj)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def warn(obj)
|
52
|
+
@@loggers.each do |_key, value|
|
53
|
+
value.warn(obj)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
def debug(obj)
|
57
|
+
@@loggers.each do |key, value|
|
58
|
+
value.debug(obj) if key != :stderr
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# @param [Symbol] level log level to log at
|
63
|
+
# @param [Object] obj some kind of object or msg to log
|
64
|
+
def log(level, obj)
|
65
|
+
@@loggers.each do |logger|
|
66
|
+
logger.add(@levels[level], obj)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def log_raw(msg)
|
71
|
+
@@loggers.each do |logger|
|
72
|
+
logger.<<(obj)
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module SiteHook
|
2
|
+
module Loggers
|
3
|
+
class Build
|
4
|
+
def initialize(base:, level:)
|
5
|
+
@@levels = {
|
6
|
+
unknown: ::Logger::UNKNOWN,
|
7
|
+
fatal: ::Logger::FATAL,
|
8
|
+
error: ::Logger::ERROR,
|
9
|
+
info: ::Logger::INFO,
|
10
|
+
debug: ::Logger::DEBUG
|
11
|
+
}
|
12
|
+
@@loggers = {
|
13
|
+
stdout: ::Logger.new(STDOUT, progname: base),
|
14
|
+
stderr: ::Logger.new(STDERR, progname: base),
|
15
|
+
file: ::Logger.new(SiteHook::Paths.make_log_name(base, level), progname: base)
|
16
|
+
}
|
17
|
+
@@loggers.each do |_logger, obj|
|
18
|
+
obj.datetime_format = '%Y-%m-%dT%H:%M:%S%Z'
|
19
|
+
obj.formatter = proc do |severity, datetime, progname, msg|
|
20
|
+
"#{severity} [#{datetime}] #{progname} —— #{msg}\n"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def unknown(obj)
|
26
|
+
@@loggers.each do |_key, value|
|
27
|
+
value.unknown(obj)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def error(obj)
|
32
|
+
@@loggers.each do |_key, value|
|
33
|
+
value.error(obj)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def info(obj)
|
38
|
+
@@loggers.each do |key, value|
|
39
|
+
next if key == :stderr
|
40
|
+
value.info(obj)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def fatal(obj)
|
45
|
+
@@loggers.each do |key, value|
|
46
|
+
next if key == :stderr
|
47
|
+
value.fatal(obj)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def warn(obj)
|
52
|
+
@@loggers.each do |_key, value|
|
53
|
+
value.warn(obj)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
def debug(obj)
|
57
|
+
@@loggers.each do |_key, value|
|
58
|
+
value.debug(obj)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# @param [Symbol] level log level to log at
|
63
|
+
# @param [Object] obj some kind of object or msg to log
|
64
|
+
def log(level, obj)
|
65
|
+
@@loggers.each do |logger|
|
66
|
+
logger.add(@levels[level], obj)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def log_raw(msg)
|
71
|
+
@@loggers.each do |logger|
|
72
|
+
logger.<<(obj)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module SiteHook
|
2
|
+
module Loggers
|
3
|
+
class Fake < StringIO
|
4
|
+
attr :info_output, :debug_output
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@info_output = []
|
8
|
+
@debug_output = []
|
9
|
+
end
|
10
|
+
|
11
|
+
# @param [Any] message message to log
|
12
|
+
def info(message)
|
13
|
+
case
|
14
|
+
when message =~ /git .* pull/
|
15
|
+
@info_output << "Starting Git"
|
16
|
+
@debug_output << message
|
17
|
+
else
|
18
|
+
@debug_output << message
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# @param [Any] message message to log
|
23
|
+
def debug(message)
|
24
|
+
case
|
25
|
+
when message =~ /\n/
|
26
|
+
msgs = message.lines
|
27
|
+
msgs.each do |msg|
|
28
|
+
msg.squish!
|
29
|
+
case
|
30
|
+
when msg =~ /From (.*?):(.*?)\/(.*)(\.git)?/
|
31
|
+
@info_output << "Pulling via #{$2}/#{$3} on #{$1}."
|
32
|
+
when msg =~ /\* branch (.*?) -> .*/
|
33
|
+
@info_output << "Using #{$1} branch"
|
34
|
+
else
|
35
|
+
@debug_output << msg
|
36
|
+
end
|
37
|
+
end
|
38
|
+
else
|
39
|
+
@debug_output << message
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# @return [Hash] Hash of log entries
|
44
|
+
def entries
|
45
|
+
{
|
46
|
+
info: @info_output,
|
47
|
+
debug: @debug_output
|
48
|
+
}
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
module SiteHook
|
2
|
+
module Loggers
|
3
|
+
class Git
|
4
|
+
def initialize(base:, level:)
|
5
|
+
@@levels = {
|
6
|
+
unknown: ::Logger::UNKNOWN,
|
7
|
+
fatal: ::Logger::FATAL,
|
8
|
+
error: ::Logger::ERROR,
|
9
|
+
info: ::Logger::INFO,
|
10
|
+
debug: ::Logger::DEBUG
|
11
|
+
}
|
12
|
+
@@loggers = {
|
13
|
+
stdout: ::Logger.new(STDOUT, progname: base),
|
14
|
+
stderr: ::Logger.new(STDERR, progname: base),
|
15
|
+
file: ::Logger.new(SiteHook::Paths.make_log_name(base, level), progname: base)
|
16
|
+
}
|
17
|
+
@@loggers.each do |_logger, obj|
|
18
|
+
obj.datetime_format = '%Y-%m-%dT%H:%M:%S%Z'
|
19
|
+
obj.formatter = proc do |severity, datetime, progname, msg|
|
20
|
+
"#{severity} [#{datetime}] #{progname} —— #{msg}\n"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def unknown(obj)
|
26
|
+
@@loggers.each do |key, value|
|
27
|
+
next if key == :stderr
|
28
|
+
value.unknown(obj)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def error(obj)
|
33
|
+
@@loggers.each do |key, value|
|
34
|
+
next if key == :stderr
|
35
|
+
value.error(obj)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def info(obj)
|
40
|
+
@@loggers.each do |key, value|
|
41
|
+
next if key == :stderr
|
42
|
+
value.info(obj)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def fatal(obj)
|
47
|
+
@@loggers.each do |key, value|
|
48
|
+
next if key == :stderr
|
49
|
+
value.fatal(obj)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def warn(obj)
|
54
|
+
@@loggers.each do |key, value|
|
55
|
+
value.warn(obj)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
def debug(obj)
|
59
|
+
@@loggers.each do |key, value|
|
60
|
+
next if key == :stderr
|
61
|
+
value.debug(obj)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# @param [Symbol] level log level to log at
|
66
|
+
# @param [Object] obj some kind of object or msg to log
|
67
|
+
def self.log(level, obj)
|
68
|
+
@@loggers.each do |logger|
|
69
|
+
logger.add(@levels[level], obj)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.log_raw(msg)
|
74
|
+
@@loggers.each do |logger|
|
75
|
+
logger.<<(obj)
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module SiteHook
|
2
|
+
module Loggers
|
3
|
+
|
4
|
+
class Hook
|
5
|
+
def initialize(base:, level:)
|
6
|
+
@@levels = {
|
7
|
+
unknown: ::Logger::UNKNOWN,
|
8
|
+
fatal: ::Logger::FATAL,
|
9
|
+
error: ::Logger::ERROR,
|
10
|
+
info: ::Logger::INFO,
|
11
|
+
debug: ::Logger::DEBUG
|
12
|
+
}
|
13
|
+
@@loggers = {
|
14
|
+
stdout: ::Logger.new(STDOUT, progname: base),
|
15
|
+
stderr: ::Logger.new(STDERR, progname: base),
|
16
|
+
file: ::Logger.new(SiteHook::Paths.make_log_name(base, level), progname: base)
|
17
|
+
}
|
18
|
+
@@loggers.each do |_logger, obj|
|
19
|
+
obj.datetime_format = '%Y-%m-%dT%H:%M:%S%Z'
|
20
|
+
obj.formatter = proc do |severity, datetime, progname, msg|
|
21
|
+
"#{severity} [#{datetime}] #{progname} —— #{msg}\n"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.unknown(obj)
|
27
|
+
@@loggers.each do |_key, value|
|
28
|
+
value.unknown(obj)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.error(obj)
|
33
|
+
@@loggers.each do |_key, value|
|
34
|
+
value.error(obj)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.info(obj)
|
39
|
+
@@loggers.each do |_key, value|
|
40
|
+
next if key == :stderr
|
41
|
+
value.info(obj)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.fatal(obj)
|
46
|
+
@@loggers.each do |key, value|
|
47
|
+
next if key == :stderr
|
48
|
+
value.fatal(obj)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.warn(obj)
|
53
|
+
@@loggers.each do |_key, value|
|
54
|
+
value.warn(obj)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# @param [Symbol] level log level to log at
|
59
|
+
# @param [Object] obj some kind of object or msg to log
|
60
|
+
def self.log(level, obj)
|
61
|
+
@@loggers.each do |logger|
|
62
|
+
logger.add(@levels[level], obj)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.log_raw(msg)
|
67
|
+
@@loggers.each do |logger|
|
68
|
+
logger.<<(obj)
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'site_hook/config'
|
2
|
+
module SiteHook
|
3
|
+
class Methods
|
4
|
+
def self.mklogdir
|
5
|
+
path = SiteHook::Paths.default_logs
|
6
|
+
if path.exist?
|
7
|
+
# Path exists, don't do anything
|
8
|
+
else
|
9
|
+
FileUtils.mkpath(path.to_s)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# @param [String] hook_name the hook name as defined in the projects:... directive
|
14
|
+
def self.find_hook(hook_name)
|
15
|
+
project_objs = SiteHook::Configs::Projects.constants
|
16
|
+
ret_val = project_objs.detect do |obj|
|
17
|
+
SiteHook::Configs::Projects.const_get(obj.to_s).real_key.to_s == hook_name.to_s
|
18
|
+
end
|
19
|
+
if ret_val.nil?
|
20
|
+
return nil
|
21
|
+
elsif ret_val
|
22
|
+
return SiteHook::Configs::Projects.const_get(ret_val)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/site_hook/paths.rb
CHANGED
@@ -6,13 +6,24 @@
|
|
6
6
|
# -> Copyright (c) 2018 Ken Spencer
|
7
7
|
# -> License: MIT
|
8
8
|
##########
|
9
|
-
|
9
|
+
require 'site_hook/methods'
|
10
|
+
require 'site_hook/exceptions'
|
11
|
+
require 'site_hook/version'
|
10
12
|
module SiteHook
|
11
13
|
# Paths: Paths to gem resources and things
|
12
14
|
class Paths
|
15
|
+
def self.old_dir
|
16
|
+
Pathname(Dir.home).join('.jph')
|
17
|
+
end
|
13
18
|
def self.old_config
|
14
19
|
Pathname(Dir.home).join('.jph', 'config')
|
15
20
|
end
|
21
|
+
def self.old_logs
|
22
|
+
Pathname(Dir.home).join('.jph', 'logs')
|
23
|
+
end
|
24
|
+
def self.dir
|
25
|
+
Pathname(Dir.home).join('.shrc')
|
26
|
+
end
|
16
27
|
def self.config
|
17
28
|
Pathname(Dir.home).join('.shrc', 'config')
|
18
29
|
end
|
@@ -20,8 +31,60 @@ module SiteHook
|
|
20
31
|
def self.logs
|
21
32
|
Pathname(Dir.home).join('.shrc', 'logs')
|
22
33
|
end
|
34
|
+
def self.default_config(old_exists = self.old_config.exist?, new_exists = self.config.exist?)
|
35
|
+
path = ''
|
36
|
+
if old_exists
|
37
|
+
path = self.old_config
|
38
|
+
else
|
39
|
+
if new_exists
|
40
|
+
path = self.config
|
41
|
+
else
|
42
|
+
raise NoConfigError path
|
43
|
+
end
|
44
|
+
end
|
45
|
+
path
|
46
|
+
end
|
47
|
+
def self.default_logs(old_exists = self.old_logs.exist?, new_exists = self.logs.exist?)
|
48
|
+
path = ''
|
49
|
+
if old_exists
|
50
|
+
path = self.old_logs
|
51
|
+
else
|
52
|
+
if new_exists
|
53
|
+
path = self.logs
|
54
|
+
else
|
55
|
+
raise NoLogsError path
|
56
|
+
end
|
57
|
+
end
|
58
|
+
path
|
59
|
+
end
|
60
|
+
|
23
61
|
def self.lib_dir
|
24
|
-
|
62
|
+
if ENV['BUNDLE_GEMFILE']
|
63
|
+
Pathname(ENV['BUNDLE_GEMFILE']).dirname.join('lib')
|
64
|
+
else
|
65
|
+
Pathname(::Gem.user_dir).join('gems', "site_hook-#{SiteHook::VERSION}", 'lib')
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
def self.make_log_name(klass, level = nil, old_exists = self.old_logs.exist?, new_exists = self.logs.exist?)
|
70
|
+
if level
|
71
|
+
level = "-#{level}"
|
72
|
+
end
|
73
|
+
case old_exists
|
74
|
+
when true
|
75
|
+
path = self.old_logs
|
76
|
+
self.old_logs.join("#{klass.to_s.safe_log_name}#{level}.log")
|
77
|
+
when false
|
78
|
+
if new_exists
|
79
|
+
self.logs.join("#{klass.to_s.safe_log_name}#{level}.log")
|
80
|
+
else
|
81
|
+
path ||= SiteHook::Paths.logs
|
82
|
+
raise SiteHook::NoLogsError path
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
rescue Errno::ENOENT => e
|
87
|
+
|
25
88
|
end
|
26
89
|
end
|
27
90
|
end
|