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.
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