site_hook 0.8.2 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|