Package management workflow scaffold.
Project description
pkgmgr
패키지 관리/배포 워크플로를 위한 Python 패키지입니다. 현재는 스캐폴드 상태이며, CLI와 설정 템플릿이 준비돼 있습니다.
구성
pkgmgr/cli.py: CLI 엔트리 (아래 명령어 참조)pkgmgr/config.py:pkgmgr.yaml/pkg.yaml템플릿 생성 및 로더 (PyYAML 필요)pkgmgr/snapshot.py,pkgmgr/release.py,pkgmgr/gitcollect.py,pkgmgr/watch.py: 스냅샷/패키지 수명주기/깃 수집/감시 스텁pkgmgr/collectors/: 컬렉터 인터페이스 및 체크섬 컬렉터 스텁- 템플릿:
pkgmgr/templates/pkgmgr.yaml.sample,pkgmgr/templates/pkg.yaml.sample
필요 사항
- Python 3.8 이상
- PyYAML 6.x (의존성에 포함되어 일반 설치 시 자동 설치)
기본 사용 흐름 (스캐폴드)
아래 명령은 python -m pkgmgr.cli ... 형태로 실행합니다.
- 메인 설정 템플릿 생성
python -m pkgmgr.cli make-config -o pkgmgr.yaml
pkgmgr.yaml에서 소스 경로, 설치 타깃(bin/lib/data 등), release 루트, Git 키워드, 감시 주기, 기본 컬렉터 목록 등을 편집합니다. 기본 생성 위치는 ~/pkmgr/config/pkgmgr.yaml이며, --config로 다른 경로를 지정할 수 있습니다. 상태/캐시 데이터는 추후 ~/pkmgr/local/state, ~/pkmgr/cache에 둘 예정입니다.
- 환경 준비
python -m pkgmgr.cli install
(현재는 자리표시자; 추후 의존성/경로 체크를 수행)
- 초기 스냅샷 생성
python -m pkgmgr.cli init-snap --config pkgmgr.yaml
설정된 소스/설치/릴리스 루트를 기준으로 베이스라인을 기록하도록 확장 예정입니다.
- 패키지 생성
python -m pkgmgr.cli create-pkg <pkg-id> --config pkgmgr.yaml
<release_root>/<pkg-id>/pkg.yaml 템플릿을 만들고, 초기 스냅샷/메타데이터를 붙이는 방향으로 확장됩니다.
- 패키지 종료
python -m pkgmgr.cli close-pkg <pkg-id> --config pkgmgr.yaml
감시 대상에서 제외하고 상태를 closed로 표시하는 용도로 사용합니다.
- 감시(폴링)
python -m pkgmgr.cli watch --config pkgmgr.yaml
python -m pkgmgr.cli watch --config pkgmgr.yaml --once # 한 번만 폴링
설정된 interval로 변경을 감시하는 로직을 연결할 예정입니다.
- 수집(컬렉터)
python -m pkgmgr.cli collect --pkg <pkg-id> --config pkgmgr.yaml
python -m pkgmgr.cli collect --pkg <pkg-id> --collector checksums --config pkgmgr.yaml
체크섬/정적/동적/EDR/백신 등 컬렉터를 플러그인 형태로 추가할 수 있도록 확장 예정입니다.
- 내보내기
python -m pkgmgr.cli export --pkg <pkg-id> --format excel --config pkgmgr.yaml
엑셀/워드/JSON 등의 산출물을 생성하는 후크를 붙일 계획입니다.
설치·PATH/alias 자동 추가
python -m pip install .후python -m pkgmgr.cli install을 실행하면 현재 파이썬의bin경로(예: venv/bin, ~/.local/bin 등)를 감지해 사용 중인 쉘의 rc 파일에 PATH/alias를 추가합니다.- 지원 쉘: bash(
~/.bashrc), zsh(~/.zshrc), csh/tcsh(~/.cshrc/~/.tcshrc), fish(~/.config/fish/config.fish). - 추가 내용:
- PATH:
export PATH="<script_dir>:$PATH"또는 쉘별 동등 구문 - alias:
alias pkg="pkgmgr"(csh/fish 문법 사용)
- PATH:
- 이미 추가된 경우(marker로 확인) 중복 삽입하지 않습니다. rc 파일이 없으면 새로 만듭니다.
배포(초도 PyPI 업로드) 체크리스트
- 메타데이터:
pyproject.toml에서 이름/설명/라이선스/클래시파이어를 관리합니다. 버전은pkgmgr/__init__.py의__version__에서 읽습니다(PEP 440 형식). - 빌드 준비:
python -m pip install --upgrade build twine. - 빌드:
python -m build→dist/에 sdist+wheel 생성. - 검증:
twine check dist/*후python -m pip install dist/pkgmgr-<버전>-py3-none-any.whl로컬 설치 테스트. - 업로드:
TWINE_USERNAME=__token__ TWINE_PASSWORD=pypi-*** twine upload dist/*. - 업로드 전 README/라이선스/템플릿이 최신인지 확인하고, 필요시 rc 업데이트 안내를 유지합니다.
템플릿 개요
-
pkgmgr/templates/pkgmgr.yaml.sample: 메인 설정 샘플version: 스키마 버전pkg_release_root: 패키지 릴리스 루트sources: 관리할 소스 경로 목록install.targets/install.exclude: 설치 영역 포함/제외 규칙watch.interval_sec: 감시 폴링 주기git.keywords: 커밋 수집 키워드/정규식collectors.enabled: 기본 활성 컬렉터
-
pkgmgr/templates/pkg.yaml.sample: 패키지별 설정 샘플pkg.id/pkg.root/pkg.status(open|closed)include.sources/install/pkg_dir: 포함 대상git.keywords/since/until: 커밋 수집 범위collectors.enabled: 패키지별 컬렉터 설정
주의
- 아직 핵심 로직(스냅샷/감시/수집/내보내기)은 스텁입니다. 추후 단계적으로 구현/교체 예정입니다.
TODO (우선순위)
- 스냅샷/디프 구현:
pkgmgr/snapshot.py에 해시/mtime/size 스캔, baseline/latest 저장(state/...), diff 작성. CLIinit-snap/watch연결. - 설정 스키마 검증:
pkgmgr/config.py필수 필드 확인, 기본값 주입, PyYAML 체크, 템플릿 필드 설명 보강. - 패키지 라이프사이클:
release.py에서create-pkg시pkg.yaml초기화,close-pkg상태 저장, 상태 파일 표준화. - Git 수집:
gitcollect.py에 키워드/정규식 로그 수집,state/pkg/<id>/commits.json저장,collect_for_pkg에서 호출. - 컬렉터 파이프라인: 체크섬 collector를 include 목록 기반 실행, collector 등록/선택 로직 추가, 정적/동적/EDR/AV 훅 자리 마련.
- 감시 루프:
watch.py폴링 tick 구현(스냅샷→디프→state), pkg status(open/closed) 고려, interval 적용. - Export 인터페이스:
release.py의export_pkg에서 기본 JSON 덤프, excel/word는 외부 후크 설계. - 문서/샘플: README와
templates/*.sample를 최신 스키마에 맞춰 보강.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pkgmgr_kunrunic-0.1.0.dev2.tar.gz.
File metadata
- Download URL: pkgmgr_kunrunic-0.1.0.dev2.tar.gz
- Upload date:
- Size: 14.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
acf2d6be8cf830f1c585bc19f61afde81cb79e80ea749d133a2ef18a21583d91
|
|
| MD5 |
131ccb373a840d5d7732255b4142fbd5
|
|
| BLAKE2b-256 |
4dfd347b348e79656fc84e9094c0b5805200bb8d1cac3d0f0323b744b980d6c0
|
File details
Details for the file pkgmgr_kunrunic-0.1.0.dev2-py3-none-any.whl.
File metadata
- Download URL: pkgmgr_kunrunic-0.1.0.dev2-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b44e62c25337320f31c9d38e98e65a940ffc6222ec8c9dcf4ebd04efed3c49e
|
|
| MD5 |
674fb27525c24f96011acca754326ee1
|
|
| BLAKE2b-256 |
7392cceb16a24381df42b29e55e3091c607a427d79b3ad1a500dd69e1ab0d5c4
|