From 77d3de5a03c17fce2da9f96029e774a5e8e42670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleks=20R=C5=ABti=C5=86=C5=A1?= Date: Sat, 7 Dec 2024 17:42:05 -0500 Subject: [PATCH 1/4] Create gem-push.yml --- .github/workflows/gem-push.yml | 48 ++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/gem-push.yml diff --git a/.github/workflows/gem-push.yml b/.github/workflows/gem-push.yml new file mode 100644 index 0000000..4dcb825 --- /dev/null +++ b/.github/workflows/gem-push.yml @@ -0,0 +1,48 @@ +name: Ruby Gem + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + name: Build + Publish + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v4 + - name: Set up Ruby 2.6 + # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby, + # change this to (see https://github.com/ruby/setup-ruby#versioning): + # uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0 + with: + ruby-version: 2.6.x + + - name: Publish to GPR + run: | + mkdir -p $HOME/.gem + touch $HOME/.gem/credentials + chmod 0600 $HOME/.gem/credentials + printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials + gem build *.gemspec + gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem + env: + GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}" + OWNER: ${{ github.repository_owner }} + + - name: Publish to RubyGems + run: | + mkdir -p $HOME/.gem + touch $HOME/.gem/credentials + chmod 0600 $HOME/.gem/credentials + printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials + gem build *.gemspec + gem push *.gem + env: + GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}" From 1602d87b8a037c478106334b9da47e80c2e4f4c6 Mon Sep 17 00:00:00 2001 From: Aleks Rutins Date: Sat, 7 Dec 2024 17:47:01 -0500 Subject: [PATCH 2/4] Fix lint --- Gemfile | 2 +- Gemfile.lock | 2 ++ lib/phlexite/router.rb | 16 ++++++++-------- lib/phlexite/site.rb | 2 +- test/test_phlexite.rb | 4 ++-- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Gemfile b/Gemfile index 06ed10c..301344a 100644 --- a/Gemfile +++ b/Gemfile @@ -13,4 +13,4 @@ gem "standard", "~> 1.3" gem "phlex", "~> 1.11" -gem "steep", "~> 1.7", :group => :development +gem "steep", "~> 1.7", group: :development diff --git a/Gemfile.lock b/Gemfile.lock index ba81738..ba33887 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -26,6 +26,7 @@ GEM drb (2.2.1) ffi (1.17.0) ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x64-mingw-ucrt) fileutils (1.7.2) i18n (1.14.5) concurrent-ruby (~> 1.0) @@ -107,6 +108,7 @@ GEM PLATFORMS arm64-darwin-23 ruby + x64-mingw-ucrt DEPENDENCIES minitest (~> 5.16) diff --git a/lib/phlexite/router.rb b/lib/phlexite/router.rb index 2363b53..1c2f5b9 100644 --- a/lib/phlexite/router.rb +++ b/lib/phlexite/router.rb @@ -1,4 +1,4 @@ -require 'fileutils' +require "fileutils" class Phlexite::Router def initialize(base, site) @@ -7,25 +7,25 @@ class Phlexite::Router end def group(new_base) - router = Phlexite::Router.new(File::join(@base, new_base), @site) + router = Phlexite::Router.new(File.join(@base, new_base), @site) yield router end def page(out_path, component) out = full_out_path(out_path) - FileUtils::mkdir_p File::dirname(out) - File::write(out, component.call) + FileUtils.mkdir_p File.dirname(out) + File.write(out, component.call) end def mount(local_directory, on:) out = full_out_path(on) - FileUtils::mkdir_p out - FileUtils::cp_r File::join(local_directory, "."), out + FileUtils.mkdir_p out + FileUtils.cp_r File.join(local_directory, "."), out end -private + private def full_out_path(out_path) - File::join(@site.build_dir, @site.base_url, @base, out_path) + File.join(@site.build_dir, @site.base_url, @base, out_path) end end diff --git a/lib/phlexite/site.rb b/lib/phlexite/site.rb index 5232f8c..21ef3a1 100644 --- a/lib/phlexite/site.rb +++ b/lib/phlexite/site.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require_relative 'router.rb' +require_relative "router" class Phlexite::Site < Phlexite::Router attr_accessor :build_dir, :base_url diff --git a/test/test_phlexite.rb b/test/test_phlexite.rb index 16e3ebd..703d7ed 100644 --- a/test/test_phlexite.rb +++ b/test/test_phlexite.rb @@ -12,10 +12,10 @@ class TestPhlexite < Minitest::Test end def test_that_site_is_defined - assert ::Phlexite::Site != nil + assert !::Phlexite::Site.nil? end def test_that_router_is_defined - assert ::Phlexite::Router != nil + assert !::Phlexite::Router.nil? end end From 15c0a1ccc0e3b7a66109a9b39a41d9d79f9daa93 Mon Sep 17 00:00:00 2001 From: Aleks Rutins Date: Sat, 7 Dec 2024 17:53:45 -0500 Subject: [PATCH 3/4] Only publish on tags --- .github/workflows/gem-push.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/gem-push.yml b/.github/workflows/gem-push.yml index 4dcb825..05d54cf 100644 --- a/.github/workflows/gem-push.yml +++ b/.github/workflows/gem-push.yml @@ -2,9 +2,7 @@ name: Ruby Gem on: push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] + tags: '*' jobs: build: @@ -16,13 +14,13 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Set up Ruby 2.6 + - name: Set up Ruby 3.3 # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby, # change this to (see https://github.com/ruby/setup-ruby#versioning): # uses: ruby/setup-ruby@v1 uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0 with: - ruby-version: 2.6.x + ruby-version: 3.3.x - name: Publish to GPR run: | From 04e1d9eb918fee331499f17a1c2b3ed485f0e59e Mon Sep 17 00:00:00 2001 From: Aleks Rutins Date: Tue, 10 Jun 2025 18:11:38 -0400 Subject: [PATCH 4/4] Try adding docs --- .forgejo/workflows/docs.yml | 17 ++++++++++++ .forgejo/workflows/gem-push.yml | 46 +++++++++++++++++++++++++++++++++ .forgejo/workflows/main.yml | 27 +++++++++++++++++++ .github/workflows/gem-push.yml | 46 --------------------------------- .github/workflows/main.yml | 27 ------------------- .gitignore | 1 + Gemfile | 2 +- docs/build.rb | 13 ++++++++++ docs/pages/index.rb | 10 +++++++ docs/pages/layout.rb | 29 +++++++++++++++++++++ 10 files changed, 144 insertions(+), 74 deletions(-) create mode 100644 .forgejo/workflows/docs.yml create mode 100644 .forgejo/workflows/gem-push.yml create mode 100644 .forgejo/workflows/main.yml delete mode 100644 .github/workflows/gem-push.yml delete mode 100644 .github/workflows/main.yml create mode 100644 docs/build.rb create mode 100644 docs/pages/index.rb create mode 100644 docs/pages/layout.rb diff --git a/.forgejo/workflows/docs.yml b/.forgejo/workflows/docs.yml new file mode 100644 index 0000000..a3a96a3 --- /dev/null +++ b/.forgejo/workflows/docs.yml @@ -0,0 +1,17 @@ +on: + push: + branches: + - main + +jobs: + build: + runs-on: selfhosted + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Install dependencies + run: bundle install + - name: Build documentation + run: bundle exec ruby docs/build.rb + - name: Publish site + run: cp -rfv _build/* /srv/docs/phlexite/ diff --git a/.forgejo/workflows/gem-push.yml b/.forgejo/workflows/gem-push.yml new file mode 100644 index 0000000..46ed5a0 --- /dev/null +++ b/.forgejo/workflows/gem-push.yml @@ -0,0 +1,46 @@ +name: Ruby Gem + +on: + push: + tags: ["*"] + +jobs: + build: + name: Build + Publish + runs-on: docs + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v4 + - name: Set up Ruby 3.3 + # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby, + # change this to (see https://github.com/ruby/setup-ruby#versioning): + # uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0 + with: + ruby-version: 3.3.x + + - name: Publish to GPR + run: | + mkdir -p $HOME/.gem + touch $HOME/.gem/credentials + chmod 0600 $HOME/.gem/credentials + printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials + gem build *.gemspec + gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem + env: + GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}" + OWNER: ${{ github.repository_owner }} + + - name: Publish to RubyGems + run: | + mkdir -p $HOME/.gem + touch $HOME/.gem/credentials + chmod 0600 $HOME/.gem/credentials + printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials + gem build *.gemspec + gem push *.gem + env: + GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}" diff --git a/.forgejo/workflows/main.yml b/.forgejo/workflows/main.yml new file mode 100644 index 0000000..9a0b5a8 --- /dev/null +++ b/.forgejo/workflows/main.yml @@ -0,0 +1,27 @@ +name: Ruby + +on: + push: + branches: + - main + + pull_request: + +jobs: + build: + runs-on: docker + name: Ruby ${{ matrix.ruby }} + strategy: + matrix: + ruby: + - "3.3.5" + + steps: + - uses: actions/checkout@v4 + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + bundler-cache: true + - name: Run the default task + run: bundle exec rake diff --git a/.github/workflows/gem-push.yml b/.github/workflows/gem-push.yml deleted file mode 100644 index 05d54cf..0000000 --- a/.github/workflows/gem-push.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Ruby Gem - -on: - push: - tags: '*' - -jobs: - build: - name: Build + Publish - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - steps: - - uses: actions/checkout@v4 - - name: Set up Ruby 3.3 - # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby, - # change this to (see https://github.com/ruby/setup-ruby#versioning): - # uses: ruby/setup-ruby@v1 - uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0 - with: - ruby-version: 3.3.x - - - name: Publish to GPR - run: | - mkdir -p $HOME/.gem - touch $HOME/.gem/credentials - chmod 0600 $HOME/.gem/credentials - printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials - gem build *.gemspec - gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem - env: - GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}" - OWNER: ${{ github.repository_owner }} - - - name: Publish to RubyGems - run: | - mkdir -p $HOME/.gem - touch $HOME/.gem/credentials - chmod 0600 $HOME/.gem/credentials - printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials - gem build *.gemspec - gem push *.gem - env: - GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index b131488..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Ruby - -on: - push: - branches: - - main - - pull_request: - -jobs: - build: - runs-on: ubuntu-latest - name: Ruby ${{ matrix.ruby }} - strategy: - matrix: - ruby: - - '3.3.5' - - steps: - - uses: actions/checkout@v4 - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby }} - bundler-cache: true - - name: Run the default task - run: bundle exec rake diff --git a/.gitignore b/.gitignore index 9106b2a..dea589d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /pkg/ /spec/reports/ /tmp/ +_build/ diff --git a/Gemfile b/Gemfile index 301344a..824b40d 100644 --- a/Gemfile +++ b/Gemfile @@ -11,6 +11,6 @@ gem "minitest", "~> 5.16" gem "standard", "~> 1.3" -gem "phlex", "~> 1.11" +gem "phlex", "~> 2.3" gem "steep", "~> 1.7", group: :development diff --git a/docs/build.rb b/docs/build.rb new file mode 100644 index 0000000..5b57a00 --- /dev/null +++ b/docs/build.rb @@ -0,0 +1,13 @@ +require_relative '../lib/phlexite' +require 'phlex' + +module Phlexite + module Docs end +end + +require_relative 'pages/layout' +require_relative 'pages/index' + +Phlexite::Site.new { |s| + s.page 'index.html', Phlexite::Docs::Pages::Index.new +} diff --git a/docs/pages/index.rb b/docs/pages/index.rb new file mode 100644 index 0000000..c841521 --- /dev/null +++ b/docs/pages/index.rb @@ -0,0 +1,10 @@ +module Phlexite::Docs::Pages + class Index < ::Phlex::HTML + def view_template + render Layout.new { + h1 { 'Phlexite' } + p { 'Phlexite is a simple static site generator for Ruby.' } + } + end + end +end \ No newline at end of file diff --git a/docs/pages/layout.rb b/docs/pages/layout.rb new file mode 100644 index 0000000..4fbf287 --- /dev/null +++ b/docs/pages/layout.rb @@ -0,0 +1,29 @@ +module Phlexite::Docs::Pages + class Layout < ::Phlex::HTML + def view_template + doctype + html { + head { + meta charset: 'utf-8' + + meta name: 'viewport', content: 'width=device-width, initial-scale=1.0' + title { "Phlexite" } + + link rel: 'stylesheet', href: 'https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css' + } + body(style: "padding: 0; margin: 0; display: flex; flex-direction: row; height: 100vh; width: 100vw;") { + aside(style: 'padding: 30px; min-width: 15%; border-right: 1px solid #6F7887;') { + nav { + ul { + li { a(href: '/') { 'Home' } } + } + } + } + div(class: 'container', style: 'padding: 20px') { + yield + } + } + } + end + end +end \ No newline at end of file