lekalo
v0.0.4
Published
CLI tool for lekalo
Readme
Lekalo - File and Project Structure Generator
Lekalo is a Go-based command-line utility for generating files and project structures using YAML templates with Jinja2-like syntax support.
Features
- 🚀 File and folder generation from templates
- 📝 YAML template configuration
- 🔍 Automatic template discovery (global and local)
- ✨ Jinja2-style template syntax
- ⚡ Fast generation through native compilation
Installation
Local in project
npm i -D lekaloGlobal in system
npm i -g lekaloUsage
Basic Commands
# List available templates
npx lekalo list
# Generate files from template
npx lekalo gen <template-name> [key=value...]
# Show help
npx lekalo --helpLocalization
CLI automatically detects the language installed in the system. To manually redefine the language, set the system env variable LEKALO_LANG=en
React Component Example
- Create a template file
.lekalo_templates.ymlplacement on run folder:
templates:
react-component:
params:
- name: "name"
prompt: "Enter component name"
- name: "path"
prompt: "Enter path"
default: "./"
files:
component:
path: "{{ path }}/{{ name }}.tsx"
template: |
import React from 'react';
interface {{ name }}Props {}
export const {{ name }}: React.FC<{{ name }}Props> = () => {
return <div>{{ name }}</div>;
}
index:
path: "{{ path }}/index.ts"
template: |
export { {{ name }} } from './{{ name }}'- Run generation:
lekalo gen react-component name=Button path=./src/components/ButtonConfiguration Format
Lekalo uses YAML files for template definitions. Full structure example:
templates:
template-name:
params:
- name: "param1" # Parameter name
prompt: "Prompt text" # Prompt text (optional)
multiple: false # Multiple mode (optional default false)
default: "default" # Default value (optional)
- name: "param2" # Parameter name
prompt: "Prompt text" # Prompt text (optional)
multiple: true # Multiple mode
default: # Default values (optional)
- "default" # Default value 1
- "default2" # Default value 2
# Dynamically created folders (optional)
folders:
root: "./{{ param1 }}" # Root folder
components: "{{ folders.root }}/src" # Subfolder
# Files to generate
files:
file1:
mode: "default" # Generate mode
path: "{{ folders.components }}/{{ param1 }}.tsx" # Output path
template: | # File content
// Jinja2 template with parameter substitution
export const {{ param1 }} = () => null;Generate mode
default(or unset) - When the file exists, overwrite confirmation will be requiredalways_overwrite- File will be overwritten (no confirmation)skip_if_exist- File generation will be skipped if the file existsappend- The file will be appended to or created if it doesn't exist
Template Locations
Lekalo searches for templates in this order:
- Local
.lekalo_templates.ymlin current directory - Global
~/.lekalo/templates.yml
Local templates take precedence over global ones.
License
Lekalo is distributed under the MIT License.
