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