Cheri, Darling, Schatzi ππ manage components with style
Shry (pronounced [ΛtΚeri]) is a cli tool to manage your own component registry for multiple platforms Γ la shadcn/ui.
brew tap networkteam/tap
brew install shryDownload the latest release from the releases page and install it in your PATH.
Initialize a new project with a component registry:
shry initThis will:
- Prompt you to select a registry (or use
--registryto specify one) - Prompt you to select a platform
- Create a project configuration file
Options:
--registry, -r: Git URL of the component registry (e.g. github.com/networkteam/neos-components[@ref])--platform, -p: Platform to use for the project
List available components from the registry:
shry lsComponents are grouped by category and sorted alphabetically.
Add a component to your project:
shry add <component-name>This will:
- Add the component and all its dependencies
- Handle file conflicts with options to skip, overwrite, or show diff
- Resolve variables in component files
shry registry add <registry-location>This will:
- Add a new registry to your configuration
- Prompt for authentication if needed
- Verify the registry is accessible
shry registry listShows all configured registries with their component counts.
shry registry remove <registry-location>shry config set-auth <registry-url>Options:
--username: Username for HTTP authentication--password: Password or token for HTTP authentication--private-key: Path to private key file for SSH authentication--key-password: Password for the private key (if encrypted)
shry config remove-auth <registry-url>The global configuration is stored in:
- macOS:
~/.config/shry/global.yaml
Each project has its own configuration file that stores:
- Selected registry
- Platform
- Project variables
SHRY_CACHE_DIR: Directory to cache component registries (default:~/.cache/shry)SHRY_GLOBAL_CONFIG: Global config pathSHRY_VERBOSE: Enable verbose mode
A component registry is a Git repository containing components. Each component has:
- A
shry.yamlconfiguration file - Source files to be copied
- Optional dependencies on other components
- Optional category for grouping
Example shry.yaml:
name: my-component
title: My Component
description: A beautiful component
platform: neos
category: Layout
dependencies:
- base-component
files:
- src: src/MyComponent.tsx
dst: Components/MyComponent.tsx
variables:
color: primary