- .git-commit-template.txt: 커밋 메시지 템플릿 추가 - .gitignore: OS 및 데이터베이스 관련 파일 무시 설정 추가 - .mcp.json: MCP 서버 설정 추가 - CLAUDE.md: SuperClaude 엔트리 포인트 문서 추가 - README.md: 프로젝트 템플릿 설명 추가 - .claude/COMMANDS.md: 명령어 실행 프레임워크 문서 추가 - .claude/FLAGS.md: 플래그 시스템 문서 추가 - .claude/MCP.md: MCP 서버 통합 문서 추가 - .claude/MODES.md: 운영 모드 문서 추가 - .claude/ORCHESTRATOR.md: 지능형 라우팅 시스템 문서 추가 - .claude/PERSONAS.md: 페르소나 시스템 문서 추가 - .claude/PRINCIPLES.md: 핵심 원칙 문서 추가 - .claude/RULES.md: 실행 가능한 규칙 문서 추가 - .claude/settings.json: 권한 설정 추가 - .claude/commands 디렉토리: 다양한 명령어 문서 추가 - .taskmaster/config.json: 기본 설정 파일 추가 - .taskmaster/docs 디렉토리: 문서 파일 추가 - .taskmaster/tasks/tasks.json: 기본 작업 파일 추가
70 lines
1.8 KiB
Bash
70 lines
1.8 KiB
Bash
#!/bin/bash
|
|
|
|
# Custom folders to ignore (in addition to .gitignore)
|
|
CUSTOM_IGNORE="public|migrations"
|
|
|
|
# Parse tsconfig.json exclude patterns
|
|
TSCONFIG_IGNORE=""
|
|
if [ -f "tsconfig.json" ]; then
|
|
# Extract exclude patterns from tsconfig.json
|
|
# Parse the JSON properly and handle wildcards
|
|
TSCONFIG_PATTERNS=$(node -e "
|
|
const fs = require('fs');
|
|
const tsconfig = JSON.parse(fs.readFileSync('tsconfig.json', 'utf8'));
|
|
if (tsconfig.exclude) {
|
|
const patterns = tsconfig.exclude.map(p => {
|
|
// Remove leading **/ and trailing /*
|
|
return p.replace(/^\*\*\//, '').replace(/\/\*$/, '').replace(/^\*\*/, '');
|
|
}).filter(p => p && !p.includes('*'));
|
|
console.log(patterns.join('|'));
|
|
}
|
|
" 2>/dev/null || echo "")
|
|
|
|
if [ -n "$TSCONFIG_PATTERNS" ]; then
|
|
TSCONFIG_IGNORE="|$TSCONFIG_PATTERNS"
|
|
fi
|
|
fi
|
|
|
|
# Combine all ignore patterns
|
|
FULL_IGNORE=".git|*.bak|$CUSTOM_IGNORE$TSCONFIG_IGNORE"
|
|
|
|
# Output file
|
|
OUTPUT=".taskmaster/docs/project-structure.md"
|
|
|
|
# Create directory if it doesn't exist
|
|
mkdir -p .taskmaster/docs
|
|
|
|
# Header
|
|
cat > "$OUTPUT" << 'EOF'
|
|
# Project Structure
|
|
|
|
EOF
|
|
|
|
echo "_Last Updated: $(date +%Y-%m-%d)_" >> "$OUTPUT"
|
|
echo "" >> "$OUTPUT"
|
|
echo '```' >> "$OUTPUT"
|
|
|
|
# Backup original .gitignore
|
|
cp .gitignore .gitignore.bak
|
|
|
|
# Remove !.* line temporarily (both commented and uncommented versions)
|
|
grep -v '^!\.\*' .gitignore | grep -v '^# !\.\*' > .gitignore.tmp && mv .gitignore.tmp .gitignore
|
|
|
|
# Use tree with gitignore (now without !.* line)
|
|
tree --gitignore \
|
|
-a \
|
|
-I "$FULL_IGNORE" \
|
|
--dirsfirst \
|
|
>> "$OUTPUT"
|
|
|
|
# Restore original .gitignore
|
|
mv .gitignore.bak .gitignore
|
|
|
|
# Close code block
|
|
echo '```' >> "$OUTPUT"
|
|
echo "" >> "$OUTPUT"
|
|
|
|
echo "Project structure written to $OUTPUT"
|
|
|
|
# Output the contents to stdout as well
|
|
cat "$OUTPUT" |