설치 없이 작곡가의 오래된 패키지 받기

2882 단어 phppythonproductivity
최근에 저는 PHP 소스 코드에서 오래된 오래된 직접 종속성 목록을 얻고 싶었습니다.
final result

초기 생각은 디펜다봇을 실행하는 것이었고, 각 마이너 업그레이드에 대해 pr를 여는 동안 동일한 작업을 수행할 수 있는 방법을 보는 것이 멋질 것이라고 생각했습니다.

처음에는 동일한 composer 명령을 찾았으며 다음을 실행할 수 있습니다.

composer outdated --direct -f json

좋은 형식으로 오래된 패키지 목록을 얻으려면 😍

다음 생각은 그것을 서비스 뒤에 두거나 서버에 두는 것이었고, 이는 나를 다음 장애물로 이끌었습니다.

패키지를 설치하거나 다른 용도로 사용하지 않을 서버에서 설치 후 명령을 실행하고 싶지 않습니다.🤷🏻‍♂️

🤔 패키지를 설치하지 않고 오래된 패키지 목록을 얻으려면 어떻게 해야 합니까? 이를 위해 작곡가도 필요합니까?

고민 끝에 composer.jsoncomposer.lock 를 이용해서 정보를 얻고 패키지 정보 API를 꾸러미스트에게 찾아보기로 했습니다.🤞🏻

API는 json 확장자를 가진 URL에 가깝습니다🤫. 예를 들어, monolog/monolog에 대한 패키지 세부 정보를 얻으려면 URL 끝에 .json를 추가하면 됩니다.
packageist의 URL은 형식이 매우 잘 지정되어 있으므로 monolog/monolog와 같은 패키지의 경우 URL은 https://packagist.org/packages/monolog/monolog.json가 됩니다.

이제 제약 조건과 현재 버전, 패키지 정보를 갖추고 스크립트를 작성해야 할 때였습니다.🤓

1단계: 파일 구문 분석



파이썬에서 사용 가능한 json 라이브러리를 사용하여 해당 파일에서 데이터를 가져왔습니다.




2단계: packageist에서 메타데이터 읽기



repo 하위 도메인을 사용했지만 직접 URL도 작동합니다.



<스크립트 id="gist-ltag"src="https://gist.github.com/rishirajpurohit/b782298b1375dc4262351f4df27541fd.js"/>


3단계: 시맨틱 버전으로 작업하기 😯



<울>

  • Semantic Versioning 🤓
  • Library Used, readthedocs.io
  • semver package at npm for NpmSpec


  • 다른 경우를 처리해야 하고 git commit😒을 참조하는 일부 패키지가 있었기 때문에 이것은 가장 까다로운 부분이었습니다. 그러나 semantic-version 라이브러리를 시도하고 놀고 난 후에 구문 분석을 처리할 수 있었습니다. 파싱, 버전 비교 및 ​​최종 결과 준비가 완료되면 수월했습니다.🥳



    <스크립트 id="gist-ltag"src="https://gist.github.com/rishirajpurohit/03cf47a2fc95359e5c9ac941754325f7.js"/>


    참고: 버전을 더 잘 처리하기 위해 NpmSpec 대신 SimpleSpec 클래스로 전환해야 했습니다. 이 라이브러리는 npm-semver

    에 의해 정의된 시맨틱 버전을 사용합니다.

    스크립트는 시작점일 뿐이지만 작성하는 것은 꽤 재미있었고 아마도 다른 종소리와 함께 테스트 케이스를 추가하는 객체 지향으로 확장할 것입니다 😉



    즐거운 시간이 되었기를 바라며 코드에서 의미론적 버전 관리를 처리할 때 사용할 수 있는 멋진 도구 💪🏻를 제공했습니다. 프로세스를 다르게 설명했어야 하는 경우 댓글로 알려주세요.



    나를 팔로우하고 박수를 치고 유니콘을 던지고 이 게시물을 친구, 가족, 이웃 및 길에서 만나는 모든 사람과 공유하십시오. 😄

    좋은 웹페이지 즐겨찾기