Skip to content

Instantly share code, notes, and snippets.

@chris-ryu
Created March 19, 2025 11:08
Show Gist options
  • Save chris-ryu/57425aad723b3102059c43d64683c75b to your computer and use it in GitHub Desktop.
Save chris-ryu/57425aad723b3102059c43d64683c75b to your computer and use it in GitHub Desktop.
메모: note-script.md

note-script 메모

#!/bin/bash

# 오늘 날짜를 YYYY-MM-DD 형식으로 가져옵니다
TODAY=$(date +"%Y-%m-%d")

# 파일명 설정: 매개변수가 제공되면 사용, 아니면 오늘 날짜 사용
if [ -n "$1" ]; then
    # 매개변수가 제공된 경우
    # 확장자가 없으면 .md 추가
    if [[ "$1" != *.* ]]; then
        FILENAME="${1}.md"
    else
        FILENAME="$1"
    fi
    DESCRIPTION="메모: ${FILENAME}"
else
    # 매개변수가 없는 경우 (기존 동작)
    FILENAME="${TODAY}.md"
    DESCRIPTION="오늘(${TODAY})의 메모"
fi

# 로컬 백업 디렉토리 설정
BACKUP_DIR="$HOME/Documents/Notes"

# 백업 디렉토리가 없으면 생성합니다
if [ ! -d "$BACKUP_DIR" ]; then
    echo "백업 디렉토리가 존재하지 않아 생성합니다: $BACKUP_DIR"
    mkdir -p "$BACKUP_DIR"
fi

# GitHub CLI가 설치되어 있는지 확인
if ! command -v gh &> /dev/null; then
    echo "GitHub CLI(gh)가 설치되어 있지 않습니다."
    echo "Mac OS에서는 'brew install gh'로 설치할 수 있습니다."
    exit 1
fi

# GitHub CLI 로그인 상태 확인
if ! gh auth status &> /dev/null; then
    echo "GitHub CLI에 로그인되어 있지 않습니다. 'gh auth login'을 실행하세요."
    exit 1
fi

# 해당 파일명의 Gist가 이미 존재하는지 확인 (더 많은 Gist를 가져와서 검색)
echo "파일명(${FILENAME})의 Gist를 검색 중..."
GIST_LIST=$(gh gist list --limit 100)
GIST_ID=""

# 파일명이 정확히 일치하는 Gist 찾기
while IFS= read -r line; do
    ID=$(echo "$line" | awk '{print $1}')
    # 각 Gist의 파일 목록 확인
    FILES=$(gh gist view "$ID" --files)
    if echo "$FILES" | grep -q "^${FILENAME}$"; then
        GIST_ID="$ID"
        break
    fi
done <<< "$GIST_LIST"

if [ -n "$GIST_ID" ]; then
    echo "파일명(${FILENAME})의 Gist를 찾았습니다. ID: $GIST_ID"
    echo "기존 Gist를 편집을 위해 엽니다..."
    
    # GitHub CLI의 직접 편집 기능 사용 (터미널 입력 오류 해결)
    gh gist edit "$GIST_ID" -f "$FILENAME"
    
    # 편집된 내용을 백업 디렉토리에 복사
    echo "편집된 Gist 내용을 로컬에 백업합니다..."
    gh gist view "$GIST_ID" --filename "$FILENAME" > "$BACKUP_DIR/$FILENAME"
    echo "파일이 성공적으로 백업되었습니다: $BACKUP_DIR/$FILENAME"
    
    echo "Gist가 업데이트되었습니다."
else
    echo "파일명(${FILENAME})의 Gist가 존재하지 않습니다. 새로 생성합니다..."
    
    # 임시 파일 생성 (명확한 이름 사용)
    TMP_FILE="/tmp/${FILENAME}"
    
    # 기본 내용 추가
    if [ -z "$1" ]; then
        # 날짜로 생성하는 경우
        echo "# ${TODAY} 메모" > "$TMP_FILE"
    else
        # 사용자 지정 파일명인 경우 (확장자 제거)
        BASENAME=$(echo "$FILENAME" | sed 's/\.[^.]*$//')
        echo "# ${BASENAME} 메모" > "$TMP_FILE"
    fi
    
    # 편집기로 열기
    ${EDITOR:-vi} "$TMP_FILE"
    
    # 명시적 파일명으로 Gist 생성
    GIST_URL=$(gh gist create --public -f "$FILENAME" -d "$DESCRIPTION" "$TMP_FILE")
    
    # 편집된 내용을 백업 디렉토리에 복사
    echo "새로 생성된 Gist 내용을 로컬에 백업합니다..."
    cp -p "$TMP_FILE" "$BACKUP_DIR/$FILENAME"
    echo "파일이 성공적으로 백업되었습니다: $BACKUP_DIR/$FILENAME"
    
    # 임시 파일 삭제
    rm "$TMP_FILE"
    
    echo "새 Gist가 생성되었습니다: $GIST_URL"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment