X-Git-Url: http://www.git.cypherpunks.ru/?p=goredo.git;a=blobdiff_plain;f=usage.go;h=80bea559a98c7f6bb9e1bcc89759e5fe35aeb04e;hp=57791094ee252f516831d26aa8153ff90e576734;hb=ce96a1c785b32af13264225c0bf7ae8370a5af21;hpb=ab0f45138762d5fdf412926f0582b3a70534b1b6 diff --git a/usage.go b/usage.go index 5779109..80bea55 100644 --- a/usage.go +++ b/usage.go @@ -1,5 +1,5 @@ /* -goredo -- redo implementation on pure Go +goredo -- djb's redo implementation on pure Go Copyright (C) 2020-2021 Sergey Matveev This program is free software: you can redistribute it and/or modify @@ -21,13 +21,13 @@ import ( "flag" "fmt" "os" - "runtime" - "strings" ) const ( - Version = "0.10.0" - Warranty = `This program is free software: you can redistribute it and/or modify + Version = "1.3.0" + Warranty = `Copyright (C) 2020-2021 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 the Free Software Foundation, version 3 of the License. @@ -40,56 +40,79 @@ You should have received a copy of the GNU General Public License along with this program. If not, see .` ) -func versionGet() string { - return strings.Join([]string{ - "goredo", Version, "built with", runtime.Version(), - }, " ") -} +func usage(cmd string) { + var d string + switch cmd { + case "redo": + d = `Usage: redo [options] [target ...] + +Forcefully and *sequentially* build specified targets.` + case "redo-ifchange": + d = `Usage: redo-ifchange target [...] + +Build specified targets in parallel, if they are changed. +Record them as dependencies for current target.` + case "redo-ifcreate": + d = `Usage: redo-ifcreate target [...] + +Record ifcreate dependency for current target. Unusable outside .do.` + case "redo-always": + d = `Usage: redo-always + +Always build current target. Unusable outside .do.` + case "redo-cleanup": + d = `Usage: redo-cleanup [-dry-run] {full,log,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 ] + +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": + d = `Usage: redo-dot target [...] + +Write dependency DOT graph to stdout.` + case "redo-stamp": + 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": + 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": + d = `Usage: redo-targets + +List all currently known targets.` + case "redo-sources": + d = `Usage: redo-sources + +List all currently known source files.` + case "redo-ood": + d = `Usage: redo-ood + +List all currently known out-of-date targets.` + default: + d = `Usage: goredo -symlinks -func usage() { - fmt.Fprintf(os.Stderr, versionGet()+` -Copyright (C) 2020-2021 Sergey Matveev -License GPLv3: GNU GPL version 3 -This is free software: you are free to change and redistribute it. -There is NO WARRANTY, to the extent permitted by law. - -redo, redo-{always,cleanup,dot,ifchange,ifcreate,log,stamp,whichdo} must -be linked to goredo executable. It determines the command by its own name. -You can create them by running: goredo -symlinks. - -* redo [options] [target ...] - forcefully and *sequentially* build specified targets -* redo-always - always build current target. Unusable outside .do -* redo-cleanup {full,log,tmp} [...] - remove either all goredo's related temporary files, or kept stderr - logs, or everything (including .redo directories) related -* redo-dot target [...] - write dependency DOT graph to stdout -* redo-ifchange target [...] - build specified targets in parallel, if they are changed. Record them - as dependencies for current target -* redo-ifcreate target [...] - record ifcreate dependency for current target. Unusable outside .do -* redo-log 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 -* 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 -* redo-whichdo target - display .do search paths for specified target. Exits successfully - if the last .do in output if the found existing one - -Options: -`) +goredo expects to be called through the symbolic link to it. +Available commands: redo, redo-always, redo-cleanup, redo-dot, +redo-ifchange, redo-ifcreate, redo-log, redo-stamp, 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)`) + (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`) }