summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2008-04-03 16:27:51 +0000
committerNorbert Preining <preining@logic.at>2008-04-03 16:27:51 +0000
commit1cf4c485f7d21e010eda79e67384bf93158481b3 (patch)
tree3c23eb8155f4c87e72e2f4c4dcd5186f9857188f
parenta32235a1a71c8bc8e313eda44942834099b26828 (diff)
add tlmgr to Build/source/texk/texlive
git-svn-id: svn://tug.org/texlive/trunk@7296 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-xBuild/source/texk/texlive/tlmgr197
1 files changed, 197 insertions, 0 deletions
diff --git a/Build/source/texk/texlive/tlmgr b/Build/source/texk/texlive/tlmgr
new file mode 100755
index 00000000000..ac31a2e677c
--- /dev/null
+++ b/Build/source/texk/texlive/tlmgr
@@ -0,0 +1,197 @@
+#! /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
+-- uninstall uninstall-tl.pl and local code
+-- install tl-package-manager.pl
+-- remove tl-package-manager.pl
+-- search tl-package-manager.pl
+-- globalsearch tl-package-manager.pl
+-- * 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
+ -- we have to replace all / with \
+ foo = string.gsub(dirn, '/', '\\')
+ ret = os.spawn({"rmdir", "/s", "/q", foo})
+ else
+ ret = os.spawn({"rm", "-rf", dirn})
+ end
+ if ret then
+ return ret
+ else
+ io.stderr:write(filename..': removing '..dirn.." didn't work\n")
+ 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
+
+-- in all other cases we call tl-package-manager for now ...
+--
+-- 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)
+
+-- Local Variables:
+-- perl-indent-level: 2
+-- tab-width: 2
+-- indent-tabs-mode: nil
+-- End:
+-- vim:set tabstop=2 expandtab: --