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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.rspec +0 -2
  4. data/.rubocop.yml +2 -0
  5. data/Gemfile +1 -5
  6. data/Rakefile +35 -3
  7. data/bin/site_hook +5 -1
  8. data/features/get_help.feature +3 -0
  9. data/features/step_definitions/get_help_step_definition.rb +1 -0
  10. data/features/step_definitions/my_steps.rb +3 -0
  11. data/features/support/env.rb +1 -0
  12. data/lib/site_hook.rb +2 -28
  13. data/lib/site_hook/cli.rb +22 -39
  14. data/lib/site_hook/commands/config_class.rb +22 -68
  15. data/lib/site_hook/commands/jekyll_class.rb +38 -0
  16. data/lib/site_hook/commands/server_class.rb +38 -34
  17. data/lib/site_hook/config.rb +390 -14
  18. data/lib/site_hook/config_sections.rb +60 -9
  19. data/lib/site_hook/deprecate.rb +34 -11
  20. data/lib/site_hook/env/env.rb +2 -0
  21. data/lib/site_hook/exceptions.rb +26 -2
  22. data/lib/site_hook/log.rb +20 -15
  23. data/lib/site_hook/logger.rb +94 -173
  24. data/lib/site_hook/loggers.rb +10 -0
  25. data/lib/site_hook/loggers/access.rb +20 -0
  26. data/lib/site_hook/loggers/app.rb +78 -0
  27. data/lib/site_hook/loggers/build.rb +77 -0
  28. data/lib/site_hook/loggers/fake.rb +52 -0
  29. data/lib/site_hook/loggers/git.rb +81 -0
  30. data/lib/site_hook/loggers/hook.rb +74 -0
  31. data/lib/site_hook/methods.rb +26 -0
  32. data/lib/site_hook/paths.rb +65 -2
  33. data/lib/site_hook/prelogger.rb +88 -0
  34. data/lib/site_hook/prompt.rb +14 -0
  35. data/lib/site_hook/prompts/prompt_project.rb +48 -0
  36. data/lib/site_hook/runner.rb +36 -0
  37. data/lib/site_hook/sender.rb +4 -9
  38. data/lib/site_hook/string_ext.rb +57 -0
  39. data/lib/site_hook/version.rb +2 -2
  40. data/lib/site_hook/webhook.rb +120 -129
  41. data/site_hook.gemspec +39 -22
  42. data/spec/spec_helper.rb +13 -0
  43. data/spec/string_ext_spec.rb +10 -0
  44. metadata +87 -85
  45. data/CODE_OF_CONDUCT.md +0 -74
  46. data/bin/console +0 -14
  47. data/lib/site_hook/assets/css/styles.css +0 -26
  48. data/lib/site_hook/commands/debug_class.rb +0 -29
  49. data/lib/site_hook/config_sections/cli.rb +0 -24
  50. data/lib/site_hook/config_sections/log_levels.rb +0 -15
  51. data/lib/site_hook/config_sections/projects.rb +0 -22
  52. data/lib/site_hook/const.rb +0 -10
  53. data/lib/site_hook/gem.rb +0 -26
  54. data/lib/site_hook/persist.rb +0 -14
  55. data/lib/site_hook/prompts/gen_config.rb +0 -48
  56. data/lib/site_hook/spinner.rb +0 -19
  57. data/lib/site_hook/views/layout.haml +0 -24
  58. 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
@@ -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
- Pathname(::Gem.user_dir).join('gems', "site_hook-#{SiteHook::VERSION}", 'lib')
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