view share/lua/5.2/luarocks/fetch/cvs.lua @ 8743:080039703b36

<pikhq> ` cat >src/pikhqbow.c <<<$\'#include <stdio.h>\\n#include <wchar.h>\\n#include <locale.h>\\n\'\'int main(){wint_t c;int a=0;setlocale(LC_ALL,"C.UTF-8");b:c=fgetwc(stdin);if(c==EOF) return 0;printf("\\x03%d%lc%s",(int[]){4,8,9,11,12,13}[a],c,c==L\'\\\'\',\'\\\'\'?"\\x0f":"",c);if(a++==6)a=0;goto b;}\'
author HackBot
date Tue, 05 Jul 2016 05:02:12 +0000
parents d137f631bad5
children
line wrap: on
line source


--- Fetch back-end for retrieving sources from CVS.
module("luarocks.fetch.cvs", package.seeall)

local fs = require("luarocks.fs")
local dir = require("luarocks.dir")
local util = require("luarocks.util")

--- Download sources for building a rock, using CVS.
-- @param rockspec table: The rockspec table
-- @param extract boolean: Unused in this module (required for API purposes.)
-- @param dest_dir string or nil: If set, will extract to the given directory.
-- @return (string, string) or (nil, string): The absolute pathname of
-- the fetched source tarball and the temporary directory created to
-- store it; or nil and an error message.
function get_sources(rockspec, extract, dest_dir)
   assert(type(rockspec) == "table")
   assert(type(dest_dir) == "string" or not dest_dir)

   local name_version = rockspec.name .. "-" .. rockspec.version
   local module = rockspec.source.module or dir.base_name(rockspec.source.url)
   local command = {rockspec.variables.CVS, "-d"..rockspec.source.pathname, "export", module}
   if rockspec.source.tag then
      table.insert(command, 4, "-r")
      table.insert(command, 5, rockspec.source.tag)
   end
   local store_dir
   if not dest_dir then
      store_dir = fs.make_temp_dir(name_version)
      if not store_dir then
         return nil, "Failed creating temporary directory."
      end
      util.schedule_function(fs.delete, store_dir)
   else
      store_dir = dest_dir
   end
   fs.change_dir(store_dir)
   if not fs.execute(unpack(command)) then
      return nil, "Failed fetching files from CVS."
   end
   fs.pop_dir()
   return module, store_dir
end