From ea4ed078ed87f2e4c930a5b5984f3c5e9850ff52 Mon Sep 17 00:00:00 2001 From: Hugo Peixoto Date: Mon, 1 Jan 2024 16:15:35 +0000 Subject: [PATCH] =?UTF-8?q?Tenta=20meter=20checks=20=C3=A0s=20datas=20no?= =?UTF-8?q?=20CI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 1 + checkdates.rb | 36 +++++++++++++++++++ .../eventos/2021-08-21-foss4g-2021/index.md | 2 +- .../2023-10-12-devops-na-praia/index.md | 2 +- 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100755 checkdates.rb diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0813c24..9db5120 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,6 +2,7 @@ image: klakegg/hugo:0.88.0-ext-ci # recommended image by Hugo: https://gohugo.io test: script: + - ./checkdates.rb - hugo except: - master diff --git a/checkdates.rb b/checkdates.rb new file mode 100755 index 0000000..0334a1d --- /dev/null +++ b/checkdates.rb @@ -0,0 +1,36 @@ +#!/usr/bin/env ruby + +require 'yaml' +require 'date' + +class YAMLFrontMatter + PATTERN = /\A(---\r?\n(.*?)\n?^---\s*$\n?)/m.freeze + + class << self + def extract(content) + if content =~ PATTERN + [YAML.load(Regexp.last_match(2), permitted_classes: [Symbol, Date, Time]), content.sub(Regexp.last_match(1), "")] + else + [{}, content] + end + end + end +end + +Dir["content/eventos/*/index.md"].each do |filename| + metadata, _ = YAMLFrontMatter.extract(File.read(filename)) + + raise "#{filename}: wrong layout: #{metadata["layout"]}" unless metadata["layout"] == "evento" + raise "#{filename}: no title" unless metadata.keys.include?("title") + raise "#{filename}: no metadata" unless metadata.keys.include?("metadata") + + raise "#{filename}: no event location" unless metadata.dig("metadata", "event", "location") + + start = metadata.dig("metadata", "event", "date", "start") + finish = metadata.dig("metadata", "event", "date", "finish") + + raise "#{filename}: no event start date" unless start + raise "#{filename}: no event finish date" unless finish + + raise "#{filename}: time paradox: #{start} - #{finish}" unless start.to_time <= finish.to_time +end diff --git a/content/eventos/2021-08-21-foss4g-2021/index.md b/content/eventos/2021-08-21-foss4g-2021/index.md index 2b1e8d3..198d447 100644 --- a/content/eventos/2021-08-21-foss4g-2021/index.md +++ b/content/eventos/2021-08-21-foss4g-2021/index.md @@ -1,5 +1,5 @@ --- -categories: [] +layout: evento metadata: event: location: Online diff --git a/content/eventos/2023-10-12-devops-na-praia/index.md b/content/eventos/2023-10-12-devops-na-praia/index.md index 541502a..d609028 100644 --- a/content/eventos/2023-10-12-devops-na-praia/index.md +++ b/content/eventos/2023-10-12-devops-na-praia/index.md @@ -3,7 +3,7 @@ layout: evento title: Devops na Praia #2 metadata: event: - location: + location: Wunderman Thompson Commerce - EdifĂ­cio Transparente, Porto site: url: https://www.eventbrite.pt/e/bilhetes-devops-na-praia-2-720753933417?aff=oddtdtcreator date: