texlive[48478] trunk: ctanbib (24aug18)

commits+karl at tug.org commits+karl at tug.org
Sat Aug 25 00:24:45 CEST 2018


Revision: 48478
          http://tug.org/svn/texlive?view=revision&revision=48478
Author:   karl
Date:     2018-08-25 00:24:44 +0200 (Sat, 25 Aug 2018)
Log Message:
-----------
ctanbib (24aug18)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/Makefile.am
    trunk/Build/source/texk/texlive/linked_scripts/Makefile.in
    trunk/Build/source/texk/texlive/linked_scripts/scripts.lst
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/libexec/ctan2tds
    trunk/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc

Added Paths:
-----------
    trunk/Build/source/texk/texlive/linked_scripts/ctanbib/
    trunk/Build/source/texk/texlive/linked_scripts/ctanbib/ctanbib
    trunk/Master/bin/aarch64-linux/ctanbib
    trunk/Master/bin/amd64-freebsd/ctanbib
    trunk/Master/bin/amd64-netbsd/ctanbib
    trunk/Master/bin/armhf-linux/ctanbib
    trunk/Master/bin/i386-cygwin/ctanbib
    trunk/Master/bin/i386-freebsd/ctanbib
    trunk/Master/bin/i386-linux/ctanbib
    trunk/Master/bin/i386-netbsd/ctanbib
    trunk/Master/bin/i386-solaris/ctanbib
    trunk/Master/bin/sparc-solaris/ctanbib
    trunk/Master/bin/win32/ctanbib.exe
    trunk/Master/bin/x86_64-cygwin/ctanbib
    trunk/Master/bin/x86_64-darwin/ctanbib
    trunk/Master/bin/x86_64-darwinlegacy/ctanbib
    trunk/Master/bin/x86_64-linux/ctanbib
    trunk/Master/bin/x86_64-linuxmusl/ctanbib
    trunk/Master/bin/x86_64-solaris/ctanbib
    trunk/Master/texmf-dist/doc/support/ctanbib/
    trunk/Master/texmf-dist/doc/support/ctanbib/README.md
    trunk/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf
    trunk/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex
    trunk/Master/texmf-dist/scripts/ctanbib/
    trunk/Master/texmf-dist/scripts/ctanbib/ctanbib
    trunk/Master/tlpkg/tlpsrc/ctanbib.tlpsrc

Modified: trunk/Build/source/texk/texlive/linked_scripts/Makefile.am
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/Makefile.am	2018-08-24 22:19:06 UTC (rev 48477)
+++ trunk/Build/source/texk/texlive/linked_scripts/Makefile.am	2018-08-24 22:24:44 UTC (rev 48478)
@@ -57,6 +57,7 @@
 	adhocfilelist/adhocfilelist.sh \
 	bibexport/bibexport.sh \
 	checklistings/checklistings.sh \
+	ctanbib/ctanbib \
 	dtxgen/dtxgen \
 	installfont/installfont-tl \
 	latexfileversion/latexfileversion \

Modified: trunk/Build/source/texk/texlive/linked_scripts/Makefile.in
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/Makefile.in	2018-08-24 22:19:06 UTC (rev 48477)
+++ trunk/Build/source/texk/texlive/linked_scripts/Makefile.in	2018-08-24 22:24:44 UTC (rev 48478)
@@ -270,6 +270,7 @@
 	adhocfilelist/adhocfilelist.sh \
 	bibexport/bibexport.sh \
 	checklistings/checklistings.sh \
+	ctanbib/ctanbib \
 	dtxgen/dtxgen \
 	installfont/installfont-tl \
 	latexfileversion/latexfileversion \

Added: trunk/Build/source/texk/texlive/linked_scripts/ctanbib/ctanbib
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/ctanbib/ctanbib	                        (rev 0)
+++ trunk/Build/source/texk/texlive/linked_scripts/ctanbib/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1,139 @@
+#!/usr/bin/env texlua
+kpse.set_program_name("luatex")
+-- ctanbib -- export ctan entries to bib format
+-- Copyright: Michal Hoftich <michal.h21 at gmail.com> (2014-2018)
+--
+-- This work may be distributed and/or modified under the
+-- conditions of the LaTeX Project Public License, either version 1.3
+-- of this license or (at your option) any later version.
+-- The latest version of this license is in
+--   http://www.latex-project.org/lppl.txt
+-- and version 1.3 or later is part of all distributions of LaTeX
+-- version 2005/12/01 or later.
+-- 
+-- This work has the LPPL maintenance status `maintained'.
+-- 
+-- The Current Maintainer of this work is Michal Hoftich
+
+if #arg < 1 or arg[1]=="--help" or arg[1]=="-h" then
+  print [[ctanbib - convert ctan package information to bibtex format
+  Usage:
+  texlua ctanbib <package name>
+
+  This command will bibtex entry to the terminal output
+  ]]
+  os.exit(1)
+elseif arg[1]=="--version" or arg[1]=="-v" then
+  print "ctanbib version v0.1a"
+  os.exit(1)
+end
+
+local pkgname = arg[1]
+local url = "https://www.ctan.org/xml/pkg/" .. pkgname
+
+-- change that for different title scheme
+local titleformat = "The %s package"
+
+local bibtexformat = [[
+ at manual{$package,
+title = {$title},
+subtitle = {$subtitle},
+author = {$author},
+url = {$url},
+urldate = {$urldate}, 
+date = {$date},
+version = {$version}
+}
+]]
+
+local dom = require('luaxml-domobject')
+
+
+local load_xml =  function(url)
+  local command = io.popen("wget -qO- ".. url,"r")
+
+  local info = command:read("*all")
+  command:close()
+
+  if string.len(info) == 0 then
+    return false
+  end
+  return dom.parse(info)
+end
+
+local get_authors = function(a)
+  local retrieved_authors = {}
+  for _, author in ipairs(a) do
+    local current = {}
+    current[#current+1] = author:get_attribute("familyname")
+    current[#current+1] = author:get_attribute("givenname")
+    table.insert(retrieved_authors, table.concat(current, ", "))
+  end
+  return table.concat(retrieved_authors," and ")
+end
+
+local get_title = function(record)
+  local title = record:query_selector("name")[1]
+  if title then
+    title = title:get_text()
+    title = title:gsub("^(.)", function(a) return unicode.utf8.upper(a) end)
+  else
+    title = pkgname
+  end
+  return string.format(titleformat, title)
+end
+
+
+local get_url = function(record)
+  local home = record:query_selector("home")[1]
+  if home then return home:get_attribute("href") end
+  return "http://www.ctan.org/pkg/"..pkgname
+end
+
+local get_caption = function(record)
+  local caption = record:query_selector("caption")[1]
+  if caption then return caption:get_text() end
+  return nil
+end
+
+local get_version = function(record)
+  local version = record:query_selector("version")[1]
+  if version then
+    return version:get_attribute("number"), version:get_attribute("date")
+  end
+end
+
+local bibtex_escape = function(a)
+  local a = a or ""
+  return a:gsub("([%$%{%}])", function(x) return '\\'..x end)
+end
+
+local compile = function(template, records)
+  return template:gsub("$([a-z]+)", function(a) 
+    return bibtex_escape(records[a]) or ""
+  end)
+end
+
+local record = load_xml(url)
+
+if not record then
+  print("Cannot find entry for package "..pkgname)
+  os.exit(1)
+end
+
+-- root element is also saved, so we use this trick 
+-- local record = entry.entry
+
+local e = {}
+
+e.author = get_authors(record:query_selector("authorref"))
+e.package = pkgname
+e.title = get_title(record)
+e.subtitle = get_caption(record)
+e.url = get_url(record)
+e.version, e.date = get_version(record)
+e.urldate = os.date("%Y-%m-%d")
+
+local result = compile(bibtexformat, e)
+
+print(result)


Property changes on: trunk/Build/source/texk/texlive/linked_scripts/ctanbib/ctanbib
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: trunk/Build/source/texk/texlive/linked_scripts/scripts.lst
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/scripts.lst	2018-08-24 22:19:06 UTC (rev 48477)
+++ trunk/Build/source/texk/texlive/linked_scripts/scripts.lst	2018-08-24 22:24:44 UTC (rev 48478)
@@ -2,6 +2,7 @@
 adhocfilelist/adhocfilelist.sh
 bibexport/bibexport.sh
 checklistings/checklistings.sh
+ctanbib/ctanbib
 dtxgen/dtxgen
 installfont/installfont-tl
 latexfileversion/latexfileversion

Added: trunk/Master/bin/aarch64-linux/ctanbib
===================================================================
--- trunk/Master/bin/aarch64-linux/ctanbib	                        (rev 0)
+++ trunk/Master/bin/aarch64-linux/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/aarch64-linux/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/amd64-freebsd/ctanbib
===================================================================
--- trunk/Master/bin/amd64-freebsd/ctanbib	                        (rev 0)
+++ trunk/Master/bin/amd64-freebsd/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/amd64-freebsd/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/amd64-netbsd/ctanbib
===================================================================
--- trunk/Master/bin/amd64-netbsd/ctanbib	                        (rev 0)
+++ trunk/Master/bin/amd64-netbsd/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/amd64-netbsd/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/armhf-linux/ctanbib
===================================================================
--- trunk/Master/bin/armhf-linux/ctanbib	                        (rev 0)
+++ trunk/Master/bin/armhf-linux/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/armhf-linux/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/i386-cygwin/ctanbib
===================================================================
--- trunk/Master/bin/i386-cygwin/ctanbib	                        (rev 0)
+++ trunk/Master/bin/i386-cygwin/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/i386-cygwin/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/i386-freebsd/ctanbib
===================================================================
--- trunk/Master/bin/i386-freebsd/ctanbib	                        (rev 0)
+++ trunk/Master/bin/i386-freebsd/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/i386-freebsd/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/i386-linux/ctanbib
===================================================================
--- trunk/Master/bin/i386-linux/ctanbib	                        (rev 0)
+++ trunk/Master/bin/i386-linux/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/i386-linux/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/i386-netbsd/ctanbib
===================================================================
--- trunk/Master/bin/i386-netbsd/ctanbib	                        (rev 0)
+++ trunk/Master/bin/i386-netbsd/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/i386-netbsd/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/i386-solaris/ctanbib
===================================================================
--- trunk/Master/bin/i386-solaris/ctanbib	                        (rev 0)
+++ trunk/Master/bin/i386-solaris/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/i386-solaris/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/sparc-solaris/ctanbib
===================================================================
--- trunk/Master/bin/sparc-solaris/ctanbib	                        (rev 0)
+++ trunk/Master/bin/sparc-solaris/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/sparc-solaris/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/win32/ctanbib.exe
===================================================================
(Binary files differ)

Index: trunk/Master/bin/win32/ctanbib.exe
===================================================================
--- trunk/Master/bin/win32/ctanbib.exe	2018-08-24 22:19:06 UTC (rev 48477)
+++ trunk/Master/bin/win32/ctanbib.exe	2018-08-24 22:24:44 UTC (rev 48478)

Property changes on: trunk/Master/bin/win32/ctanbib.exe
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/bin/x86_64-cygwin/ctanbib
===================================================================
--- trunk/Master/bin/x86_64-cygwin/ctanbib	                        (rev 0)
+++ trunk/Master/bin/x86_64-cygwin/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/x86_64-cygwin/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/x86_64-darwin/ctanbib
===================================================================
--- trunk/Master/bin/x86_64-darwin/ctanbib	                        (rev 0)
+++ trunk/Master/bin/x86_64-darwin/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/x86_64-darwin/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/x86_64-darwinlegacy/ctanbib
===================================================================
--- trunk/Master/bin/x86_64-darwinlegacy/ctanbib	                        (rev 0)
+++ trunk/Master/bin/x86_64-darwinlegacy/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/x86_64-darwinlegacy/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/x86_64-linux/ctanbib
===================================================================
--- trunk/Master/bin/x86_64-linux/ctanbib	                        (rev 0)
+++ trunk/Master/bin/x86_64-linux/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/x86_64-linux/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/x86_64-linuxmusl/ctanbib
===================================================================
--- trunk/Master/bin/x86_64-linuxmusl/ctanbib	                        (rev 0)
+++ trunk/Master/bin/x86_64-linuxmusl/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/x86_64-linuxmusl/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/bin/x86_64-solaris/ctanbib
===================================================================
--- trunk/Master/bin/x86_64-solaris/ctanbib	                        (rev 0)
+++ trunk/Master/bin/x86_64-solaris/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+link ../../texmf-dist/scripts/ctanbib/ctanbib
\ No newline at end of file


Property changes on: trunk/Master/bin/x86_64-solaris/ctanbib
___________________________________________________________________
Added: svn:special
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/support/ctanbib/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/support/ctanbib/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/support/ctanbib/README.md	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1,25 @@
+# The `ctanbib` package
+
+This script can generate BibTeX records for LaTeX packages hosted on CTAN. 
+
+
+## Usage 
+
+    ctanbib graphicx
+
+More details can be found on [TeX.sx](https://tex.stackexchange.com/a/200856/2891)
+
+
+Copyright: 2018 Michal Hoftich
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+  http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Michal Hoftich.


Property changes on: trunk/Master/texmf-dist/doc/support/ctanbib/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf	2018-08-24 22:19:06 UTC (rev 48477)
+++ trunk/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf	2018-08-24 22:24:44 UTC (rev 48478)

Property changes on: trunk/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1,72 @@
+\documentclass{ltxdoc}
+\newcommand\package[1]{\texttt{#1}}
+\usepackage{longtable}
+\usepackage{tabularx}
+\newenvironment{changelog}{\longtable{@{} l p{30em}}}{\endlongtable}
+\newcommand\change[2]{#1 & #2\\}
+\title{The \texttt{ctanbib} package}
+\author{Michal Hoftich\\\url{michal.h21 at gmail.com}}
+\date{\gitdate, version \gitversion}
+\usepackage{hyperref}
+\usepackage{fontspec}
+\setmainfont{TeX Gyre Schola}
+\setmonofont[Scale=MatchLowercase]{Inconsolatazi4}
+\usepackage{microtype}
+\begin{document}
+\maketitle
+
+\section{Introduction}
+This package provides script named \package{ctanbib} which can be used for retrieving of the bibliographic information for packages hosted on CTAN.
+
+\section{Usage}
+
+
+It can be used in the following way:
+
+
+\noindent\package{ctanbib $\langle$packagename$\rangle$ > filename.bib}
+
+\section{Example}
+
+\begin{verbatim}
+ctanbib latex  
+\end{verbatim}
+
+\noindent This invocation will print data in the Bib\LaTeX\ format to the standard output:
+
+\begin{verbatim}
+ at manual{latex,
+title = {The Latex package},
+subtitle = {A TeX macro package that defines LaTeX},
+author = {Lamport, Leslie and The LaTeX Team},
+url = {http://www.latex-project.org/},
+urldate = {2018-08-23}, 
+date = {2018-04-01},
+version = {PL 5}
+}
+\end{verbatim}
+
+\section{License}
+
+Permission is granted to copy, distribute and/or modify this software
+under the terms of the LaTeX Project Public License, version 1.3.
+
+\section{Acknowledgements}
+
+This package was created thanks to TeX.sx user
+Daniel\footnote{\url{https://tex.stackexchange.com/users/3751/daniel}}. Lukas
+C. Bossert had useful comments which led to update of the original script and
+it's eventual release on CTAN.
+
+\section{Changelog}
+
+\begin{changelog}
+  \change{2018-08-23}{Version 0.1 released.}
+  \change{2018-08-23}{Created documentation.}
+  \change{2018-08-21}{Rewrote the script to use the DOM api provided by LuaXML. This provides greater flexibility in the XML processing.}
+  \change{2018-08-20}{Fixed the script for the current XML format provided by CTAN.}
+  \change{2014-09-12}{Initial version of the script have been released in answer on TeX.sx\footnote{\url{https://tex.stackexchange.com/a/200856/2891}}.}
+\end{changelog}
+
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/support/ctanbib/ctanbib-doc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/scripts/ctanbib/ctanbib
===================================================================
--- trunk/Master/texmf-dist/scripts/ctanbib/ctanbib	                        (rev 0)
+++ trunk/Master/texmf-dist/scripts/ctanbib/ctanbib	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1,139 @@
+#!/usr/bin/env texlua
+kpse.set_program_name("luatex")
+-- ctanbib -- export ctan entries to bib format
+-- Copyright: Michal Hoftich <michal.h21 at gmail.com> (2014-2018)
+--
+-- This work may be distributed and/or modified under the
+-- conditions of the LaTeX Project Public License, either version 1.3
+-- of this license or (at your option) any later version.
+-- The latest version of this license is in
+--   http://www.latex-project.org/lppl.txt
+-- and version 1.3 or later is part of all distributions of LaTeX
+-- version 2005/12/01 or later.
+-- 
+-- This work has the LPPL maintenance status `maintained'.
+-- 
+-- The Current Maintainer of this work is Michal Hoftich
+
+if #arg < 1 or arg[1]=="--help" or arg[1]=="-h" then
+  print [[ctanbib - convert ctan package information to bibtex format
+  Usage:
+  texlua ctanbib <package name>
+
+  This command will bibtex entry to the terminal output
+  ]]
+  os.exit(1)
+elseif arg[1]=="--version" or arg[1]=="-v" then
+  print "ctanbib version v0.1a"
+  os.exit(1)
+end
+
+local pkgname = arg[1]
+local url = "https://www.ctan.org/xml/pkg/" .. pkgname
+
+-- change that for different title scheme
+local titleformat = "The %s package"
+
+local bibtexformat = [[
+ at manual{$package,
+title = {$title},
+subtitle = {$subtitle},
+author = {$author},
+url = {$url},
+urldate = {$urldate}, 
+date = {$date},
+version = {$version}
+}
+]]
+
+local dom = require('luaxml-domobject')
+
+
+local load_xml =  function(url)
+  local command = io.popen("wget -qO- ".. url,"r")
+
+  local info = command:read("*all")
+  command:close()
+
+  if string.len(info) == 0 then
+    return false
+  end
+  return dom.parse(info)
+end
+
+local get_authors = function(a)
+  local retrieved_authors = {}
+  for _, author in ipairs(a) do
+    local current = {}
+    current[#current+1] = author:get_attribute("familyname")
+    current[#current+1] = author:get_attribute("givenname")
+    table.insert(retrieved_authors, table.concat(current, ", "))
+  end
+  return table.concat(retrieved_authors," and ")
+end
+
+local get_title = function(record)
+  local title = record:query_selector("name")[1]
+  if title then
+    title = title:get_text()
+    title = title:gsub("^(.)", function(a) return unicode.utf8.upper(a) end)
+  else
+    title = pkgname
+  end
+  return string.format(titleformat, title)
+end
+
+
+local get_url = function(record)
+  local home = record:query_selector("home")[1]
+  if home then return home:get_attribute("href") end
+  return "http://www.ctan.org/pkg/"..pkgname
+end
+
+local get_caption = function(record)
+  local caption = record:query_selector("caption")[1]
+  if caption then return caption:get_text() end
+  return nil
+end
+
+local get_version = function(record)
+  local version = record:query_selector("version")[1]
+  if version then
+    return version:get_attribute("number"), version:get_attribute("date")
+  end
+end
+
+local bibtex_escape = function(a)
+  local a = a or ""
+  return a:gsub("([%$%{%}])", function(x) return '\\'..x end)
+end
+
+local compile = function(template, records)
+  return template:gsub("$([a-z]+)", function(a) 
+    return bibtex_escape(records[a]) or ""
+  end)
+end
+
+local record = load_xml(url)
+
+if not record then
+  print("Cannot find entry for package "..pkgname)
+  os.exit(1)
+end
+
+-- root element is also saved, so we use this trick 
+-- local record = entry.entry
+
+local e = {}
+
+e.author = get_authors(record:query_selector("authorref"))
+e.package = pkgname
+e.title = get_title(record)
+e.subtitle = get_caption(record)
+e.url = get_url(record)
+e.version, e.date = get_version(record)
+e.urldate = os.date("%Y-%m-%d")
+
+local result = compile(bibtexformat, e)
+
+print(result)


Property changes on: trunk/Master/texmf-dist/scripts/ctanbib/ctanbib
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2018-08-24 22:19:06 UTC (rev 48477)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2018-08-24 22:24:44 UTC (rev 48478)
@@ -191,7 +191,8 @@
     cryptocode cryst
     cs csbulletin cslatex csplain csquotes csquotes-de
     css-colors cstypo csvsimple cstex
-    ctan-o-mat ctan_chk ctanify ctanupload ctable ctablestack ctex ctex-faq
+    ctan-o-mat ctan_chk ctanbib ctanify ctanupload
+    ctable ctablestack ctex ctex-faq
     cursolatex cuisine
     currency currfile currvita curve curve2e curves
     custom-bib cutwin cv cv4tw cweb-latex

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2018-08-24 22:19:06 UTC (rev 48477)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2018-08-24 22:24:44 UTC (rev 48478)
@@ -2901,6 +2901,7 @@
  'convbkmk'             => '\.rb$',
  'crossrefware'		=> '\.pl$',
  'ctan-o-mat'		=> 'ctan-o-mat$',
+ 'ctanbib'		=> 'ctanbib$',
  'ctanify'              => '^ctanify$',
  'ctanupload'           => '\.pl$',
  'de-macro'             => 'de-macro',

Modified: trunk/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc	2018-08-24 22:19:06 UTC (rev 48477)
+++ trunk/Master/tlpkg/tlpsrc/collection-binextra.tlpsrc	2018-08-24 22:24:44 UTC (rev 48478)
@@ -17,6 +17,7 @@
 depend chktex
 depend ctan-o-mat
 depend ctan_chk
+depend ctanbib
 depend ctanify
 depend ctanupload
 depend ctie

Added: trunk/Master/tlpkg/tlpsrc/ctanbib.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/ctanbib.tlpsrc	                        (rev 0)
+++ trunk/Master/tlpkg/tlpsrc/ctanbib.tlpsrc	2018-08-24 22:24:44 UTC (rev 48478)
@@ -0,0 +1 @@
+binpattern f bin/${ARCH}/${PKGNAME}



More information about the tex-live-commits mailing list