summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-06-23issue: Lookup commits affecting file using guile-git.Arun Isaac
* tissue/git.scm: Import (rnrs hashtables) and (ice-9 match). (commit-deltas): New function. (file-modification-table): New public function. * tissue/issue.scm: Import (git). (file-details): Do not lookup git history for file using `git log'. (issues): Use file-modification-table to lookup git history.
2022-06-23git: Add commit-date utility function.Arun Isaac
* tissue/git.scm: Import (srfi srfi-19). (commit-date): New public function.
2022-06-23git: Bind git_diff_find_similar from libgit2.Arun Isaac
* tissue/git.scm: Import %null-pointer from (system foreign). (diff-find-similar!): New function.
2022-06-23git: Pass repository argument to git-tracked-files.Arun Isaac
Accepting a repository argument makes git-tracked-files a better stand-alone utility. * tissue/git.scm (git-tracked-files): Accept repository argument. * tissue/tissue.scm (gemtext-files-in-directory): Pass repository argument to git-tracked-files.
2022-06-23git: Add current-git-repository utility function.Arun Isaac
* tissue/git.scm (current-git-repository): New public function.
2022-06-23issue: Remove relative date fields.Arun Isaac
* tissue/issue.scm (<issue>)[created-relative-date, last-updated-relative-date]: New fields. * tissue/issue.scm (<post>)[post-relative-date]: New field. * tissue/issue.scm (file-details): Do not collect relative dates. (issues): Do not initialize created-relative-date and last-updated-relative-date fields.
2022-06-23web: Do not use relative dates.Arun Isaac
The web subcommand generates static sites which may have to live on for a long time. Relative dates are meaningless in such a context. * tissue/web.scm: Import (srfi srfi-19). (issue-list-item): Do not accept #:created-relative-date and #:last-updated-relative-date. (issue-listing): Do not pass #:created-relative-date and #:last-updated-relative-date. (issue-list-item-markup-writer-action): Do not use #:created-relative-date and #:last-updated-relative-date.
2022-06-23bin: Wean off git's relative dates.Arun Isaac
* bin/tissue: Import (srfi srfi-19). (human-date-string): New function. (print-issue, print-issue-to-gemtext): Use human-date-string instead of relative dates captured from git.
2022-06-22bin: Deprecate tissue news subcommand.Arun Isaac
* bin/tissue (git-updated-files, git-first-commit-since, tissue-news): Delete functions. * bin/tissue (main): Remove delegation to news subcommand. * bin/tissue (print-usage): Unlist tissue-news.
2022-06-22git: Implement git-tracked-files using guile-git.Arun Isaac
* tissue/git.scm: Import (rnrs arithmetic bitwise), (srfi srfi-9), (git), (git types), and selected symbols from (system foreign) and (bytestructures guile). (pointer->bytestructure, bytestructure->pointer, pointer->index-time, pointer->index-entry, repository-index, index-version, index-entry-count, index-entry, index-entries): New functions. (%oid, %index-time, %index-entry): New variables (<index-time>, <index-entry>): New types. (git-tracked-files): Implement using guile-git.
2022-06-22bin: Run with the top-level directory as the current directory.Arun Isaac
If we always run with the top-level directory as the current directory, we don't need to frequently discover the top-level directory by walking the filesystem. Also, this sits nicer with a migration from git to libgit2. * bin/tissue (main): Run all subcommands with the top-level directory as the current directory. (load-config): Load tissue.scm without appending the top-level directory to it. (tissue-web): Find the top-level directory using getcwd instead of git-top-level.
2022-06-22utils: Add call-with-current-directory utility function.Arun Isaac
* tissue/utils.scm (call-with-current-directory): New public function.
2022-04-22bin: Add tissue repl subcommand.Arun Isaac
* bin/tissue (tissue-repl): New function. (print-usage): Print usage of tissue repl subcommand. (main): Call tissue-repl.
2022-04-14tissue: Add #:issue-files configuration parameter.Arun Isaac
* tissue/tissue.scm: Import (tissue git). (<tissue-configuration>)[issue-files]: New field. (gemtext-files-in-directory): New function. (tissue-configuration): Add #:issue-files keyword argument. * tissue/issue.scm (%issue-files): New public parameter. (issues): Read issues only from files in %issue-files. * bin/tissue (main): Parameterize %issue-files.
2022-04-14gitignore: Add gitignore.Arun Isaac
* .gitignore: New file.
2022-04-14Makefile: Add clean target.Arun Isaac
* Makefile (.PHONY): Add clean. (clean): New target.
2022-04-09scripts: Do not auto-compile the tissue script.Arun Isaac
* scripts/ccwl: Add --no-auto-compile to shebang.
2022-04-06git: Implement git-top-level independent of the git command.Arun Isaac
* tissue/git.scm (git-top-level): Implement independent of the git command.
2022-04-06web: Introduce <file> objects for web export.Arun Isaac
With <file> objects specifying the files to export to the web, the user has ultimate flexibility in their choice of what to export and how to export. * bin/tissue (tissue-web): Parameterize %project-name and %tags-path. Use new signature of build-website. * tissue/tissue.scm: Import (srfi srfi-1) and (srfi srfi-71). (<tissue-configuration>)[web-files]: New field. (tissue-configuration-web-files): New public function. (tissue-configuration): New macro. * tissue/web.scm: Import (srfi srfi-9). (%project-name): New public parameter. (<file>): New type. (build-issue-listing): Delete function. (copier, gemtext-reader, gemtext-exporter, skribe-exporter, tag-issue-lister, tag-pages): New public functions. (exporter, with-current-directory): New functions. (build-website): Simply write <file> objects to files. (replace-extension): Export.
2022-04-05git: Abstract out git-top-level.Arun Isaac
* tissue/git.scm (git-top-level): New function. * bin/tissue: Import (tissue git). (load-config): Use git-top-level.
2022-04-05git: Abstract out `git ls-files'.Arun Isaac
* tissue/git.scm: New file. * tissue/issue.scm: Import (tissue git). (issues): Use git-tracked-files.
2022-04-05issue: Sort authors in lexicographic order.Arun Isaac
* tissue/issue.scm (authors): Sort returned list of authors in lexicographic order.
2022-03-23bin: Pass the tissue -> `tissue list' alias through main again.Arun Isaac
Pass the tissue -> `tissue list' alias through main again so that parameters and other setup is done correctly. * bin/tissue (main): Pass the tissue -> `tissue list' alias through main again.
2022-03-18issue: Build list of authors from list of issues.Arun Isaac
For some reason, `git shortlog' outputs nothing inside a Guix derivation. * tissue/issue.scm (file-details): Build list of authors from list of issues instead of relying on `git shortlog'.
2022-03-18issue: Arrange posts oldest first.Arun Isaac
* tissue/issue.scm (issues): Arrange posts oldest first. (<issue>)[posts]: Comment on order of contents.
2022-03-18issue: Add authors function returning all authors.Arun Isaac
* tissue/issue.scm (authors): New public function.
2022-03-18issue: Resolve authors and assignees using aliases.Arun Isaac
* bin/tissue (main): Load config and parameterize %aliases. * tissue/issue.scm (%aliases): New public parameter. (resolve-alias): New function. (file-details): Resolve authors and assignees using aliases.
2022-03-18tissue: Introduce aliases in configuration.Arun Isaac
* tissue/tissue.scm (<tissue-configuration>)[aliases]: New field. * tissue/tissue.scm (tissue-configuration): Accept aliases as an argument.
2022-03-18bin: Abstract out the loading of the configuration file.Arun Isaac
* bin/tissue (load-config): New function. (tissue-web): Use load-config.
2022-03-18utils: Move memoize-thunk to utils.Arun Isaac
* tissue/issue.scm (memoize-thunk): Move to ... * tissue/utils.scm (memoize-thunk): ... here.
2022-03-18web: Display task lists in web issue listings.Arun Isaac
* tissue/web.scm (issue-list-item-markup-writer-action): Display task lists.
2022-03-18issue: Record all commits affecting a file, not just how many.Arun Isaac
* tissue/issue.scm (<post>): New record type. (file-details): Record all commits affecting a file, not just how many. * bin/tissue (print-issue, print-issue-to-gemtext): Apply length on the output of issue-posts before use. * tissue/web.scm (issue-list-item-markup-writer-action): Apply length on posts before use.
2022-03-18issue: Refactor out repeated use of assq-ref.Arun Isaac
* tissue/issue.scm (issues): Refactor out repeated use of assq-ref.
2022-03-18issue: Follow files across renames.Arun Isaac
* tissue/issue.scm (file-details): Follow file across renames using `git log --follow'.
2022-03-18issue: Ignore case of keywords.Arun Isaac
* tissue/issue.scm (issues): Downcase keywords to ignore their case.
2022-03-18issue: Rename issue-open to issue-open?.Arun Isaac
issue-open returns a boolean. So, it makes sense to name it like a predicate. * bin/tissue (tissue-list): Replace issue-open with issue-open?. * tissue/issue.scm (tissue): Export issue-open? instead of issue-open. (<issue>): Rename issue-open to issue-open?. * tissue/web.scm (issue-listing): Replace issue-open with issue-open?.
2022-03-18issue: Replace delete-duplicates with lset-adjoin.Arun Isaac
* tissue/issue.scm (hashtable-append!): Replace delete-duplicates with lset-adjoin.
2022-03-18issue: Use SRFI-19 dates.Arun Isaac
* tissue/issue.scm: Use (srfi srfi-19). (unix-time->date): New function. (file-details): Convert date fields created-date and last-updated-date to SRFI-19. (issues): Use SRFI-19 time comparison in sort comparator.
2022-03-18web: Parameterize %tags-path when exporting all files.Arun Isaac
User-created files might also need %tags-path. So %tags-path should be parameterized even when user-created files are being exported. * tissue/web.scm (build-website): Parameterize %tags-path when exporting all files, not just the auto-generated files.
2022-03-18web: Join lines when reading gemtext.Arun Isaac
* tissue/web.scm (build-website): Pass `#:join-lines? #t' to the gemtext reader.
2022-03-16tissue: Fix "#\s pace" typo.Arun Isaac
It should be "#\space", not "#\s pace". * tissue/web.scm (issue-list-item-markup-writer-action): Fix "#\s pace" typo.
2022-03-16tissue: Add CSS class specific to each tag.Arun Isaac
This will let users customize the color of their tags. * tissue/web.scm (issue-list-item-markup-writer-action): Add CSS class specific to each tag.
2022-03-16tissue: Encode URIs for safety.Arun Isaac
* tissue/web.scm: Import (web uri). (issue-list-item-markup-writer-action): Encode URIs for safety.
2022-03-16tissue: Support tagging using "key: value" pairs.Arun Isaac
* tissue/issue.scm (<=n-words?, list-line->alist): New functions. (file-details): Support tagging using "key: value" pairs.
2022-03-16tissue: Deduplicate keywords in hash table.Arun Isaac
* tissue/issue.scm (hashtable-append!): Deduplicate after appending new values.
2022-03-16tissue: Enforce prefix check on checklist.Arun Isaac
* tissue/issue.scm (file-details): Match checklist only if it starts at the beginning of its line.
2022-03-16tissue: Sanitize tag names in file paths.Arun Isaac
* tissue/web.scm (sanitize-string): New function. (issue-list-item-markup-writer-action, build-website): Use sanitize-string.
2022-03-15bin: Add `tissue web' subcommand.Arun Isaac
* bin/tissue: Import (tissue tissue) and (tissue web). (tissue-web): New function. (print-usage): Document web subcommand. (main): Hook up web subcommand.
2022-03-15tissue: Introduce declarative configuration.Arun Isaac
The <tissue-configuration> record will provide a declarative configuration interface. * tissue/tissue.scm: New file.
2022-03-15tissue: Use more specific &issue-file-not-found-error.Arun Isaac
* bin/tissue: Do not import (rnrs conditions). Import (tissue conditions). (tissue-edit, tissue-show): Raise &issue-file-not-found-error instead of &message-condition. (print-usage): Handle &issue-file-not-found-error instead of &message-condition. * tissue/web.scm: Do not import (rnrs exceptions). Import (tissue conditions). (build-website): Raise &issue-file-not-found-error instead of &message-condition.