Skip to content

Commit 189fcf7

Browse files
committed
Adjusts site to accommodate multiple user-doc branches
* Build directories for each branch * Path changes for multiple ref branches, testing and cleanup * Add minitest-reporters, sort gems * Adjust menus for branches * Better default path handling in Miq module
1 parent b57ef1d commit 189fcf7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+2506
-90
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ _site
66
dest/
77
site/docs/guides
88
site/docs/reference/latest/
9+
site/docs/reference/fine/
10+
site/docs/reference/euwe/
11+
site/docs/reference/darga/
912
site/.asset-cache
1013

1114
tmp/

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ ENV MIQ_REF_REPO=https://github.com/manageiq/manageiq_docs
3737
ENV MIQ_REF_BRANCH=master
3838
# ENV MIQ_REF_TMP=/tmp/manageiq_docs
3939
# ENV MIQ_REF_SRC=_preview/manageiq/${MIQ_REF_BRANCH}
40-
# ENV MIQ_REF_DST=${MIQ_DOCS_DIR}/reference/latest
40+
# ENV MIQ_REF_DIR=${MIQ_DOCS_DIR}/reference/latest
4141

4242
# Nginx configs
4343
RUN mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.dist

Gemfile

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
source 'https://rubygems.org'
22

3-
gem "thor"
3+
gem "activesupport", :require => false
4+
gem "bootstrap-sass"
5+
gem "font-awesome-sass"
46
gem "jekyll"
5-
gem "jekyll-paginate"
67
gem "jekyll-assets"
78
gem "jekyll-coffeescript"
9+
gem "jekyll-paginate"
810
gem "jekyll-sitemap"
9-
gem "therubyracer"
10-
gem "bootstrap-sass"
11-
gem "font-awesome-sass"
12-
gem "activesupport", :require => false
1311
gem "jemoji"
12+
gem "therubyracer"
13+
gem "thor"
1414

1515
group :test, :development do
1616
gem "dotenv"
17-
gem "rake"
18-
gem "pry"
19-
gem "pry-byebug"
2017
gem "guard"
2118
gem "guard-livereload"
2219
gem "guard-minitest"
20+
gem "minitest-reporters"
21+
gem "pry"
22+
gem "pry-byebug"
23+
gem "rake"
2324
end
2425

2526
# source 'https://rails-assets.org' do

Gemfile.lock

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ GEM
99
tzinfo (~> 1.1)
1010
addressable (2.5.0)
1111
public_suffix (~> 2.0, >= 2.0.2)
12+
ansi (1.5.0)
1213
autoprefixer-rails (6.7.2)
1314
execjs
1415
bootstrap-sass (3.3.7)
1516
autoprefixer-rails (>= 5.2.1)
1617
sass (>= 3.3.4)
18+
builder (3.2.3)
1719
byebug (9.0.6)
1820
coderay (1.1.1)
1921
coffee-script (2.4.1)
@@ -106,6 +108,11 @@ GEM
106108
method_source (0.8.2)
107109
mini_portile2 (2.1.0)
108110
minitest (5.10.1)
111+
minitest-reporters (1.1.14)
112+
ansi
113+
builder
114+
minitest (>= 5.0)
115+
ruby-progressbar
109116
multi_json (1.12.1)
110117
nenv (0.3.0)
111118
nokogiri (1.7.0.1)
@@ -130,6 +137,7 @@ GEM
130137
ffi (>= 0.5.0)
131138
ref (2.0.0)
132139
rouge (1.11.1)
140+
ruby-progressbar (1.8.1)
133141
safe_yaml (1.0.4)
134142
sass (3.4.23)
135143
shellany (0.0.1)
@@ -162,11 +170,12 @@ DEPENDENCIES
162170
jekyll-paginate
163171
jekyll-sitemap
164172
jemoji
173+
minitest-reporters
165174
pry
166175
pry-byebug
167176
rake
168177
therubyracer
169178
thor
170179

171180
BUNDLED WITH
172-
1.13.6
181+
1.14.6

Guardfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ end
2121

2222
guard :minitest do
2323
watch(%r{^test/(.*)\/?(.*)_test[s]?\.rb$})
24-
watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
24+
# watch('lib/miq.rb') { |_| "test/lib/miq_test.rb" }
25+
watch(%r{^lib\/(.*\/)?([^\/]+)\.rb$}) { |m| "test/lib/#{m[1]}#{m[2]}_test.rb" }
2526
watch(%r{^site/_plugins/(.*/)?([^/]+)\.rb$}) { "test/plugin_tests.rb" }
2627
watch(%r{^test/test_helper\.rb$}) { "test" }
2728
end

dot-env-example

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@ MIQ_ENV=development
88

99
# MIQ_BASE_DIR
1010
# MIQ_DOCS_DIR
11+
# MIQ_TMP_DIR
1112
# MIQ_GUIDES_DIR
1213

1314
# MIQ_SITE_DEST
1415
# MIQ_SITE_SOURCE
15-
# MIQ_SITE_BRANCH
1616

17+
# MIQ_REF_BRANCHES=master,fine,euwe
1718
# MIQ_REF_REPO
1819
# MIQ_REF_BRANCH
1920
# MIQ_REF_TMP
2021
# MIQ_REF_SRC
21-
# MIQ_REF_DST
22+
# MIQ_REF_DIR

lib/miq.rb

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
require_relative "miq/ref_docs"
1919
require_relative "miq/ref_menu"
20+
require_relative "miq/ref_page"
2021

2122
require_relative "miq/md_link_converter"
2223
require_relative "miq/dir_index"
@@ -28,35 +29,37 @@
2829

2930
module Miq
3031
def self.working_dir
31-
if ENV["MIQ_BASE_DIR"]
32-
Pathname.new(ENV["MIQ_BASE_DIR"])
33-
else
34-
Pathname.new(Dir.pwd)
35-
end
32+
Pathname.new(ENV.fetch("MIQ_BASE_DIR", Dir.pwd))
3633
end
3734

35+
# Main directories
36+
3837
def self.dest_dir
39-
working_dir.join( (ENV["MIQ_SITE_DEST"] || "dest") )
38+
Pathname.new ENV.fetch("MIQ_SITE_DEST", working_dir.join("dest"))
4039
end
4140

4241
def self.site_dir
43-
working_dir.join( (ENV["MIQ_SITE_SOURCE"] || "site") )
42+
Pathname.new ENV.fetch("MIQ_SITE_SOURCE", working_dir.join("site"))
4443
end
4544

4645
def self.docs_dir
47-
if ENV["MIQ_DOCS_DIR"]
48-
working_dir.join(ENV["MIQ_DOCS_DIR"])
49-
else
50-
working_dir.join("site", "docs")
51-
end
46+
Pathname.new ENV.fetch("MIQ_DOCS_DIR", site_dir.join("docs"))
47+
end
48+
49+
def self.tmp_dir
50+
working_dir.join(ENV["MIQ_TMP_DIR"] || "tmp")
5251
end
5352

53+
# Docs subdirectories
54+
55+
# Where Jekyll will look for guides
5456
def self.guides_dir
55-
site_dir.join(guides_relative)
57+
docs_dir.join(ENV["MIQ_GUIDES_DIR"] || "guides")
5658
end
5759

58-
def self.guides_relative
59-
(ENV["MIQ_GUIDES_DIR"] || "docs/guides")
60+
# The reference doc destination that Jekyll will use
61+
def self.reference_dir
62+
docs_dir.join(ENV["MIQ_REF_DIR"] || "reference")
6063
end
6164

6265
# Might want to make these override-able in the future:
@@ -76,4 +79,8 @@ def self.blog_year_template
7679
def self.blog_month_template
7780
"blog_month.html"
7881
end
82+
83+
def self.doc_branches
84+
ENV.fetch('MIQ_DOC_BRANCHES', 'euwe,fine,latest').split(',')
85+
end
7986
end

lib/miq/guide_page.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ def self.new_from(page)
66
new(page.site, Miq.site_dir.to_s, page.dir, page.name)
77
end
88

9+
# Don't render guides with liquid because some
10+
# pages have conflicting syntax
911
def render_with_liquid?
1012
false
1113
end

lib/miq/ref_docs.rb

Lines changed: 52 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,23 @@ def self.update
1414
new.update
1515
end
1616

17-
attr_reader :repo, :branch, :tmp_dir, :src_dir, :dst_dir
17+
attr_reader :repo, :branches, :tmp_dir, :src_dir, :dst_dir
1818

1919
def initialize
2020
# Where do the docs live?
2121
@repo = ENV["MIQ_REF_REPO"] || "https://github.com/ManageIQ/manageiq_docs.git"
2222

23-
# What branch to checkout?
24-
@branch = ENV["MIQ_REF_BRANCH"] || "master"
23+
# What branches to copy?
24+
@branches = ENV["MIQ_REF_BRANCHES"]&.split(',') || %w(master fine euwe)
2525

2626
# Where should we cache and build?
2727
@tmp_dir = ENV["MIQ_REF_TMP"] || "/tmp/manageiq_docs"
2828

29-
# TODO: src & dst will need to be changed to support multiple versions
30-
3129
# Where are the built files that we want?
32-
@src_dir = ENV["MIQ_REF_SRC"] || "_preview/manageiq/#{@branch}"
30+
@src_dir = ENV["MIQ_REF_SRC"] || "_package/community"
3331

3432
# Where should the files end up?
35-
@dst_dir = ENV["MIQ_REF_DST"] || Miq.docs_dir.join("reference", "latest")
33+
@dst_dir = ENV["MIQ_REF_DIR"] || Miq.docs_dir.join("reference")
3634
end
3735

3836
def reset
@@ -61,39 +59,35 @@ def update
6159

6260
def clone_or_update_repo
6361
if File.directory?(tmp_dir)
64-
logger.info "Updating local ref docs repo"
65-
shell "cd #{tmp_dir} && git pull origin"
62+
update_repo
6663
else
67-
logger.info "Cloning #{repo} to #{tmp_dir}"
68-
shell "git clone #{repo} --depth 1 #{tmp_dir}"
64+
clone_repo
6965
end
7066
end
7167

7268
def setup_ascii_binder
7369
logger.info "Installing Ascii Binder"
7470
shell [
7571
"cd #{tmp_dir}",
76-
"git checkout #{branch}",
72+
"git checkout master",
7773
"#{bundler} install"
7874
].join(" && ")
7975
end
8076

8177
def build_ref_docs
8278
logger.info "Building ref docs"
83-
shell [
84-
"cd #{tmp_dir}",
85-
"#{bundler} exec asciibinder build"
86-
].join(" && ")
79+
shell "cd #{tmp_dir} && #{bundler} exec asciibinder package"
8780
end
8881

8982
def sync_files
9083
if File.directory?("#{tmp_dir}/#{src_dir}") || debug?
9184
prep dst_dir
92-
logger.info "Syncing files to #{dst_dir}"
93-
cmd = "rsync -av "
94-
cmd << exclude_files.map{|x| "--exclude '#{x}'"}.join(' ')
95-
cmd << " #{tmp_dir}/#{src_dir}/* #{dst_dir}/"
96-
shell cmd
85+
86+
branches.each do |branch|
87+
rsync_copy(branch)
88+
end
89+
90+
shell "mv #{dst_dir}/master #{dst_dir}/latest"
9791
else
9892
logger.error "Reference docs source directory not present."
9993
end
@@ -105,5 +99,42 @@ def sync_files
10599
def exclude_files
106100
["_stylesheets", "/index.html", "sitemap.xml"]
107101
end
102+
103+
def rsync_copy(branch)
104+
source = "#{tmp_dir}/#{src_dir}/#{branch}/*"
105+
dest = "#{dst_dir}/#{branch}"
106+
107+
logger.info "Syncing files to #{dest}"
108+
109+
cmd = ["rsync -av ", rsync_excludes, source, dest].join(' ')
110+
111+
shell cmd
112+
end
113+
114+
def branch_paths
115+
branches.map { |b| "#{tmp_dir}/#{src_dir}/#{b}/*" }.join(' ')
116+
end
117+
118+
def rsync_excludes
119+
exclude_files.map { |x| "--exclude '#{x}'" }.join(' ')
120+
end
121+
122+
def update_repo
123+
logger.info "Updating local ref docs repo"
124+
shell "cd #{tmp_dir} && git fetch origin"
125+
end
126+
127+
def clone_repo
128+
logger.info "Cloning #{repo} to #{tmp_dir}"
129+
shell "git clone #{repo} #{tmp_dir} && cd #{tmp_dir} && git fetch origin #{branch_fetch_segments}"
130+
end
131+
132+
def branch_fetch_segments
133+
branches_not_master.map { |b| "+#{b}:#{b}" }.join(' ')
134+
end
135+
136+
def branches_not_master
137+
branches.reject { |b| b == "master" }
138+
end
108139
end
109140
end

lib/miq/ref_menu.rb

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,20 @@
44
module Miq
55
class RefMenu < Executor
66
def self.build
7-
new.build
7+
# build for each dir in MIQ_REF_DIR
8+
Dir["#{Miq.reference_dir}/*"].each do |path|
9+
new(source_dir: path).build if File.directory?(path)
10+
end
811
end
912

10-
attr_reader :source_dir, :output_dir
13+
attr_reader :source_dir, :output_dir, :output_file
1114

12-
def initialize
13-
@source_dir = ENV["MIQ_REF_DST"] || Miq.docs_dir.join("reference", "latest")
14-
@output_dir = Miq.working_dir.join("tmp", "menus")
15+
def initialize(source_dir: nil, output_dir: nil)
16+
# @source_dir = Miq.default_path(source_dir, Miq.reference_dir, "latest")
17+
@source_dir = Pathname.new(source_dir || Miq.reference_dir.join("latest"))
18+
# @output_dir = Miq.default_path(output_dir, Miq.tmp_dir, "menus")
19+
@output_dir = Pathname.new(output_dir || Miq.tmp_dir.join("menus"))
20+
@output_file = @source_dir.basename
1521
end
1622

1723
def menu_data
@@ -25,7 +31,7 @@ def to_yaml
2531
def build
2632
prep(output_dir)
2733

28-
File.open("#{output_dir}/ref_menu.yml", "w") do |f|
34+
File.open("#{output_dir}/ref_menu_#{output_file}.yml", "w") do |f|
2935
f.puts to_yaml
3036
end
3137
end
@@ -137,7 +143,7 @@ def replace_path(path)
137143
end
138144

139145
def exclusions
140-
["." ".."]
146+
[".", ".."]
141147
end
142148

143149
def inclusions

0 commit comments

Comments
 (0)