summaryrefslogtreecommitdiff
path: root/Master/bin/i386-linux/tlmgr
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2008-04-03 12:24:19 +0000
committerNorbert Preining <preining@logic.at>2008-04-03 12:24:19 +0000
commit7bda7674a42eb06786f00ada40384cff686b5721 (patch)
tree5e81ac5a5362775bda2e2217e9b729815a6a0802 /Master/bin/i386-linux/tlmgr
parent9cb8984c9ec2243119dffa70e98f642501d68c04 (diff)
work on tlmgr
git-svn-id: svn://tug.org/texlive/trunk@7291 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/bin/i386-linux/tlmgr')
-rwxr-xr-xMaster/bin/i386-linux/tlmgr185
1 files changed, 185 insertions, 0 deletions
diff --git a/Master/bin/i386-linux/tlmgr b/Master/bin/i386-linux/tlmgr
new file mode 100755
index 00000000000..7dcc72ca73c
--- /dev/null
+++ b/Master/bin/i386-linux/tlmgr
@@ -0,0 +1,185 @@
+#! /usr/bin/env texlua
+--*-Lua-*-
+-- $Id: tlmgr.texlua 7030 2008-03-19 21:52:43Z reinhardk $
+
+-- Copyright (C) 2008 Reinhard Kotucha, Norbert Preining.
+-- You may freely use, modify and/or distribute this file.
+
+-- tlmgr
+-- one central managment utility for TeX Live
+-- it calls several supporting scripts from texmf/scripts/texlive
+-- and other places
+--
+-- Currently supported arguments
+-- help local, not implemented
+-- generate-fmtutil generate-fmtutil.pl
+-- generate-updmap generate-updmap.pl
+-- generate-language generate-language.pl
+-- install tl-package-manager.pl
+-- remove tl-package-manager.pl
+-- search tl-package-manager.pl
+-- globalsearch tl-package-manager.pl
+
+function fixwin(args_unix)
+ if os.type == 'windows' then
+ local args_win={} -- new table
+ args_win[0]=args_unix[1]
+ for i=1, #args_unix do
+ args_win[i]='"'..args_unix[i]..'"'
+ end
+ return args_win
+ else
+ return args_unix
+ end
+end
+
+function setupperl()
+ -- For Windows we use the shipped perl interpreter, otherwise we expect
+ -- a perl to be installed
+ if os.type == 'windows' then
+ perlbin=TEXDIR..'/tlpkg/tlperl/bin/perl.exe'
+ os.setenv('PERL5LIB', TEXDIR..'/tlpkg/tlperl/lib')
+ else
+ perlbin = 'perl'
+ end
+end
+
+function findscript(scriptname)
+ script = kpse.find_file(scriptname, 'texmfscripts')
+ if script then
+ return script
+ else
+ io.stderr:write(filename..': Cannot find script '..scriptname)
+ return false
+ end
+end
+
+function rmdir(dirn)
+ if os.type == 'windows' then
+ ret = os.spawn({"rmdir", "/s", "/q", dirn})
+ else
+ ret = os.spawn({"rm", "-rf", dirn})
+ end
+ if ret then
+ return ret
+ else
+ io.stderr:write(filename..': removing '..dirn.." didn't work")
+ end
+ return ret
+end
+
+if string.find(arg[0], '/') then -- UNIX path
+ filename=select(1, string.gsub(arg[0], '.*/', ''))
+elseif string.find(arg[0], '\\') then -- Windows path
+ filename=select(1, string.gsub(arg[0], '.*\\', ''))
+else -- no path
+ filename=arg[0]
+end
+
+
+basename=select(1, string.gsub(filename, '\.texlua$', ''))
+
+kpse.set_program_name(filename, basename)
+TEXDIR=kpse.var_value('SELFAUTOPARENT')
+TEXMFSYSVAR=kpse.var_value('TEXMFSYSVAR')
+BINDIR=kpse.var_value('SELFAUTOLOC')
+
+
+if arg[1] == 'help' then
+ print ("Usage: not implemented")
+ os.exit(0)
+end
+
+if arg[1] == 'uninstall' then
+ print ("removing the whole installation")
+ -- we have to call perl uninstall-tl.pl AND have to remove the following files:
+ -- TEXDIR/texmf{,-dist,-doc,-var,-config,}, TEXDIR/bin, TEXDIR/tlpkg, TEXDIR/install-tl.log
+ -- TEXMFSYSVAR
+ -- that should remove all the stuff
+ -- Or other options?
+ setupperl()
+ script = findscript('uninstall-tl.pl')
+ if script then
+ command = { perlbin, script }
+ else
+ os.exit(1)
+ end
+ for i=1, #arg do
+ command[#command+1] = arg[i]
+ end
+ command = fixwin(command)
+ ret = os.spawn(command)
+ -- here we should check the return value!!!
+ if not ret then
+ io.stderr:write(filename..': The removal script uninstall-tl.pl returned false\n')
+ io.stderr:write(filename..": We don't continue removing stuff\n")
+ os.exit(1)
+ end
+ -- on windows we have now removed the associations etc, while
+ -- on unix we have removed the symlinks in case they were present
+ --
+ -- now we have to remove all the files and directories
+ rmdir(TEXDIR.."/texmf-dist")
+ rmdir(TEXDIR.."/texmf-doc")
+ rmdir(TEXDIR.."/texmf-var")
+ rmdir(TEXDIR.."/texmf-config")
+ rmdir(TEXDIR.."/texmf")
+ rmdir(TEXDIR.."/tlpkg")
+ os.remove(TEXDIR.."/install-tl.log")
+ rmdir(TEXDIR.."/bin")
+ -- now everything should be removed, try to remove also TEXDIR
+ os.remove(TEXDIR)
+ os.exit(0)
+end
+
+if arg[1] == 'generate-fmtutil' then
+ setupperl()
+ script = findscript('generate-fmtutil.pl')
+ if script then
+ command = { perlbin, script }
+ else
+ os.exit(1)
+ end
+end
+
+if arg[1] == 'generate-language' then
+ setupperl()
+ script = findscript('generate-language.pl')
+ if script then
+ command = { perlbin, script }
+ else
+ os.exit(1)
+ end
+end
+
+if arg[1] == 'generate-updmap' then
+ setupperl()
+ script = findscript('generate-updmap.pl')
+ if script then
+ command = { perlbin, script }
+ else
+ os.exit(1)
+ end
+end
+
+if arg[1] == 'install' or arg[1] == 'remove' or arg[1] == 'search' or
+ arg[1] == 'globalsearch' then
+ setupperl()
+ script = findscript('tl-package-manager.pl')
+ if script then
+ command = { perlbin, script }
+ else
+ os.exit(1)
+ end
+end
+
+for i=1, #arg do
+ command[#command+1]=arg[i]
+end
+
+command=fixwin(command)
+
+ret=os.spawn(command)
+os.exit(ret)
+
+