Skip to content
Snippets Groups Projects
  1. Jul 29, 2020
    • Martyn Welch's avatar
      Updating old links · ee26b8cf
      Martyn Welch authored and Emanuele Aina's avatar Emanuele Aina committed
      
      After moving the documents from designs.a.o to www.a.o, there were
      quite a few links from the designs.a.o docs pointing to wiki.a.o and
      quite a few links from www.a.o pointing to designs.a.o. Replace these
      links with Hugo ref shortcodes to avoid hammering the redirects.
      
      This was achieved with the following script:
      
      ```
      
      import os
      import re
      import sys
      import toml
      
      from urllib.parse import urlparse
      
      def get_aliases(filename):
          #print("%s: " % filename)
          with open(filename, 'r') as file:
              contents = file.read()
              if not contents[0:3] == "+++":
                  return
      
              if "_index.md" in filename:
                  filename = filename.strip(".")
              else:
                  filename = filename.split("/")[-1]
      
              data = toml.loads(contents.split("+++")[1])
      
              if not "aliases" in data.keys():
                  return
      
              for alias in data["aliases"]:
                  if "/old-wiki/" in alias:
                      wiki_aliases[alias.replace("/old-wiki/", "/")] = filename
      
                  if "/old-designs/" in alias:
                      # We're dropping the per-release links from designs.a.o, so match on shorter path
                      design_aliases[alias.replace("/old-designs/latest/", "/")] = filename
      
      def fix_link(url):
          link = url.group('link')
      
          url = urlparse(link)
      
          if url.netloc == "wiki.apertis.org":
              if url.path in wiki_aliases.keys():
                  url = url._replace(scheme="")
                  url = url._replace(netloc="")
                  url = url._replace(path=wiki_aliases[url.path])
                  link = " {{< ref \"%s\" >}} " % url.geturl()
      
          if url.netloc == "designs.apertis.org":
              # We're dropping the per-release links from designs.a.o, so match on shorter path
              path = "/%s" % url.path.split('/', 2)[-1]
              print(path)
              if path in design_aliases.keys():
                  url = url._replace(scheme="")
                  url = url._replace(netloc="")
                  url = url._replace(path=design_aliases[path])
                  link = " {{< ref \"%s\" >}} " % url.geturl()
      
          return "](%s)" % link
      
      def fix_ref(url):
          link = url.group('link')
      
          url = urlparse(link)
      
          if url.netloc == "wiki.apertis.org":
              if url.path in wiki_aliases.keys():
                  url = url._replace(scheme="")
                  url = url._replace(netloc="")
                  url = url._replace(path=wiki_aliases[url.path])
                  link = " {{< ref \"%s\" >}} " % url.geturl()
      
          if url.netloc == "designs.apertis.org":
              # We're dropping the per-release links from designs.a.o, so match on shorter path
              path = "/%s" % url.path.split('/', 2)[-1]
              print(path)
              if path in design_aliases.keys():
                  url = url._replace(scheme="")
                  url = url._replace(netloc="")
                  url = url._replace(path=design_aliases[path])
                  link = " {{< ref \"%s\" >}} " % url.geturl()
      
          return "]: %s" % link
      
      def correct_links(filename):
          #print("%s: " % filename)
          with open(filename, 'r+') as file:
              contents = file.read()
      
              if not contents[0:3] == "+++":
                  return
      
              fm = contents.split("+++")[1]
              doc = contents.split("+++",2)[2]
      
              # Hotdoc allows empty links like `[](url)`
              pattern = re.compile("\]\((?P<link>.*?)\)")
              doc = pattern.sub(fix_link, doc)
      
              pattern = re.compile("\]: (?P<link>.*)")
              doc = pattern.sub(fix_ref, doc)
      
              file.seek(0)
              file.truncate()
      
              file.write("+++")
              file.write(fm)
              file.write("+++")
              file.write(doc)
      
      wiki_aliases = {}
      design_aliases = {}
      
      for root, dirs, files in os.walk(sys.argv[1]):
          for file in files:
              if ".md" in file:
                  get_aliases("%s/%s" %(root, file))
      
      print("wiki_aliases:")
      print(wiki_aliases)
      print("design_aliases:")
      print(design_aliases)
      
      for root, dirs, files in os.walk(sys.argv[1]):
          for file in files:
              if ".md" in file:
                  correct_links("%s/%s" %(root, file))
      ```
      
      Signed-off-by: default avatarMartyn Welch <martyn.welch@collabora.com>
      ee26b8cf
    • Martyn Welch's avatar
      Minor tidy up of designs · e26083c0
      Martyn Welch authored and Emanuele Aina's avatar Emanuele Aina committed
      
      A number of broken links remained after scripted conversion and a
      number of spurious code blocks were found in the docs. Clean these up
      so that the documents render correctly.
      
      Signed-off-by: default avatarMartyn Welch <martyn.welch@collabora.com>
      e26083c0
    • Martyn Welch's avatar
      Tweak HTML rendering to allow HTML elements in Markdown · 8249ccd7
      Martyn Welch authored and Emanuele Aina's avatar Emanuele Aina committed
      By default the Goldmark renderer used by Hugo won't render HTML
      elements that are present in the markdown, even though this is allowed
      in the CommonMark Spec that it claims to implement:
      
          https://spec.commonmark.org/0.29/#html-blocks
      
      
      
      We can get this to work by turning on "unsafe" mode, which means:
      
          By default, Goldmark does not render raw HTMLs and potentially
          dangerous links. If you have lots of inline HTML and/or JavaScript,
          you may need to turn this on.
      
      As we have such elements and we can guarantee what's being rendered,
      turn this on.
      
      Signed-off-by: default avatarMartyn Welch <martyn.welch@collabora.com>
      8249ccd7
    • Martyn Welch's avatar
      Fix links in imported designs · af5a2a88
      Martyn Welch authored and Emanuele Aina's avatar Emanuele Aina committed
      
      A lot of the links in the imported designs are broken:
      
      - HotDoc allowed a `[][link]` format that Hugo doesn't understand
      - HotDoc allowed relative links without text, which Hugo doesn't handle
      - The location of the images and other media has changed
      - The format used for internal page references has is different
      
      Additionally, fix up touched links to other Apertis pages to use the
      Hugo "ref" shortcode, which reduces the risk of leaving hanging links.
      
      Conversion completed with the following python script:
      
      ```
      
      import os
      import re
      import sys
      
      def url_munge(match):
          url = match.group('url').strip('.')
          if url[0] != "/":
              url = "/%s" % url
          url = url.replace("media", "images")
          link = ("![](%s)" % url)
      
          return link
      
      def link_munge(match):
          link = match.group('link')
          new = link.replace("(", "")
          new = new.replace(")", "")
          new = new.replace("`", "")
          new = new.replace("?", "")
          new = new.replace(":", "")
          new = new.replace(",", "")
          new = new.replace("–", "")
          new = new.replace("“", "")
          new = new.replace("”", "")
          new = new.replace(".", "")
          new = new.replace(" ", "-")
          new = new.lower()
          new = (" [%s]( {{< ref \"#%s\" >}} )" % (link, new))
      
          return new
      
      def link_munge_2(match):
          link = match.group('link')
          new = link.replace("#", "")
          new = new.replace("-", " ")
          new = new.replace(".md", "")
          if not "http" in link:
              link = " {{< ref \"%s\" >}} " % link
      
          new = ("[%s](%s)" % (new, link))
      
          return new
      
      for filename in os.listdir(sys.argv[1]):
          #print("%s: " % filename)
          with open(filename, 'r+') as file:
              contents = file.read()
      
              # Hotdoc uses `[][Internal Title]` for internal links whilst Hugo uses `[](#internal-title)`
              pattern = re.compile("\[\]\[(?P<link>.*?)\]")
              contents = pattern.sub(link_munge, contents)
      
              # Hotdoc allows empty links like `[](url)`
              pattern = re.compile("[^!]\[\]\((?P<link>.*?)\)")
              contents = pattern.sub(link_munge_2, contents)
      
              # Media links not working
              pattern = re.compile("!\[\]\((?P<url>.*?)\)")
              contents = pattern.sub(url_munge, contents)
      
              file.seek(0)
              file.truncate()
      
              file.write(contents)
      
      ```
      
      Signed-off-by: default avatarMartyn Welch <martyn.welch@collabora.com>
      af5a2a88
    • Martyn Welch's avatar
      Unbreak page because of spurious code block deliminator · 35d4de00
      Martyn Welch authored and Emanuele Aina's avatar Emanuele Aina committed
      
      Signed-off-by: default avatarMartyn Welch <martyn.welch@collabora.com>
      35d4de00
    • Martyn Welch's avatar
      Convert hotdoc code blocks · 1495ab3f
      Martyn Welch authored and Emanuele Aina's avatar Emanuele Aina committed
      
      Hotdoc allows "---" to be used for a code block, this is not supported
      by Hugo, it needs to use "```". Convert uses of the former with:
      
        sed 's/^---$/```/' -i *
      
      Signed-off-by: default avatarMartyn Welch <martyn.welch@collabora.com>
      1495ab3f
    • Martyn Welch's avatar
      Convert hotdoc metadata to Hugo frontmatter · 6858b920
      Martyn Welch authored and Emanuele Aina's avatar Emanuele Aina committed
      
      Convert the existing metadata stored at the front of each file to
      frontmatter formatted for Hugo:
      
       - Remove authors as we don't have an equivalent for that in Hugo
       - Add in fields that the existing metadata doesn't have
       - Include aliases to allow us to point to the new pages from a
         redirect on designs.apertis.org
       - Ensure we have a title (based on filename if one not present)
      
      All frontmatter created in toml format to stay consistent with existing
      documents.
      
      Converted using the following python script:
      ```
      
      import os
      import re
      import sys
      import toml
      import yaml
      
      for filename in os.listdir(sys.argv[1]):
          print("%s: " % filename)
          with open(filename, 'r+') as file:
              contents = file.read()
              if contents[0:3] == "+++":
                  # We have toml
                  data = toml.loads(contents.split("+++")[1])
                  doc = "+++".join(contents.split("+++")[2:])
              elif contents[0:3] == "---":
                  # We have yaml
                  data = yaml.load(contents.split("---")[1])
                  doc = "---".join(contents.split("---")[2:])
              else:
                  # No frontmatter
                  data = {}
                  doc = contents
      
              if not "title" in data.keys():
                  data["title"] = filename.split(".")[0].replace('_', ' ').capitalize()
      
              data["weight"] = 100
              data["aliases"] = ["/old-designs/latest/%s" % filename.replace(".md", ".html")]
      
              data["outputs"] = ["html", "pdf-in"]
      
              if "authors" in data.keys():
                  del data["authors"]
      
              file.seek(0)
              file.truncate()
      
              file.write("+++\n")
              file.write(toml.dumps(data))
              file.write("+++")
              file.write(doc)
      ```
      
      Signed-off-by: default avatarMartyn Welch <martyn.welch@collabora.com>
      6858b920
    • Martyn Welch's avatar
      Manual tweaks to add titles · 04408e7f
      Martyn Welch authored and Emanuele Aina's avatar Emanuele Aina committed
      
      Some of the pages lack titles, others are just menu items we don't
      need. Tweak the pages with initial pass to give them all titles and
      remove stuff we don't need (we will be sorting the designs anyway).
      
      Signed-off-by: default avatarMartyn Welch <martyn.welch@collabora.com>
      04408e7f
    • Martyn Welch's avatar
      Add media from designs.apertis.org · 13f39020
      Martyn Welch authored and Emanuele Aina's avatar Emanuele Aina committed
      
      Copy all the media files from the designs.apertis.org website under
      "images" where we currently have all the website media.
      
      Signed-off-by: default avatarMartyn Welch <martyn.welch@collabora.com>
      13f39020
    • Martyn Welch's avatar
      Add designs from designs.a.o · c21b22f9
      Martyn Welch authored and Emanuele Aina's avatar Emanuele Aina committed
      
      Add the designs from designs.a.o with the minimum changes to get the
      site to build. This essentially required to trailing marker for the
      metadata to be changed from "..." to "---".
      
      Signed-off-by: default avatarMartyn Welch <martyn.welch@collabora.com>
      c21b22f9
  2. Jul 27, 2020
  3. Jul 24, 2020
  4. Jul 19, 2020
  5. Jul 15, 2020
  6. Jul 14, 2020
  7. Jul 13, 2020
  8. Jul 11, 2020
Loading