appraisal-rb Logo by Aboling0, CC BY-SA 4.0 kettle-dev Logo by Aboling0, CC BY-SA 4.0 StructuredMerge Logo floss-funding Logo by Aboling0, CC BY-SA 4.0 galtzo-floss Logo by Aboling0, CC BY-SA 4.0 omniauth Logo by (presumed) tomeara, (presumed) MIT resque Logo by Resque development team, MIT rubocop-lts Logo by Aboling0, CC BY-SA 4.0 oauth Logo by Chris Messina, CC BY-SA 3.0 ruby-openid Logo by Aboling0, CC BY-SA 4.0 xberg-io Logo (GitHub org avatar) pboling Logo (GitHub org avatar) contriboss Logo (GitHub org avatar) CycloneDX Logo (GitHub org avatar)

Introducing kettle-paths

🏷️ introduction 🏷️ kettle_paths

Kettle::Paths compares filesystem paths by identity — inode and file index — rather than by string, so a directory spelled two valid ways still compares equal: symlinked ancestors (/home/x vs /var/home/x) and Windows 8.3 short names (RUNNER~1 vs runneradmin). The public API covers canonical, same?, identical?, within?, relative, relative_from, glob, local_path_remote?, and path_parts. It is pure Ruby with no dependencies, requires Ruby 2.4+, and is MIT-licensed so it can be shared across MIT and AGPL tooling.

Read the upstream README for installation and usage, or browse the project repository.