Repository: lsd-rs/lsd (language: rust)

Issue:
blocks not respected without `-l` when passed as cli args
- os: `Ubuntu 20.04`
- `lsd --version`: `0.19.0`
- `echo $TERM`: `xterm-256color`
- `echo $LS_COLORS`: 
```rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:```

## Expected behavior
```
λ lsd --version
lsd 0.18.0

λ lsd --classic --blocks "size,name" /tmp/foo
4 B /tmp/foo
```

## Actual behavior

It seems that the `size` block just stopped printing anything.

```
λ lsd --version
lsd 0.19.0

λ lsd --classic --blocks "size,name" /tmp/foo
/tmp/foo
```


Discussion / hints:
`lsd --classic --blocks "size,name" -l /tmp/foo`(adding `-l`) will give you what you are looking for. This change was brought in by the addition on config file.
Will bring back the old behavior when these are passed in as cli args.

Fix patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1bd13c3aa..f8d7f260d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Added
 ### Changed
 ### Fixed
+- Fix handling blocks passed without -l in cli from [meain](https://github.com/meain)
 
 ## [0.19.0] - 2020-12-13
 ### Added
diff --git a/src/flags/blocks.rs b/src/flags/blocks.rs
index ce8e1188c..e62182bbc 100644
--- a/src/flags/blocks.rs
+++ b/src/flags/blocks.rs
@@ -35,16 +35,14 @@ impl Blocks {
             Ok(Default::default())
         };
 
-        if matches.is_present("long") {
-            if !matches.is_present("ignore-config") {
-                if let Some(value) = Self::from_config(config) {
-                    result = Ok(value);
-                }
+        if matches.is_present("long") && !matches.is_present("ignore-config") {
+            if let Some(value) = Self::from_config(config) {
+                result = Ok(value);
             }
+        }
 
-            if let Some(value) = Self::from_arg_matches(matches) {
-                result = value;
-            }
+        if let Some(value) = Self::from_arg_matches(matches) {
+            result = value;
         }
 
         if matches.is_present("inode") {
@@ -238,7 +236,7 @@ mod test_blocks {
     #[test]
     fn test_configure_from_with_blocks_and_without_long() {
         let argv = vec!["lsd", "--blocks", "permission"];
-        let target = Ok::<_, Error>(Blocks::default());
+        let target = Ok::<_, Error>(Blocks(vec![Block::Permission]));
 
         let matches = app::build().get_matches_from_safe(argv).unwrap();
         let result = Blocks::configure_from(&matches, &Config::with_none());
@@ -275,7 +273,7 @@ mod test_blocks {
     fn test_configure_from_prepend_inode_without_long() {
         let argv = vec!["lsd", "--blocks", "permission", "--inode"];
 
-        let mut target_blocks = Blocks::default();
+        let mut target_blocks = Blocks(vec![Block::Permission]);
         target_blocks.0.insert(0, Block::INode);
         let target = Ok::<_, Error>(target_blocks);
 
@@ -300,9 +298,7 @@ mod test_blocks {
     fn test_configure_from_ignore_prepend_inode_without_long() {
         let argv = vec!["lsd", "--blocks", "permission,inode", "--inode"];
 
-        let mut target_blocks = Blocks::default();
-        target_blocks.0.insert(0, Block::INode);
-        let target = Ok::<_, Error>(target_blocks);
+        let target = Ok::<_, Error>(Blocks(vec![Block::Permission, Block::INode]));
 
         let matches = app::build().get_matches_from_safe(argv).unwrap();
         let result = Blocks::configure_from(&matches, &Config::with_none());


Test patch:
diff --git a/tests/integration.rs b/tests/integration.rs
index 4f09ad707..7b4eb86bf 100644
--- a/tests/integration.rs
+++ b/tests/integration.rs
@@ -128,7 +128,10 @@ fn test_list_block_inode_populated_directory_without_long() {
     dir.child("one").touch().unwrap();
     dir.child("two").touch().unwrap();
 
-    let matched = "one\ntwo\n$";
+    #[cfg(windows)]
+    let matched = "- one\n\\- two\n$";
+    #[cfg(unix)]
+    let matched = "\\d+ one\n\\d+ two\n$";
 
     cmd()
         .arg("--blocks")