aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorV1K1NGbg <victor@ilchev.com>2024-08-01 17:00:24 +0300
committerV1K1NGbg <victor@ilchev.com>2024-08-05 20:51:31 +0300
commitee55c132b3415b1cd6993b6cf80a7c03a1090651 (patch)
treea7f00702395256617dc0d9621d545ecc903d32f5
parent2b70116b944dec1a6946c4aa1a2c8aa0d07667a6 (diff)
downloadluarocks-ee55c132b3415b1cd6993b6cf80a7c03a1090651.tar.gz
luarocks-ee55c132b3415b1cd6993b6cf80a7c03a1090651.tar.bz2
luarocks-ee55c132b3415b1cd6993b6cf80a7c03a1090651.zip
csv finished
-rw-r--r--src/luarocks/core/cfg.d.tl20
-rw-r--r--src/luarocks/fetch/cvs-original.lua55
-rw-r--r--src/luarocks/fetch/cvs.lua27
-rw-r--r--src/luarocks/fetch/cvs.tl54
-rw-r--r--src/luarocks/fs.d.tl3
5 files changed, 140 insertions, 19 deletions
diff --git a/src/luarocks/core/cfg.d.tl b/src/luarocks/core/cfg.d.tl
index eff86971..97f10a35 100644
--- a/src/luarocks/core/cfg.d.tl
+++ b/src/luarocks/core/cfg.d.tl
@@ -22,10 +22,6 @@ local record cfg
22 lib_dir: string 22 lib_dir: string
23 end 23 end
24 -- util 24 -- util
25 record Source
26 url: string
27 end
28
29 record Description 25 record Description
30 summary: string 26 summary: string
31 detailed: string 27 detailed: string
@@ -44,11 +40,19 @@ local record cfg
44 rockspec_format: string 40 rockspec_format: string
45 name: string --? package 41 name: string --? package
46 version: string 42 version: string
47 source: {Source} 43 record source
44 url: string
45 module: string
46 pathname: string
47 tag: string
48 end
48 description: Description 49 description: Description
49 test_dependencies: {string} 50 test_dependencies: {string}
50 test: Test 51 test: Test
51 format_is_at_least: function(Rockspec, string): boolean 52 format_is_at_least: function(Rockspec, string): boolean
53 record variables
54 CVS: string
55 end
52 end 56 end
53 57
54 record cache 58 record cache
@@ -66,6 +70,12 @@ local record cfg
66 home: string 70 home: string
67 -- queries 71 -- queries
68 arch: string 72 arch: string
73 -- api
74 record config_files
75 record user
76 file: string
77 end
78 end
69end 79end
70 80
71return cfg \ No newline at end of file 81return cfg \ No newline at end of file
diff --git a/src/luarocks/fetch/cvs-original.lua b/src/luarocks/fetch/cvs-original.lua
new file mode 100644
index 00000000..d78e6e60
--- /dev/null
+++ b/src/luarocks/fetch/cvs-original.lua
@@ -0,0 +1,55 @@
1
2--- Fetch back-end for retrieving sources from CVS.
3local cvs = {}
4
5local unpack = unpack or table.unpack
6
7local fs = require("luarocks.fs")
8local dir = require("luarocks.dir")
9local util = require("luarocks.util")
10
11--- Download sources for building a rock, using CVS.
12-- @param rockspec table: The rockspec table
13-- @param extract boolean: Unused in this module (required for API purposes.)
14-- @param dest_dir string or nil: If set, will extract to the given directory.
15-- @return (string, string) or (nil, string): The absolute pathname of
16-- the fetched source tarball and the temporary directory created to
17-- store it; or nil and an error message.
18function cvs.get_sources(rockspec, extract, dest_dir)
19 assert(rockspec:type() == "rockspec")
20 assert(type(dest_dir) == "string" or not dest_dir)
21
22 local cvs_cmd = rockspec.variables.CVS
23 local ok, err_msg = fs.is_tool_available(cvs_cmd, "CVS")
24 if not ok then
25 return nil, err_msg
26 end
27
28 local name_version = rockspec.name .. "-" .. rockspec.version
29 local module = rockspec.source.module or dir.base_name(rockspec.source.url)
30 local command = {cvs_cmd, "-d"..rockspec.source.pathname, "export", module}
31 if rockspec.source.tag then
32 table.insert(command, 4, "-r")
33 table.insert(command, 5, rockspec.source.tag)
34 end
35 local store_dir
36 if not dest_dir then
37 store_dir = fs.make_temp_dir(name_version)
38 if not store_dir then
39 return nil, "Failed creating temporary directory."
40 end
41 util.schedule_function(fs.delete, store_dir)
42 else
43 store_dir = dest_dir
44 end
45 local ok, err = fs.change_dir(store_dir)
46 if not ok then return nil, err end
47 if not fs.execute(unpack(command)) then
48 return nil, "Failed fetching files from CVS."
49 end
50 fs.pop_dir()
51 return module, store_dir
52end
53
54
55return cvs
diff --git a/src/luarocks/fetch/cvs.lua b/src/luarocks/fetch/cvs.lua
index d78e6e60..1c6616ff 100644
--- a/src/luarocks/fetch/cvs.lua
+++ b/src/luarocks/fetch/cvs.lua
@@ -1,24 +1,23 @@
1local _tl_compat; if (tonumber((_VERSION or ''):match('[%d.]*$')) or 0) < 5.3 then local p, m = pcall(require, 'compat53.module'); if p then _tl_compat = m end end; local table = _tl_compat and _tl_compat.table or table; local _tl_table_unpack = unpack or table.unpack
1 2
2--- Fetch back-end for retrieving sources from CVS.
3local cvs = {} 3local cvs = {}
4 4
5local unpack = unpack or table.unpack
6 5
7local fs = require("luarocks.fs") 6local fs = require("luarocks.fs")
8local dir = require("luarocks.dir") 7local dir = require("luarocks.dir")
9local util = require("luarocks.util") 8local util = require("luarocks.util")
9local cfg = require("luarocks.core.cfg")
10
11
12
13
10 14
11--- Download sources for building a rock, using CVS.
12-- @param rockspec table: The rockspec table
13-- @param extract boolean: Unused in this module (required for API purposes.)
14-- @param dest_dir string or nil: If set, will extract to the given directory.
15-- @return (string, string) or (nil, string): The absolute pathname of
16-- the fetched source tarball and the temporary directory created to
17-- store it; or nil and an error message.
18function cvs.get_sources(rockspec, extract, dest_dir)
19 assert(rockspec:type() == "rockspec")
20 assert(type(dest_dir) == "string" or not dest_dir)
21 15
16
17
18
19
20function cvs.get_sources(rockspec, extract, dest_dir)
22 local cvs_cmd = rockspec.variables.CVS 21 local cvs_cmd = rockspec.variables.CVS
23 local ok, err_msg = fs.is_tool_available(cvs_cmd, "CVS") 22 local ok, err_msg = fs.is_tool_available(cvs_cmd, "CVS")
24 if not ok then 23 if not ok then
@@ -27,7 +26,7 @@ function cvs.get_sources(rockspec, extract, dest_dir)
27 26
28 local name_version = rockspec.name .. "-" .. rockspec.version 27 local name_version = rockspec.name .. "-" .. rockspec.version
29 local module = rockspec.source.module or dir.base_name(rockspec.source.url) 28 local module = rockspec.source.module or dir.base_name(rockspec.source.url)
30 local command = {cvs_cmd, "-d"..rockspec.source.pathname, "export", module} 29 local command = { cvs_cmd, "-d" .. rockspec.source.pathname, "export", module }
31 if rockspec.source.tag then 30 if rockspec.source.tag then
32 table.insert(command, 4, "-r") 31 table.insert(command, 4, "-r")
33 table.insert(command, 5, rockspec.source.tag) 32 table.insert(command, 5, rockspec.source.tag)
@@ -44,7 +43,7 @@ function cvs.get_sources(rockspec, extract, dest_dir)
44 end 43 end
45 local ok, err = fs.change_dir(store_dir) 44 local ok, err = fs.change_dir(store_dir)
46 if not ok then return nil, err end 45 if not ok then return nil, err end
47 if not fs.execute(unpack(command)) then 46 if not fs.execute(_tl_table_unpack(command)) then
48 return nil, "Failed fetching files from CVS." 47 return nil, "Failed fetching files from CVS."
49 end 48 end
50 fs.pop_dir() 49 fs.pop_dir()
diff --git a/src/luarocks/fetch/cvs.tl b/src/luarocks/fetch/cvs.tl
new file mode 100644
index 00000000..1d874daf
--- /dev/null
+++ b/src/luarocks/fetch/cvs.tl
@@ -0,0 +1,54 @@
1
2--- Fetch back-end for retrieving sources from CVS.
3local record cvs
4end
5
6local fs = require("luarocks.fs")
7local dir = require("luarocks.dir")
8local util = require("luarocks.util")
9local cfg = require("luarocks.core.cfg") --! import for Rockspec
10
11local type Rockspec = cfg.Rockspec
12
13--- Download sources for building a rock, using CVS.
14-- @param rockspec table: The rockspec table
15-- @param extract boolean: Unused in this module (required for API purposes.)
16-- @param dest_dir string or nil: If set, will extract to the given directory.
17-- @return (string, string) or (nil, string): The absolute pathname of
18-- the fetched source tarball and the temporary directory created to
19-- store it; or nil and an error message.
20function cvs.get_sources(rockspec: Rockspec, extract, dest_dir?: string): string, string --? extract not needed
21 local cvs_cmd = rockspec.variables.CVS
22 local ok, err_msg = fs.is_tool_available(cvs_cmd, "CVS")
23 if not ok then
24 return nil, err_msg
25 end
26
27 local name_version = rockspec.name .. "-" .. rockspec.version
28 local module = rockspec.source.module or dir.base_name(rockspec.source.url)
29 local command = {cvs_cmd, "-d"..rockspec.source.pathname, "export", module}
30 if rockspec.source.tag then
31 table.insert(command, 4, "-r")
32 table.insert(command, 5, rockspec.source.tag)
33 end
34 local store_dir: string
35 if not dest_dir then
36 store_dir = fs.make_temp_dir(name_version)
37 if not store_dir then
38 return nil, "Failed creating temporary directory."
39 end
40 util.schedule_function(fs.delete, store_dir)
41 else
42 store_dir = dest_dir
43 end
44 local ok, err = fs.change_dir(store_dir)
45 if not ok then return nil, err end
46 if not fs.execute(table.unpack(command)) then
47 return nil, "Failed fetching files from CVS."
48 end
49 fs.pop_dir()
50 return module, store_dir
51end
52
53
54return cvs
diff --git a/src/luarocks/fs.d.tl b/src/luarocks/fs.d.tl
index 88034b65..24f3e61f 100644
--- a/src/luarocks/fs.d.tl
+++ b/src/luarocks/fs.d.tl
@@ -17,6 +17,9 @@ local record fs
17 -- signing 17 -- signing
18 is_tool_available: function(string, string): string, string 18 is_tool_available: function(string, string): string, string
19 execute: function(...: string): boolean --? boolean? src/luarocks/signing.tl: 27 19 execute: function(...: string): boolean --? boolean? src/luarocks/signing.tl: 27
20 make_temp_dir: function(string): string, string
21 change_dir: function(string): boolean, string
22 pop_dir: function(): boolean
20end 23end
21 24
22return fs 25return fs