Loopt
모든 언어로 GitHub Actions 워크플로우를 작성합니다. TypeScript, Python, Go, Rust가 기본 제공되는 언어(first-party languages)이며, 사용자 정의 언어는 플러그인 프로토콜(plugin protocol)을 통해 연결됩니다. Loopt은 해당 소스에서 표준 .github/workflows/*.yml 파일을 생성하며, 기존 워크플로우 YAML을 편집 가능한 코드로 가져올 수도 있습니다.
생성된 워크플로우 파일은 다음으로 시작합니다:
# Generated by loopt. Edit the source under .loopt/workflows and run loopt gen.
.loopt/workflows/*를 편집하고, 생성된 YAML을 직접 수정하지 마세요.
설치 (Install)
Cargo가 필요 없는 빌드된 바이너리(Prebuilt binaries):
curl -fsSL https://raw.githubusercontent.com/preloopdev/loopt/main/install.sh | sh
이 스크립트는 ~/.local/bin에 설치되며, 릴리스 체크섬(release checksum)이 게시될 때 검증합니다. 목적지를 변경하려면 LOOPT_INSTALL_DIR을 설정하거나, 특정 버전을 고정하려면 LOOPT_VERSION=v0.1.1을 사용하세요. 빌드된 바이너리는 macOS arm64 및 Linux x86_64용으로 게시됩니다.
작성하는 언어는 생성 시 설치되어 있어야 합니다: Node.js 26+, Python 3, Go 또는 Cargo/Rust.
프로젝트 시작하기 (Start a project)
워크플로우를 .loopt/workflows/ci.ts에 TypeScript 소스로 작성하고, 이를 기반으로 .github/workflows/ci.yml을 생성하며, 다음 단계를 출력합니다. 이 스타터는 프로젝트 파일 구조를 따릅니다:
| 발견된 파일 | 단계 (Steps) |
|---|
package.json | npm ci (또는 lockfile 없이 npm install), npm test |
| ... | |
모든 스타터는 읽기 전용 토큰(contents: read)을 사용하고, 자격 증명(credentials)을 유지하지 않는 커밋에 actions/checkout을 고정하며, 대체된 실행을 취소하고, 클린 린트(lints clean)를 수행합니다. 자유롭게 편집할 수 있으며, 단지 시작점일 뿐입니다. | |
loopt init --language python --name build --template node
--language는 typescript(기본값), python, go, 또는 rust입니다. --name은 파일 이름(기본값 ci)을 설정합니다. --template은 auto(기본값), generic, node, rust, go, 또는 python입니다. init은 기존 워크플로우를 절대 덮어쓰지 않으므로, 이 경우에는 loopt import를 사용하세요.
사용하기 (Use)
loopt import --language typescript
...
loopt import는 원본 YAML을 변경하지 않습니다. loopt gen은 사용자가 Loopt 외부에서 수정한 워크플로우를 덮어쓰지 않으며, 이때는 --force 플래그를 전달해야 합니다.
컴포지트 액션(Composite actions) (.github/workflows/ 외부의 action.yml/action.yaml)도 동일한 방식으로 액션 메타데이터로 가져옵니다.
컴포지트 액션 세부 정보, 안전한 run 템플릿, 그리고 전체 소스↔YAML 동기화 의미론(semantics)에 대해서는 [워크플로우 작성하기]를 참조하십시오.
검토 (Review)
생성된 워크플로우에 대해 네이티브 정확성 및 보안 검사를 실행합니다. 선택적으로 run: 스크립트에 shellcheck를 적용할 수 있습니다.
loopt gen은 동일한 리뷰를 자동으로 실행합니다.
--persona/--context/--shellcheck 플래그 및 심각도 매핑에 대해서는 [린트 및 보안 검토]를 참조하십시오.
기타 모든 것 (Everything else)
| 주제 | 문서 |
|---|
Typed, commit-pinned action imports (loopt actions …) | 액션 바인딩 |
| ... | |
테스트 (Test)
전체 외부 고정 데이터(external-fixture) 코퍼스 테스트는 선택 사항입니다:
PRELOOP_FIXTURES=/path/to/fixtures cargo test --test corpus -- --ignored
라이선스 (License)
MIT.