REDO-ALWAYS(1)

πŸ“¦
version 4.0.7 Β· 2 versions
, in arch rolling, nixos 26.05, nixpkgs unstable

πŸ’… REDO-ALWAYS(1) β€” the redo-always glow-up πŸŽ€

okay so bestie, welcome to the redo-always page from the General Commands Manual β€” it's short, it's iconic, it's giving "small but mighty" ✨

🌸 NAME

redo-always β€” marks the current redo target as always needing to be rebuilt πŸ’«

πŸ¦‹ SYNOPSIS

redo-always

that's it. no flags, no args, no drama. periodt. πŸ’…

πŸ’– DESCRIPTION

so redo(1) is this whole tool for building files and then rebuilding them whenever any of their dependencies have changed β€” king behaviour, honestly πŸ‘‘.

redo-always, when you invoke it from inside a dofile, adds a dependency on the current target that is literally impossible to satisfy. like, not "hard", not "eventually" β€” impossible 🫢. the result? the target gets rebuilt every single time if you pass it as an argument to redo-ifchange(1). forever. no cap. πŸ”₯

✨ EXAMPLES

okay so picture these three dofiles, all.do, b.do and c.do β€” a whole little ecosystem 🧚:

all.do

#!/bin/sh
redo-ifchange b

b.do

#!/bin/sh
redo-ifchange c
sleep 1
date +%s

c.do

#!/bin/sh
redo-always
date +%s

now if you invoke redo(1) in a directory that has these three files, it'll build a file named c containing a timestamp, and a file named b containing a timestamp that is at least one second later ⭐.

and both b and c will always be rebuilt whenever you invoke redo(1) β€” because the default target all depends on b, which in turn depends on c, which is carrying that impossible-to-satisfy dependency like the main character it is πŸ’€πŸ‘‘

🌈 HISTORY

redo-always was designed by Avery Pennarun as part of his redo implementation, and implemented by Γ†lla Chiana Moskopp. collab of the century, honestly πŸ«ΆπŸ’œ

πŸŽ€ AUTHOR

redo-always and this man page were written by Γ†lla Chiana Moskopp. writing the tool and then writing the docs about the tool? that's called range, bestie ✨

Copyright Β© 2014-2016 Γ†lla Chiana Moskopp. License AGPLv3+: GNU Affero GPL version 3 or later <http://www.gnu.org/licenses/agpl-3.0.html>.

This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. (read that again: NO WARRANTY. absolutely none. 😭)

πŸ“ SEE ALSO

redo(1), redo-dot(1), redo-ifchange(1), redo-ifcreate(1), redo-ood(1), redo-sources(1), redo-stamp(1), redo-targets(1) β€” the whole friend group, go say hi πŸ’–

πŸ™ˆ BUGS

heads up bestie: redo-always may break if the target filename contains a tab or a newline. like. genuinely. don't do that πŸ’€

and that's the page! this was REDO-ALWAYS(1) from the General Commands Manual β€” go build something and let it rebuild itself forever, you absolute icon πŸ¦‹πŸ’…πŸŒΈ

πŸ“¦ where this page comes from