Skip to content

Conversation

@osrufung
Copy link
Collaborator

No description provided.

osrufung and others added 9 commits October 22, 2025 16:32
- Updated swift-tools-version from 5.7 to 6.0
- Added swiftLanguageModes: [.v6] to Package.swift
- Changed all static var configuration to static let configuration for Swift 6 concurrency safety
- Added @preconcurrency import for ArgumentParser to handle non-Sendable CommandConfiguration
- All tests pass (19 tests)
- Build successful with Swift 6 language mode

Modified files:
- Package.swift: Swift 6.0 tools version and language mode
- CompareCommand.swift: static let + @preconcurrency import
- DependantCommand.swift: static let + @preconcurrency import
- GraphCommand.swift: static let + @preconcurrency import
- HistoryCommand.swift: static let + @preconcurrency import
- Main.swift: static let + @preconcurrency import
- ModulesCommand.swift: static let + @preconcurrency import

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Ignore editor and IDE specific configuration folders.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Changed ModulesCommand to read Podfile.lock directly from the filesystem
instead of requiring it to be committed to git. This fixes issue #24 where
users encountered yamlParsingFailed errors when running jungle modules on
new projects that haven't committed Podfile.lock to git yet.

Also added demo_project/ to .gitignore to exclude test projects.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Created Samples directory with two reference projects:
- SPMSample: Swift Package Manager project with Alamofire, RealmSwift, SwiftyJSON, Kingfisher
- CocoaPodsSample: iOS project with Moya, RxSwift, SnapKit, and other popular pods

Updated root README.md with sample project information and usage instructions.
Added individual README files for each sample explaining dependencies and usage.

These samples serve as reference implementations for testing Jungle's analysis
capabilities with different dependency management systems.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Created a comprehensive Makefile with the following targets:
- make build: Build the executable in release mode
- make install: Build and install to /usr/local/bin (customizable with PREFIX)
- make uninstall: Remove installed executable
- make clean: Clean build artifacts
- make test: Run tests
- make help: Show available commands

Updated README.md to document Makefile usage as the recommended installation
method, with examples of custom installation paths.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Updated the install and uninstall targets to automatically use sudo when
the target directory requires elevated permissions. The Makefile now:
- Checks if the install path is writable
- Automatically uses sudo for system directories like /usr/local/bin
- Works without sudo for user directories like ~/.local/bin

Updated README.md to clarify installation options:
- System-wide installation (may require password)
- User installation (no sudo required)

This fixes the "Permission denied" error when running make install.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Updated Makefile to install to ~/.local/bin by default instead of
/usr/local/bin, eliminating the need for sudo permissions.

Changes:
- Changed PREFIX default from /usr/local to $HOME/.local
- Removed sudo logic from install/uninstall targets
- Added PATH check that warns users if ~/.local/bin is not in PATH
- Simplified installation process with helpful PATH setup instructions

Updated README.md to reflect the simpler installation process:
- Single installation method (no system vs user choice)
- Clear PATH setup instructions
- Removed sudo/permission references

This makes installation easier and safer for users without requiring
elevated permissions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Updated DependantCommand to read Podfile.lock directly from the filesystem
instead of requiring it to be in git, matching the fix previously applied
to ModulesCommand.

Changed line 42-43 in DependantCommand.swift:
- Before: let podfileLock = try shell("git show HEAD:Podfile.lock", at: directoryURL)
- After: Read from filesystem using String(contentsOf:encoding:)

This fixes issue #24 for the dependant command, allowing it to work on
projects without git or with uncommitted Podfile.lock files.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Restructured SPMSample from a simple single-module package to a complex
multi-module architecture demonstrating internal dependencies and
realistic project structure.

New Architecture:
- Core: Base utilities module (no dependencies)
- Networking: HTTP client layer (depends on Core, Alamofire, SwiftyJSON)
- DataLayer: Data persistence (depends on Core, RealmSwift)
- APIClient: API integration (depends on Networking, DataLayer)
- ImageService: Image loading (depends on Core, Kingfisher)
- Feature1: User profile feature (depends on Core, APIClient, ImageService)
- Feature2: Data sync feature (depends on Core, Networking, DataLayer)
- SPMSample: Main module depending on all internal modules

Benefits:
- Demonstrates internal module dependencies for Jungle analysis
- Shows realistic multi-layer architecture
- Provides complex dependency graph for testing
- Includes multiple test targets

Updated README with:
- Complete architecture diagram
- Dependency graph visualization
- Jungle command examples for different scenarios

Tested with Jungle:
- jungle modules --target SPMSample ✓
- jungle dependant --target Core ✓

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants