SkillHub

gettool

v0.1.0

Fetch and install C++ tools/libraries from cpp_tools repository. Use when users need to download or clone third-party C++ libraries such as eigen, opencv, pcl, fmt. Use for building tools from source using CMake, installing tools with installation scripts, listing available tools, or managing cpp_to...

Sourced from ClawHub, Authored by wangyendt

Installation

Please help me install the skill `gettool` from SkillHub official store. npx skills add wangyendt/gettool

Pywayne Bin Gettool

Tool fetcher for C++ libraries from cpp_tools repository. Supports sparse checkout, optional building with CMake/make, and installation scripts.

Quick Start

# List all supported tools
gettool -l

# Fetch a tool to default path (based on name_to_path_map.yaml)
gettool <tool_name>

# Fetch to specific path
gettool <tool_name> -t <target_path>

# Fetch and build (if buildable)
gettool <tool_name> -b

# Fetch and install (if installable)
gettool <tool_name> -i

Usage Patterns

1. List Available Tools

When user wants to see what tools are available:

gettool -l

2. Simple Fetch

Download tool source code to default path (determined by name_to_path_map.yaml in current directory):

gettool opencv
gettool eigen

3. Fetch with Custom Target

Download tool to a specific directory:

gettool opencv -t third_party/opencv
gettool eigen -t external/eigen

4. Build from Source

Build the tool using CMake and make. Requirements: - Tool must be marked as buildable: true in name_to_path_map.yaml - Tool must have a CMakeLists.txt file - Build output (lib/) is copied to target directory

gettool apriltag_detection -b
gettool <tool_name> -b -t build/<tool_name>

5. Clean Copy (src + include only)

Fetch only src/ and include/ directories if they exist:

gettool eigen -c

6. Fetch and Install

After fetching, execute the tool's installation script (if configured):

gettool pcl -i
gettool pcl -i --global-install-flag true  # Use sudo make install

7. Fetch Specific Version

Check out a specific version/tag/branch (only works for tools that are submodules):

gettool fmt -v 9.1.0

8. Manage Repository URL

# Show current URL
gettool --get-url

# Set custom URL
gettool --set-url <URL>

# Reset to default URL
gettool --reset-url

Command Reference

Argument Description
<name> or -n <name> Tool name from name_to_path_map.yaml
-t <path> Target output directory (default: based on mapping)
-b / --build Build using CMake + make (if buildable)
-c / --clean Copy only src/include directories
-v <version> Checkout specific version (submodules only)
-i / --install Run installation script (if installable)
--global-install-flag Set to true for sudo make install
-l / --list List all supported tools
--get-url Show current repository URL
--set-url <URL> Set repository URL
--reset-url Reset to default URL

Tool Types and Behavior

Submodule Tools

  • Cloned as full independent repositories
  • Support -v for version checkout
  • Not built via CMake (use -b for source-level build if configured)

Non-Submodule Tools (Sparse Checkout)

  • Fetched via git sparse-checkout from cpp_tools repo
  • Can be built with -b (requires buildable=true and CMakeLists.txt)
  • Build output (lib/) copied to target directory

Default Path Mapping

When -t is not specified, the target path is determined by the path field in name_to_path_map.yaml relative to the current working directory.

Example: If opencv maps to third_party/opencv, running gettool opencv creates ./third_party/opencv.

Prerequisites

  • Git
  • CMake and make (for -b flag)
  • Appropriate C++ toolchain (for building)
  • Write permissions for target directory

Common Tool Names

Typical tools available (run gettool -l for current list): - eigen - Linear algebra library - opencv - Computer vision library - pcl - Point Cloud Library - fmt - Formatting library - apriltag_detection - AprilTag detection - spdlog - Fast C++ logging library