lotabout / rargs Goto Github PK
View Code? Open in Web Editor NEWxargs + awk with pattern matching support. `ls *.bak | rargs -p '(.*)\.bak' mv {0} {1}`
License: MIT License
xargs + awk with pattern matching support. `ls *.bak | rargs -p '(.*)\.bak' mv {0} {1}`
License: MIT License
Firstly โ thank you v much for rargs
! I use it a lot. It's probably the most underrated "new cli tools" library.
What should the exit code of an rargs command?
Currently it seems to return successfully even if there were lots of errors in the individual commands.
I'd like to be able to understand if any command failed (e.g. did any string fail to be grepped in a file). Is there a way of doing that with the current library?
For the sake of ergonomics and performance, IMO the default number of threads should be the number of CPU's. In my experience, the cases where single-threaded behavior is required are the exception, not the rule, and users can explicitly opt in for single-threaded behavior if needed.
This would indirectly solve a different issue: the only way to automatically peg the number of threads to the number of CPU's is to set --worker 0 --threads 0
even though the worker
argument is listed as deprecated.
Running rargs --version
from rargs-v0.2.3-x86_64-unknown-linux-gnu.tar.gz
gives 0.2.2
.
now:
cmd | rargs rm {}
I want not to have to specify: {}
i want to do:
cmd | rargs rm
without {}
you can check if 1 argument then you can omit: {}
Hi and happy new year,
Given the most general running scenario involving a pattern
rargs -p <pattern> <cmd>
I'm unsure whether it makes sense to run cmd
no matter if the pattern is matched ; but at least I can tell that it is not always what I expect from Rargs.
Take for instance the common scenario when some files, e.g.
1. Some name
10. Another name
need to be renamed like
01. Some name
10. Another name
There, I wish I was able to type
ls |rargs -p '^(\d\..*)' -- mv "'{1}'" "'0{1}'"
but it wouldn't currently work since Rargs would execute mv for both files, instead of the first one only.
xargs has a -t
argument which prints the commands before running it!
Currently rargs completely panics if you pass it a program it can't exec; I'd expected it to fail of course, but maybe with a slightly better message ๐
$ cat myfile.txt | rargs something
thread '<unnamed>' panicked at 'command failed to start: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/libcore/result.rs:1165:5
...
It prints the panic for each line of the input file.
Thanks for the tool! I've been looking for something handy like this ๐
Ran cargo test for testing unit test and two tests failed on a Windows machine.
The error of a cargo test looks like:
running 15 tests
test test_field_separator ... FAILED
test regex_should_match ... FAILED
test test_default_delimiter ... FAILED
test test_delimiter ... FAILED
test test_global_field_separator ... FAILED
test test_line_num_should_work ... FAILED
test test_no_read0 ... ok
test test_negtive_regex_group_should_work ... FAILED
test test_range_both ... FAILED
test test_range_left_inf ... FAILED
test test_range_right_inf ... FAILED
test test_read0_long ... FAILED
test test_read0_short ... FAILED
test test_regex_group_name_should_match ... FAILED
test test_start_num_should_be_working ... FAILED
failures:
---- test_field_separator stdout ----
thread 'test_field_separator' panicked at 'Assertion failed for ./target/release/rargs -d , echo X{3..4:_}X
with: Unexpected stdout
with: Didn't match.
diff=
``-X3_4X
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---- regex_should_match stdout ----
thread 'regex_should_match' panicked at 'Assertion failed for `./target/release/rargs -p ^(?P<year>\d{4})-(\d{2})-(\d{2})$ echo {1} {2} {3}`
with: Unexpected stdout
with: Didn't match.
diff=
``-2018 01 20
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_default_delimiter stdout ----
thread 'test_default_delimiter' panicked at 'Assertion failed for `./target/release/rargs echo X{1},{2},{3}X`
with: Unexpected stdout
with: Didn't match.
diff=
``-Xa,b,cX
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_delimiter stdout ----
thread 'test_delimiter' panicked at 'Assertion failed for `./target/release/rargs -d , echo X{1},{2},{3},{4}X`
with: Unexpected stdout
with: Didn't match.
diff=
``-Xa,b,,cX
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_global_field_separator stdout ----
thread 'test_global_field_separator' panicked at 'Assertion failed for `./target/release/rargs -d , -s / echo X{3..4}X`
with: Unexpected stdout
with: Didn't match.
diff=
``-X3/4X
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_line_num_should_work stdout ----
thread 'test_line_num_should_work' panicked at 'Assertion failed for `./target/release/rargs echo {LN} {}`
with: Unexpected stdout
with: Didn't match.
diff=
``-1 line 1
2 line 2
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_negtive_regex_group_should_work stdout ----
thread 'test_negtive_regex_group_should_work' panicked at 'Assertion failed for `./target/release/rargs -p ^(?P<year>\d{4})-(\d{2})-(\d{2})$ echo {-3} {-2} {-1}`
with: Unexpected stdout
with: Didn't match.
diff=
``-2018 01 20
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_range_both stdout ----
thread 'test_range_both' panicked at 'Assertion failed for `./target/release/rargs -d , echo X{3..3}X`
with: Unexpected stdout
with: Didn't match.
diff=
``-X3X
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_range_left_inf stdout ----
thread 'test_range_left_inf' panicked at 'Assertion failed for `./target/release/rargs -d , echo X{..3}X`
with: Unexpected stdout
with: Didn't match.
diff=
``-X1 2 3X
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_range_right_inf stdout ----
thread 'test_range_right_inf' panicked at 'Assertion failed for `./target/release/rargs -d , echo X{3..}X`
with: Unexpected stdout
with: Didn't match.
diff=
``-X3 4 5 6X
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_read0_long stdout ----
thread 'test_read0_long' panicked at 'Assertion failed for `./target/release/rargs --read0 echo {}`
with: Unexpected stdout
with: Didn't match.
diff=
``-a
b
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_read0_short stdout ----
thread 'test_read0_short' panicked at 'Assertion failed for `./target/release/rargs -0 echo {}`
with: Unexpected stdout
with: Didn't match.
diff=
``-a
b
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_regex_group_name_should_match stdout ----
thread 'test_regex_group_name_should_match' panicked at 'Assertion failed for `./target/release/rargs -p ^(?P<year>\d{4})-(\d{2})-(\d{2})$ echo {year} {2} {3}`
with: Unexpected stdout
with: Didn't match.
diff=
``-2018 01 20
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
---- test_start_num_should_be_working stdout ----
thread 'test_start_num_should_be_working' panicked at 'Assertion failed for `./target/release/rargs -n 10 echo {LN} {}`
with: Unexpected stdout
with: Didn't match.
diff=
``-10 line 1
11 line 2
```', C:\Users\Administrator\.cargo\registry\src\index.crates.io-6f17d22bba15001f\assert_cli-0.6.3\src\assert.rs:441:13
failures:
regex_should_match
test_default_delimiter
test_delimiter
test_field_separator
test_global_field_separator
test_line_num_should_work
test_negtive_regex_group_should_work
test_range_both
test_range_left_inf
test_range_right_inf
test_read0_long
test_read0_short
test_regex_group_name_should_match
test_start_num_should_be_working
test result: FAILED. 1 passed; 14 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
** rargs version - Rargs 0.3.0 **
** OS version - Windows version 10.0.20348 Build 20348 **
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.