Skip to content

Simacoder/polydepend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PolyDepend

A Cross-Language Dependency Resolver and Manager


Overview

PolyDepend is a powerful and extensible tool designed to resolve dependency issues for projects written in various programming languages. It analyzes your project files, resolves version conflicts, and installs the required dependencies seamlessly.

Whether you are working with Python, JavaScript, Java, or other languages, PolyDepend simplifies dependency management, making it easier to maintain multi-language projects and monorepos.


Features

  • Multi-Language Support: Handles dependencies for Python, JavaScript, Java, Ruby, Go, Rust, and more.
  • Dependency Conflict Resolution: Automatically detects and resolves version conflicts.
  • Offline Mode: Caches dependencies for offline installation.
  • Dependency Visualization: Generates dependency graphs to identify conflicts.
  • User-Friendly Interface: Comes with both CLI and GUI options.
  • Extensibility: Easily add support for new languages using plugins.

Installation

Install PolyDepend using pip:

    pip install polydepend

Usage

CLI Usage

Run the following command in your terminal:

    polydepend <path_to_your_project>

Example:

    polydepend /path/to/my/python/project

GUI Usage

Launch the graphical interface:

    python -m polydepend.gui
  1. Select your project folder.
  2. Analyze dependencies.
  3. Resolve conflicts and install.

Supported Languages

  • Python: requirements.txt, pyproject.toml
  • JavaScript: package.json, yarn.lock
  • Java: pom.xml, build.gradle
  • Ruby: Gemfile
  • Go: go.mod
  • Rust: Cargo.toml

Project Structure

polydepend/
│
├── src/
│   ├── analyzers/        # Language-specific dependency analyzers
│   ├── resolver/         # Core engine to resolve conflicts
│   ├── fetcher/          # Dependency installation modules
│   ├── cli.py            # Command-line interface
│   └── gui.py            # Graphical user interface
│
├── tests/                # Unit and integration tests
├── requirements.txt      # Python dependencies for development
├── README.md             # Project documentation
└── setup.py              # Packaging and distribution

Development

Clone the repository:

    git clone https://github.com/Simacoder/polydepend.git
    cd polydepend

Install development dependencies:

    pip install -r requirements.txt

Run tests:

    pytest tests/

Extending PolyDepend

To add support for a new language:

  • Create a new analyzer module in src/analyzers/.
  • Implement the analyze_dependencies() function for the new language.
  • Register the new analyzer in the resolver.

Example for Ruby:

def analyze_ruby_dependencies(project_path):
    """Parse Gemfile for dependencies."""
    # Your implementation here

Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch for your feature.
  3. Submit a pull request with a detailed description of your changes.

License

polyDepend is licensed under the MIT License. See LICENSE for details.


Contact

For questions or feedback, please contact:


Acknowledgments

Thanks to all open-source contributors and the development community for their inspiration and tools.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages