Files
docs/Sources/Docs/Metadata.swift
Michael Housh 5ea3e3bd86
Some checks failed
CI / release (push) Failing after 3m0s
feat: Adds ci workflow.
2025-04-03 11:57:22 -04:00

59 lines
1.8 KiB
Swift

import Foundation
import Saga
/// Represents constants about the site.
enum SiteMetadata {
#if DEBUG
static let url = URL(string: "http://localhost:3000")!
#else
static let url = URL(string: "https://mhoush.com")!
#endif
static let name = "mhoush"
static let author = "Michael Housh"
/// Summary used for metadata / twitter card for home page,
/// also displayed at bottom of articles.
static let summary = """
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
"""
/// The default twitter image when linking to home page.
static let twitterImage = "/static/images/home-twitter-image.png"
}
/// Represents the valid file metadata for an article.
struct ArticleMetadata: Metadata {
/// The creation date of the article.
let date: Date?
/// The updated date of the article.
let updated: Date?
/// The articles associated tags.
let tags: [String]
/// A custom summary for the article, if not supplied then it is generated
/// using the `String.truncate` method in the String+Extensions.swift file.
var summary: String?
/// Whether the articles is public, defaults to `true` if not supplied.
/// This is useful if working on an article.
let `public`: Bool?
/// Specify a custom banner image path, if not supplied it uses the articles
/// filename with a `png` extension and searches in the content/articles/images
/// directory. So it's often not required to be supplied.
let image: String?
/// Specify the primary tag for suggesting related articles, if not supplied,
/// then most recent articles are suggested.
let primaryTag: String?
}
/// Represents valid metadata for the files that are not an `article`.
struct PageMetadata: Metadata {
/// The section of the website for the file.
let section: String?
}