diff options
author | Thijs Schreijer <thijs@thijsschreijer.nl> | 2013-04-09 13:11:55 +0200 |
---|---|---|
committer | Thijs Schreijer <thijs@thijsschreijer.nl> | 2013-04-09 13:11:55 +0200 |
commit | b974f6d3841b24596c4cbc2c27f9f6572afe52d5 (patch) | |
tree | 9226304a5d8ac0a756e85b6316219cd690ab3518 | |
parent | baef212bf582e59421cca37e1e11167dc33f974a (diff) | |
download | luarocks-b974f6d3841b24596c4cbc2c27f9f6572afe52d5.tar.gz luarocks-b974f6d3841b24596c4cbc2c27f9f6572afe52d5.tar.bz2 luarocks-b974f6d3841b24596c4cbc2c27f9f6572afe52d5.zip |
installer adds information for the registry, including icon and actions for .rockspec files when /R argument is provided.
includes the new luarocksw.bat batch file
also: made the /P argument of the installer required
-rw-r--r-- | install.bat | 32 | ||||
-rw-r--r-- | win32/bin/LuaRocks.reg.template | 53 | ||||
-rw-r--r-- | win32/bin/create_reg_file.lua | 51 | ||||
-rw-r--r-- | win32/bin/lua.ico | bin | 0 -> 22486 bytes | |||
-rw-r--r-- | win32/bin/luarocksw.bat | 48 |
5 files changed, 180 insertions, 4 deletions
diff --git a/install.bat b/install.bat index 3fdaafa0..1bc58bd0 100644 --- a/install.bat +++ b/install.bat | |||
@@ -21,6 +21,8 @@ SET FORCE_CONFIG= | |||
21 | SET USE_MINGW= | 21 | SET USE_MINGW= |
22 | SET MKDIR=.\bin\mkdir -p | 22 | SET MKDIR=.\bin\mkdir -p |
23 | SET LUA_LIB_NAMES=lua5.1.lib lua51.dll liblua.dll.a | 23 | SET LUA_LIB_NAMES=lua5.1.lib lua51.dll liblua.dll.a |
24 | SET REGISTRY=OFF | ||
25 | SET P_SET=FALSE | ||
24 | 26 | ||
25 | REM *********************************************************** | 27 | REM *********************************************************** |
26 | REM Option parser | 28 | REM Option parser |
@@ -33,9 +35,9 @@ IF [%1]==[] GOTO DONE_PARSING | |||
33 | IF [%1]==[/?] ( | 35 | IF [%1]==[/?] ( |
34 | ECHO Installs LuaRocks. | 36 | ECHO Installs LuaRocks. |
35 | ECHO. | 37 | ECHO. |
36 | ECHO /P [dir] Where to install. | 38 | ECHO /P [dir] ^(REQUIRED^) Where to install. |
37 | ECHO Default is %PREFIX% ^(version; %VERSION%, will be | 39 | ECHO Note that version; %VERSION%, will be |
38 | ECHO appended to this path^) | 40 | ECHO appended to this path. |
39 | ECHO /CONFIG [dir] Location where the config file should be installed. | 41 | ECHO /CONFIG [dir] Location where the config file should be installed. |
40 | ECHO Default is same place of installation | 42 | ECHO Default is same place of installation |
41 | ECHO /TREE [dir] Root of the local tree of installed rocks. | 43 | ECHO /TREE [dir] Root of the local tree of installed rocks. |
@@ -66,12 +68,16 @@ IF [%1]==[/?] ( | |||
66 | ECHO. | 68 | ECHO. |
67 | ECHO /F Remove installation directory if it already exists. | 69 | ECHO /F Remove installation directory if it already exists. |
68 | ECHO. | 70 | ECHO. |
71 | ECHO /R Load registry information to register '.rockspec' | ||
72 | ECHO extension with LuaRocks commands ^(right-click^). | ||
73 | ECHO. | ||
69 | GOTO QUIT | 74 | GOTO QUIT |
70 | ) | 75 | ) |
71 | IF /I [%1]==[/P] ( | 76 | IF /I [%1]==[/P] ( |
72 | SET PREFIX=%~2 | 77 | SET PREFIX=%~2 |
73 | SET SYSCONFDIR=%~2 | 78 | SET SYSCONFDIR=%~2 |
74 | SET ROCKS_TREE=%~2 | 79 | SET ROCKS_TREE=%~2 |
80 | SET P_SET=TRUE | ||
75 | SHIFT /1 | 81 | SHIFT /1 |
76 | SHIFT /1 | 82 | SHIFT /1 |
77 | GOTO PARSE_LOOP | 83 | GOTO PARSE_LOOP |
@@ -138,11 +144,20 @@ IF /I [%1]==[/F] ( | |||
138 | SHIFT /1 | 144 | SHIFT /1 |
139 | GOTO PARSE_LOOP | 145 | GOTO PARSE_LOOP |
140 | ) | 146 | ) |
147 | IF /I [%1]==[/R] ( | ||
148 | SET REGISTRY=ON | ||
149 | SHIFT /1 | ||
150 | GOTO PARSE_LOOP | ||
151 | ) | ||
141 | ECHO Unrecognized option: %1 | 152 | ECHO Unrecognized option: %1 |
142 | GOTO ERROR | 153 | GOTO ERROR |
143 | :DONE_PARSING | 154 | :DONE_PARSING |
144 | 155 | ||
145 | REM check for combination flags | 156 | REM check for combination/required flags |
157 | IF NOT [%P_SET%]==[TRUE] ( | ||
158 | Echo Missing required parameter /P | ||
159 | GOTO ERROR | ||
160 | ) | ||
146 | IF [%INSTALL_LUA%]==[ON] ( | 161 | IF [%INSTALL_LUA%]==[ON] ( |
147 | IF NOT [%LUA_INCDIR%%LUA_BINDIR%%LUA_LIBDIR%%LUA_PREFIX%]==[] ( | 162 | IF NOT [%LUA_INCDIR%%LUA_BINDIR%%LUA_LIBDIR%%LUA_PREFIX%]==[] ( |
148 | ECHO Cannot combine option /L with any of /LUA /BIN /LIB /INC | 163 | ECHO Cannot combine option /L with any of /LUA /BIN /LIB /INC |
@@ -424,6 +439,15 @@ IF NOT EXIST "%APPDATA%/luarocks" ( | |||
424 | ECHO Rocktree exists: "%APPDATA%\luarocks" | 439 | ECHO Rocktree exists: "%APPDATA%\luarocks" |
425 | ) | 440 | ) |
426 | 441 | ||
442 | REM Load registry information | ||
443 | IF [%REGISTRY%]==[ON] ( | ||
444 | REM expand template with correct path information | ||
445 | ECHO. | ||
446 | ECHO Loading registry information for ".rockspec" files | ||
447 | lua5.1\bin\lua5.1.exe "%FULL_PREFIX%\create_reg_file.lua" "%FULL_PREFIX%\LuaRocks.reg.template" | ||
448 | %FULL_PREFIX%\LuaRocks.reg | ||
449 | ) | ||
450 | |||
427 | REM *********************************************************** | 451 | REM *********************************************************** |
428 | REM Exit handlers | 452 | REM Exit handlers |
429 | REM *********************************************************** | 453 | REM *********************************************************** |
diff --git a/win32/bin/LuaRocks.reg.template b/win32/bin/LuaRocks.reg.template new file mode 100644 index 00000000..3af1ff34 --- /dev/null +++ b/win32/bin/LuaRocks.reg.template | |||
@@ -0,0 +1,53 @@ | |||
1 | Windows Registry Editor Version 5.00 | ||
2 | |||
3 | [HKEY_CLASSES_ROOT\.rockspec] | ||
4 | @="Lua.Rockspec" | ||
5 | |||
6 | [HKEY_CLASSES_ROOT\.rockspec\Content Type] | ||
7 | @="text/plain" | ||
8 | |||
9 | [HKEY_CLASSES_ROOT\.rockspec\PerceivedType] | ||
10 | @="text" | ||
11 | |||
12 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.rockspec] | ||
13 | @="Lua.Rockspec" | ||
14 | |||
15 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.rockspec\Content Type] | ||
16 | @="text/plain" | ||
17 | |||
18 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.rockspec\PerceivedType] | ||
19 | @="text" | ||
20 | |||
21 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Lua.Rockspec] | ||
22 | @="Lua Rockspec File" | ||
23 | |||
24 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Lua.Rockspec\DefaultIcon] | ||
25 | @="<LUAROCKSPATH>lua.ico" | ||
26 | |||
27 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Lua.Rockpsec\Shell] | ||
28 | |||
29 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Lua.Rockspec\Shell\Fetch] | ||
30 | @="Fetch and install" | ||
31 | |||
32 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Lua.Rockspec\Shell\Fetch\Command] | ||
33 | @="\"<LUAROCKSPATH>luarocksw.bat" install \"%1\" | ||
34 | |||
35 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Lua.Rockspec\Shell\Install] | ||
36 | @="Install Lua module" | ||
37 | |||
38 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Lua.Rockspec\Shell\Install\Command] | ||
39 | @="\"<LUAROCKSPATH>luarocksw.bat" make \"%1\" | ||
40 | |||
41 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Lua.Rockspec\Shell\Uninstall] | ||
42 | @="Install Lua module (this version)" | ||
43 | |||
44 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Lua.Rockspec\Shell\Uninstall\Command] | ||
45 | @="\"<LUAROCKSPATH>luarocksw.bat" remove \"%1\" | ||
46 | |||
47 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Lua.Rockspec\Shell\UninstallAll] | ||
48 | @="Install Lua module (all versions)" | ||
49 | |||
50 | [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Lua.Rockspec\Shell\UninstallAll\Command] | ||
51 | @="\"<LUAROCKSPATH>luarocksw.bat" removeall \"%1\" | ||
52 | |||
53 | |||
diff --git a/win32/bin/create_reg_file.lua b/win32/bin/create_reg_file.lua new file mode 100644 index 00000000..df0b7491 --- /dev/null +++ b/win32/bin/create_reg_file.lua | |||
@@ -0,0 +1,51 @@ | |||
1 | -- Call this file using its full path and the template file as a parameter; | ||
2 | -- | ||
3 | -- C:\> lua.exe "create_reg_file.lua" "c:\luarocks\2.0\LuaRocks.reg.template" | ||
4 | -- | ||
5 | -- it will strip the ".template" extension and write to that file the | ||
6 | -- template contents, where "<LUAROCKSPATH>" will be replaced by the path | ||
7 | -- to LuaRocks (including the trailing backslash) | ||
8 | |||
9 | |||
10 | |||
11 | -- Check argument | ||
12 | local f = (arg or {})[1] | ||
13 | if not f then | ||
14 | print("must provide template file on command line") | ||
15 | os.exit(1) | ||
16 | end | ||
17 | |||
18 | -- cleanup filepath, remove all double backslashes | ||
19 | while f:match("\\\\") do | ||
20 | f:gsub("\\\\", "\\") | ||
21 | end | ||
22 | |||
23 | -- extract path and name from argument | ||
24 | local p = "" | ||
25 | local ni = f | ||
26 | for i = #f, 1, -1 do | ||
27 | if f:sub(i,i) == "\\" then | ||
28 | ni = f:sub(i+1) | ||
29 | p = f:sub(1, i) | ||
30 | break | ||
31 | end | ||
32 | end | ||
33 | |||
34 | -- create output name | ||
35 | local no = ni:gsub("%.template","") | ||
36 | |||
37 | -- create path substitute; escape backslash by doubles | ||
38 | local ps = p:gsub("\\", "\\\\") | ||
39 | |||
40 | -- read template | ||
41 | local fh = io.open(f) | ||
42 | local content = fh:read("*a") | ||
43 | fh:close() | ||
44 | |||
45 | -- fill template | ||
46 | content = content:gsub("%<LUAROCKSPATH%>", ps) | ||
47 | |||
48 | -- write destination file | ||
49 | fh = io.open(p..no, "w+") | ||
50 | fh:write(content) | ||
51 | fh:close() | ||
diff --git a/win32/bin/lua.ico b/win32/bin/lua.ico new file mode 100644 index 00000000..56dc4fe1 --- /dev/null +++ b/win32/bin/lua.ico | |||
Binary files differ | |||
diff --git a/win32/bin/luarocksw.bat b/win32/bin/luarocksw.bat new file mode 100644 index 00000000..a0144c44 --- /dev/null +++ b/win32/bin/luarocksw.bat | |||
@@ -0,0 +1,48 @@ | |||
1 | @echo off | ||
2 | setlocal | ||
3 | SET MYPATH=%~dp0 | ||
4 | |||
5 | |||
6 | ECHO Same as 'luarocks' command, except this | ||
7 | ECHO command will pause after completion, allowing for | ||
8 | ECHO examination of output. | ||
9 | ECHO | ||
10 | ECHO For LuaRocks help use: | ||
11 | ECHO LUAROCKS HELP | ||
12 | ECHO | ||
13 | ECHO OPTIONS specific for LUAROCKSW: | ||
14 | ECHO REMOVEALL is a command specific to this batch file | ||
15 | ECHO the option takes a FULL ROCKSPEC filename and then | ||
16 | ECHO it will strip path, version and extension info from | ||
17 | ECHO it before executing the LUAROCKS REMOVE command | ||
18 | ECHO Example: | ||
19 | ECHO luarocksw remove "c:\somedir\modulename-1.0-1.rockspec" | ||
20 | ECHO will execute: | ||
21 | ECHO luarocks remove "c:\somedir\modulename-1.0-1.rockspec" | ||
22 | ECHO and will only remove the specific version 1.0 from the | ||
23 | ECHO system. | ||
24 | ECHO luarocksw removeall "c:\somedir\modulename-1.0-1.rockspec" | ||
25 | ECHO will execute: | ||
26 | ECHO luarocks remove modulename | ||
27 | ECHO and will remove all versions of this package | ||
28 | |||
29 | |||
30 | |||
31 | REM if REMOVEALL command then info must be stripped from the parameter | ||
32 | if [%1]==[removeall] goto REMOVEALL | ||
33 | |||
34 | REM execute LuaRocks and wait for results | ||
35 | echo executing: luarocks %* | ||
36 | call %MYPATH%luarocks %* | ||
37 | pause | ||
38 | goto END | ||
39 | |||
40 | :REMOVEALL | ||
41 | for /f "delims=-" %%a in ("%~n2") do ( | ||
42 | echo executing: luarocks remove %%a | ||
43 | %MYPATH%luarocks remove "%%a" | ||
44 | pause | ||
45 | goto END | ||
46 | ) | ||
47 | |||
48 | :END \ No newline at end of file | ||