sha256sum
sha256sum computes and checks SHA-256 message digests.
This module constructs
ward.process.cmd(...)invocations; it does not parse output. consumers can usewardlib.tools.out(or their own parsing) on the:output()result.
Import
local Sha256sum = require("wardlib.app.sha256sum").Sha256sum
API
Sha256sum.bin
Executable name or path (default: "sha256sum").
Sha256sum.sum(files, opts)
Builds: sha256sum <opts...> [-- <files...>]
- If
filesisnil,sha256sumreads stdin. - If
filesis provided, the wrapper inserts--before the file list.
Sha256sum.check(check_files, opts)
Builds: sha256sum -c <opts...> [-- <check_files...>]
- If
check_filesisnil,sha256sumreads the checksum list from stdin. - If
check_filesis provided, the wrapper inserts--before the file list.
Sha256sum.raw(argv, opts)
Builds: sha256sum <opts...> <argv...>
Use this when you need sha256sum options not modeled in Sha256sumOpts.
Options (Sha256sumOpts)
binary: boolean?→-b(binary mode)text: boolean?→-t(text mode)- Mutually exclusive:
binaryandtext.
- Mutually exclusive:
tag: boolean?→--tagzero: boolean?→-z(NUL line terminator)
Check-mode options (when using Sha256sum.check / -c):
quiet: boolean?→--quietstatus: boolean?→--statuswarn: boolean?→--warnstrict: boolean?→--strictignore_missing: boolean?→--ignore-missing
Escape hatch:
extra: string[]?→ appended after modeled options
Examples
Compute hashes for files
local Sha256sum = require("wardlib.app.sha256sum").Sha256sum
-- sha256sum -- file1 file2
local cmd = Sha256sum.sum({ "file1", "file2" })
cmd:run()
Parse the hash from stdout
local Sha256sum = require("wardlib.app.sha256sum").Sha256sum
local out = require("wardlib.tools.out")
local text = out.cmd(Sha256sum.sum("file1"))
:label("sha256sum file1")
:trim()
:line()
-- Default format: "<hash> <filename>"
local hash = text:match("^(%x+)%s")
assert(hash ~= nil, "failed to parse sha256")
Verify checksums
local Sha256sum = require("wardlib.app.sha256sum").Sha256sum
-- sha256sum -c --strict -- checksums.txt
local cmd = Sha256sum.check("checksums.txt", { strict = true })
cmd:run()
Read checksum list from stdin
local proc = require("ward.process")
local Sha256sum = require("wardlib.app.sha256sum").Sha256sum
-- printf '%s' "<hash> file" | sha256sum -c
local feeder = proc.cmd("printf", "%s", "hello\n")
(feeder | Sha256sum.check(nil)):run()