پرش به محتویات

مرجع دستورات

مرجع کامل برای تمام دستورات، پرچم‌ها و گزینه‌های tmq.

خلاصه دستور

tmq [OPTIONS] [QUERY] [FILE...]
tmq [OPTIONS] --validate [FILE...]
tmq [OPTIONS] --compare FILE1 FILE2

گزینه‌های عمومی

گزینه‌های خروجی

  • -o, --output FORMAT: قالب خروجی (toml, json, yaml)
  • پیش‌فرض: toml
  • مثال: tmq '.data' config.toml -o json

گزینه‌های تغییر

  • -i, --inplace: تغییر فایل‌ها در جای خود
  • باید همراه عملیات set/delete استفاده شود
  • مثال: tmq '.version = "2.0"' -i config.toml

اجرای خشک

  • --dry-run: پیش‌نمایش تغییرات بدون اعمال روی فایل
  • نمایش آنچه انجام می‌شود
  • کد خروج ۰ برای موفقیت، ۱ برای خطا
  • مثال: tmq '.version = "2.0"' --dry-run config.toml

اعتبارسنجی

  • --validate: اعتبارسنجی نحو TOML
  • کد خروج ۰ اگر معتبر، ۱ اگر نامعتبر
  • می‌تواند چندین فایل را پردازش کند
  • مثال: tmq --validate config.toml

مقایسه

  • --compare FILE1 FILE2: مقایسه دو فایل TOML
  • کد خروج ۰ اگر یکسان، ۱ اگر متفاوت
  • تفاوت‌های دقیق را نشان می‌دهد
  • مثال: tmq --compare old.toml new.toml

اطلاعات

  • -v, --version: نمایش اطلاعات نسخه
  • -h, --help: نمایش متن راهنما

نحو پرس‌وجو

پرس‌وجوهای پایه

# Root key
.key

# Nested table
.table.key

# Deep nesting
.app.database.host

# Array element
.array[0]

# Array element with nesting
.servers[1].name

عملیات set

# Simple assignment
.key = "value"

# Number assignment
.port = 8080

# Boolean assignment
.enabled = true

# Array assignment
.tags = ["web", "api"]

# Object assignment
.config = { host = "localhost", port = 5432 }

عملیات حذف

# Delete root key
del(.key)

# Delete nested key
del(.table.key)

# Delete array element
del(.array[0])

مثال‌ها

مثال‌های پرس‌وجو

# Simple query
tmq '.version' config.toml

# Nested query
tmq '.database.host' config.toml

# Array query
tmq '.servers[0].name' config.toml

# Multiple files
tmq '.version' config/*.toml

# JSON output
tmq '.config' file.toml -o json

# YAML output
tmq '.config' file.toml -o yaml

مثال‌های تغییر

# Set string value
tmq '.version = "2.0.0"' -i config.toml

# Set nested value
tmq '.database.host = "prod-db"' -i config.toml

# Set array
tmq '.ports = [8080, 8443]' -i config.toml

# Delete key
tmq 'del(.obsolete)' -i config.toml

# Dry run
tmq '.version = "test"' --dry-run config.toml

مثال‌های اعتبارسنجی

# Single file
tmq --validate config.toml

# Multiple files
tmq --validate *.toml

# In script
if tmq --validate config.toml; then
    echo "Valid TOML"
fi

مثال‌های مقایسه

# Compare files
tmq --compare config1.toml config2.toml

# In script
if tmq --compare expected.toml actual.toml; then
    echo "Files match"
fi

کدهای خروج

کد معنی توضیحات
0 موفقیت عملیات با موفقیت انجام شد
1 خطای تجزیه تجزیه TOML یا خطای پرس‌وجو
2 خطای استفاده آرگومان‌های نامعتبر خط فرمان
3 خطای امنیتی عبور از مسیر یا نقض امنیت
4 خطای فایل فایل یافت نشد، دسترسی رد شد و غیره

پیام‌های خطا

tmq پیام‌های خطای ساخت‌یافته ارائه می‌دهد:

ERROR: <error_type>
DETAILS: <detailed_description>
ACTION: <suggested_fix>

خطاهای رایج

خطاهای تجزیه

tmq '.invalid..' config.toml
# ERROR: Invalid query path
# DETAILS: Query path cannot be empty
# ACTION: Check your query syntax

خطاهای فایل

tmq '.' nonexistent.toml
# ERROR: File operation error
# DETAILS: Cannot read file 'nonexistent.toml'
# ACTION: Ensure the file exists and is readable

خطاهای اعتبارسنجی

tmq --validate malformed.toml
# ERROR: TOML parsing failed
# DETAILS: Expected newline at line 5, column 10
# ACTION: Fix the TOML syntax error

متغیرهای محیطی

tmq از متغیرهای محیطی برای پیکربندی استفاده نمی‌کند. تمام گزینه‌ها از طریق پرچم‌های خط فرمان مشخص می‌شوند.

قالب‌های فایل

ورودی TOML

tmq قالب استاندارد TOML 1.0.0 را می‌پذیرد:

# Comments are preserved in output
title = "Example"

[database]
host = "localhost"
port = 5432

[[servers]]
name = "web1"
ip = "192.168.1.1"

خروجی JSON

{
  "title": "Example",
  "database": {
    "host": "localhost",
    "port": 5432
  },
  "servers": [
    {
      "name": "web1",
      "ip": "192.168.1.1"
    }
  ]
}

خروجی YAML

title: Example
database:
  host: localhost
  port: 5432
servers:
- name: web1
  ip: 192.168.1.1

کارایی

معیارها

  • عملیات پرس‌وجو: O(1) - زمان ثابت
  • تجزیه فایل: O(n) که n اندازه فایل است
  • استفاده از حافظه: کمتر از ۱۰ مگابایت برای فایل‌های معمولی
  • فایل‌های بزرگ: به‌طور خطی با اندازه مقیاس می‌پذیرد

نکات بهینه‌سازی

  • به‌جای خروجی کامل فایل از پرس‌وجوهای مشخص استفاده کنید
  • برای استفاده برنامه‌نویسی خروجی JSON/YAML را ترجیح دهید
  • برای چندین فایل از عملیات گروهی استفاده کنید

پشتیبانی پلتفرم

پلتفرم‌های پشتیبانی‌شده

  • لینوکس: amd64, arm64
  • macOS: amd64 (اینتل), arm64 (Apple Silicon)
  • ویندوز: amd64

نام فایل‌های باینری

  • tmq-linux-amd64 (لینوکس اینتل/AMD)
  • tmq-linux-arm64 (لینوکس ARM)
  • tmq-darwin-amd64 (macOS اینتل)
  • tmq-darwin-arm64 (macOS Apple Silicon)
  • tmq-windows-amd64.exe (ویندوز)

محدودیت‌ها

محدودیت‌های فعلی

  • تبدیل JSON/YAML به TOML وجود ندارد (برنامه‌ریزی شده)
  • حفظ توضیحات در تغییرات وجود ندارد (برنامه‌ریزی شده)
  • سیستم افزونه وجود ندارد (برنامه‌ریزی شده)
  • API کتابخانه وجود ندارد (برنامه‌ریزی شده)

محدودیت‌های اندازه فایل

  • حداکثر اندازه فایل: ۱۰۰ مگابایت
  • توصیه شده: کمتر از ۱۰ مگابایت برای عملکرد بهینه

محدودیت‌های طول مسیر

  • حداکثر طول مسیر: ۱۰۲۴ کاراکتر
  • حداکثر عمق تودرتویی: ۱۰۰ سطح

عیب‌یابی

مسائل رایج

"command not found"

# Check if tmq is in PATH
which tmq

# Or use full path
/path/to/tmq --version

"permission denied"

# Make executable
chmod +x tmq

# Or run with full permissions
sudo ./tmq --version

"directory not found"

# Check file exists
ls -la config.toml

# Check current directory
pwd

# Use absolute path
tmq '.' /full/path/to/config.toml

Invalid query

# Check syntax
tmq --help

# Test with simple query
tmq '.' config.toml

حالت اشکال‌زدایی

# Use verbose output (when available)
tmq --help

# Check file contents
cat config.toml

# Validate file
tmq --validate config.toml

دریافت کمک

# Show help
tmq --help

# Show version
tmq --version

# Report issues: https://github.com/azolfagharj/tmq/issues

تاریخچه نسخه‌ها

v1.0.1

  • انتشار نخست
  • عملیات پرس‌وجو، set و حذف
  • اعتبارسنجی و مقایسه
  • عملیات گروهی
  • خروجی JSON/YAML
  • باینری‌های چندپلتفرمی