nix ls-{nar,store} --json: Respect -R
This commit is contained in:
		
							parent
							
								
									c8155e9f5f
								
							
						
					
					
						commit
						4db0a9555e
					
				
					 4 changed files with 13 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -121,7 +121,7 @@ void BinaryCacheStore::addToStore(const ValidPathInfo & info, const ref<std::str
 | 
			
		|||
 | 
			
		||||
            {
 | 
			
		||||
                auto res = jsonRoot.placeholder("root");
 | 
			
		||||
                listNar(res, narAccessor, "");
 | 
			
		||||
                listNar(res, narAccessor, "", true);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -182,7 +182,8 @@ ref<FSAccessor> makeNarAccessor(ref<const std::string> nar)
 | 
			
		|||
    return make_ref<NarAccessor>(nar);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void listNar(JSONPlaceholder & res, ref<FSAccessor> accessor, const Path & path)
 | 
			
		||||
void listNar(JSONPlaceholder & res, ref<FSAccessor> accessor,
 | 
			
		||||
    const Path & path, bool recurse)
 | 
			
		||||
{
 | 
			
		||||
    auto st = accessor->stat(path);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -200,8 +201,11 @@ void listNar(JSONPlaceholder & res, ref<FSAccessor> accessor, const Path & path)
 | 
			
		|||
        {
 | 
			
		||||
            auto res2 = obj.object("entries");
 | 
			
		||||
            for (auto & name : accessor->readDirectory(path)) {
 | 
			
		||||
                auto res3 = res2.placeholder(name);
 | 
			
		||||
                listNar(res3, accessor, path + "/" + name);
 | 
			
		||||
                if (recurse) {
 | 
			
		||||
                    auto res3 = res2.placeholder(name);
 | 
			
		||||
                    listNar(res3, accessor, path + "/" + name, true);
 | 
			
		||||
                } else
 | 
			
		||||
                    res2.object(name);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,9 @@ ref<FSAccessor> makeNarAccessor(ref<const std::string> nar);
 | 
			
		|||
 | 
			
		||||
class JSONPlaceholder;
 | 
			
		||||
 | 
			
		||||
void listNar(JSONPlaceholder & res, ref<FSAccessor> accessor, const Path & path);
 | 
			
		||||
/* Write a JSON representation of the contents of a NAR (except file
 | 
			
		||||
   contents). */
 | 
			
		||||
void listNar(JSONPlaceholder & res, ref<FSAccessor> accessor,
 | 
			
		||||
    const Path & path, bool recurse);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -77,7 +77,7 @@ struct MixLs : virtual Args, MixJSON
 | 
			
		|||
 | 
			
		||||
        if (json) {
 | 
			
		||||
            JSONPlaceholder jsonRoot(std::cout);
 | 
			
		||||
            listNar(jsonRoot, accessor, path);
 | 
			
		||||
            listNar(jsonRoot, accessor, path, recursive);
 | 
			
		||||
        } else
 | 
			
		||||
            listText(accessor);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue