좋은 gitignore 편집기를 만들 수 없을 것 같아서 MVP 같은 걸 만들어 봤어요.

시작하다gitignore의 약간의 고민


일의 발단


프로젝트Initial commit를 마치고 천천히 하는 작업으로 "gitignore.io부터 만들어서 괜찮아 보이는.gitignore"이런 일이 있었죠?1 2
있죠?

시간의 추이에 따라.gitignore가 변하고 있어...가끔


처음처럼 활용하면 괜찮을 것 같아요.
  • 아, 나도 이 환경용 아이노어 쓰고 싶어
  • 조금 특별한 ignore
  • 가 필요합니다.
    이런 일도 생길 거야.
    가끔 나와요.
    (1)의 경우 gitignore를 다시 한 번 반복합니다.반드시 IO로 재생성해야 합니다.
    (2)의 경우 템플릿.gitignore이 생성된 곳에 기술해야 한다.
    이렇게 되면 매번 처리할 때마다 약간의 번거로움을 느낄 수 있다.대개

    승:깨진 생각과 MVP 느낌.


    심혈을 기울이다


    그래서 ".gitignore 편집할 때'언어명'과'언어의 ignore'가 잘 느껴지도록 간단하고 간단한 편집을 할 수 있을까 고민했다.lazygit 같은 UI 멋있잖아요.
  • 키워드를 입력하면 해당 키워드를 포함하는 언어·환경 후보
  • 가 나타납니다.
  • 탭에서 후보로 이동하고 오른쪽으로 누른 후 언어로 반영
  • 키워드를 선택하고 후보 없이 마우스 오른쪽 버튼을 누르면 패턴
  • 이 반영됩니다.
    저장할 때 API로 마음대로 전화하세요.io+모드로 구축가능하면 파생된 아이노어 타입 등을 함께 넣으면 편하겠죠.
    그럼에도 불구하고 아직 이런 식으로 편집기를 만들 능력은 없다.

    시간이 걸리지 않고 그런 느낌이 든다(=MVP §63;)해 보다


    초지저분하게 MVP의 초간단 설치를 시도했다.
    이쪽=>vigi = vi gitignorevigi 명령을 실행할 때
    
    # ~~~~~~
    
    vim로 이런 느낌의 파일을 엽니다.
    .idea
    
    # ~~~~~~
    python
    virtualenv
    
    이렇게 편집vim이 끝나면
    .idea
    
    # ~~~~~~
    
    # https://www.gitignore.io/api/python,virtualenv の中身
    
    이런 상태.gitignore.
    그나저나 이 상태에서 명령을 실행하면gitignore.io 부분은 언어의 정보만 될 뿐입니다.편집하기 쉬울 것 같아서요.

    이런 느낌

    vigi라는 이름으로 임시 파일을 제작하고 편집하여 저장한 후 .gi 스타일로 변환
    import subprocess
    from pathlib import Path
    from subprocess import CalledProcessError, PIPE
    
    def main():
        gi_path = Path.cwd() / '.gi'
        gitignore_path = Path.cwd() / '.gitignore'
        try:
            # Convert from ``.gitignore`` to ``.gi``
            if gitignore_path.exists():
                encode_gitignore(gitignore_path, gi_path)
            else:
                with gi_path.open('w') as fp:
                    fp.write(dedent(gi_template).strip())
            # Spawn vim
            vim_args = ['/usr/bin/vim', str(gi_path)]
            vim_proc = subprocess.run(vim_args, check=True)
            # Convert from ``.gi`` to ``.gitignore``
            decode_gitignore(gi_path, gitignore_path)
        except CalledProcessError:
            pass
        finally:
            # Remove ``.gi``
            gi_path.unlink()
    

    부르다

    .gitignore에서 호출subprocess.run,vim 예외 없이 OK의 대략적인 스타일.가볍고 좋아요.

    Called Process Error를 남기지 않음

    .gi~try를 사용하여 최종적으로finally 파일을 버린다.오류라면 편집하지 않기 때문.gi이므로 환경을 고려합니다.

    재료를 기초로 하다.gitignore 만들기

    .gitignore 파일은 이때 파일 시스템에서 흔히 볼 수 있기 때문에 보통 파일로 열리는 것 같다.
    그리고 언어에 대한 정보를gitignore에 집합합니다.IO에 전하다.
    HTTP 상태가 404인 경우에만 일반과 동일한 응답 저장
    주인은 존재하지 않는다는 메시지가 담긴 경우가 모두 404가 됐기 때문이다.
    유일하다고 할 수 있으니 조금만 신경 써.
    def decode_gitignore(src, dest):
        custom = []
        online = []
        with src.open() as fp:
            # .giファイルを開いて、デリミタの前後を分けるなど
        if online:
            url = f'https://www.gitignore.io/api/{",".join(online)}'
            req = Request(url, None, headers={'User-Agent': 'vigi'})
            try:
                resp = urlopen(req)
                custom.append(resp.read().decode())
            except HTTPError as err:
                if err.code == 404:
                    custom.append(resp.read().decode())
                raise err
        with dest.open('w') as fp:
            fp.write('\n'.join(custom))
    

    결:사용감 따위


    우선.gi 프로젝트 내vigi는 이 명령을 바탕으로 제작되었다.
    편집할 때 표시되는 줄 수를 대폭 줄이는 것이 장점이다.
    그런 의미에서 MVP 작업은 이미 끝났다.
    그러나 언어 모판에 어떤 패턴이 포함되어 있는지 끝내지 않으면.gitignore의 전환은 모른다
    더 개발하고 싶다면 패턴 후보에서 언어 마스터를 잘 끌어내야 한다
    정말 좋은 물건인지 아닌지 모르겠다.어쩌면 어떤 언어의 훈련에 적합할까요?
    프로젝트 템플릿을 만드신 분은 잠시 잊으세요
    .gitignore관리도 가능하지만 이것도 잠시 잊으세요

    좋은 웹페이지 즐겨찾기