summaryrefslogtreecommitdiff
path: root/Master/texmf
diff options
context:
space:
mode:
authorReinhard Kotucha <reinhard.kotucha@web.de>2008-04-09 20:59:50 +0000
committerReinhard Kotucha <reinhard.kotucha@web.de>2008-04-09 20:59:50 +0000
commit485c5092f8e95971a1db19850692ec4d4a398f64 (patch)
treea32b3c56c37f47d960791e4fca10e6d494d97f19 /Master/texmf
parent0b7b8d30dc6f1063081a243ed2deed259ae8f36f (diff)
tlmgr.texlua moved to /texmf/scripts.
git-svn-id: svn://tug.org/texlive/trunk@7369 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf')
-rw-r--r--Master/texmf/ls-R2
-rwxr-xr-xMaster/texmf/scripts/texlive/tlmgr.texlua207
2 files changed, 209 insertions, 0 deletions
diff --git a/Master/texmf/ls-R b/Master/texmf/ls-R
index a2574a292cd..8b042d31ce0 100644
--- a/Master/texmf/ls-R
+++ b/Master/texmf/ls-R
@@ -304,6 +304,7 @@ mf-nowin.1
mf.1
mft.1
mkindex.1
+mkjobtexmf.1
mkocp.1
mkofm.1
mktexfmt.1
@@ -3882,6 +3883,7 @@ generate-language.pl
generate-updmap.pl
getnonfreefonts.pl
tl-package-manager.pl
+tlmgr.texlua
uninstall-tl.pl
./scripts/xindy:
diff --git a/Master/texmf/scripts/texlive/tlmgr.texlua b/Master/texmf/scripts/texlive/tlmgr.texlua
new file mode 100755
index 00000000000..f5cbb5c168b
--- /dev/null
+++ b/Master/texmf/scripts/texlive/tlmgr.texlua
@@ -0,0 +1,207 @@
+#! /usr/bin/env texlua
+--*-Lua-*-
+-- $Id: tlmgr 7301 2008-04-03 16:52:55Z preining $
+
+-- 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
+-- update tl-package-manager.pl
+-- 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)
+ local 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(name)
+ if os.type == 'windows' then
+ -- code from Hans
+ os.execute("rmdir /s /q " .. name:gsub('/', '\\'))
+ else
+ ret = os.spawn({"rm", "-rf", name})
+ end
+ local ok = lfs.attributes(name)
+ if ok then
+ io.stderr:write(string.format("%s: removing '%s' didn't succeed\n",filename,name))
+ end
+ return ok
+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("If you answer yes here the whole TeX Live installation will be removed!")
+ io.stdout:write("Remove TeX Live (y/N): ")
+ local yesno = io.read()
+ if yesno == 'y' or yesno == 'Y' or yesno == 'yes' or yesno == 'YES' then
+ print ("Ok, 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.."/temp")
+ os.remove(TEXDIR.."/install-tl.log")
+ rmdir(TEXDIR.."/bin")
+ -- now everything should be removed, try to remove also TEXDIR
+ -- this will not succeed on win32 since texlua.exe is still in use
+ -- and thus removing TEXDIR/bin will not work. Damned.
+ os.remove(TEXDIR)
+ os.exit(0)
+ else
+ print("Ok, cancelling the removal.")
+ os.exit(0)
+ end
+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: --