krz/orgstar

A native macOS editor for org-mode files. editor org-mode swift

scripts/update-highlight-queries.sh

c1295824f55c7bba681fca8338bf08167e110105
orgstar/scripts/update-highlight-queries.sh history · blame · raw

51 lines · 2986 bytes · executable

 1#!/bin/sh
 2# Fetches the pinned grammars' highlight queries into Sources/OrgHighlight/Queries.swift.
 3# Usage: scripts/update-highlight-queries.sh
 4set -eu
 5cd "$(dirname "$0")/.."
 6python3 - <<'PY'
 7import urllib.request
 8
 9# language: [(repository, ref, query path), ...]; several files are concatenated in order.
10QUERIES = {
11    "bash": [("tree-sitter/tree-sitter-bash", "v0.25.1", "queries/highlights.scm")],
12    "c": [("tree-sitter/tree-sitter-c", "v0.24.2", "queries/highlights.scm")],
13    "clojure": [("sogaiu/tree-sitter-clojure", "v0.0.13", "queries/highlights.scm")],
14    "cpp": [("tree-sitter/tree-sitter-c", "v0.24.2", "queries/highlights.scm"),
15            ("tree-sitter/tree-sitter-cpp", "v0.23.4", "queries/highlights.scm")],
16    "elisp": [("Wilfred/tree-sitter-elisp", "0cbf0906d9ee707c8c109422fba9cdd17ae13dcf", "queries/highlights.scm")],
17    "go": [("tree-sitter/tree-sitter-go", "v0.25.0", "queries/highlights.scm")],
18    "haskell": [("tree-sitter/tree-sitter-haskell", "v0.24.1", "queries/highlights.scm")],
19    "java": [("tree-sitter/tree-sitter-java", "v0.23.5", "queries/highlights.scm")],
20    "javascript": [("tree-sitter/tree-sitter-javascript", "v0.25.0", "queries/highlights.scm")],
21    "json": [("tree-sitter/tree-sitter-json", "v0.24.8", "queries/highlights.scm")],
22    "lua": [("tree-sitter-grammars/tree-sitter-lua", "v0.5.0", "queries/highlights.scm")],
23    "python": [("tree-sitter/tree-sitter-python", "v0.25.0", "queries/highlights.scm")],
24    "r": [("r-lib/tree-sitter-r", "v1.3.0", "queries/highlights.scm")],
25    "ruby": [("tree-sitter/tree-sitter-ruby", "v0.23.1", "queries/highlights.scm")],
26    "rust": [("tree-sitter/tree-sitter-rust", "v0.24.2", "queries/highlights.scm")],
27    "scheme": [("6cdh/tree-sitter-scheme", "v0.24.7-1", "queries/highlights.scm")],
28    # Orgstar's own query, in scripts/queries.
29    "toml": [("local", None, "scripts/queries/toml.scm")],
30    "yaml": [("tree-sitter-grammars/tree-sitter-yaml", "v0.7.2", "queries/highlights.scm")],
31}
32
33out = ["// Generated by scripts/update-highlight-queries.sh from the grammars' own highlight",
34       "// queries, at the versions Package.swift pins. Do not edit.", "",
35       "enum HighlightQueries {", "    static let source: [String: String] = ["]
36for language, files in sorted(QUERIES.items()):
37    text = ""
38    for repo, ref, path in files:
39        if repo == "local":
40            text += open(path, encoding="utf-8").read() + "\n"
41            continue
42        url = f"https://raw.githubusercontent.com/{repo}/{ref}/{path}"
43        text += urllib.request.urlopen(url).read().decode("utf-8") + "\n"
44    assert '"""####' not in text
45    out.append(f'        "{language}": ####"""')
46    # Multi-line string lines are indented as far as the closing delimiter.
47    out.extend(("        " + line) if line else "" for line in text.rstrip("\n").split("\n"))
48    out.append('        """####,')
49out += ["    ]", "}", ""]
50open("Sources/OrgHighlight/Queries.swift", "w").write("\n".join(out))
51PY