링크 확인 및 도메인 무시

5081 단어 pythonopensource
지난 몇 주 동안 Python으로 작성된 URL 검사 명령줄 도구인 Gustavo 작업을 했습니다. 저장소 포크 경험을 얻고 싶었습니다. 리모컨 설정; 분기를 병합하여 checkThatLink의 새 기능을 작업할 수 있는 권한을 얻었습니다.


TDDR / checkThatLink





The feature I wanted to add 명령줄 인수 허용-i 또는 --ignore를 파일 경로와 함께 전달합니다. 프로그램이 파일을 열어야 합니다. 내용을 읽으십시오. URL이 있는 경우 HTTP 상태 확인 프로세스에서 해당 도메인을 생략합니다.

시작하려면 기능을 추가하기 전에 이 프로그램이 어떻게 작동하는지 이해해야 했습니다. Gustavo와 checkThatLink는 목적과 언어 면에서 매우 유사합니다. 저는 결코 파이썬 전문가는 아니지만 소스 코드를 읽는 것이 꽤 편안하다고 느꼈습니다. 프로그램을 진행하면서 다음 단계를 따랐다고 판단했습니다.
  • 구문 분석된 명령줄 인수 개체를 만들어 새 checkFile 개체에 전달합니다checkFile(args).
  • checkFileargs 개체
  • 에서 모든 멤버 변수를 초기화합니다.
  • checkFile는 기본 기능checkThatFile()을 실행합니다.
  • URL이 포함되어 있는지 확인하기 위해 소스 파일의 각 줄을 검사합니다
  • .
  • HEAD를 요청하는 각 URL에 대해 HTTP 연결이 만들어지고 URL과 해당 응답 상태가 사전 목록에 추가됩니다allLinks.
  • 일련의 조건문은 allLinks에서 출력을 생성해야 하는 올바른 함수를 결정합니다.

  • 나는 프로그램이 나중에 출력에서 ​​생략될 링크를 확인하는 데 시간을 낭비하는 것을 원하지 않았기 때문에 4단계와 5단계 사이에 내 기능/체크인을 삽입해야 한다고 생각했습니다.

    먼저 무시할 URL이 있는 제공된 파일을 여는 함수를 만들었습니다. 정규식을 사용하여 모든 유효한 URL을 선택하십시오. 도메인의 ignoreList를 반환합니다.

    다음으로 위의 5단계 전에 조건을 추가하여 각 URL의 도메인이 ignoreList의 도메인에 대해 확인되도록 했습니다.

    이 시점에서 나는 끝났다고 생각했습니다. 병합하기 전에 작성자에게 내 작업을 검토하도록 했고 몇 가지 업데이트가 필요하다는 정보를 받았습니다. 문제 요구 사항은 프로그램이 무시할 도메인이 포함된 파일을 받았지만 주석이나 URL이 없는 경우 프로그램을 종료해야 한다고 명시했습니다. 다음과 같은 매우 간단한 업데이트였습니다.
  • 댓글을 찾기 위해 다른 정규식을 추가했습니다.
  • 두 정규식(도메인 및 주석)이 모두 비어 있으면 프로그램이 종료됩니다.

  • def getIgnoreList(self, ignoreFile):    
      found = []
      try: 
        if ignoreFile:
          with open(ignoreFile) as src:
            text = src.read() 
            found = re.findall('^https?://.*[^\s/]', text, flags=re.MULTILINE)
            comment = re.search('^#.*', text, flags=re.MULTILINE)
            return found if comment or found else sys.exit(1)
        return found
      except:
        print(f'Error with {ignoreFile}')
        sys.exit(1)
    


    위의 업데이트가 테스트를 통과했고 코드가 업스트림에 병합되었습니다!

    공의 반대편에는 implement the same ignore-feature in Gustavo에 자원 봉사자가있었습니다. 버그를 함께 해결했습니다. 기여자의 원격에서 새 분기를 만들고 일부 수정하는 것이 매우 쉽다는 것을 알았습니다. 나는 이와 관련하여 내가 너무 위압적이지 않았기를 바랍니다. 나는 단지 버그의 존재를 지적한 것이 아니라 제안을 하고 그것을 고칠 수 있는 코드를 제공했다.
    git status 또는 git branch를 실행하여 가져오거나 당기기 전에 git 트리의 위치를 ​​파악하는 것이 좋다는 어려운 방법을 배웠습니다. issue-8issue-8-fix가 뒤섞여서 그렇게 심각하지는 않았습니다. 나는 매주 git에 점점 더 익숙해지고 있지만 분명히 더 많은 연습이 필요합니다.

    좋은 웹페이지 즐겨찾기