From 410232041b243d7dfbf96216fc7f75a660af36f7 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Thu, 2 Dec 2021 14:25:29 +0530 Subject: [PATCH] setup librejs license and cachebust service worker file --- Makefile | 19 +++++++++++-------- scripts/cachebust.sh | 41 +++++++++++++++++++++++++++++++++++++++++ scripts/lib.sh | 22 ++++++++++++++++++++++ scripts/librejs.sh | 29 ++++++----------------------- 4 files changed, 80 insertions(+), 31 deletions(-) create mode 100755 scripts/cachebust.sh create mode 100755 scripts/lib.sh diff --git a/Makefile b/Makefile index 0ae0f096..b3c4f068 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,14 @@ +BUNDLE = static/cache/bundle +OPENAPI = docs/openapi +CLEAN_UP = $(BUNDLE) src/cache_buster_data.json assets + default: frontend ## Build app in debug mode cargo build clean: ## Delete build artifacts @cargo clean @yarn cache clean - @-rm ./src/cache_buster_data.json - @-rm -rf ./static/cache/bundle - @-rm -rf ./assets + @-rm $(CLEAN_UP) coverage: migrate ## Generate code coverage report in HTML format cargo tarpaulin -t 1200 --out Html @@ -28,20 +30,23 @@ env: ## Setup development environtment cd docs/openapi && yarn install frontend: env ## Build frontend - cd docs/openapi/ && yarn build + cd $(OPENAPI) && yarn build yarn install + @-rm -rf $(BUNDLE) + @-mkdir $(BUNDLE) yarn build @./scripts/librejs.sh + @./scripts/cachebust.sh frontend-test: ## Run frontend tests - cd docs/openapi && yarn test + cd $(OPENAPI)&& yarn test yarn test lint: ## Lint codebase cargo fmt -v --all -- --emit files cargo clippy --workspace --tests --all-features yarn lint - cd docs/openapi && yarn test + cd $(OPENAPI)&& yarn test migrate: ## Run database migrations cargo run --bin tests-migrate @@ -53,8 +58,6 @@ run: frontend ## Run app in debug mode cargo run test: frontend-test frontend ## Run all available tests - echo 'static/' && tree static || true - echo 'tree/' && tree assets || true cargo test --all-features --no-fail-fast xml-test-coverage: migrate ## Generate code coverage report in XML format diff --git a/scripts/cachebust.sh b/scripts/cachebust.sh new file mode 100755 index 00000000..ab5a5ee1 --- /dev/null +++ b/scripts/cachebust.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +set -Eeuo pipefail +trap cleanup SIGINT SIGTERM ERR EXIT + +readonly PROJECT_ROOT=$(realpath $(dirname $(dirname "${BASH_SOURCE[0]}"))) +source $PROJECT_ROOT/scripts/lib.sh + +readonly DIST=$PROJECT_ROOT/static/cache/bundle/ + + +file_extension() { + echo $1 | rev | tr +} + +cache_bust(){ + name=$(get_file_name $1) + extension="${name##*.}" + filename="${name%.*}" + file_hash=$(sha256sum $1 | cut -d " " -f 1 | tr "[:lower:]" "[:upper:]") + + msg "${GREEN}- Processing $name: $filename.$file_hash.$extension" + + sed -i \ + "s/$name/assets\/bundle\/$filename.$file_hash.$extension/" \ + $(find $DIST -type f -a -name "*.js") +} + +setup_colors + +msg "${BLUE}[*] Setting up files for cache busting" + +for file in $(find $DIST -type f -a -name "*.js") +do + name=$(get_file_name $file) + case $name in + "bench.js") + cache_bust $file + ;; + esac +done diff --git a/scripts/lib.sh b/scripts/lib.sh new file mode 100755 index 00000000..b5807739 --- /dev/null +++ b/scripts/lib.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +cleanup() { + trap - SIGINT SIGTERM ERR EXIT + # script cleanup here +} + +setup_colors() { + if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then + NOCOLOR='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m' + else + NOCOLOR='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW='' + fi +} + +msg() { + echo >&2 -e "${1-}" +} + +get_file_name() { + basename -- $1 +} diff --git a/scripts/librejs.sh b/scripts/librejs.sh index 2418a4d7..8f938734 100755 --- a/scripts/librejs.sh +++ b/scripts/librejs.sh @@ -8,29 +8,10 @@ readonly DIST=$PROJECT_ROOT/static/cache/bundle/ readonly SOURCE="// @source https://github.com/mCaptcha/mCaptcha" readonly LICENSE_END="// @license-end" -cleanup() { - trap - SIGINT SIGTERM ERR EXIT - # script cleanup here -} - -setup_colors() { - if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then - NOCOLOR='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m' - else - NOCOLOR='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW='' - fi -} - -msg() { - echo >&2 -e "${1-}" -} - -get_file_name() { - echo $file | rev | cut -d '/' -f 1 | rev -} +source $PROJECT_ROOT/scripts/lib.sh print_license_msg() { - msg "${GREEN}[*] Applying $1 on $(get_file_name $2)" + msg "${GREEN}- Applying $1 on $(get_file_name $2)" } apply_agpl() { @@ -53,6 +34,8 @@ apply_apache() { setup_colors +msg "${BLUE}[*] LibreJS processor running" + for file in $(find $DIST -type f -a -name "*.js") do contents=$(cat $file) @@ -63,12 +46,12 @@ do "bundle.js") apply_agpl $file ;; - "verificationWidget.js") + "verificationWidget.js" | "bench.js") apply_x11 $file apply_apache $file ;; *) - msg "${RED}[!] License not configured for $name. Applying default license" + msg "${RED}- [!] License not configured for $name. Applying default license" apply_agpl $file ;; esac