newport 1.0.2 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/newport +1 -1
- data/lib/newport.rb +35 -0
- data/lib/newport/build.rb +87 -0
- data/lib/newport/help.rb +13 -0
- data/lib/newport/logger.rb +8 -0
- data/lib/newport/new.rb +69 -0
- data/lib/newport/version.rb +5 -0
- metadata +7 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cde9ad6247ebf9abbfd0e1b6039567784b7a69f995bbe36f435a3cd15a4a6f30
|
4
|
+
data.tar.gz: 5af60fc2e02d5fd95c0b679f4b356b0c776ebf592e25e85fd7068989b73f523a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16e7c45707884e45a018a6144852880e39e8882fc3acc9cb9e0342a8a7d19c8bdd6f1c6096e34259e8a91bb4762bab97b74afff302909451740a1c6761517bb5
|
7
|
+
data.tar.gz: 711c06ca630378be05a3776eddf85c0723b2992cea619cb429a367a97ed710e9b66dbdc5566f2c92371d3b31e8a029029fe8db8483e831bae72c8e7ca1e8b4f9
|
data/exe/newport
CHANGED
data/lib/newport.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift __dir__ # For use/testing when no gem is installed
|
4
|
+
|
5
|
+
def require_all(path)
|
6
|
+
glob = File.join(__dir__, path, '*.rb')
|
7
|
+
Dir[glob].each do |f|
|
8
|
+
require f
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'rubygems'
|
13
|
+
require 'fileutils'
|
14
|
+
require 'time'
|
15
|
+
require 'logger'
|
16
|
+
require 'colorator'
|
17
|
+
require 'kramdown'
|
18
|
+
require 'rss'
|
19
|
+
|
20
|
+
module Newport
|
21
|
+
autoload :VERSION, 'newport/version'
|
22
|
+
autoload :Help, 'newport/help'
|
23
|
+
autoload :New, 'newport/new'
|
24
|
+
autoload :Build, 'newport/build'
|
25
|
+
|
26
|
+
require 'newport/logger'
|
27
|
+
|
28
|
+
class << self
|
29
|
+
def logger
|
30
|
+
@logger ||= Logger.new($stdout)
|
31
|
+
@logger.formatter = proc { |_severity, _datetime, _progname, msg| "#{msg}\n" }
|
32
|
+
@logger
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Newport
|
4
|
+
class Build
|
5
|
+
class << self
|
6
|
+
def process(args)
|
7
|
+
show_help if args[1] == 'help'
|
8
|
+
build_blog
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def show_help
|
14
|
+
Newport.logger.info "Newport #{Newport::VERSION}"
|
15
|
+
Newport.logger.info 'usage: newport build'
|
16
|
+
abort
|
17
|
+
end
|
18
|
+
|
19
|
+
def build_blog
|
20
|
+
html = content_from_layouts
|
21
|
+
html = add_javascript html
|
22
|
+
html = add_plugins html
|
23
|
+
html = add_posts(html, build_posts)
|
24
|
+
html = replcae_tags html
|
25
|
+
write_html html
|
26
|
+
end
|
27
|
+
|
28
|
+
def config
|
29
|
+
@config ||= YAML.load_file('config.yml')
|
30
|
+
end
|
31
|
+
|
32
|
+
def content_from_layouts
|
33
|
+
head = File.read('layouts/head.html')
|
34
|
+
style = File.read('layouts/style.css')
|
35
|
+
head = head.gsub('<!-- style -->', "<style>#{style}</style>")
|
36
|
+
nav = File.read('layouts/nav.html')
|
37
|
+
main = File.read('layouts/main.html')
|
38
|
+
footer = File.read('layouts/footer.html')
|
39
|
+
main.gsub('<!-- head -->', head).gsub('<!-- nav -->', nav).gsub('<!-- footer -->', footer)
|
40
|
+
end
|
41
|
+
|
42
|
+
def add_javascript(html)
|
43
|
+
jss = []
|
44
|
+
Dir.glob('javascript/*.js') { |filename| jss << File.open(filename).read }
|
45
|
+
html.gsub('<!-- javascript -->', "<script>#{jss.join}</script>")
|
46
|
+
end
|
47
|
+
|
48
|
+
def add_plugins(html)
|
49
|
+
plugins = []
|
50
|
+
config['plugins'].each do |p|
|
51
|
+
plugin = File.open("plugins/#{p}.js").read
|
52
|
+
plugins << plugin
|
53
|
+
end
|
54
|
+
html.gsub('<!-- plugins -->', "<script>#{plugins.join}</script>")
|
55
|
+
end
|
56
|
+
|
57
|
+
def build_posts
|
58
|
+
files = []
|
59
|
+
posts = []
|
60
|
+
|
61
|
+
Dir.glob('posts/*.md') { |filename| files << filename.split('/').last }
|
62
|
+
|
63
|
+
files.reverse.each do |filename|
|
64
|
+
post = '<article>' + Kramdown::Document.new(File.open("posts/#{filename}").read).to_html + '</article>'
|
65
|
+
posts << post
|
66
|
+
end
|
67
|
+
posts
|
68
|
+
end
|
69
|
+
|
70
|
+
def add_posts(html, posts)
|
71
|
+
html.gsub('<!-- posts -->', posts.join)
|
72
|
+
end
|
73
|
+
|
74
|
+
def replcae_tags(html)
|
75
|
+
html = html.gsub('<!-- email -->', config['email'])
|
76
|
+
html.gsub('<!-- title -->', config['title'])
|
77
|
+
end
|
78
|
+
|
79
|
+
def write_html(html)
|
80
|
+
FileUtils.mkdir_p 'production/images'
|
81
|
+
File.open('production/index.html', 'w') do |f|
|
82
|
+
f.write html
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
data/lib/newport/help.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Newport
|
4
|
+
class Help
|
5
|
+
class << self
|
6
|
+
def show
|
7
|
+
Newport.logger.info "Newport #{Newport::VERSION}"
|
8
|
+
Newport.logger.info 'usage: newport [command] [options]'
|
9
|
+
Newport.logger.info 'commands: new, build, help'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/newport/new.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Newport
|
4
|
+
class New
|
5
|
+
class << self
|
6
|
+
def process(args)
|
7
|
+
Newport.logger.abort_with 'fatal: please specify path.'.red unless args[1]
|
8
|
+
show_help if args[1] == 'help'
|
9
|
+
create_blog args[1]
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def show_help
|
15
|
+
Newport.logger.info "Newport #{Newport::VERSION}"
|
16
|
+
Newport.logger.info 'usage: newport new [path]'
|
17
|
+
abort
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_blog(path)
|
21
|
+
blog_path = File.expand_path(path, Dir.pwd)
|
22
|
+
FileUtils.mkdir_p blog_path
|
23
|
+
FileUtils.cp_r "#{template}/.", path
|
24
|
+
FileUtils.chmod_R 'u+w', path
|
25
|
+
File.open(File.expand_path('Gemfile', path), 'w') do |f|
|
26
|
+
f.write(gemfile_contents)
|
27
|
+
end
|
28
|
+
after_install path
|
29
|
+
end
|
30
|
+
|
31
|
+
def template
|
32
|
+
File.expand_path('../site_template', __dir__)
|
33
|
+
end
|
34
|
+
|
35
|
+
def gemfile_contents
|
36
|
+
<<~RUBY
|
37
|
+
source "https://rubygems.org"
|
38
|
+
|
39
|
+
gem "newport", "~> #{Newport::VERSION}"
|
40
|
+
|
41
|
+
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
42
|
+
# and associated library.
|
43
|
+
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
44
|
+
gem "tzinfo", "~> 1.2"
|
45
|
+
gem "tzinfo-data"
|
46
|
+
end
|
47
|
+
RUBY
|
48
|
+
end
|
49
|
+
|
50
|
+
def after_install(path)
|
51
|
+
begin
|
52
|
+
require 'bundler'
|
53
|
+
bundle_install path
|
54
|
+
rescue LoadError
|
55
|
+
Newport.logger.info 'Could not load Bundler. Bundle install skipped.'
|
56
|
+
end
|
57
|
+
|
58
|
+
Newport.logger.info "New Newport site installed in #{path.cyan}."
|
59
|
+
end
|
60
|
+
|
61
|
+
def bundle_install(path)
|
62
|
+
Newport.logger.info "Running bundle install in #{path.cyan}..."
|
63
|
+
Dir.chdir(path) do
|
64
|
+
system('bundle')
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: newport
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Fisher
|
@@ -97,6 +97,12 @@ files:
|
|
97
97
|
- LICENSE
|
98
98
|
- README.md
|
99
99
|
- exe/newport
|
100
|
+
- lib/newport.rb
|
101
|
+
- lib/newport/build.rb
|
102
|
+
- lib/newport/help.rb
|
103
|
+
- lib/newport/logger.rb
|
104
|
+
- lib/newport/new.rb
|
105
|
+
- lib/newport/version.rb
|
100
106
|
homepage: https://github.com/richard-fisher/newport
|
101
107
|
licenses:
|
102
108
|
- MIT
|