diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index cf806273..f9caa485 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -4,6 +4,7 @@ use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; +use Illuminate\Support\Facades\Config; class Kernel extends ConsoleKernel { @@ -26,7 +27,7 @@ protected function schedule(Schedule $schedule) { $schedule->command('sitemap:generate')->daily(); $schedule->exec('bash /home/forge/laravel.com/build/api.sh')->daily(); - $schedule->exec('bash /home/forge/laravel.com/build/docs.sh')->everyFiveMinutes(); + $schedule->exec('bash /home/forge/laravel.com/build/docs.sh', Config::get(['services.cloudflare.zone', 'services.cloudflare.token']))->everyFiveMinutes(); } /** diff --git a/build/docs.sh b/build/docs.sh index 57bae455..9ded95a5 100644 --- a/build/docs.sh +++ b/build/docs.sh @@ -1,14 +1,37 @@ #!/bin/bash + +set -e + base=${base:-/home/forge/laravel.com} docs=${base}/resources/docs +hashes=${base}/build/hashes +versions=('8.x' '9.x' '10.x' '11.x' 'master') +shouldBustCache=0 + +for v in "${versions[@]}" +do + # Update repositories... + cd "${docs}/${v}" + git pull origin "${v}" + + # Calculate md5 of the pulled markdown files and compare to the previous... + find "." -type f -name "*.md" | xargs md5sum > "${hashes}/${v}.pulled" + if ! cmp -s "${hashes}/${v}.pulled" "${hashes}/${v}.previous"; then + shouldBustCache=1 + fi +done + +# Bust the Cloudflare cache... +if [[ $shouldBustCache == 1 ]]; then + curl -X POST \ + "https://api.cloudflare.com/client/v4/zones/${1}/purge_cache" \ + -H 'Content-Type: application/json' \ + -H "Authorization: Bearer ${2}" \ + -d '{ "purge_everything": true }' +fi -# cd ${docs}/5.5 && git pull origin 5.5 -# cd ${docs}/5.8 && git pull origin 5.8 -# cd ${docs}/6.0 && git pull origin 6.0 -# cd ${docs}/6.x && git pull origin 6.x -# cd ${docs}/7.x && git pull origin 7.x -cd ${docs}/8.x && git pull origin 8.x -cd ${docs}/9.x && git pull origin 9.x -cd ${docs}/10.x && git pull origin 10.x -cd ${docs}/11.x && git pull origin 11.x -cd ${docs}/master && git pull origin master +# Mark pulled files as the previous files... +for v in "${versions[@]}" +do + mv -f "${hashes}/${v}.pulled" "${hashes}/${v}.previous" +done diff --git a/build/hashes/.gitignore b/build/hashes/.gitignore new file mode 100644 index 00000000..d6b7ef32 --- /dev/null +++ b/build/hashes/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/config/services.php b/config/services.php index 9aef3115..8d03c831 100644 --- a/config/services.php +++ b/config/services.php @@ -34,4 +34,8 @@ 'token' => env('WORKABLE_TOKEN'), ], + 'cloudflare' => [ + 'zone' => env('CLOUDFLARE_ZONE'), + 'token' => env('CLOUDFLARE_TOKEN'), + ], ];