]> git.armaanb.net Git - stagit.git/commitdiff
First commit
authorArmaan Bhojwani <me@armaanb.net>
Sat, 6 Mar 2021 23:22:28 +0000 (18:22 -0500)
committerArmaan Bhojwani <me@armaanb.net>
Sat, 6 Mar 2021 23:22:28 +0000 (18:22 -0500)
Lots of cleanup and playing around with things

.gitignore
Makefile
highlight [deleted file]
highlight.py [new file with mode: 0755]
stagit.c
style.css
style.min.css [new file with mode: 0644]
syntax.css [new file with mode: 0644]

index 89d4bc80fee7b9eed8acd8ed11b2b3a7914894fd..e6ec97712e58c076879741a1143055751c3086b9 100644 (file)
@@ -1,4 +1,6 @@
 # Generated files
 *.o
 *.so
-*.out
+stagit
+stagit-index
+html
index f94e8e9f0ea0277d91761d5f6031d05d3a7e38b2..1effc071d0e21c26730dd007b9dea17a0b76bfca 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -24,8 +24,8 @@ COMPATSRC = \
        strlcat.c\
        strlcpy.c
 BIN = \
-       stagit.out\
-       stagit-index.out
+       stagit\
+       stagit-index
 MAN1 = \
        stagit.1\
        stagit-index.1
@@ -53,7 +53,7 @@ dist:
        rm -rf ${NAME}-${VERSION}
        mkdir -p ${NAME}-${VERSION}
        cp -f ${MAN1} ${HDR} ${SRC} ${COMPATSRC} ${DOC} \
-               Makefile favicon.png logo.png style.css \
+               Makefile favicon.png logo.png style.css syntax.css highlight.py \
                example_create.sh example_post-receive.sh \
                ${NAME}-${VERSION}
        # make tarball
@@ -63,11 +63,11 @@ dist:
 
 ${OBJ}: ${HDR}
 
-stagit.out: stagit.o ${COMPATOBJ} requirements.txt
+stagit: stagit.o ${COMPATOBJ} requirements.txt
        pip3 install -r requirements.txt
        ${CC} -o $@ stagit.o ${COMPATOBJ} ${STAGIT_LDFLAGS}
 
-stagit-index.out: stagit-index.o ${COMPATOBJ}
+stagit-index: stagit-index.o ${COMPATOBJ}
        ${CC} -o $@ stagit-index.o ${COMPATOBJ} ${STAGIT_LDFLAGS}
 
 clean:
@@ -81,11 +81,13 @@ install: all
        # installing example files.
        mkdir -p ${DESTDIR}${DOCPREFIX}
        cp -f style.css\
+               syntax.css\
                favicon.png\
                logo.png\
                example_create.sh\
                example_post-receive.sh\
                README\
+               highlight.py\
                ${DESTDIR}${DOCPREFIX}
        # installing manual pages.
        mkdir -p ${DESTDIR}${MANPREFIX}/man1
@@ -98,6 +100,8 @@ uninstall:
        # removing example files.
        rm -f \
                ${DESTDIR}${DOCPREFIX}/style.css\
+               ${DESTDIR}${DOCPREFIX}/syntax.css\
+               ${DESTDIR}${DOCPREFIX}/highlight.py\
                ${DESTDIR}${DOCPREFIX}/favicon.png\
                ${DESTDIR}${DOCPREFIX}/logo.png\
                ${DESTDIR}${DOCPREFIX}/example_create.sh\
diff --git a/highlight b/highlight
deleted file mode 100755 (executable)
index 61f554f..0000000
--- a/highlight
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python3
-
-import pygments
-from pygments import highlight
-from pygments.formatters import HtmlFormatter
-from pygments.lexers import guess_lexer, guess_lexer_for_filename
-
-from sys import stdin, stderr
-
-filename = stdin.readline().strip()
-contents = stdin.read()
-
-lexer=None
-
-try:
-    lexer = guess_lexer_for_filename(filename, contents)
-except pygments.util.ClassNotFound:
-    try:
-        lexer = guess_lexer(contents)
-    except pygments.util.ClassNotFound:
-        pass
-
-if lexer is None:
-    from pygments.lexers import TextLexer
-    lexer = TextLexer()
-
-rendered = None
-if lexer.__class__ is pygments.lexers.MarkdownLexer:
-    from markdown import markdown
-    rendered = markdown(contents, extensions=[
-        'codehilite',
-        'extra',
-        'sane_lists',
-        'smarty',
-        'pymdownx.tasklist'
-    ])
-
-FORMAT = HtmlFormatter(
-    style='murphy',
-    cssclass='highlight',
-    linenos='table',
-    lineanchors='loc',
-    anchorlinenos=True)
-
-if rendered:
-    print('<article class="markup markdown">')
-    print(rendered)
-    print('</article>')
-print('<div id="blob">')
-print(highlight(contents, lexer, FORMAT))
-print('</div>')
-print('<style>')
-print(FORMAT.get_style_defs(''))
-print('</style>')
-
-print("Filename: {}; Lexer: {}.".format(filename, lexer), file=stderr)
-if rendered:
-    print("Markdown was rendered in addition.", file=stderr)
diff --git a/highlight.py b/highlight.py
new file mode 100755 (executable)
index 0000000..eb146e7
--- /dev/null
@@ -0,0 +1,61 @@
+#!/usr/bin/env python3
+
+import pygments
+from pygments import highlight
+from pygments.formatters import HtmlFormatter
+import pygments.lexers
+from markdown import markdown
+
+from sys import stdin, stderr
+
+filename = stdin.readline().strip()
+contents = stdin.read()
+lexer = None
+
+try:
+    lexer = pygments.lexers.guess_lexer_for_filename(filename, contents)
+except pygments.util.ClassNotFound:
+    try:
+        lexer = pygments.lexers.guess_lexer(contents)
+    except pygments.util.ClassNotFound:
+        pass
+
+if lexer is None:
+    lexer = pygments.lexers.special.TextLexer
+
+rendered = (
+    markdown(
+        contents,
+        extensions=[
+            "codehilite",
+            "extra",
+            "sane_lists",
+            "smarty",
+            "pymdownx.tasklist",
+        ],
+    )
+    if lexer.__class__ is pygments.lexers.MarkdownLexer
+    else None
+)
+
+formatter = HtmlFormatter(
+    style="monokai",
+    cssclass="highlight",
+    linenos="table",
+    lineanchors="loc",
+    anchorlinenos=True,
+)
+
+if rendered:
+    print('<article class="markup markdown">')
+    print(rendered)
+    print("</article>")
+print('<div id="blob">')
+print(highlight(contents, lexer, formatter))
+print("</div>")
+print('<link rel="stylesheet" href="/syntax.css"')
+
+print(f"Filename: {filename}; Lexer: {lexer}.", file=stderr)
+
+if rendered:
+    print("Markdown was rendered in addition.", file=stderr)
index 7c88263689735963d214b9e9443b3b2f5530bdd4..fdcfc0a920b77d414e5b989c7392bbeaaa29d092 100644 (file)
--- a/stagit.c
+++ b/stagit.c
@@ -357,6 +357,7 @@ writeheader(FILE *fp, const char *title)
        fprintf(fp, "<link rel=\"alternate\" type=\"application/atom+xml\" title=\"%s Atom Feed\" href=\"%satom.xml\" />\n",
                name, relpath);
        fprintf(fp, "<link rel=\"stylesheet\" type=\"text/css\" href=\"%sstyle.css\" />\n", relpath);
+       fprintf(fp, "<link rel=\"stylesheet\" type=\"text/css\" href=\"%ssyntax.css\" />\n", relpath);
        fputs("</head>\n<body>\n<table><tr><td>", fp);
        fprintf(fp, "<a href=\"../%s\"><img src=\"%slogo.png\" alt=\"\" width=\"32\" height=\"32\" /></a>",
                relpath, relpath);
@@ -405,7 +406,7 @@ syntax_highlight(const char *filename, FILE *fp, const char *s, size_t len)
        dup2(fileno(fp), 1);
 
        // Python Pygments script for syntax highlighting.
-       FILE *child = popen("./highlight", "w");
+       FILE *child = popen("/usr/local/share/doc/stagit/highlight.py", "w");
        if (child == NULL) {
                printf("child is null: %s", strerror(errno));
                exit(1);
@@ -1258,6 +1259,8 @@ main(int argc, char *argv[])
                writefiles(fp, head);
        writefooter(fp);
        fclose(fp);
+       system("cp /usr/local/share/doc/stagit/style.css .");
+       system("cp /usr/local/share/doc/stagit/syntax.css .");
 
        /* summary page with branches and tags */
        fp = efopen("refs.html", "w");
index 20ce206433dc82d19f4a09632bb57a0c63d7d5ce..af0d598f286445f0b4e52ccc651c26d0a9d698da 100644 (file)
--- a/style.css
+++ b/style.css
@@ -1,21 +1,17 @@
-html {
-       font-size: 12px;
-       height: 100%;
-}
-
 body {
-       margin: 5rem auto;
-       color: #222;
-       background-color: #fff;
+       font-size: 0.8rem;
        font-family: monospace;
-       width: 66rem;
+       color: #ebdbb2;
+       background-color: #282828;
+       max-width: max-content;
+       min-width: min-content;
 }
 
-pre { -moz-tab-size: 4; }
-pre { tab-size: 4; }
+pre {
+       tab-size: 4;
+}
 
 h1, h2, h3, h4, h5, h6 {
-       font-size: 1em;
        margin: 0;
 }
 
@@ -28,7 +24,7 @@ img {
 }
 
 a:target {
-       background-color: #ccc;
+       background-color: #eee;
 }
 
 a.d,
@@ -39,26 +35,25 @@ a.line {
 }
 
 #blob {
-    display: block;
-    max-width: 100%;
-    overflow-x: scroll;
+       display: block;
+       max-width: 100%;
 }
 
 article.markup {
        font-size: 15px;
-    border: 2px solid #00000017;
-    border-radius: 10px;
-    font-family: sans-serif;
-    padding: 2.5em;
-    margin: 2em 0;
+       border: 2px solid #eee;
+       border-radius: 10px;
+       font-family: sans-serif;
+       padding: 2.5em;
+       margin: 2em 0;
 }
 
 article.markup code {
-    font-size: 0.9em;
-    border: 1px solid #dbdbdb;
-    background-color: #f7f7f7;
-    padding: 0 0.3em;
-    border-radius: 0.3em
+       font-size: 0.9em;
+       border: 1px solid #dbdbdb;
+       background-color: #f7f7f7;
+       padding: 0 0.3em;
+       border-radius: 0.3em
 }
 
 article.markup pre code {
@@ -88,19 +83,19 @@ article.markup h2 {
 }
 
 article.markup h3 {
-    font-size: 1.5em;
+       font-size: 1.5em;
 }
 
 article.markup h4 {
-    font-size: 1.3em;
+       font-size: 1.3em;
 }
 
 article.markup h5 {
-    font-size: 1.1em;
+       font-size: 1.1em;
 }
 
 article.markup h6 {
-    font-size: 1em;
+       font-size: 1em;
 }
 
 article img {
@@ -124,10 +119,14 @@ article img {
 }
 
 #blob a:hover {
-       color: blue;
+       color: #eee;
        text-decoration: none;
 }
 
+a {
+       color: #83a598;
+}
+
 table thead td {
        font-weight: bold;
 }
@@ -146,7 +145,7 @@ table td {
 #index tr:hover td,
 #log tr:hover td,
 #files tr:hover td {
-       background-color: #eee;
+       background-color: #333;
 }
 
 #index tr td:nth-child(2),
@@ -161,12 +160,12 @@ td.num {
 }
 
 .desc {
-       color: #777;
+       color: #928374;
 }
 
 hr {
        border: 0;
-       border-top: 1px solid #777;
+       border-top: 1px solid #928374;
        height: 1px;
 }
 
@@ -175,19 +174,19 @@ pre {
 }
 
 pre a.h {
-       color: #00a;
+       color: #fe8019;
 }
 
 .A,
 span.i,
 pre a.i {
-       color: #070;
+       color: #b8bb26;
 }
 
 .D,
 span.d,
 pre a.d {
-       color: #e00;
+       color: #fb4934;
 }
 
 pre a.h:hover,
@@ -203,11 +202,10 @@ pre a.d:hover {
 
 .url td:nth-child(2) span {
        padding: 1px 5px;
-       background-color: #eee;
-       border: 1px solid #ddd;
+       border: 1px solid #ebdbb2;
        border-radius: 5px;
 }
 
 .url td:nth-child(2) span a {
-       color: #444;
+       color: #ebdbb2;
 }
diff --git a/style.min.css b/style.min.css
new file mode 100644 (file)
index 0000000..063054a
--- /dev/null
@@ -0,0 +1 @@
+body{font-size:.8rem;font-family:monospace;color:#ebdbb2;background-color:#282828;max-width:max-content;min-width:min-content}pre{tab-size:4}h1,h2,h3,h4,h5,h6{margin:0}img,h1,h2{vertical-align:middle}img{border:0}a:target{background-color:#eee}a.d,a.h,a.i,a.line{text-decoration:none}#blob{display:block;max-width:100%}article.markup{font-size:15px;border:2px solid #eee;border-radius:10px;font-family:sans-serif;padding:2.5em;margin:2em 0}article.markup code{font-size:.9em;border:1px solid #dbdbdb;background-color:#f7f7f7;padding:0 .3em;border-radius:.3em}article.markup pre code{border:none;background:0 0;padding:0;border-radius:0}article.markup pre{background-color:#f7f7f7;padding:1em;border:1px solid #dbdbdb;border-radius:.3em}article.markup h1{font-size:2.4em;padding-bottom:6px;border-bottom:5px solid #0000000a}article.markup h2{font-size:1.9em;padding-bottom:5px;border-bottom:2px solid #00000014}article.markup h3{font-size:1.5em}article.markup h4{font-size:1.3em}article.markup h5{font-size:1.1em}article.markup h6{font-size:1em}article img{max-width:100%}.linenos{margin-right:0;border-right:1px solid rgb(0 0 0/8%);user-select:none}.linenos a{margin-right:.9em;user-select:none;text-decoration:none}#blob a{color:#777}#blob a:hover{color:#eee;text-decoration:none}a{color:#83a598}table thead td{font-weight:700}table td{padding:0 .4em}#content table td{vertical-align:top;white-space:nowrap}#branches tr:hover td,#tags tr:hover td,#index tr:hover td,#log tr:hover td,#files tr:hover td{background-color:#333}#index tr td:nth-child(2),#tags tr td:nth-child(3),#branches tr td:nth-child(3),#log tr td:nth-child(2){white-space:normal}td.num{text-align:right}.desc{color:#928374}hr{border:0;border-top:1px solid #928374;height:1px}pre{font-family:monospace}pre a.h{color:#fe8019}.A,span.i,pre a.i{color:#b8bb26}.D,span.d,pre a.d{color:#fb4934}pre a.h:hover,pre a.i:hover,pre a.d:hover{text-decoration:none}.url td:nth-child(2){padding-top:.2em;padding-bottom:.9em}.url td:nth-child(2) span{padding:1px 5px;border:1px solid #ebdbb2;border-radius:5px}.url td:nth-child(2) span a{color:#ebdbb2}
\ No newline at end of file
diff --git a/syntax.css b/syntax.css
new file mode 100644 (file)
index 0000000..4c774f6
--- /dev/null
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#282828;color:#ebdbb2;background-color:#282828}.highlight .c{color:#928374;font-style:italic;background-color:#282828}.highlight .err{color:#ebdbb2;background-color:#282828}.highlight .esc{color:#ebdbb2;background-color:#282828}.highlight .g{color:#ebdbb2;background-color:#282828}.highlight .k{color:#fe8019;background-color:#282828}.highlight .l{color:#ebdbb2;background-color:#282828}.highlight .n{color:#ebdbb2;background-color:#282828}.highlight .o{color:#fe8019;background-color:#282828}.highlight .x{color:#ebdbb2;background-color:#282828}.highlight .p{color:#ebdbb2;background-color:#282828}.highlight .ch{color:#928374;font-style:italic;background-color:#282828}.highlight .cm{color:#928374;font-style:italic;background-color:#282828}.highlight .cp{color:#8ec07c;background-color:#282828}.highlight .c1{color:#928374;font-style:italic;background-color:#282828}.highlight .cs{color:#928374;font-style:italic;background-color:#282828}.highlight .gd{color:#282828;background-color:#fb4934}.highlight .ge{color:#83a598;text-decoration:underline;background-color:#282828}.highlight .gr{color:#ebdbb2;font-weight:700;background-color:#fb4934}.highlight .gh{color:#b8bb26;font-weight:700;background-color:#282828}.highlight .gi{color:#282828;background-color:#b8bb26}.highlight .go{color:#504945;background-color:#282828}.highlight .gp{color:#ebdbb2;background-color:#282828}.highlight .gs{color:#ebdbb2;background-color:#282828}.highlight .gu{color:#b8bb26;font-weight:700;background-color:#282828}.highlight .gt{color:#ebdbb2;font-weight:700;background-color:#fb4934}.highlight .kc{color:#fe8019;background-color:#282828}.highlight .kd{color:#fe8019;background-color:#282828}.highlight .kn{color:#fe8019;background-color:#282828}.highlight .kp{color:#fe8019;background-color:#282828}.highlight .kr{color:#fe8019;background-color:#282828}.highlight .kt{color:#fabd2f;background-color:#282828}.highlight .ld{color:#ebdbb2;background-color:#282828}.highlight .m{color:#d3869b;background-color:#282828}.highlight .s{color:#b8bb26;background-color:#282828}.highlight .na{color:#b8bb26;font-weight:700;background-color:#282828}.highlight .nb{color:#fabd2f;background-color:#282828}.highlight .nc{color:#ebdbb2;background-color:#282828}.highlight .no{color:#d3869b;background-color:#282828}.highlight .nd{color:#ebdbb2;background-color:#282828}.highlight .ni{color:#fabd2f;background-color:#282828}.highlight .ne{color:#fb4934;background-color:#282828}.highlight .nf{color:#fabd2f;background-color:#282828}.highlight .nl{color:#fb4934;background-color:#282828}.highlight .nn{color:#ebdbb2;background-color:#282828}.highlight .nx{color:#ebdbb2;background-color:#282828}.highlight .py{color:#ebdbb2;background-color:#282828}.highlight .nt{color:#fb4934;background-color:#282828}.highlight .nv{color:#ebdbb2;background-color:#282828}.highlight .ow{color:#fe8019;background-color:#282828}.highlight .w{color:#ebdbb2;background-color:#282828}.highlight .mb{color:#d3869b;background-color:#282828}.highlight .mf{color:#d3869b;background-color:#282828}.highlight .mh{color:#d3869b;background-color:#282828}.highlight .mi{color:#d3869b;background-color:#282828}.highlight .mo{color:#d3869b;background-color:#282828}.highlight .sb{color:#b8bb26;background-color:#282828}.highlight .sc{color:#b8bb26;background-color:#282828}.highlight .sd{color:#b8bb26;background-color:#282828}.highlight .s2{color:#b8bb26;background-color:#282828}.highlight .se{color:#b8bb26;background-color:#282828}.highlight .sh{color:#b8bb26;background-color:#282828}.highlight .si{color:#b8bb26;background-color:#282828}.highlight .sx{color:#b8bb26;background-color:#282828}.highlight .sr{color:#b8bb26;background-color:#282828}.highlight .s1{color:#b8bb26;background-color:#282828}.highlight .ss{color:#83a598;background-color:#282828}.highlight .bp{color:#fabd2f;background-color:#282828}.highlight .vc{color:#ebdbb2;background-color:#282828}.highlight .vg{color:#ebdbb2;background-color:#282828}.highlight .vi{color:#ebdbb2;background-color:#282828}.highlight .il{color:#d3869b;background-color:#282828}
\ No newline at end of file