diff --git a/.DS_Store b/.DS_Store index 155e9a4e..87729e4e 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 00000000..264b455a --- /dev/null +++ b/deploy.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +# ref: https://github.com/jekyll/jekyll + +set -eu + +PAGES_BRANCH="gh-pages" + +init() { + if [[ -z ${GITHUB_ACTION+x}]]; then + echo "ERROR: Not allowed to deploy outside of the GitHub Action envrionment." + exit -1 + fi +} + +build() { + bundle exec ruby "./scaffold.rb" + + mv ./_output/* ./ +} + +setup_gh() { + if git branch --list "$PAGES_BRANCH" > /dev/null; then + echo "Branch '$PAGES_BRANCH' exists. Deleting and recreating it..." + git branch -D "$PAGES_BRANCH" # Delete the branch + fi + + # Create and switch to the branch + git checkout -b "$PAGES_BRANCH" +} + +deploy() { + git config --global user.name "ZhgChgLiBot" + git config --global user.email "no-reply@zhgchg.li" + + git update-ref -d HEAD + git add -A + git commit -m "[Automation] Site update No.${GITHUB_RUN_NUMBER}" + + git push -u origin "$PAGES_BRANCH" +} + +main() { + init + build + setup_gh + deploy +} + +main diff --git a/scaffold/config.rb b/scaffold/config.rb deleted file mode 100644 index 9f9b776b..00000000 --- a/scaffold/config.rb +++ /dev/null @@ -1,62 +0,0 @@ -require 'yaml' - -class Config - attr_reader :theme, :title, :avatar, :name, :tagline, :links, :social, :footer - - class Link - attr_reader :title, :url, :target, :alt - - def initialize(title, url, target, alt) - @title = title - @url = url - @target = target - @alt = alt - end - end - - class Social - attr_reader :type, :data - - def initialize(social) - @type = social.keys - @data = social.values - end - end - - def initialize(file_path = 'config.yml') - if File.exist?(file_path) - config = YAML.load_file(file_path) - puts "#{file_path} loaded successfully." - else - raise "Error: #{file_path} not found." - end - - settings = YAML.load_file(file_path) || {} - - @theme = settings["theme"] || "default" - @title = settings["title"] - @avatar = settings["avatar"] - @name = settings["name"] - @tagline = settings["tagline"] - @footer = settings["footer"] - - links = [] - if !settings["links"].nil? - settings["links"].each do |link| - links.push(Link.new(link["link"]["title"], link["link"]["url"], link["link"]["target"], link["link"]["alt"])) - end - end - @links = links - - socials = [] - if !settings["socials"].nil? - settings["socials"].each do |social| - socials.push(Social.new(social)) - end - end - @socials = socials - - - - end -end