mirror of
https://github.com/kristoferssolo/project-finder.git
synced 2025-10-21 19:50:35 +00:00
89 lines
2.9 KiB
Markdown
89 lines
2.9 KiB
Markdown
# 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](https://github.com/sharkdp/fd#installation)
|
|
|
|
These tools must be available in your system's PATH.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
cargo install project-finder
|
|
```
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
project-finder [OPTIONS] [PATHS]
|
|
```
|
|
|
|
### Options
|
|
|
|
* **-d, --depth <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:
|
|
|
|
```bash
|
|
project-finder
|
|
```
|
|
|
|
* Find projects in a specific directory with a maximum depth of 3:
|
|
|
|
```bash
|
|
project-finder --depth 3 /path/to/search
|
|
```
|
|
|
|
* Find projects in multiple directories with verbose output:
|
|
|
|
```bash
|
|
project-finder --verbose /path/to/search1 /path/to/search2
|
|
```
|
|
|
|
* Limit the number of results to 10:
|
|
|
|
```bash
|
|
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](LICENSE-MIT) or [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT))
|
|
* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0))
|
|
|
|
at your option.
|