diff options
| author | Philipp Gesang <phg42.2a@gmail.com> | 2013-07-07 14:37:13 +0200 | 
|---|---|---|
| committer | Philipp Gesang <phg42.2a@gmail.com> | 2013-07-07 14:37:13 +0200 | 
| commit | 06fbc4ffd0432f9f44bd4d8aa50b92f02917fcba (patch) | |
| tree | 08391ab6b895c3a4bca0748fcc1ff91f8de20fb7 /mkfilelist | |
| parent | 0ab9e98a0255b6cc3f70205644c506b4a7a5a627 (diff) | |
| download | luaotfload-06fbc4ffd0432f9f44bd4d8aa50b92f02917fcba.tar.gz | |
add mkfilelist (batch file hashing)
Diffstat (limited to 'mkfilelist')
| -rw-r--r-- | mkfilelist | 115 | 
1 files changed, 115 insertions, 0 deletions
| diff --git a/mkfilelist b/mkfilelist new file mode 100644 index 0000000..756bfe0 --- /dev/null +++ b/mkfilelist @@ -0,0 +1,115 @@ +#!/usr/bin/env texlua +----------------------------------------------------------------------- +--         FILE:  mkfilelist.lua +--        USAGE:  ./mkfilelist.lua  +--  DESCRIPTION:  part of the luaotfload package +-- REQUIREMENTS:  luatex, the lualibs package +--       AUTHOR:  Philipp Gesang (Phg), <phg42.2a@gmail.com> +--      VERSION:  1.0 +--      CREATED:  2013-07-07 14:01:12+0200 +----------------------------------------------------------------------- +-- +-- This script generates a list of hashes that serves as the input +-- for the file integrity check (option --diagnose). md5 is all we can +-- assume in Luatex, so it’s really only a superficial test. + +kpse.set_program_name "luatex" + +local md5 = require "md5" + +require "lualibs" + +local stringformat = string.format +local md5sumhexa   = md5.sumhexa +local ioloaddata   = io.loaddata +local iosavedata   = io.savedata + +----------------------------------------------------------------------- +-- settings +----------------------------------------------------------------------- + +local filelist = "luaotfload-files.lua" --- result + +local names = { +  --- only the runtime files and scripts +  "luaotfload-auxiliary.lua", +  "luaotfload-basics-gen.lua", +  "luaotfload-basics-nod.lua", +  "luaotfload-characters.lua", +  "luaotfload-colors.lua", +  "luaotfload-database.lua", +  "luaotfload-extralibs.lua", +  "luaotfload-features.lua", +  "luaotfload-fonts-cbk.lua", +  "luaotfload-fonts-def.lua", +  "luaotfload-fonts-enc.lua", +  "luaotfload-fonts-ext.lua", +  "luaotfload-fonts-lua.lua", +  "luaotfload-fonts-tfm.lua", +  "luaotfload-glyphlist.lua", +  "luaotfload-letterspace.lua", +  "luaotfload-loaders.lua", +  "luaotfload.lua", +  "luaotfload-merged.lua", +  "luaotfload-override.lua", +  "luaotfload-tool.lua", +  "luaotfload-typo-krn.lua", +  "mkcharacters", +  "mkfilelist", +  "mkglyphlist", +} + +----------------------------------------------------------------------- +-- helpers +----------------------------------------------------------------------- + +local die = function (...) +  io.stderr:write "[fatal error]: " +  io.stderr:write (stringformat (...)) +  io.stderr:write "\naborting.\n" +  os.exit (1) +end + +----------------------------------------------------------------------- +-- functionality +----------------------------------------------------------------------- + +local hash_file = function (fname) +  if not lfs.isfile (fname) then +    die ("cannot find %s.", fname) +  end +  local raw = ioloaddata (fname) +  if not raw then +    die ("cannot read from %s.", fname) +  end +  return md5sumhexa (raw) +end + +local hash_all +hash_all = function (list, acc) +  if list == nil then +    return hash_all (table.fastcopy (names), { }) +  end + +  local fname = list[#list] +  list[#list] = nil +  if fname then +    local sum = hash_file (fname) +    acc[#acc+1] = { fname, sum } +    return hash_all (list, acc) +  end +  return acc +end + +local main = function () +  local hashes      = hash_all () +  local serialized  = table.serialize (hashes, true) +  local success     = io.savedata (filelist, serialized) +  if success == false then +    die ("could not write to %s.", filelist) +  end +  return 0 +end + +return main () + | 
