diff options
author | Reinhard Kotucha <reinhard.kotucha@web.de> | 2008-04-09 20:59:50 +0000 |
---|---|---|
committer | Reinhard Kotucha <reinhard.kotucha@web.de> | 2008-04-09 20:59:50 +0000 |
commit | 485c5092f8e95971a1db19850692ec4d4a398f64 (patch) | |
tree | a32b3c56c37f47d960791e4fca10e6d494d97f19 /Master/texmf | |
parent | 0b7b8d30dc6f1063081a243ed2deed259ae8f36f (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-R | 2 | ||||
-rwxr-xr-x | Master/texmf/scripts/texlive/tlmgr.texlua | 207 |
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: -- |