bhook 0.1.2 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e294643cd33777109cba77c7582e4d145f300f8d3960c4dbf5862f616a6a6929
4
- data.tar.gz: 4031364646363638654b1b98a9c8d026c2d8c6ac368554315853701d918bb188
3
+ metadata.gz: 39c52c51debcaf48107b16abf83358b72740cd6372229b28d1d8bf40b026990f
4
+ data.tar.gz: bf55558bfdb2a19282ff64104bf5d909a1d83713af3f8ebf8b1751cf5758ed6e
5
5
  SHA512:
6
- metadata.gz: 11a403217488e651e2627f053e7de1658a831d2def49679b1fb767bb35885008431cc37c333fd37e4b97b564289af9f6a573fb074b40e48dccb8c6e46e42bfd1
7
- data.tar.gz: 16336203e9e8c511361cd529bae17dcb845ba8bb654a63719b378e66ceda6188b4ac7854ec98fa0057afeabd88cc385c19c0669718a1e6613836fac4c8b69180
6
+ metadata.gz: 0a94bfa98e43a47608d0c5caf83b9f70cb710ae759ee7e051aa2043ea36f23b2f81a98b7040902ba178f88132e5129ab3b4c881ab1ac4d190b414bed6020532f
7
+ data.tar.gz: 2aa3aabcd3e8431f0a296f8264cd486037a13074cea31f64942c8416b7ec2481aad99f2802a11931bbaf3417ad213fa88ee7f478f405f144c816f6a7113c543b
data/.rubocop.yml CHANGED
@@ -1,3 +1,6 @@
1
1
  require:
2
2
  - rubocop-rake
3
- - rubocop-rspec
3
+ - rubocop-rspec
4
+
5
+ AllCops:
6
+ NewCops: enable
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bhook (0.1.2)
4
+ bhook (0.1.5)
5
5
  git (~> 1.10)
6
6
  kramdown (~> 2.3)
7
7
  listen (~> 3.7)
@@ -12,16 +12,17 @@ GEM
12
12
  specs:
13
13
  ast (2.4.2)
14
14
  diff-lcs (1.5.0)
15
+ docile (1.4.0)
15
16
  ffi (1.15.5)
16
17
  git (1.10.2)
17
18
  rchardet (~> 1.8)
18
- kramdown (2.3.1)
19
+ kramdown (2.3.2)
19
20
  rexml
20
21
  listen (3.7.1)
21
22
  rb-fsevent (~> 0.10, >= 0.10.3)
22
23
  rb-inotify (~> 0.9, >= 0.9.10)
23
24
  parallel (1.21.0)
24
- parser (3.1.0.0)
25
+ parser (3.1.1.0)
25
26
  ast (~> 2.4.1)
26
27
  rainbow (3.1.1)
27
28
  rake (13.0.6)
@@ -29,7 +30,7 @@ GEM
29
30
  rb-inotify (0.10.1)
30
31
  ffi (~> 1.0)
31
32
  rchardet (1.8.0)
32
- regexp_parser (2.2.0)
33
+ regexp_parser (2.2.1)
33
34
  rexml (3.2.5)
34
35
  rspec (3.11.0)
35
36
  rspec-core (~> 3.11.0)
@@ -44,26 +45,32 @@ GEM
44
45
  diff-lcs (>= 1.2.0, < 2.0)
45
46
  rspec-support (~> 3.11.0)
46
47
  rspec-support (3.11.0)
47
- rubocop (1.25.1)
48
+ rubocop (1.26.0)
48
49
  parallel (~> 1.10)
49
50
  parser (>= 3.1.0.0)
50
51
  rainbow (>= 2.2.2, < 4.0)
51
52
  regexp_parser (>= 1.8, < 3.0)
52
53
  rexml
53
- rubocop-ast (>= 1.15.1, < 2.0)
54
+ rubocop-ast (>= 1.16.0, < 2.0)
54
55
  ruby-progressbar (~> 1.7)
55
56
  unicode-display_width (>= 1.4.0, < 3.0)
56
- rubocop-ast (1.15.1)
57
- parser (>= 3.0.1.1)
57
+ rubocop-ast (1.16.0)
58
+ parser (>= 3.1.1.0)
58
59
  rubocop-rake (0.6.0)
59
60
  rubocop (~> 1.0)
60
- rubocop-rspec (2.8.0)
61
+ rubocop-rspec (2.9.0)
61
62
  rubocop (~> 1.19)
62
63
  ruby-progressbar (1.11.0)
63
- sorbet (0.5.9626)
64
- sorbet-static (= 0.5.9626)
65
- sorbet-runtime (0.5.9626)
66
- sorbet-static (0.5.9626-universal-darwin-21)
64
+ simplecov (0.21.2)
65
+ docile (~> 1.1)
66
+ simplecov-html (~> 0.11)
67
+ simplecov_json_formatter (~> 0.1)
68
+ simplecov-html (0.12.3)
69
+ simplecov_json_formatter (0.1.4)
70
+ sorbet (0.5.9775)
71
+ sorbet-static (= 0.5.9775)
72
+ sorbet-runtime (0.5.9775)
73
+ sorbet-static (0.5.9775-universal-darwin-21)
67
74
  unicode-display_width (2.1.0)
68
75
 
69
76
  PLATFORMS
@@ -76,6 +83,7 @@ DEPENDENCIES
76
83
  rubocop (~> 1.0)
77
84
  rubocop-rake (~> 0.6)
78
85
  rubocop-rspec (~> 2.8)
86
+ simplecov (~> 0.21)
79
87
  sorbet (~> 0.5)
80
88
 
81
89
  BUNDLED WITH
data/README.md CHANGED
@@ -15,7 +15,7 @@ Install it yourself as:
15
15
  Getting help:
16
16
 
17
17
  $ bhook --help
18
- Bhook version 0.1.2
18
+ Bhook version 0.1.4
19
19
  Usage: bhook --source /source/path --output /output/path
20
20
  -s, --source=SOURCE Path to version controlled directory containing source md files
21
21
  -o, --output=OUTPUT Path to directory where output files are to be generated
@@ -23,6 +23,7 @@ Getting help:
23
23
  -v, --verbose Print detailed information about files as they are processed
24
24
  -t, --theme=PATH Path to directory containing theme files to use when generating html
25
25
  --generate-theme=PATH Generate a baseline theme that you can then modify to your needs
26
+ --benchmark Run a performance benchmark for the specified source
26
27
  -h, --help Prints this help
27
28
 
28
29
  How I use it:
data/Rakefile CHANGED
@@ -10,4 +10,15 @@ task :sorbet do
10
10
  sh('bundle exec srb tc')
11
11
  end
12
12
 
13
- task default: %i[sorbet spec]
13
+ cops = %w[
14
+ Layout/TrailingWhitespace
15
+ Layout/SpaceInsideBlockBraces
16
+ Style/StringLiterals
17
+ ]
18
+
19
+ desc "Apply #{cops.join(', ')}"
20
+ task :lint_with_autocorrect do
21
+ sh("bundle exec rubocop -a --only #{cops.join(',')}")
22
+ end
23
+
24
+ task default: %i[lint_with_autocorrect sorbet spec]
data/bin/bhook CHANGED
@@ -5,18 +5,34 @@ require 'bundler/setup'
5
5
  require 'bhook'
6
6
 
7
7
  puts "Bhook version #{Bhook::VERSION}"
8
- args = Bhook::ArgsParser.new(ARGV).parse
8
+ parser = Bhook::ArgsParser.new(ARGV)
9
+ args = parser.parse
9
10
 
10
- if args.verbose
11
- Bhook::L.level = Logger::DEBUG
12
- else
13
- Bhook::L.level = Logger::INFO
11
+ exit unless args
12
+
13
+ if args.help
14
+ puts parser.help_text
15
+ exit
14
16
  end
15
17
 
16
18
  if args.generate_theme
19
+ Bhook::L.level = Logger::DEBUG
17
20
  Bhook::ThemeGenerator.new(args.generate_theme).generate!
18
21
  exit
19
- end
22
+ end
23
+
24
+ Bhook::L.level = args.verbose ? Logger::DEBUG : Logger::INFO
20
25
 
21
26
  workspace = Bhook::Workspace.new(args.source, args.output, args.theme)
27
+
28
+ if args.benchmark
29
+ require 'benchmark'
30
+ n = 10
31
+ Benchmark.bmbm do |bench|
32
+ Bhook::L.level = Logger::WARN
33
+ bench.report("Generate HTML #{n} times") { n.times { workspace.process! } }
34
+ end
35
+ exit
36
+ end
37
+
22
38
  args.watch ? workspace.watch! : workspace.process!
@@ -1,84 +1,100 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
1
4
  module Bhook
2
5
  class ArgsParser
3
- Options = Struct.new(:source, :output, :watch, :verbose, :theme, :generate_theme)
4
-
6
+ extend T::Sig
7
+
8
+ Options = Struct.new(:source, :output, :watch, :verbose, :theme, :generate_theme, :benchmark, :help)
9
+
5
10
  def initialize(argv)
6
- @args = Options.new(nil, nil, false, false, nil, nil)
11
+ @args = Options.new(nil, nil, false, false, Bhook::THEME_DIR_PATH, nil, false, false)
7
12
  @argv = argv.clone
8
13
  @opt_parser = build_opt_parser
9
14
  end
10
-
15
+
11
16
  def parse
12
17
  begin
13
18
  @opt_parser.parse(@argv)
19
+ if generate_theme_missing? && help_missing?
20
+ if source_or_output_paths_missing?
21
+ raise OptionParser::MissingArgument.new('See --help.')
22
+ end
23
+ end
14
24
  rescue OptionParser::ParseError => e
15
- puts
16
- puts "Error! #{e.message}"
17
- puts
18
- puts @opt_parser
19
- exit
20
- end
21
-
22
- if source_or_output_paths_missing? && generate_theme_missing?
23
- puts @opt_parser
24
- exit
25
+ puts "\nError! #{e.message}\n"
26
+ return nil
25
27
  end
28
+
26
29
  @args
27
30
  end
28
-
31
+
32
+ def help_text
33
+ @opt_parser.to_s
34
+ end
35
+
29
36
  private
30
-
37
+
38
+ def help_missing?
39
+ !@args.help
40
+ end
41
+
31
42
  def source_or_output_paths_missing?
32
43
  !@args.source || !@args.output
33
44
  end
34
-
45
+
35
46
  def generate_theme_missing?
36
47
  !@args.generate_theme
37
48
  end
38
-
39
- def build_opt_parser
49
+
50
+ def build_opt_parser
40
51
  OptionParser.new do |opts|
41
- opts.banner = "Usage: bhook --source /source/path --output /output/path"
52
+ opts.banner = 'Usage: bhook --source /source/path --output /output/path'
42
53
 
43
- opts.on("-sSOURCE", "--source=SOURCE",
44
- String, "Path to version controlled directory containing source md files") do |source_path|
54
+ opts.on('-sSOURCE', '--source=SOURCE',
55
+ String, 'Path to version controlled directory containing source md files') do |source_path|
45
56
  @args.source = source_path
46
57
  end
47
58
 
48
- opts.on("-oOUTPUT", "--output=OUTPUT",
49
- String, "Path to directory where output files are to be generated") do |out_path|
59
+ opts.on('-oOUTPUT', '--output=OUTPUT',
60
+ String, 'Path to directory where output files are to be generated') do |out_path|
50
61
  @args.output = out_path
51
62
  end
52
63
 
53
- opts.on("-w", "--watch",
54
- FalseClass,
55
- "Continuously watch the source directory for changes and generate output") do
64
+ opts.on('-w', '--watch',
65
+ FalseClass,
66
+ 'Continuously watch the source directory for changes and generate output') do
56
67
  @args.watch = true
57
68
  end
58
69
 
59
- opts.on("-v", "--verbose",
60
- FalseClass,
61
- "Print detailed information about files as they are processed") do
70
+ opts.on('-v', '--verbose',
71
+ FalseClass,
72
+ 'Print detailed information about files as they are processed') do
62
73
  @args.verbose = true
63
74
  end
64
75
 
65
- opts.on("-tPATH", "--theme=PATH",
66
- String,
67
- "Path to directory containing theme files to use when generating html") do |path|
76
+ opts.on('-tPATH', '--theme=PATH',
77
+ String,
78
+ 'Path to directory containing theme files to use when generating html') do |path|
68
79
  @args.theme = path
69
80
  end
70
81
 
71
- opts.on("--generate-theme=PATH",
72
- String,
73
- "Generate a baseline theme that you can then modify to your needs") do |path|
82
+ opts.on('--generate-theme=PATH',
83
+ String,
84
+ 'Generate a baseline theme that you can then modify to your needs') do |path|
74
85
  @args.generate_theme = path
75
86
  end
76
87
 
77
- opts.on("-h", "--help", "Prints this help") do
78
- puts opts
79
- exit
88
+ opts.on('--benchmark',
89
+ FalseClass,
90
+ 'Run a performance benchmark for the specified source') do
91
+ @args.benchmark = true
92
+ end
93
+
94
+ opts.on('-h', '--help', FalseClass, 'Prints this help') do |help|
95
+ @args.help = true
80
96
  end
81
- end
97
+ end
82
98
  end
83
99
  end
84
100
  end
@@ -0,0 +1,30 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Bhook
5
+ class Config
6
+ extend T::Sig
7
+ BHOOK_CONFIG_FILE = T.let('.bhook', String)
8
+ WEBSITE_KEY = T.let('website', String)
9
+
10
+ sig { params(root_dir_path: Pathname, additional_options: T::Hash[String, String]).void }
11
+ def initialize(root_dir_path, additional_options = {})
12
+ config_file_path = root_dir_path.join(BHOOK_CONFIG_FILE)
13
+ config = if File.exist?(config_file_path)
14
+ YAML.load(File.read(config_file_path))
15
+ else
16
+ {}.merge(additional_options)
17
+ end
18
+ @root_dir_path = root_dir_path
19
+ @website_url = T.let(config[WEBSITE_KEY], T.nilable(String))
20
+ end
21
+
22
+ sig { params(src_file_path: Pathname, src_file_sha: T.nilable(String)).returns(T.nilable(String)) }
23
+ def website_url_for(src_file_path, src_file_sha)
24
+ if @website_url && src_file_sha
25
+ relative_file_path = src_file_path.relative_path_from(@root_dir_path)
26
+ File.join(@website_url, src_file_sha, relative_file_path)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -4,15 +4,22 @@
4
4
  module Bhook
5
5
  class Directory
6
6
  extend T::Sig
7
-
7
+
8
8
  GIT_DIR = '.git'
9
9
  MD_EXT = '.md'
10
-
11
- sig { params(src_path: Pathname, out_path: Pathname, git: Git::Base).void }
12
- def initialize(src_path, out_path, git)
10
+
11
+ sig { params(src_path: Pathname, out_path: Pathname).returns(Bhook::Directory) }
12
+ def self.new_root_directory(src_path, out_path)
13
+ self.new(src_path, out_path, Git.open(src_path), Bhook::Config.new(src_path))
14
+ end
15
+
16
+
17
+ sig { params(src_path: Pathname, out_path: Pathname, git: Git::Base, config: Bhook::Config).void }
18
+ def initialize(src_path, out_path, git, config)
13
19
  @src_path = src_path
14
20
  @out_path = T.let(out_path.join(src_path.basename), Pathname)
15
21
  @git = git
22
+ @config = config
16
23
  @sub_dirs = T.let([], T::Array[Directory])
17
24
  @md_files = T.let([], T::Array[MdFile])
18
25
  build_next_level_nodes
@@ -20,15 +27,16 @@ module Bhook
20
27
 
21
28
  sig { params(theme: Theme).void }
22
29
  def write!(theme)
23
- FileUtils.mkdir_p(@out_path, verbose: true)
30
+ FileUtils.mkdir_p(@out_path)
31
+ L.debug("mkdir: #{@out_path}")
24
32
  @sub_dirs.each { |dir| dir.write!(theme) }
25
- @md_files.map do |file|
33
+ @md_files.map do |file|
26
34
  Thread.new { file.write!(theme) }
27
35
  end.each do |thread|
28
36
  thread.join
29
37
  end
30
38
  end
31
-
39
+
32
40
  sig { returns(T::Array[MdFile]) }
33
41
  def all_md_files
34
42
  @md_files + @sub_dirs.map(&:all_md_files).flatten
@@ -38,20 +46,20 @@ module Bhook
38
46
  def to_s
39
47
  @src_path.to_s
40
48
  end
41
-
49
+
42
50
  private
43
51
 
44
52
  sig { void }
45
53
  def build_next_level_nodes
46
54
  children = @src_path.children
47
55
  children.delete(@src_path.join(GIT_DIR))
48
-
56
+
49
57
  file_threads = []
50
58
  children.each do |child_path|
51
59
  if child_path.directory?
52
- @sub_dirs << Directory.new(child_path, @out_path, @git)
60
+ @sub_dirs << Directory.new(child_path, @out_path, @git, @config)
53
61
  elsif child_path.extname == MD_EXT
54
- file_threads << Thread.new { MdFile.new(child_path, @out_path, @git) }
62
+ file_threads << Thread.new { MdFile.new(child_path, @out_path, @git, @config) }
55
63
  end
56
64
  end
57
65
  file_threads.each { |thread| @md_files << thread.value }
data/lib/bhook/logger.rb CHANGED
@@ -1,8 +1,9 @@
1
- # typed: false
1
+ # typed: true
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Bhook
5
- L = Logger.new(STDOUT, formatter: proc {|severity, datetime, progname, msg|
5
+ LOG_FORMATTER = proc { |severity, datetime, progname, msg|
6
6
  "#{Thread.current.object_id} #{msg}\n"
7
- })
7
+ }
8
+ L = Logger.new(STDOUT, formatter: LOG_FORMATTER)
8
9
  end
data/lib/bhook/md_file.rb CHANGED
@@ -4,44 +4,63 @@
4
4
  module Bhook
5
5
  class MdFile
6
6
  extend T::Sig
7
-
7
+
8
8
  PAGE_TEMPLATE = T.let(File.read(Bhook::PAGE_TEMPLATE_PATH), String)
9
9
  AFTER_H1_TEMPLATE = T.let(File.read(Bhook::AFTER_H1_TEMPLATE_PATH), String)
10
-
10
+
11
11
  sig { returns(Pathname) }
12
- attr_reader :src_file_path
13
-
14
- sig { params(src_file_path: Pathname, out_path: Pathname, git: Git::Base).void }
15
- def initialize(src_file_path, out_path, git)
12
+ attr_reader :src_file_path, :out_file_path
13
+
14
+ sig { returns(T.nilable(String)) }
15
+ attr_reader :src_file_date, :src_file_sha, :src_file_url
16
+
17
+ sig { returns(String) }
18
+ attr_reader :md
19
+
20
+ sig { params(src_file_path: Pathname, out_path: Pathname, git: Git::Base, config: Bhook::Config).void }
21
+ def initialize(src_file_path, out_path, git, config)
16
22
  L.debug "Reading: #{src_file_path}"
17
23
  @md = T.let(File.read(src_file_path), String)
18
24
  @src_file_path = src_file_path
19
25
  @out_path = out_path
20
- src_file_date, src_file_sha = git.lib.send(:command, 'log',
21
- '-n 1',
22
- '--pretty=format:%ad|%h',
23
- '--date=short',
24
- '--',
25
- @src_file_path).split('|')
26
- @src_file_date = T.let(src_file_date, T.nilable(String))
27
- @src_file_sha = T.let(src_file_sha, T.nilable(String))
26
+ @git = git
27
+ @config = config
28
+
29
+ file_date, file_sha = load_git_file_metadata
30
+ @src_file_date = T.let(file_date, T.nilable(String))
31
+ @src_file_sha = T.let(file_sha, T.nilable(String))
32
+ @out_file_path = T.let(@out_path.join(out_file_name), Pathname)
33
+ @src_file_url = T.let(file_url, T.nilable(String))
28
34
  end
29
35
 
30
36
  sig { params(theme: Bhook::Theme).void }
31
37
  def write!(theme)
32
- out_file_name = @src_file_path.basename.sub(/\.md$/, '.html')
33
- out_file_path = @out_path.join(out_file_name)
34
-
35
38
  L.debug "Processing: #{@src_file_sha || 'unversioned'} #{@src_file_path}"
36
- rendered_page = theme.render_page(@md, @src_file_sha, @src_file_date)
39
+ rendered_page = theme.render_page(@md, @src_file_sha, @src_file_date, @src_file_url)
37
40
 
38
41
  L.debug "Writing: #{@src_file_sha} #{out_file_path}"
39
- File.write(out_file_path, rendered_page)
42
+ File.write(@out_file_path, rendered_page)
40
43
  end
41
44
 
42
- sig { returns(String) }
43
- def to_s
44
- @src_file_path.to_s
45
+ private
46
+ sig { returns(Pathname) }
47
+ def out_file_name
48
+ @src_file_path.basename.sub(/\.md$/, '.html')
49
+ end
50
+
51
+ sig { returns(T.nilable(String)) }
52
+ def file_url
53
+ @config.website_url_for(@src_file_path, @src_file_sha)
54
+ end
55
+
56
+ sig { returns(T::Array[String]) }
57
+ def load_git_file_metadata
58
+ @git.lib.send(:command, 'log',
59
+ '-n 1',
60
+ '--pretty=format:%ad|%H',
61
+ '--date=short',
62
+ '--',
63
+ @src_file_path).split('|')
45
64
  end
46
65
  end
47
66
  end
@@ -40,6 +40,13 @@
40
40
  padding: 0.1em 1em 0.1em 1em;
41
41
  border: 1px solid #bbbbbb;
42
42
  }
43
+
44
+ blockquote {
45
+ border-left: 10px solid #cccccc;
46
+ background: #eeeeee;
47
+ display: inline-block;
48
+ padding: 1em;
49
+ }
43
50
  </style>
44
51
  <title><%= src_title -%></title>
45
52
  </head>
@@ -52,7 +59,13 @@
52
59
  </div>
53
60
  <div class="footer d-flex justify-content-center">
54
61
  <div>
55
- v. <%= src_file_sha -%>, <%= src_file_date -%> © <a href="https://sidu.in">Sidu Ponnappa</a>
62
+ <% short_sha = src_file_sha ? src_file_sha[0..7] : nil -%>
63
+ <% if file_url && short_sha -%>
64
+ v. <a href="<%= file_url -%>"><%= short_sha -%></a>,
65
+ <% elsif short_sha -%>
66
+ v. <%= short_sha -%>,
67
+ <% end -%>
68
+ <%= src_file_date -%> © <a href="https://sidu.in">Sidu Ponnappa</a>
56
69
  </div>
57
70
  </div>
58
71
  </div>
data/lib/bhook/theme.rb CHANGED
@@ -13,8 +13,9 @@ module Bhook
13
13
  @after_h1_strategy = T.let(strategy, T.proc.params(binding_instance: Binding).returns(String))
14
14
  end
15
15
 
16
- sig { params(md: String, src_file_sha: T.nilable(String), src_file_date: T.nilable(String)).returns(String) }
17
- def render_page(md, src_file_sha, src_file_date)
16
+ sig { params(md: String, src_file_sha: T.nilable(String),
17
+ src_file_date: T.nilable(String), file_url: T.nilable(String)).returns(String) }
18
+ def render_page(md, src_file_sha, src_file_date, file_url)
18
19
  src_title = T.let('', String)
19
20
 
20
21
  doc = Kramdown::Document.new(md)
@@ -5,17 +5,19 @@ module Bhook
5
5
  class ThemeGenerator
6
6
  extend T::Sig
7
7
 
8
- sig {params(output_path: String).void}
8
+ sig { params(output_path: String).void }
9
9
  def initialize(output_path)
10
10
  @output_path = T.let(File.join(output_path, 'theme'), String)
11
11
  @template_files = T.let([Bhook::PAGE_TEMPLATE_PATH,
12
12
  Bhook::AFTER_H1_TEMPLATE_PATH], T::Array[String])
13
13
  end
14
14
 
15
- sig {void}
15
+ sig { void }
16
16
  def generate!
17
- FileUtils.mkdir_p(@output_path, verbose: true)
18
- FileUtils.cp(@template_files, @output_path, verbose: true)
17
+ FileUtils.mkdir_p(@output_path)
18
+ L.debug("mkdir: #{@output_path}")
19
+ FileUtils.cp(@template_files, @output_path)
20
+ L.debug("cp: #{@template_files.join(' ')} #{@output_path}")
19
21
  end
20
22
  end
21
23
  end
data/lib/bhook/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Bhook
5
- VERSION = '0.1.2'
5
+ VERSION = '0.1.5'
6
6
  end
@@ -13,9 +13,9 @@ module Bhook
13
13
  end
14
14
 
15
15
  sig { void }
16
- def process!
16
+ def process!
17
17
  root_dir.write!(@theme)
18
- L.info "Done!"
18
+ L.info 'Done!'
19
19
  end
20
20
 
21
21
  sig { void }
@@ -24,7 +24,7 @@ module Bhook
24
24
 
25
25
  L.info "Watching: #{@src_path} for changes..."
26
26
  listener = Listen.to(@src_path.to_s, File.join(@src_path.to_s, '.git')) do |_modified, _added, _removed|
27
- L.info "Detected changes..."
27
+ L.info 'Detected changes...'
28
28
  process!
29
29
  end
30
30
  listener.start
@@ -35,11 +35,11 @@ module Bhook
35
35
  def all_md_files
36
36
  root_dir.all_md_files
37
37
  end
38
-
39
- private
40
- sig { returns(Bhook::RootDirectory) }
38
+
39
+ private
40
+ sig { returns(Bhook::Directory) }
41
41
  def root_dir
42
- RootDirectory.new(@src_path, @out_path)
42
+ Directory.new_root_directory(@src_path, @out_path)
43
43
  end
44
44
  end
45
45
  end
data/lib/bhook.rb CHANGED
@@ -7,6 +7,8 @@ require 'pathname'
7
7
  require 'erb'
8
8
  require 'optparse'
9
9
  require 'logger'
10
+ require 'uri'
11
+ require 'yaml'
10
12
  require 'sorbet-runtime'
11
13
  require 'git'
12
14
  require 'kramdown'
@@ -25,10 +27,10 @@ end
25
27
  require_relative 'bhook/version'
26
28
  require_relative 'bhook/logger'
27
29
  require_relative 'bhook/args_parser'
30
+ require_relative 'bhook/config'
28
31
  require_relative 'bhook/theme_generator'
29
32
  require_relative 'bhook/theme'
30
33
  require_relative 'bhook/converter/html'
31
34
  require_relative 'bhook/directory'
32
- require_relative 'bhook/root_directory'
33
35
  require_relative 'bhook/md_file'
34
36
  require_relative 'bhook/workspace'