From a293155787066d200f9d5ae148088ba24ec637c1 Mon Sep 17 00:00:00 2001 From: Dan Head Date: Thu, 26 Jan 2023 21:14:40 +0000 Subject: [PATCH] foo --- .circleci/config.yml | 183 ++++++++++-------------- build/backup.sh | 17 +++ build/clean.sh | 8 ++ build/deploy.sh | 8 +- package.json | 2 +- src/404.php | 12 +- src/classes/walker.comments.php | 43 ++++-- src/classes/walker.navigation.php | 26 ++-- src/comments.php | 95 ++++++++----- src/footer.php | 6 +- src/front-page.php | 76 +++++----- src/functions.php | 224 +++++++++++++++++------------- src/header.php | 27 ++-- src/index.php | 39 ++++-- src/page-archive.php | 16 ++- src/page.php | 26 ++-- src/partials/archive.php | 44 +++--- src/partials/banner.php | 2 +- src/partials/excerpt.php | 35 ++--- src/partials/footer.php | 10 +- src/partials/metadata.php | 14 +- src/partials/navigation.php | 26 ++-- src/partials/pagination.php | 60 ++++---- src/partials/podcast.php | 22 +-- src/search.php | 60 ++++---- src/searchform.php | 2 +- src/single.php | 39 ++++-- src/tag.php | 45 +++--- 28 files changed, 666 insertions(+), 501 deletions(-) create mode 100644 build/backup.sh create mode 100644 build/clean.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index e4fece7..e9619ab 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,128 +1,99 @@ -defaults: &defaults - working_directory: ~/tmp/windycoys - docker: - - image: circleci/node:10.15 - -semver-tags: &semver-tags - filters: - tags: - only: /^v.*/ - branches: - ignore: /.*/ -develop: &develop - filters: - branches: - only: develop -other-branches: &other-branches - filters: - branches: - ignore: - - master - - develop - -version: 2 +version: 2.1 +orbs: + node: circleci/node@5.1 + aws-s3: circleci/aws-s3@3.1 jobs: - install: - <<: *defaults + build_and_test: + executor: node/default steps: - - attach_workspace: - at: ~/tmp/windycoys - checkout - - run: - name: Install dependencies - command: npm install - - persist_to_workspace: - root: . - paths: . - test: - <<: *defaults - steps: - - attach_workspace: - at: ~/tmp/windycoys + - node/install-packages: + pkg-manager: npm - run: name: Run tests - command: npm test - build: - <<: *defaults - environment: - NODE_ENV: production - steps: - - attach_workspace: - at: ~/tmp/windycoys + command: npm run lint - run: - name: Build CSS and JavaScript + name: Build app command: npm run build - - run: - name: Generate timestamp - command: bash build/generate_timestamp.sh - persist_to_workspace: - root: . - paths: . - deploy-prod: - <<: *defaults + root: ~/project + paths: + - . + deploy: + executor: node/default steps: - attach_workspace: - at: ~/tmp/windycoys + at: ~/project - run: - name: Install rsync - command: sudo apt install -y rsync + name: Known Hosts + command: | + mkdir ~/.ssh || : + echo -e $KNOWN_HOSTS > ~/.ssh/known_hosts - run: - name: Deploy theme - command: bash build/deploy.sh prod + name: Clean + command: sh build/clean.sh - run: - name: Purge Cloudflare cache - command: bash build/purge_cache.sh - deploy-develop: - <<: *defaults + name: Deploy + command: sh build/deploy.sh + backup_to_s3: + docker: + - image: 'cimg/python:3.10' steps: - - attach_workspace: - at: ~/tmp/windycoys + - checkout - run: - name: Install rsync - command: sudo apt install -y rsync + name: Known Hosts + command: | + mkdir ~/.ssh || : + echo -e $KNOWN_HOSTS > ~/.ssh/known_hosts - run: - name: Deploy theme - command: bash build/deploy.sh develop + name: Prepare filename + command: | + filename=windycoys-$(date +'%Y-%m-%dT%H-%M-%S').tgz + echo "export filename='$filename'" >> $BASH_ENV - run: - name: Purge Cloudflare cache - command: bash build/purge_cache.sh + name: Prepare backups + command: | + ssh $SSH_USER@$SSH_IP "bash -c '\ + source windycoys/.env + rm -rf windycoys/backup + mkdir -p windycoys/backup/data + scp -r windycoys/wp-content windycoys/backup/data/ + docker exec -t $DOCKER_DB_NAME /usr/bin/mysqldump \ + -uroot --password=$DB_ROOT_PASSWORD \ + $DB_NAME | gzip -9 > windycoys/backup/data/database.sql.gz + /usr/bin/tar zcf windycoys/backup/windycoys.tgz windycoys/backup/data'" + - run: + name: Copy backup + command: | + scp $SSH_USER@$SSH_IP:~/windycoys/backup/windycoys.tgz ./ + mv windycoys.tgz $filename + - aws-s3/copy: + aws-region: AWS_REGION + aws-access-key-id: AWS_ACCESS_KEY_ID + aws-secret-access-key: AWS_SECRET_ACCESS_KEY + from: '$filename' + to: 's3://$AWS_S3_BUCKET_NAME' workflows: - version: 2 - test: + test_my_app: jobs: - - install: *other-branches - - test: - <<: *other-branches + - build_and_test: + filters: + branches: + only: main + - deploy: requires: - - install - develop: + - build_and_test + filters: + branches: + only: main + backup: + triggers: + - schedule: + cron: "0 2 * * 1" + filters: + branches: + only: + - next jobs: - - install: *develop - - test: - <<: *develop - requires: - - install - - build: - <<: *develop - requires: - - test - - deploy-develop: - <<: *develop - requires: - - build - prod: - jobs: - - install: *semver-tags - - test: - <<: *semver-tags - requires: - - install - - build: - <<: *semver-tags - requires: - - test - - deploy-prod: - <<: *semver-tags - requires: - - build + - backup_to_s3 diff --git a/build/backup.sh b/build/backup.sh new file mode 100644 index 0000000..8f76b08 --- /dev/null +++ b/build/backup.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env sh + +source .env + +rm -rf ~/windycoys/backup +rm -f ~/windycoys/windycoys-*.tgz +mkdir -p ~/windycoys/backup + +scp -r ~/windycoys/wp-content ~/windycoys/backup/ +docker exec -it $DOCKER_DB_NAME /usr/bin/mysqldump -uroot -p"$DB_ROOT_PASSWORD" $DB_NAME | gzip -9 > ~/windycoys/backup/database.sql.gz +ls -l ~/windycoys/backup/ + +datetime=$(date +'%Y-%m-%dT%H-%M-%S') +file=windycoys-$datetime.tgz +/usr/bin/tar zcf ~/windycoys/$file ~/windycoys/backup + +rm -rf ~/windycoys/backup diff --git a/build/clean.sh b/build/clean.sh new file mode 100644 index 0000000..cfb08ab --- /dev/null +++ b/build/clean.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + +# Test environment variables are set +[ -z "$SSH_IP" ] && { echo >&2 "Error: SSH_IP is missing. Aborting."; exit 1; } +[ -z "$SSH_USER" ] && { echo >&2 "Error: SSH_USER is missing. Aborting."; exit 1; } + +# Deploy theme +ssh $SSH_USER@$SSH_IP rm -r ~/windycoys/dist/* diff --git a/build/deploy.sh b/build/deploy.sh index a14f429..99af8e4 100644 --- a/build/deploy.sh +++ b/build/deploy.sh @@ -1,10 +1,6 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh -# Ensure target is defined -[ -z "$1" ] && { echo >&2 "Error: Build target not defined. Aborting."; exit 1; } - -# Test rsync is installed and ENV variables are set -hash rsync 2>/dev/null || { echo >&2 "Error: rsync is not installed. Aborting."; exit 1; } +# Test environment variables are set [ -z "$SSH_IP" ] && { echo >&2 "Error: SSH_IP is missing. Aborting."; exit 1; } [ -z "$SSH_USER" ] && { echo >&2 "Error: SSH_USER is missing. Aborting."; exit 1; } diff --git a/package.json b/package.json index 3e33939..ec33412 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "build:ts": "cross-env NODE_ENV=production webpack", "lint": "run-p lint:*", "lint:eslint": "eslint src --ext .ts", - "postinstall": "run-p browser-sync", + "postinstallf": "run-p browser-sync", "serve": "docker-compose -f build/docker-compose.dev.yml up --force-recreate 2>/dev/null", "start": "run-p serve watch", "test": "jest", diff --git a/src/404.php b/src/404.php index 7ee1783..9f5f9b1 100644 --- a/src/404.php +++ b/src/404.php @@ -1,18 +1,18 @@

404 - Page not found

- Go back home + Go back home
- +
- - + + diff --git a/src/classes/walker.comments.php b/src/classes/walker.comments.php index c3ab211..5e76fe6 100644 --- a/src/classes/walker.comments.php +++ b/src/classes/walker.comments.php @@ -1,48 +1,61 @@ '; } - function end_lvl(&$output, $depth = 0, $args = Array()) { - $output .= ''; + function end_lvl(&$output, $depth = 0, $args = []) + { + $output .= ""; } - function start_el(&$output, $comment, $depth = 0 , $args = Array(), $id = 0) { + function start_el(&$output, $comment, $depth = 0, $args = [], $id = 0) + { $id = $comment->comment_ID; $post_id = $comment->comment_post_ID; - $reply_link = get_permalink($post_id) . '?replytocom='.$id.'#respond'; + $reply_link = get_permalink($post_id) . "?replytocom=" . $id . "#respond"; $author_email = $comment->comment_author_email; $author = $comment->comment_author; $avatar = get_avatar($comment, 128); - $date = get_comment_date(get_option('date_format'), $id).' at '.get_comment_date(get_option('time_format'), $id); + $date = + get_comment_date(get_option("date_format"), $id) . + " at " . + get_comment_date(get_option("time_format"), $id); $content = $comment->comment_content; $output .= '
  • '; $output .= '
    '; $output .= '
    '; - $output .= sprintf('
    %s
    ', $avatar); + $output .= sprintf( + '
    %s
    ', + $avatar + ); $output .= '
    '; + $output .= "
    "; $output .= sprintf('
    %s
    ', $content); $output .= ''; + $output .= ""; } - function end_el(&$output, $comment, $depth = 0, $args = Array()) { - $output .= '
  • '; + function end_el(&$output, $comment, $depth = 0, $args = []) + { + $output .= ""; } } diff --git a/src/classes/walker.navigation.php b/src/classes/walker.navigation.php index 41dbcec..8dfd4f8 100644 --- a/src/classes/walker.navigation.php +++ b/src/classes/walker.navigation.php @@ -1,27 +1,35 @@ '; } - function end_lvl(&$output, $depth = 0, $args = Array()) { - $output .= ''; + function end_lvl(&$output, $depth = 0, $args = []) + { + $output .= ""; } - function start_el(&$output, $item, $depth = 0, $args = Array(), $id = 0) { + function start_el(&$output, $item, $depth = 0, $args = [], $id = 0) + { $title = $item->title; $url = $item->url; if ($title && $url) { $output .= ''; + function end_el(&$output, $item, $depth = 0, $args = []) + { + $output .= ""; } } diff --git a/src/comments.php b/src/comments.php index 151558d..0cd89b0 100644 --- a/src/comments.php +++ b/src/comments.php @@ -1,50 +1,83 @@ 'comment-respond__form', - "class_submit" => 'comment-respond__submit', - "comment_field" => '
    ', - "logged_in_as" => '

    ' . sprintf( __( 'Logged in as %2$s. Log out?' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( ) ) ) ) . '

    ', - "title_reply_before" => '

    ', +$form_settings = [ + "class_form" => "comment-respond__form", + "class_submit" => "comment-respond__submit", + "comment_field" => + '
    ', + "logged_in_as" => + '

    ' . + sprintf( + __( + 'Logged in as %2$s. Log out?' + ), + admin_url("profile.php"), + $user_identity, + wp_logout_url(apply_filters("the_permalink", get_permalink())) + ) . + "

    ", + "title_reply_before" => + '

    ', "title_reply" => 'Reply', "cancel_reply_before" => '', - "cancel_reply_after" => '', - "comment_notes_before" => '

    ' . __( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '

    ', - "fields" => array( - "author" => '
    ' . '
    ', - "email" => '
    ' . '
    ', - "url" => '
    ' . '
    ', - "cookies" => '
    ', - ), -); + "cancel_reply_after" => "", + "comment_notes_before" => + '

    ' . + __("Your email address will not be published.") . + ($req ? $required_text : "") . + "

    ", + "fields" => [ + "author" => + '
    " . + '
    ', + "email" => + '
    " . + '
    ', + "url" => + '
    " . + '
    ', + "cookies" => + '
    ', + ], +]; ?>

    - + else: + echo "Comments are closed"; + endif; ?>

      - new Windycoys_Walker_Comments(), - )); - ?> + new Windycoys_Walker_Comments(), + ]); ?>
    - +
    diff --git a/src/footer.php b/src/footer.php index d143791..59eeb4f 100644 --- a/src/footer.php +++ b/src/footer.php @@ -1,12 +1,12 @@
    - +