[latex3-commits] [git/LaTeX3-latex3-l3build] ctan-post: only support curl in this version (8255a8c)

David Carlisle d.p.carlisle at gmail.com
Sat Jul 21 21:57:18 CEST 2018


Repository : https://github.com/latex3/l3build
On branch  : ctan-post
Link       : https://github.com/latex3/l3build/commit/8255a8c3fe4b41047a6af90d56ce6cea0d7653b9

>---------------------------------------------------------------

commit 8255a8c3fe4b41047a6af90d56ce6cea0d7653b9
Author: David Carlisle <d.p.carlisle at gmail.com>
Date:   Sat Jul 21 20:57:18 2018 +0100

    only support curl in this version


>---------------------------------------------------------------

8255a8c3fe4b41047a6af90d56ce6cea0d7653b9
 l3build-ctan-post.lua |  128 ++++++++++++++++++++-----------------------------
 1 file changed, 53 insertions(+), 75 deletions(-)

diff --git a/l3build-ctan-post.lua b/l3build-ctan-post.lua
index 50644ee..87ef264 100644
--- a/l3build-ctan-post.lua
+++ b/l3build-ctan-post.lua
@@ -1,3 +1,27 @@
+--[[
+
+File l3build-unpack.lua Copyright (C) 2018 The LaTeX3 Project
+
+It may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (LPPL), either version 1.3c of this
+license or (at your option) any later version.  The latest version
+of this license is in the file
+
+   http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3build bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+-----------------------------------------------------------------------
+
+The development version of the bundle can be found at
+
+   https://github.com/latex3/l3build
+
+for those people who are interested.
+
+--]]
+
 
 -- ctan_upload
 --
@@ -19,19 +43,8 @@
 -- luasec is not included in texlua.
 
 -- Instead an external program is used to post.
--- As Windows (since April 2018) includes curl now default to curl.
-
--- A global variable controls the backend to use.
--- ctan_post_command=="curl"
--- ctan_post_command=="ctan-o-mat"
---
--- ctan-o-mat inroduces a dependency on perl but it is installed with texlive
--- in the default path and is maintained by Gerd Neugebauer of the CTAN team.
---
--- The ctan-o-mat configuration is written out as ctan-upload.txt
--- in the current version it is a fixed name and not deleted after use,
--- as a debugging aid.
-
+-- As Windows (since April 2018) includes curl now use curl.
+-- a version using ctan-o-mat is available in the ctan-post github repo
 
 -- the main interface is
 -- ctan_upload (c,upload)
@@ -40,20 +53,12 @@
 -- if upload is true the ctan upload URL will be used  after validation
 -- if upload is anything else, the user will beprompted whether to upload.
 
-ctan_post_command="curl"
-curl_debug=false -- posting is disabled while testing
+local ctan_post_command = ctan_post_command or "curl"
+local curl_debug=false -- posting is disabled while testing
 
 function ctan_upload (c,upload)
 
-  if ctan_post_command=="ctan-o-mat" then
-    c.cfg = io.open("ctan-upload.txt","w")
-  else
-    if ctan_post_command=="curl" then
-      c.cfg="curl "
-    else
-      error("no https post command set")
-    end
-  end
+  c.cfg=ctan_post_command .. " "
 
 
   --        cfg field max desc                   mandatory multi
@@ -77,17 +82,10 @@ function ctan_upload (c,upload)
   ctan_field(c,"description",4096,"description",  false,false)
   ctan_field(c,"note",4096,"internal note to ctan",false,false)
 
-  if ctan_post_command=="ctan-o-mat" then
-    ctan_field(c,"file",4096,"zip file to upload",  true,false)
-    io.close(c.cfg)
-  else
-    if ctan_post_command=="curl" then
-      c.cfg=c.cfg .. " --form 'file=@" .. tostring(c.file) .. ";filename=" .. tostring(c.file) .. "'"
-      c.cfg=c.cfg ..  " https://ctan.org/submit/"
-    else
-      error("no https post command set")
-    end
-  end
+
+  c.cfg=c.cfg .. " --form 'file=@" .. tostring(c.file) .. ";filename=" .. tostring(c.file) .. "'"
+  c.cfg=c.cfg ..  " https://ctan.org/submit/"
+
 
 
   -- avoid lower level error from post command if zip file missing
@@ -101,25 +99,18 @@ function ctan_upload (c,upload)
   -- call post command to validate the upload at CTAN's validate URL
   local exit_status=0
   local fp_return=""
-  if ctan_post_command=="ctan-o-mat" then
-    exit_status=os.execute("ctan-o-mat --validate ctan-upload.txt")
-  else
-    if ctan_post_command=="curl" then
+
 --    use popen not execute so get the return body local exit_status=os.execute(c.cfg .. "validate")
-      if(curl_debug==false) then
-        local fp = assert(io.popen(c.cfg .. "validate", 'r'))
-        fp_return = assert(fp:read('*a'))
-        fp:close()
-      else
-       fp_return="WARNING: curl_debug==true: posting disabled disabled"
-       print(c.cfg)
-      end
-      if string.match(fp_return,"WARNING") or string.match(fp_return,"ERROR") then
-       exit_status=1
-      end
-    else
-      error("no https post command set")
-    end
+  if(curl_debug==false) then
+    local fp = assert(io.popen(c.cfg .. "validate", 'r'))
+    fp_return = assert(fp:read('*a'))
+    fp:close()
+  else
+   fp_return="WARNING: curl_debug==true: posting disabled disabled"
+   print(c.cfg)
+  end
+  if string.match(fp_return,"WARNING") or string.match(fp_return,"ERROR") then
+   exit_status=1
   end
 
   -- if upload requested and validation succeeded repost to the upload URL
@@ -135,24 +126,15 @@ function ctan_upload (c,upload)
       end
     end
     if(upload==true) then
-      if ctan_post_command=="ctan-o-mat" then
-        exit_status=os.execute("ctan-o-mat ctan-upload.txt")
-      else
-        if ctan_post_command=="curl" then
-          local fp = assert(io.popen(c.cfg .. "upload", 'r'))
-          fp_return = assert(fp:read('*a'))
-          fp:close()
-
---         this is just html, could save to a file
---         or echo a cleaned up version
-          print('Response from CTAN:')
-          print(fp_return)
-          if string.match(fp_return,"WARNING") or string.match(fp_return,"ERROR") then
-            exit_status=1
-          end
-        else
-          error("no https post command set")
-        end
+      local fp = assert(io.popen(c.cfg .. "upload", 'r'))
+      fp_return = assert(fp:read('*a'))
+      fp:close()
+--     this is just html, could save to a file
+--     or echo a cleaned up version
+      print('Response from CTAN:')
+      print(fp_return)
+      if string.match(fp_return,"WARNING") or string.match(fp_return,"ERROR") then
+        exit_status=1
       end
     else
       print("CTAN validation successful")
@@ -179,10 +161,6 @@ function ctan_field(c,f,max,desc,mandatory,multi)
   end
 end
 
--- for URL %-encoding but not used presently
-local char_to_hex = function(c)
-  return string.format("%%%02X", string.byte(c))
-end
 
 function ctan_single_field(c,f,v,max,desc,mandatory)
   if(v==nil or type(v)~="table") then





More information about the latex3-commits mailing list