Skip to content

Instantly share code, notes, and snippets.

@midore
Created February 11, 2009 10:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save midore/61953 to your computer and use it in GitHub Desktop.
Save midore/61953 to your computer and use it in GitHub Desktop.
OS X リソースフォークを削除する
# for AppleScript at github
About file.applescrit
file.applescrpt は AppleScript で書かれたコンパイル以前のテキストファイル。
file.scpt はコンパイル済みファイル。
github にfile.scpt を push するとブラウジングできない。従って file.applescrpt を
push することになる。file.applescrpt を push する場合の利点について考えてみると。。。
仮に、AppleScript Version が異なるマシンにコピーされた時、コンパイルが通るか通らない
かを使う人自身が確認できる。
既にコンパイルされてるファイルを AppleScript Version が異なる環境で動かそうとすると、
動かない場合があり(動くこともある)動かない原因をまじめに知りたい人は一旦テキストに戻す
ことを強いられるのだからこの手間をはぶける。
そもそも、コンパイルしたものを配布すべきじゃないのでは?って気もしてくる...
file.appplescript で配布されていれば、自身でコンパイルする必要があるわけだから、
仮にエラーが発生してもなんのエラーなのか一目瞭然だし、そのエラーがバージョンに依存するも
のなのか?なんなのか明瞭になる。配布側リソースも少なくてすむ。
Referred page
http://macwiki.sourceforge.jp/wiki/index.php/OSXの固有コマンド
リソースフォークを維持したままコピーする方法。こちらに関する情報は google に豊富にあった。
% ditto -V -rsrcFork
++++++
Command: SplitForks, ditto, Getinfo
% SplitForks -sv abc.applescript
% ls -la
-rw-r--r-- 1 midore staff 82 2 11 17:50 ._abc.applescript
-rw-r--r--@ 1 midore staff 1006 2 11 17:48 abc.applescript
-rw-r--r--@ 1 midore staff 5276 2 11 17:47 abc.scpt
# abc.applescript のリソースフォークを本体と分離する「だけ」で削除はしてくれないので
# このコマンドを打つと何度でも._abc.applescript を吐き出してくれる。
# 不要なので削除しておく。でも本体ファイルからリソースフォークが削除されているわけじゃない。
% rm ._abc.applescript
# google で調べた結果、リソースを削除したファイルをつくるには ditto を使うとよいらしい。
# リソースのないファイル名を xyz.applescript に。
% ditto --norsrc abc.applescript xyz.applescript
# xyz.applescript に対し SplitForks でもってリソースを分離せよと命令しても、もはや
リソースは存在していないことを確認できた。
% SplitForks -sv xyz.applescript
% ll
total 32
drwxr-xr-x 5 midore staff 170 2 11 17:59 .
drwx------+ 9 midore staff 306 2 11 17:59 ..
-rw-r--r--@ 1 midore staff 1006 2 11 17:48 abc.applescript
-rw-r--r--@ 1 midore staff 5276 2 11 17:47 abc.scpt
-rw-r--r-- 1 midore staff 1006 2 11 17:48 xyz.applescript
# その他確認
% GetFileInfo xyz.applescript
file: "/Users/midore/test/xyz.applescript"
type: ""
creator: ""
attributes: avbstclinmedz
created: 02/11/2009 17:48:50
modified: 02/11/2009 17:48:50
% GetFileInfo abc.scpt
file: "/Users/midore/test/abc.applescript"
type: "TEXT"
creator: "ToyS"
attributes: avbstclinmedz
created: 02/04/2009 02:26:46
modified: 02/11/2009 17:47:18
以上のことを知る前に作った自作スクリプト。
file.applescript を扱う場合はファイル内容に日本語文字列が含まれていないことが条件になる。
なんでかっていうと、生成されるファイルはコンパイルエラーじゃなくてもコンパイルできなくなるから。
固める時は ptar コマンドを使う。 (OS X 10.5.6)
./copy-textfile.rb OriginalFolder/ NewFolder/
<copy-textfile.rb>
--
# -*- coding: utf-8 -*-
require 'find'
require 'fileutils'
dir1 = ARGV[0]
dir2 = ARGV[1]
def cat_cp(dir1,dir2)
files = Hash.new
Find.find(dir1){|path|
Find.prune if path =~ /.DS_Store/
if FileTest.file?(path)
df = path.gsub(dir1,'')
nd = File.join(dir2, df)
FileUtils.mkdir_p(File.dirname(nd)) unless FileTest.exist?(File.dirname(nd))
p str = "cat #{path} > #{nd}"
system(str)
end
}
end
orgdir = File.expand_path(dir1)
cat_cp(orgdir,dir2)
--
% ptar -cvzf NewFolder.tar.gz NewFolder
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment