2010-12-07 4 views
3

Roxygen 문서를 빌드하고 패키지를 빌드 한 다음 검사하여 내 컴퓨터에 새로 빌드 한 패키지를 설치하는 간단한 쉘 스크립트가 있습니다.Roxygen, package building 및 use.Rd2 = TRUE

#! /bin/sh 
R CMD roxygen -d myPackage 
R CMD build myPackage/ 
R CMD check myPackage_0.01.tar.gz 
R CMD INSTALL myPackage myPackage_0.01.tar.gz 

하지만 Roxygen는 described previously on StackOverflow로 내 .onLoad() 함수를 따기 문제가 있습니다 : 그것은 매우 간단합니다. 해결책은 roxygenize와 함께 use.Rd2 = TRUE 옵션을 사용하는 것입니다.

echo 'require("roxygen"); roxygenize("myPackage", roxygen.dir="myPackage", 
    copy.package=FALSE, use.Rd2=TRUE)' | R --no-save < /dev/stdin 

그냥 작동하는 보인다 : 글쎄 난 표준 입력을 통해 R에 roxygenize 라인을 밀 친다 다음 줄에이 라인

R CMD roxygen -d myPackage 

를 변경하도록 명령 프롬프트에서 구축하고자 멋쟁이. 그러나 조금 복잡하게 느껴집니다. 더 쉽고 우아한 방법이 있습니까?

+0

, 무엇을 좋아 아니다? –

+0

JAVA_HOME 환경 변수를 수동으로 편집하여 rJava 문제를 수정 한 것을 기억합니다. 그것이 효과가 있었지만, 그것은 차선책으로 보인다. 그래서 나는 비슷한 실수를 반복하지 않을 것이라고 확신했다. –

+1

기본적으로 같은 것을 실행하는 Makefile을 사용합니다. Dirk이 작동하는 것처럼 작동하는 경우 작동하지만 ... 깨지지 않으면 일부 프로그래머는 대개 어쨌든 문제를 해결하려고합니다. : p – Sharpie

답변

2

나는 비슷하지만 쉘 스크립트에서 문서를보다 깔끔하게 보이도록 사용합니다.

#!/bin/sh 
## 
## 
## Must be run from the parent of the package directory (no options 
## to change target of check or tarball!?!) 

PACKAGE="analyzeNMON" 
VERSION=$(awk -F": +" '/^Version/ { print $2 }' ${PACKAGE}/DESCRIPTION) 

R --no-restore --slave <<EOR 
    library(roxygen) 
    roxygenize(package.dir="${PACKAGE}", 
      roxygen.dir="${PACKAGE}", 
      use.Rd2=TRUE, 
      overwrite=TRUE, 
      copy.package=FALSE, 
      unlink.target=FALSE) 
EOR 

R CMD build ${PACKAGE} 
R CMD check ${PACKAGE}_${VERSION}.tar.gz 
R CMD INSTALL ${PACKAGE}_${VERSION}.tar.gz 

는 R 코드

R CMD roxygen 동안 실행 스크립트의 그것과 매우 유사하다.

(버전 0.1 CRAN이 주에서 설치) 시스템에 설치되어있는 roxygen가 작동하는 경우 위에서 언급 한 -s 옵션을 지원하지 않는 것 ...

2

R CMD roxygen -s 옵션이 도움이 될 수 있습니다. roxygenize 함수에서 use.Rd2=TRUE으로 설정하는 것이 효과적이라고 생각합니다.

+0

나는 그것을 몰랐다. 감사! –