Commit graph

5365 commits

Author SHA1 Message Date
Andreas Hartmann
df41fed640 install: Mark '-S', '-b' and '--backup' as implemented
Removes the "unimplemented" notice from the respective help texts. Stop
printing errors if the options are supplied via CLI.
2021-06-27 09:54:55 +02:00
Andreas Hartmann
5437985705 install: Implement '--backup' and '-b'
Adds the ability to perform file backups before installing newer files on top
of existing ones. Adds a status message about backups to stdout if running in
verbose mode.
2021-06-27 09:54:17 +02:00
Andreas Hartmann
49a9f359bb install: Make use of 'backup_controls' for '--backup' opts
Use the methods and types offered by the 'backup_controls' module to implement
the logic for backing up files instead of overwriting.
2021-06-27 09:54:07 +02:00
Hanif Bin Ariffin
4778a64989 ls: Refactored options and other long constants to fix formatting
Signed-off-by: Hanif Bin Ariffin <hanif.ariffin.4326@gmail.com>

Keep one of the texts in-place

Signed-off-by: Hanif Bin Ariffin <hanif.ariffin.4326@gmail.com>

Reduced the fix to just formatting changes

Signed-off-by: Hanif Bin Ariffin <hanif.ariffin.4326@gmail.com>
2021-06-27 14:55:55 +08:00
Sylvestre Ledru
5fce7ecbaa
Merge pull request #2414 from miDeb/completions2
uutils: implement shell completions
2021-06-26 21:26:23 +02:00
Andreas Hartmann
a85adf3c3f install: Internally rename short '-b' option
Rename from OPT_BACKUP_2 to a more descriptive name "OPT_BACKUP_NO_ARGS".
2021-06-26 00:27:08 +02:00
Andreas Hartmann
3155cd510f install: Fix argument parsing for '--backup'
The '--backup' option would previously accept arguments separated from the
option either by a space or an equals sign. The GNU implementation strictly
requires an "equals" for argument separation.

As the argument to '--backup' is optional, the equals sign mustn't be ommited
as otherwise there is no way to tell a file argument apart from an argument
that's meant for the '--backup' option. This ensures that if '--backup' is
present it either has no further associated arguments (i.e. fallback to the
default), or the arguments are separated by an equals sign.
2021-06-26 00:27:08 +02:00
Andreas Hartmann
211af9a3ea backup_control: Add todo for gnu compliant behavior
The logic behind the file-backup implementation currently doesn't comply 100%
with what the GNU manual [1] describes. Adds a TODO so it isn't forgotten.

[1]: https://www.gnu.org/software/coreutils/manual/html_node/Backup-options.html
2021-06-26 00:27:08 +02:00
Michael Debertol
9b8150d283 uutils: document completions in the readme 2021-06-25 21:23:45 +02:00
Michael Debertol
a87538b77d uutils: uninstall shell completions 2021-06-25 21:23:45 +02:00
Michael Debertol
73cfcc27e7 cp: insert some spaces into the help text 2021-06-25 21:23:45 +02:00
Michael Debertol
2e027bf45d true, false: enable --help and --version 2021-06-25 21:23:45 +02:00
Michael Debertol
0fec449de3 mkfifo: make rustfmt work 2021-06-25 21:23:45 +02:00
Michael Debertol
a8d62b9b23 fmt: fix indentation for help 2021-06-25 21:23:45 +02:00
Michael Debertol
a9e79c72c7 uutils: enable shell completions
This adds a hidden `completion` subcommand to coreutils. When invoked with
`coreutils completion <utility> <shell>` a completion file will be printed
to stdout. When running `make install` those files will be created for all
utilities and copied to the appropriate locations.
`make install` will install completions for zsh, fish and bash; however,
clap also supports generating completions for powershell and elvish.

With this patch all utilities are required to have a publich uu_app function
that returns a clap::App in addition to the uumain function.
2021-06-25 21:23:45 +02:00
Michael Debertol
0531153fa6 uutils: move clap::App creation to separate functions 2021-06-25 21:23:45 +02:00
Sylvestre Ledru
5981351222
Merge pull request #2455 from miDeb/sort/human-numeric
sort: compatibility of human-numeric sort
2021-06-25 21:22:21 +02:00
Michael Debertol
004b5d1b38 format: formatting 2021-06-25 19:35:33 +02:00
Michael Debertol
548a895cd6 sort: compatibility of human-numeric sort
Closes #1985.
This makes human-numeric sort follow the same algorithm as GNU's/FreeBSD's sort.
As documented by GNU in https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html,
we first compare by sign, then by si unit and finally by the numeric value.
2021-06-25 18:19:00 +02:00
Sylvestre Ledru
fef8761ac1
Merge pull request #2443 from miDeb/sort/data-oriented
sort: separate additional data from the Line struct
2021-06-24 21:19:23 +02:00
Sylvestre Ledru
ab5d581fa4
Merge pull request #2439 from tertsdiepraam/numfmt/round-and-c-locale
`numfmt`: add `--round` and other minor improvements
2021-06-24 21:18:59 +02:00
Sylvestre Ledru
5d7cf61128
Merge pull request #2429 from miDeb/install/target-dir
install: support --target-directory
2021-06-24 21:06:44 +02:00
Michael Debertol
8bebfbb3e6 sort: don't store slices for general numeric sort
Gerenal numeric sort works by comparing pre-parsed floating point
numbers. That means that we don't have to store the &str the float was
parsed from.

As a result, memory usage was slightly reduced for general numeric sort.
2021-06-24 18:33:33 +02:00
Sylvestre Ledru
9d7e634789
Merge pull request #2454 from jvasile/docs-uutil
Fix typo: duplicated word
2021-06-24 16:55:12 +02:00
James Vasile
b03d4c02bb Fix typo: duplicated word 2021-06-24 10:44:47 -04:00
Sylvestre Ledru
f421761333
Merge pull request #2448 from sylvestre/gnu-fail-early
CI/GNU: if an error is detected, don't generate the json file
2021-06-24 10:23:25 +02:00
Sylvestre Ledru
f6035d2a60
Merge pull request #2453 from rivy/fix.spell
docs ~ fix addition of 'jhscheer' to spell-checker exceptions word list
2021-06-24 08:04:57 +02:00
Roy Ivy III
2990ebd0aa docs ~ fix addition of 'jhscheer' to spell-checker exceptions word list 2021-06-23 17:02:25 -05:00
Sylvestre Ledru
3b2d0d17fa
Merge pull request #2446 from jhscheer/groups_gnu_testsuite
groups: fixes to pass GNU's Testsuite
2021-06-23 20:15:12 +02:00
Sylvestre Ledru
daf9bdcace
Merge pull request #2452 from rivy/fix.cicd-deps
Fix CICD dependency display errors
2021-06-23 20:13:22 +02:00
Roy Ivy III
b881c4ef92 docs ~ add 'Jan Scheer' to spell-checker exceptions word list 2021-06-23 12:10:48 -05:00
Sylvestre Ledru
44c770d234
Merge pull request #2450 from jhscheer/id_refactor_identifier
id: refactor identifiers
2021-06-23 19:05:57 +02:00
Roy Ivy III
42fed9186d maint/docs ~ add ToDO for change from cargo-tree to cargo tree 2021-06-23 12:03:35 -05:00
Roy Ivy III
17a959853e maint/CICD ~ suppress useless rustup notices 2021-06-23 10:05:49 -05:00
Roy Ivy III
8884666ce0 maint/CICD ~ fix dependency display errors (relax network lockout) 2021-06-23 10:00:27 -05:00
Jan Scheer
11f36eae3b tests/groups: fix/add tests for (multiple) username(s) 2021-06-23 16:50:03 +02:00
Sylvestre Ledru
d40fc65ee6
Merge branch 'master' into numfmt/round-and-c-locale 2021-06-23 12:39:55 +02:00
Sylvestre Ledru
a73e71ba74
Merge pull request #2437 from miDeb/cp/reflink-auto
cp: default to --reflink=auto on linux and macos
2021-06-23 12:37:44 +02:00
Sylvestre Ledru
87eaf6e80a
Merge pull request #2447 from jhscheer/locale_c
fix some issues with locale (replace "LANGUAGE" with "LC_ALL")
2021-06-23 12:36:40 +02:00
Jan Scheer
4b3da59b0e id: refactor identifiers
* change of identifier names and spelling according to the suggestions in the review of #2446
2021-06-23 12:27:01 +02:00
Jan Scheer
c0be979611 fix some issues with locale (replace "LANGUAGE" with "LC_ALL")
`LANGUAGE=C` is not enough, `LC_ALL=C` is needed as the environment
variable that overrides all the other localization settings.

e.g.
```bash
$ LANGUAGE=C id foobar
id: ‘foobar’: no such user

$ LC_ALL=C id foobar
id: 'foobar': no such user
```

* replace `LANGUAGE` with `LC_ALL` as environment variable in the tests
* fix the the date string of affected uutils
* replace `‘` and `’` with `'`
2021-06-23 11:30:28 +02:00
Sylvestre Ledru
178399c20e
Merge pull request #2449 from miDeb/temp-win
Make tests pass on a windows VM
2021-06-23 08:40:30 +02:00
Michael Debertol
d60afb8947 mkdir: note that -m is not supported on windows 2021-06-23 00:59:51 +02:00
Michael Debertol
ce0801db90 tests/mv: test uutils mv instead of system util
Calling `cmd_keepenv("mv")` spawned the system `mv` instead of
the uutils `mv`. Also, `keepenv` isn't necessary because it doesn't
need to inherit environment variables.
We now actually check the stderr, because previously the result of
`ends_with` was not used, making the test pass even when it shouldn't.

I disabled the test on windows because `mkdir` does not support `-m` on
windows, making the test fail because there will be no permission error.
On FreeBSD there isn't a permission error either, and `mv` succeeds.
2021-06-23 00:58:19 +02:00
Michael Debertol
4a956f38b9 sort: separate additional data from the Line struct
Data that was previously boxed inside the `Line` struct was moved to
separate vectors. Inside of each `Line` remains only an index that
allows to access that data.
This helps with keeping the `Line` struct small and therefore reduces
memory usage in most cases.
Additionally, this improves performance because one big allocation (the
vectors) are faster than many small ones (many boxes inside of each
`Line`). Those vectors can be reused as well, reducing the amount of
(de-)allocations.
2021-06-23 00:36:05 +02:00
Sylvestre Ledru
34db1c5916
Simple dash, not double 2021-06-22 18:03:12 +02:00
Michael Debertol
622504467f mktemp: note that windows uses a different env var for tmpdir
On windows `std::env::temp_dir` uses the `TMP` environment variable
instead of `TMPDIR`.
2021-06-22 17:44:45 +02:00
Michael Debertol
e5a7bcbb9d tests: keep env vars for the temporary directory
On some Windows machines this would otherwise cause `std::env::temp_dir`
to fall back to a path that is not writeable (C:\\Windows).
Since by default integration tests don't inherit env vars from the
parent, we have to override this in some cases.
2021-06-22 17:43:46 +02:00
Sylvestre Ledru
ed8d390ca7 CI/GNU: if an error is detected, don't generate the json file
Avoid to generate incorrect json files
2021-06-22 14:32:26 +02:00
Sylvestre Ledru
e48ff9dd9e
Merge pull request #2441 from siebenHeaven/ls_dangling_symlinks
ls: Fix problems dealing with dangling symlinks
2021-06-21 22:34:15 +02:00