2009. 11. 16. 15:14
리눅스 쓰다 보면 폰트가 참 별게 없다는 생각이 많이 든다. 그래서 며칠 전에 쓸려고 공짜 폰트를 뒤져봤는데, 생각보다 공짜 - 돈을 안내는 것만 - 인 폰트가 꽤 많았다. 근데 너무 흩어져있어서 -_-;; 한번에 받을 수 있는 스크립트를 짜봤다.

짜다보니 지쳐서 뒤로 갈수록 상태가 안좋아지는 문제가 있긴 한데 -_-;; 그래도 일단 당장에 쓰는데는 문제가 없을거다.

사용한 gem은 rubyzip (ZIP 파일로 압축된 폰트를 풀 때 쓴다), archive-tar-minitar(tar.gz나 tgz파일), highline (프롬프트), open-uri (Net::HTTP로 하나하나 받으려니 귀찮아서 사용 - open 함수로 간단하게 URL을 열 수 있게 해주는 젬), hpricot(HTML 파서)가 추가로 설치해야하는 젬들이고, 나머지는 유명하거나 stdlib으로 포함되어 있으니까 패스.

소스는 첨부된 것을 참조하면 된다.

여기서 재활용이 가능한 코드는, NForgeDownloader와 TarGzDistribution, ZipDistribution 정도이다. NForgeDownloader를 mixin해 넣고 initialize_downloader로 사이트 주소와 프로젝트명을 넣으면 download 함수를 호출함으로써 최신 버전을 받을 수 있다. xxxDistribution을 mixin하면 @downloaded에 지정된 파일을 클래스 이름에 해당하는 서브디렉토리를 만들어서 그 안에 풀어주는데, 저 변수는 NForgeDownloader의 download에서 설정되기 때문에 딱히 손을 안대도 알아서 받아서 풀어주는 메서드가 생긴다. get_preferred_item 함수를 통해서 받고싶은 파일의 이름을 지정할 수 있는데, 역시 Distribution 시리즈에서 자동으로 확장자가 자기가 처리할 수 있는 것을 받도록 한다.

rb 파일은 소스파일, exe파일은 이전에 올린바 있는 rubyscript2exe로 만든 패킹된 Self Extract 프로그램이다.