]> Cypherpunks.ru repositories - goredo.git/blobdiff - usage.go
Redundant @documentencoding
[goredo.git] / usage.go
index 56ccf574faf9277932f2b41dc78ea2d983beab7c..e67077fdfd40c6a8c5bab6e376ed9301c92fd17f 100644 (file)
--- a/usage.go
+++ b/usage.go
@@ -1,6 +1,6 @@
 /*
 goredo -- djb's redo implementation on pure Go
-Copyright (C) 2020-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2020-2023 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -24,8 +24,8 @@ import (
 )
 
 const (
-       Version  = "1.7.0"
-       Warranty = `Copyright (C) 2020-2021 Sergey Matveev
+       Version  = "1.30.0"
+       Warranty = `Copyright (C) 2020-2023 Sergey Matveev
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -43,83 +43,95 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.`
 func usage(cmd string) {
        var d string
        switch cmd {
-       case "redo":
-               d = `Usage: redo [options] [target ...]
+       case CmdNameRedo:
+               d = `Usage: redo [-j X] [-k] [-s] [-x|-xx] [options] [target ...]
 
 Forcefully and *sequentially* build specified targets.
 If no targets specified, then use "all" one.`
-       case "redo-ifchange":
-               d = `Usage: redo-ifchange target [...]
+       case CmdNameRedoIfchange:
+               d = `Usage: redo-ifchange [-j X] [-k] [-s] [-x|-xx] target [...]
 
 Build specified targets in parallel, if they are changed.
 Record them as dependencies for current target.`
-       case "redo-ifcreate":
+       case CmdNameRedoIfcreate:
                d = `Usage: redo-ifcreate target [...]
 
 Record ifcreate dependency for current target. Unusable outside .do.`
-       case "redo-always":
+       case CmdNameRedoAlways:
                d = `Usage: redo-always
 
 Always build current target. Unusable outside .do.`
-       case "redo-cleanup":
-               d = `Usage: redo-cleanup [-dry-run] {full,log,tmp} [...]
+       case CmdNameRedoCleanup:
+               d = `Usage: redo-cleanup [-n] {full,log,lock,tmp} [...]
 
-Remove either all goredo's related temporary files, or kept stderr
-logs, or everything (including .redo directories) related.`
-       case "redo-log":
-               d = `Usage: redo-log target [ | tai64nlocal ]
+Remove either all of goredo's related temporary files, or kept stderr
+logs, or lock files, or everything (including .redo directories) related.`
+       case CmdNameRedoLog:
+               d = `Usage: redo-log [-c] [-r] target [ | tai64nlocal ]
 
 Display kept target's stderr with TAI64N timestamped lines. Only the
 last build is kept. You must enable stderr keeping with either -logs,
-or REDO_LOGS=1.`
-       case "redo-dot":
+or REDO_LOGS=1. -c option show the exact command invoked, start and
+finish time. -r option recursively and linearly show also all deeper
+redo calls and their logs.`
+       case CmdNameRedoDot:
                d = `Usage: redo-dot target [...]
 
 Write dependency DOT graph to stdout.`
-       case "redo-stamp":
+       case CmdNameRedoStamp:
                d = `Usage: redo-stamp < [$3]
 
 Record stamp dependency for current target. Unusable outside .do.
 Stamp dependency does not play any role, as all targets are hashed
 anyway.`
-       case "redo-whichdo":
+       case CmdNameRedoWhichdo:
                d = `Usage: redo-whichdo target
 
 Display .do search paths for specified target. Exits successfully
 if the last .do in output if the found existing one.`
-       case "redo-targets":
+       case CmdNameRedoTargets:
                d = `Usage: redo-targets [target ...]
 
 List all currently known targets.`
-       case "redo-sources":
+       case CmdNameRedoSources:
                d = `Usage: redo-sources [target ...]
 
 List all currently known source files.`
-       case "redo-ood":
+       case CmdNameRedoOOD:
                d = `Usage: redo-ood [target ...]
 
 List all currently known out-of-date targets.`
-       case "redo-affects":
+       case CmdNameRedoAffects:
                d = `Usage: redo-affects target [...]
 
 List all targets that will be affected by changing the specified ones.`
+       case CmdNameRedoDepFix:
+               d = `Usage: redo-depfix
+
+Traverse over all .redo directories beneath and check if inode's information
+(ctime/mtime) differs. Update dependency if file's content is still the same.`
        default:
                d = `Usage: goredo -symlinks
 
 goredo expects to be called through the symbolic link to it.
 Available commands: redo, redo-affects, redo-always, redo-cleanup,
-redo-dot, redo-ifchange, redo-ifcreate, redo-log, redo-ood,
-redo-sources, redo-stamp, redo-targets, redo-whichdo.`
+redo-depfix, redo-dot, redo-ifchange, redo-ifcreate, redo-log,
+redo-ood, redo-sources, redo-stamp, redo-targets, redo-whichdo.`
        }
        fmt.Fprintf(os.Stderr, "%s\n\nCommon options:\n", d)
        flag.PrintDefaults()
        fmt.Fprintln(os.Stderr, `
 Additional environment variables:
   NO_COLOR -- disable messages colouring
-  REDO_NO_SYNC -- disable files/directories explicit filesystem syncing
   REDO_TOP_DIR -- do not search for .do above that directory
-                  (it can contain .redo/top as an alternative)
-  REDO_INODE_NO_TRUST -- do not trust inode information (except for size)
-                         and always check file's hash
+                  (it can contain .redo/top as an alternative)`)
+       if cmd == CmdNameRedo || cmd == CmdNameRedoIfchange {
+               fmt.Fprintln(os.Stderr, `
+  REDO_NO_SYNC -- disable files/directories explicit filesystem syncing
+  REDO_INODE_TRUST -- {none,ctime,mtime}, either do not trust inode
+                      information at all (always check size and hash), or
+                      trust its ctime (the default one), or be satisfied
+                      with its mtime
   REDO_MAKE -- bmake/gmake/none(default) jobserver protocol compatibility`)
+       }
 }