Go 언어로 Todoist의 CLI 클라이언트를 만들어 보았습니다.

8663 단어 5TodoistPeco
블로그의 copipe입니다.
Go 언어로 Todoist의 CLI 클라이언트를 만들어 보았습니다.

Todoist 라고 하는 Web 어플리케이션의 태스크 관리 툴을 사랑해 일년 정도 사용하고 있다.

이전에는 ddksr/cliist 을 사용하여 CLI로 조작할 수 있었지만, Todoist API의 버전 업에 수반해, 사용할 수 없게 되어 버렸다.

업데이트를 하는 것 같은데, 언제가 될지 기다리는 것도 귀찮고, Go 언어 만지고 싶었기 때문에 연습이 되면 새롭게 Todoist의 CLI 클라이언트를 만들어 보았으므로 소개.

작성 메모 같은 것은 또 이번 쓴다.

리포지토리



sachaos/todoist: Todoist CLI Client. I ❤️ Todoist and CLI.

사용법



작업 목록


$ todoist l
64302291 p1 #Movie     A CLOCKWORK ORANGE
64302368 p1 #Movie     The Shining
64302395 p1 #Movie     Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb
64302507 p1 #Movie     2001:A Space Odyssey
64302581 p1 #Inbox     Do something
64302602 p1 #Personal  Read a book
64303204 p1 #Movie     test movie
64303294 p1 #Personal  something do

작업 만들기


$ todoist add "3 idiots"

작업 삭제


$ todoist list
...
64308215 p1 #Inbox     3 idiots

$ todoist close 64308215

데모 (with peco)



작업 추가



peco에서 프로젝트를 선택합니다.



작업 닫기



peco에서 작업 목록에서 선택하고 닫습니다.



peco와 결합하면 편리



간단한 부속 명령을 준비하고 있으므로 쉘 스크립트로 잘 조합해 주세요는 스탠스입니다. peco 사용하면 편해지고 생활이 촉촉해진다.
<C-x> t p: プロジェクト選択
<C-x> t l: ラベル選択
<C-x> t c: タスクを選択してクローズ
# todoist find project
function peco-todoist-project () {
    local SELECTED_PROJECT="$(todoist projects | peco | head -n1 | cut -d ' ' -f 1)"
    if [ -n "$SELECTED_PROJECT" ]; then
        if [ -n "$LBUFFER" ]; then
            local new_left="${LBUFFER%\ } $SELECTED_PROJECT"
        else
            local new_left="$SELECTED_PROJECT"
        fi
        BUFFER=${new_left}${RBUFFER}
        CURSOR=${#new_left}
    fi
}
zle -N peco-todoist-project
bindkey "^xtp" peco-todoist-project

# todoist find labels
function peco-todoist-labels () {
    local SELECTED_LABELS="$(todoist labels | peco | cut -d ' ' -f 1 | tr '\n' ',' | sed -e 's/,$//')"
    if [ -n "$SELECTED_LABELS" ]; then
        if [ -n "$LBUFFER" ]; then
            local new_left="${LBUFFER%\ } $SELECTED_LABELS"
        else
            local new_left="$SELECTED_LABELS"
        fi
        BUFFER=${new_left}${RBUFFER}
        CURSOR=${#new_left}
    fi
}
zle -N peco-todoist-labels
bindkey "^xtl" peco-todoist-labels

# todoist close
function peco-todoist-close() {
    local SELECTED_ITEMS="$(todoist list | peco | cut -d ' ' -f 1 | tr '\n' ' ')"
    if [ -n "$SELECTED_ITEMS" ]; then
        BUFFER="todoist close $(echo "$SELECTED_ITEMS" | tr '\n' ' ')"
        CURSOR=$#BUFFER
    fi
    zle accept-line
}
zle -N peco-todoist-close
bindkey "^xtc" peco-todoist-close

작은 느낌



Go 언어, 여러가지 스스로 고리고리 쓰지 않으면 안 되는 부분이 있으면서도, 주변 툴이 매우 갖추어져 있어 개발하기 쉽다고 생각했습니다.

좋은 웹페이지 즐겨찾기