summaryrefslogtreecommitdiff
path: root/scripts/context/lua/mtx-install-tikz.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/context/lua/mtx-install-tikz.lua')
-rw-r--r--scripts/context/lua/mtx-install-tikz.lua162
1 files changed, 0 insertions, 162 deletions
diff --git a/scripts/context/lua/mtx-install-tikz.lua b/scripts/context/lua/mtx-install-tikz.lua
deleted file mode 100644
index 74a292241..000000000
--- a/scripts/context/lua/mtx-install-tikz.lua
+++ /dev/null
@@ -1,162 +0,0 @@
-if not modules then modules = { } end modules ['mtx-install-tikz'] = {
- version = 1.234,
- comment = "companion to mtxrun.lua",
- author = "Hans Hagen",
- copyright = "ConTeXt Development Team",
- license = "see context related readme files"
-}
-
--- Installing tikz is a bit tricky because there are many packages involved and it's
--- sort of impossible to derive from the names what to include in the installation.
--- I tried to use the ctan scrips we ship but there is no way to reliably derive a
--- set from the topics or packages using the web api (there are also some
--- inconsistencies between the jkson and xml interfaces that will not be fixed). A
--- wildcard pull of everything tikz/pgf is likely to fail or at least gives files we
--- don't want and/or need, the solution is to be specific.
---
--- We use curl and not the built in socket library because all kind of ssl and
--- redirection can kick in and who know how it evolves.
---
--- We use the context unzipper because we cannot be sure if unzip is present on the
--- system. In many cases windows, linux and osx installations lack it by default.
---
--- This script has no help info etc as it's a rather dumb downloader. One can always
--- do a better job than this suboptimal quick hack. Let me know if I forget to wipe
--- something.
---
--- mtxrun --script install-tikz
---
--- It should be run in the tex root and will quit when there is no texmf-context
--- path found. The modules path will be created when absent.
-
-local okay, curl = pcall(require,"libs-imp-curl")
-
-local fetched = curl and curl.fetch and function(str)
- local data, message = curl.fetch {
- url = str,
- followlocation = true,
- sslverifyhost = false,
- sslverifypeer = false,
- }
- if not data then
- report("some error: %s",message)
- end
- return data
-end or function(str)
- -- So, no redirect to http, which means that we cannot use the built in socket
- -- library. What if the client is happy with http?
- local data = os.resultof("curl -sSL " .. str)
- return data
-end
-
-local ctanurl = "https://mirrors.ctan.org/install"
-local tmpzipfile = "temp.zip"
-local checkdir = "texmf-context"
-local targetdir = "texmf-modules"
-
-local report = logs.reporter("install")
-
-scripts = scripts or { }
-scripts.ctan = scripts.ctan or { }
-
-function scripts.ctan.install(list)
- if type(list) ~= "table"then
- report("unknown specification")
- end
- local zips = list.zips
- local wipes = list.wipes
- if type(zips) ~= "table" or type(wipes) ~= "table" then
- report("incomplete specification")
- elseif not lfs.isdir(checkdir) then
- report("unknown subdirectory %a",checkdir)
- elseif not dir.mkdirs(targetdir) then
- report("unable to create %a",targetdir)
- elseif not lfs.chdir(targetdir) then
- report("unable to go into %a",targetdir)
- else
- report("installing into %a",targetdir)
- for i=1,#zips do
- local where = ctanurl .. "/" .. zips[i]
- local data = fetched(where)
- if string.find(data,"^PK") then
- io.savedata(tmpzipfile,data)
- report("from %a",where)
- report("into %a",targetdir)
- utilities.zipfiles.unzipdir {
- zipname = tmpzipfile,
- path = ".",
- verbose = "steps",
- }
- os.remove(tmpzipfile)
- else
- report("unknown %a",where)
- end
- end
-
- local function wiper(wipes)
- for i=1,#wipes do
- local s = wipes[i]
- if type(s) == "table" then
- wiper(s)
- elseif type(s) == "string" then
- local t = dir.glob(s)
- report("wiping %i files in %a",#t,s)
- for i=1,#t do
- os.remove(t[i])
- end
- end
- end
- end
-
- wiper(wipes)
-
- report("renewing file database")
- resolvers.renewcache()
- resolvers.load()
- end
-end
-
-local function wipers(s)
- return {
- "tex/context/third/" ..s.. "/**",
- "doc/context/third/" ..s.. "/**",
- "source/context/third/" ..s.. "/**",
-
- "tex/context/" ..s.. "/**",
- "doc/context/" ..s.. "/**",
- "source/context/" ..s.. "/**",
-
- "scripts/" ..s.. "/**",
- }
-end
-
-local defaults = {
- "tex/latex/**",
- "tex/plain/**",
-
- "doc/latex/**",
- "doc/plain/**",
- "doc/generic/**",
-
- "source/latex/**",
- "source/plain/**",
- "source/generic/**",
-}
-
-local lists = {
- tikz = {
- zips = {
- "graphics/pgf/base/pgf.tds.zip",
- "graphics/pgf/contrib/pgfplots.tds.zip",
- "graphics/pgf/contrib/circuitikz.tds.zip",
- },
- wipes = {
- wipers("pgf"),
- wipers("pgfplots"),
- wipers("circuitikz"),
- defaults,
- }
- },
-}
-
-scripts.ctan.install(lists.tikz)