.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "CTAN-O-MAT 1" .TH CTAN-O-MAT 1 "2017-11-23" "ctan-o-mat" "Gerd Neugebauer" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" ctan\-o\-mat \- Validate and upload a package for CTAN .SH "SYNOPSIS" .IX Header "SYNOPSIS" ctan-o-mat [options] [] .SH "DESCRIPTION" .IX Header "DESCRIPTION" This program can be used to automate the upload of a package to the Comprehensive TeX Archive Network (https://www.ctan.org). The description of the package is taken from a configuration file. Thus it can be updated easily without the need to fill a Web form with the same old information again and again. .PP The provided information is validated in any case. If the validation succeeds and not only the validation is requested then the provided archive file is placed in the incoming area of the \s-1CTAN\s0 for further processing by the \s-1CTAN\s0 team. .PP In any case any finding during the validation is reported at the end of the processing. Note that the validation is the default and a official submission has to be requested by the an appropriate command line option. .PP \&\fBctan-o-mat\fR requires an Internet connection to the \s-1CTAN\s0 server. Even the validation retrieves the known attributes and the basic constraints from the server. .SH "CONFIGURATION" .IX Header "CONFIGURATION" The default configuration is read from a file with the same name as the current directory an the extension .pkg. This file name can be overwritten on the command line. .PP The configuration depends on the features currently supported by the \&\s-1CTAN\s0 server. Since these features can change over time the configuration is not hard-coded in \fBctan-o-mat\fR. You can request an empty template of the configuration via the command line parameter \f(CW\*(C`\-\-init\*(C'\fR. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\-h" 4 .IX Item "-h" .PD 0 .IP "\-\-help" 4 .IX Item "--help" .PD Print this short summary about the usage and exit the program. .IP "\-i" 4 .IX Item "-i" .PD 0 .IP "\-\-init" 4 .IX Item "--init" .PD Create an empty template for a configuration. .IP "\-\-list licenses" 4 .IX Item "--list licenses" List the known licenses of \s-1CTAN\s0 to the standard output stream. Each license is represented as one line. The line contains the fields key, name, free indicator. Those fields are separated by tab characters. Afterwards the program terminates without processing any further arguments. .IP "\-\-config " 4 .IX Item "--config " .PD 0 .IP "\-\-pkg " 4 .IX Item "--pkg " .IP "\-\-package " 4 .IX Item "--package " .PD Set the package configuration file. .IP "\-s" 4 .IX Item "-s" .PD 0 .IP "\-\-submit" 4 .IX Item "--submit" .PD Upload the submission, validate it and officially submit it to \s-1CTAN\s0 it the validation succeeds. .IP "\-v" 4 .IX Item "-v" .PD 0 .IP "\-\-verbose" 4 .IX Item "--verbose" .PD Print some more information during the processing (verbose mode). .IP "\-\-version" 4 .IX Item "--version" Print the version number of this program and exit. .IP "\-\-validate" 4 .IX Item "--validate" .PD 0 .IP "\-n" 4 .IX Item "-n" .IP "\-\-noaction" 4 .IX Item "--noaction" .PD Do not perform the final upload. The package is validated and the resulting messages are printed. .IP "" 4 .IX Item "" This parameter is the name of a package configuration (see section \s-1CONFIGURATION\s0) contained in a file. If not set otherwise the package configuration defaults to the name of the current directory with \f(CW\*(C`.pkg\*(C'\fR appended. .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" The following environment variables are recognized by \fBctan-o-mat\fR. .IP "\s-1CTAN_O_MAT_URL\s0" 4 .IX Item "CTAN_O_MAT_URL" The value is the \s-1URL\s0 prefix for the \s-1CTAN\s0 server to be contacted. The default is \f(CW\*(C`https://ctan.org/submit\*(C'\fR. The complete \s-1URL\s0 is constructed by appending \&\f(CW\*(C`validate\*(C'\fR, \f(CW\*(C`upload\*(C'\fR, or \f(CW\*(C`fields\*(C'\fR to use the respective \s-1CTAN REST API.\s0 .SH "CONNECTING VIA PROXIES" .IX Header "CONNECTING VIA PROXIES" If you need to connect to the Internet via a proxy then this can be achieved by setting some environment variables before running \fBctan-o-mat\fR. To redirect the request via the proxy simply define an environment variable \&\f(CW\*(C`http_proxy\*(C'\fR to point to the proxy host \*(-- including protocol and port as required. Note that the name of the environment variable is supposed to be in \&\fBlower\fR case. .SH "AUTHOR" .IX Header "AUTHOR" Gerd Neugebauer (gene@gerd\-neugebauer.de) .SH "BUGS" .IX Header "BUGS" .IP "\(bu" 4 The program can not be used without a working connection to the Internet.