2.2 KiB
2.2 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This repository contains Dropshell Tools - a collection of utilities that support dropshell development. The main tool is dropshell-tool
, a C++ command-line application that manages tool installation, updates, and publishing for the dropshell ecosystem.
Architecture
Core Components
-
dropshell-tool: Main C++ application (
dropshell-tool/src/
)main.cpp
: CLI interface and command routingArchiveManager
: Handles .tgz archive creation/extractionBashrcEditor
: Manages ~/.bashrc_dropshell_tool script modificationsDropshellScriptManager
: Manages tool installation and configurationGetbinClient
: HTTP client for downloading/uploading tools
-
sos: Simple object storage utility
-
whatsdirty: Git repository status checker
Build System
- Uses CMake with C++23 standard
- Docker-based builds with static linking
- Uses external build base image
gitea.jde.nz/public/dropshell-build-base:latest
- Versioning based on timestamp format YYYY.MMDD.HHMM
Common Commands
Build Tools
# Build all tools (includes install from getbin.xyz)
./buildtestpublish_all.sh
# Build specific tool (dropshell-tool)
cd dropshell-tool && ./build.sh
# Test specific tool
cd dropshell-tool && ./test.sh
# Publish specific tool (requires SOS_WRITE_TOKEN)
cd dropshell-tool && ./publish.sh
Development Workflow
# Check status of all git repositories
./whatsdirty/whatsdirty.sh
# Build debug version (default in build.sh)
export CMAKE_BUILD_TYPE="Debug"
# Build release version (used in publish.sh)
export CMAKE_BUILD_TYPE="Release"
Tool Functionality
dropshell-tool manages a tool ecosystem by:
- Installing tools to
~/.local/bin/dropshell-tool/<tool_name>/
- Managing bash completions and aliases via
~/.bashrc_dropshell_tool
- Storing tool metadata in
~/.config/dropshell-tool/
- Publishing/downloading tools via getbin.xyz object storage
Each tool includes a dropshell-tool-config.json
with aliases and setup scripts.
Publishing Requirements
Publishing requires the SOS_WRITE_TOKEN
environment variable for authentication to the object storage system.