2 releases
Uses new Rust 2024
new 0.1.1 | Mar 21, 2025 |
---|---|
0.1.0 | Mar 20, 2025 |
#29 in #text
34 downloads per month
26KB
498 lines
Project Finder
A command-line tool to discover coding projects in specified directories.
It identifies projects based on common marker files (e.g., package.json
, Cargo.toml
, .git
directories).
Goal
The goal of this project is to quickly and efficiently locate coding projects within a directory structure. This is particularly useful for developers working in large codebases or managing multiple repositories.
Features
- Fast project discovery: Quickly scans directories to identify potential projects.
- Multiple project types: Recognizes projects based on various marker files for different languages and build systems.
- Configurable search depth: Limits the search depth to improve performance.
- Verbose output: Provides detailed information about the search process.
- Workspace Awareness: Detects and handles workspace configurations correctly, such as Javascript and Rust workspaces.
- Concurrency: Uses asynchronous tasks to process multiple directories in parallel, improving performance.
Requirements
To use Project Finder, you need the following dependencies installed on your system:
- fd: A simple, fast, and user-friendly alternative to
find
.- Installation instructions: https://github.com/sharkdp/fd#installation
- ripgrep (rg): A line-oriented search tool that recursively searches directories for a regex pattern.
- Installation instructions: https://github.com/BurntSushi/ripgrep#installation
These tools must be available in your system's PATH.
Installation
cargo install project-finder
Usage
project-finder [OPTIONS] [PATHS]
Options
- -d, --depth : Maximum search depth (default: 5)
- -n, --max-results <MAX_RESULTS>: Maximum number of results to return (default: 0, unlimited)
- -v, --verbose: Show verbose output
- PATHS: Directories to search for projects (default: ".")
Examples
-
Find projects in the current directory with the default depth:
project-finder
-
Find projects in a specific directory with a maximum depth of 3:
project-finder --depth 3 /path/to/search
-
Find projects in multiple directories with verbose output:
project-finder --verbose /path/to/search1 /path/to/search2
- Limit the number of results to 10:
project-finder --max-results 10
Use Cases
- Quickly locating projects: Easily find all projects within a large directory structure.
- Managing multiple repositories: Discover all repositories in a directory.
- Automated scripting: Integrate project discovery into scripts for build automation, testing, or deployment.
- Workspace management: Identify workspace roots for managing multiple related projects.
License
This project is dual-licensed under either:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
at your option.
Dependencies
~7–18MB
~267K SLoC