Skip to content

Commit

Permalink
Merge pull request #79 from ray-di/intl
Browse files Browse the repository at this point in the history
Enhance Deployment and Local Development with Internationalization Support
  • Loading branch information
koriym authored May 12, 2024
2 parents b951c31 + 63d2e35 commit a0b78c0
Show file tree
Hide file tree
Showing 15 changed files with 325 additions and 13 deletions.
68 changes: 68 additions & 0 deletions .github/workflows/jekyll.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

# Sample workflow for building and deploying a Jekyll site to GitHub Pages
name: Deploy Jekyll site to Pages

on:
# Runs on pushes targeting the default branch
push:
branches: ["master"]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Ruby
uses: ruby/setup-ruby@8575951200e472d5f2d95c625da0c7bec8217c42 # v1.161.0
with:
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
cache-version: 0 # Increment this number if you need to re-download cached gems
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5

- name: Run custom scripts
run: |
ruby bin/merge_md_files.rb
- name: Build with Jekyll
# Outputs to the './_site' directory by default
run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
env:
JEKYLL_ENV: production
- name: Upload artifact
# Automatically uploads an artifact from the './_site' directory by default
uses: actions/upload-pages-artifact@v3

# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
1 change: 1 addition & 0 deletions .ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.2.2
16 changes: 14 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,2 +1,14 @@
FROM jekyll/jekyll:pages
RUN gem install webrick
FROM ruby:3.2

RUN apt-get update && apt-get install -y \
build-essential \
libffi-dev

RUN gem install bundler webrick

WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN bundle install

EXPOSE 4000
CMD ["bundle", "exec", "jekyll", "serve", "--host", "0.0.0.0"]
37 changes: 37 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
#gem "jekyll", "~> 4.3.2"
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", "~> 2.5"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins
# gem "github-pages", ">= 231", group: :jekyll_plugins
gem "webrick"

# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-feed", "~> 0.12"
end

# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
gem "tzinfo", ">= 1", "< 3"
gem "tzinfo-data"
end

# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]

# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
# do not have a Java counterpart.
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
gem 'rouge', '~> 4.2.1'
134 changes: 134 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
colorator (1.1.0)
concurrent-ruby (1.2.3)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.15.0)
forwardable-extended (2.6.0)
google-protobuf (4.26.1)
rake (>= 13)
google-protobuf (4.26.1-aarch64-linux)
rake (>= 13)
google-protobuf (4.26.1-arm64-darwin)
rake (>= 13)
google-protobuf (4.26.1-x86-linux)
rake (>= 13)
google-protobuf (4.26.1-x86_64-darwin)
rake (>= 13)
google-protobuf (4.26.1-x86_64-linux)
rake (>= 13)
http_parser.rb (0.8.0)
i18n (1.14.5)
concurrent-ruby (~> 1.0)
jekyll (4.3.3)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (>= 2.0, < 4.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.3, >= 2.3.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (>= 0.3.6, < 0.5)
pathutil (~> 0.9)
rouge (>= 3.0, < 5.0)
safe_yaml (~> 1.0)
terminal-table (>= 1.8, < 4.0)
webrick (~> 1.7)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-sass-converter (3.0.0)
sass-embedded (~> 1.54)
jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.4)
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.0.5)
rake (13.2.1)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.6)
rouge (4.2.1)
safe_yaml (1.0.5)
sass-embedded (1.77.1)
google-protobuf (>= 3.25, < 5.0)
rake (>= 13.0.0)
sass-embedded (1.77.1-aarch64-mingw-ucrt)
google-protobuf (>= 3.25, < 5.0)
sass-embedded (1.77.1-arm64-darwin)
google-protobuf (>= 3.25, < 5.0)
sass-embedded (1.77.1-x86-cygwin)
google-protobuf (>= 3.25, < 5.0)
sass-embedded (1.77.1-x86-mingw-ucrt)
google-protobuf (>= 3.25, < 5.0)
sass-embedded (1.77.1-x86_64-cygwin)
google-protobuf (>= 3.25, < 5.0)
sass-embedded (1.77.1-x86_64-darwin)
google-protobuf (>= 3.25, < 5.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
unicode-display_width (2.5.0)
webrick (1.8.1)

PLATFORMS
aarch64-linux
aarch64-linux-android
aarch64-linux-gnu
aarch64-linux-musl
aarch64-mingw-ucrt
arm-linux-androideabi
arm-linux-gnueabihf
arm-linux-musleabihf
arm64-darwin
riscv64-linux-android
riscv64-linux-gnu
riscv64-linux-musl
ruby
x86-cygwin
x86-linux
x86-linux-android
x86-linux-gnu
x86-linux-musl
x86-mingw-ucrt
x86_64-cygwin
x86_64-darwin
x86_64-linux
x86_64-linux-android
x86_64-linux-gnu
x86_64-linux-musl

DEPENDENCIES
http_parser.rb (~> 0.6.0)
jekyll-feed (~> 0.12)
minima (~> 2.5)
rouge (~> 4.2.1)
tzinfo (>= 1, < 3)
tzinfo-data
wdm (~> 0.1.1)
webrick

BUNDLED WITH
2.5.10
1 change: 1 addition & 0 deletions _includes/manuals/1.0/en/contents.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
<li class="nav-item"><a class="nav-link {% if page.permalink == '/manuals/1.0/en/integration.html' %}active{% endif %}" href="/manuals/1.0/en/integration.html">Integration</a></li>
<li class="nav-item"><a class="nav-link {% if page.permalink == '/manuals/1.0/en/performance_boost.html' %}active{% endif %}" href="/manuals/1.0/en/performance_boost.html">Performance</a></li>
<li class="nav-item"><a class="nav-link {% if page.permalink == '/manuals/1.0/en/backward_compatibility.html' %}active{% endif %}" href="/manuals/1.0/en/backward_compatibility.html">Compatibility</a></li>
<li class="nav-item"><a class="nav-link {% if page.permalink == '/manuals/1.0/en/1page.html' %}active{% endif %}" href="/manuals/1.0/en/1page.html">1 Page</a></li>
</ul>
</div>
</nav>
2 changes: 1 addition & 1 deletion _includes/manuals/1.0/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<a class="nav-link {% if page.category == 'Index' %}active{% endif %}" href="/index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link {% if page.category == 'Manual' %}active{% endif %}" href="/manuals/1.0/en/index.html">Manual</a>
<a class="intl nav-link {% if page.category == 'Manual' %}active{% endif %}" href="/manuals/1.0/en/index.html">Manual</a>
</li>
</ul>
</div>
Expand Down
1 change: 1 addition & 0 deletions _includes/manuals/1.0/ja/contents.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
<li class="nav-item"><a class="nav-link {% if page.permalink == '/manuals/1.0/ja/performance_boost.html' %}active{% endif %}" href="/manuals/1.0/ja/performance_boost.html">パフォーマンス</a></li>
<li class="nav-item"><a class="nav-link {% if page.permalink == '/manuals/1.0/ja/backward_compatibility.html' %}active{% endif %}" href="/manuals/1.0/ja/backward_compatibility.html">後方互換性</a></li>
<li class="nav-item"><a class="nav-link {% if page.permalink == '/manuals/1.0/ja/tutorial1.html' %}active{% endif %}" href="/manuals/1.0/ja/tutorial1.html">チュートリアル</a></li>
<li class="nav-item"><a class="nav-link {% if page.permalink == '/manuals/1.0/ja/1page.html' %}active{% endif %}" href="/manuals/1.0/ja/1page.html">1 Page</a></li>
</ul>
</div>
</nav>
45 changes: 45 additions & 0 deletions bin/merge_md_files.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
require 'fileutils'

def generate_combined_file(language, intro_message)
# マークダウンファイルが存在するフォルダ
source_folder = File.expand_path("../manuals/1.0/#{language}/", __dir__)
# 結合されたファイルの出力先
output_file = "manuals/1.0/#{language}/1page.md"

puts "Does the source folder exist? #{Dir.exist?(source_folder)}"
raise "Source folder does not exist!" unless File.directory?(source_folder)

# ファイルを開く
File.open(output_file, "w") do |combined_file|

# 全体のヘッダーを書き込む
combined_file.write("---\nlayout: docs-#{language}\ntitle: 1 Page Manual\ncategory: Manual\npermalink: /manuals/1.0/#{language}/1page.html\n---\n")

# 追加のメッセージを書き込む
combined_file.write(intro_message + "\n\n")

# 指定フォルダ内のすべての.mdファイルを取得し、ソートする
files = Dir.glob(File.join(source_folder, "*.md")).sort

# 各ファイルを処理する - ヘッダーを削除
files.each do |filepath|
File.open(filepath, "r") do |file|
# ファイル内容を読む
content = file.read

# ヘッダー部分を削除 ("---"で囲まれた部分を削除)
content.gsub!(/---.*?---/m, '')

# 出力ファイルに書き込み
combined_file.write(content + "\n")
end
end

end

puts "Markdown files have been combined into #{output_file}"
end

# 以下の行を使用して関数を2言語で呼び出す
generate_combined_file("ja", "これは全てのマニュアルページを一つにまとめたページです。")
generate_combined_file("en", "This page collects all manual pages in one place.")
3 changes: 0 additions & 3 deletions bin/serve.sh

This file was deleted.

3 changes: 0 additions & 3 deletions bin/serve_arm.sh

This file was deleted.

3 changes: 3 additions & 0 deletions bin/serve_docker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/sh
# This script is used to serve the Jekyll site locally with automatic rebuilding.
docker compose up
6 changes: 6 additions & 0 deletions bin/serve_local.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash
# This script is used to serve the Jekyll site locally with automatic rebuilding.
# 'bundle exec' ensures we're using the correct versions of each gem according to our Gemfile.lock.
# 'jekyll serve' starts a Jekyll development server.
# '--watch' option automatically rebuilds the site when files are modified.
bundle exec jekyll serve --watch
5 changes: 2 additions & 3 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
version: "3"
services:
app:
container_name: jekyll
container_name: jekyll-ray
build:
context: .
dockerfile: Dockerfile
command: jekyll serve
volumes:
- ./:/srv/jekyll
- .:/app
ports:
- 4000:4000
13 changes: 12 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,18 @@ <h1 class="logotype">Ray.Di</h1>
Objects are injected from the interface, just as sun ray is injected when a window is opened.
Ray.Di is a dependency injection framework for PHP inspired Google Guice.
</p>
<a class="btn btn-primary" href="/manuals/1.0/en/index.html">
<a class="intl btn btn-primary" href="/manuals/1.0/en/index.html">
Overview &raquo;
</a>
<script>
window.addEventListener('DOMContentLoaded', (event) => {
const links = document.getElementsByClassName('intl');
const locale = window.navigator.language;
if (locale.startsWith('ja')) {
for(let i = 0; i < links.length; i++) {
links[i].setAttribute('href', links[i].getAttribute('href').replace('/en/', '/ja/'));
}
}
});
</script>
</div>

0 comments on commit a0b78c0

Please sign in to comment.