修订版 | 7c011b85a2db1c4f4cef3e3eefd9840a2b1b0488 (tree) |
---|---|
时间 | 2020-10-24 23:01:15 |
作者 | matsuand <30614168+matsuand@user...> |
Commiter | matsuand |
第3引数(ターゲットファイル)の追加.
@@ -1,27 +1,52 @@ | ||
1 | 1 | #!/usr/bin/perl |
2 | 2 | |
3 | 3 | ### progit2ja_diff.perl |
4 | +### | |
5 | +### 利用方法 | |
6 | +### ./progit2ja_diff.perl <origdir> <jadir> | |
7 | +### | |
8 | +### <origdir>: progit2 オリジナルのソーストップディレクトリ名 | |
9 | +### <jadir>: progit/progit2-ja のソーストップディレクトリ名 | |
10 | +### <target>: (任意)処理対象とするascファイルのベース名。 | |
11 | +### この指定がない場合は全ファイルを対象とする。 | |
12 | +### | |
4 | 13 | ### progit/progit2-ja のソース内にコメントとして示された原文部分を |
5 | -### progit オリジナルソースと比較して、diff を取り標準出力します。 | |
6 | -### 実行は ./progit2ja_diff <origdir> <jadir> とします。 | |
7 | -### ここで origdir は progit2 オリジナルのソーストップディレクトリ名、 | |
8 | -### jadir は progit/progit2-ja のソーストップディレクトリ名です。 | |
9 | -### ディレクトリ末尾のスラッシュは取り除いて指定します。 | |
14 | +### progit オリジナル全ソースと比較して、diff を取り標準出力します。 | |
10 | 15 | ### |
11 | 16 | ### 処理方法はざっと以下です。<origdir> 配下の *.asc ファイルを順に |
12 | 17 | ### 処理します。そのベース名に応じた <jadir> 配下の *.asc ファイル |
13 | 18 | ### (日本語版) を取得して、その英語原文コメント部分のみを抽出して、 |
14 | 19 | ### /tmp ディレクトリ内に *.asc.tmp というファイル名で一時保存します。 |
15 | -### その *.asc.tmp とオリジナルソース配下の *.asc との間で diff を | |
20 | +### オリジナルソース配下の *.asc とその *.asc.tmp の間で diff を | |
16 | 21 | ### 取ります。結果は標準出力します。/tmp 配下に生成する *.asc.tmp は |
17 | -### 削除しません。処理が正しく行われているかどうかは、この一時ファイル | |
18 | -### を見て確認いる状態です。 | |
22 | +### 削除しません。処理が正しく行われているかどうかを、この一時ファイル | |
23 | +### を見て確認することができます。 | |
24 | +### | |
25 | +### 処理にあたって日本語ソース *.asc での原文コメントの記述方法は、 | |
26 | +### 以下であることを大前提としています。この方法に合わないファイルは | |
27 | +### 正しく処理されません。特に(日本語訳文)の終了は(改行)をもって判断 | |
28 | +### しているため、これに合わない記述(いくらか存在します)は適切に処理 | |
29 | +### されません。 | |
30 | +### ////////////////////////// | |
31 | +### (英語原文) | |
32 | +### ////////////////////////// | |
33 | +### (日本語訳文) | |
34 | +### (改行) | |
35 | +### ... | |
19 | 36 | ### |
20 | 37 | ### <origdir> 配下にあって <jasrc> 配下にないソースファイルに対しては |
21 | 38 | ### diff 取得が不能であるため、標準出力に Warning: file not found: |
22 | 39 | ### *.asc のメッセージを出します。ベース名が異なるだけでも diff 処理 |
23 | 40 | ### は不能であり、このメッセージとなります。 |
24 | 41 | ### |
42 | +### 具体的な処理例 | |
43 | +### | |
44 | +### cd ~/foo/bar | |
45 | +### git clone https://github.com/progit/progit2.git | |
46 | +### git clone https://github.com/progit/progit2-ja.git | |
47 | +### perl progit2ja_diff.perl progit2 progit2-ja > diff.txt | |
48 | +### perl progit2ja_diff.perl progit2 progit2-ja aliases.asc | |
49 | +### | |
25 | 50 | ### 随所でのエラー処理は、ほぼまったく考慮していません。 |
26 | 51 | ### 無保証。ライセンスは progit2 ソース同様、 |
27 | 52 | ### Creative Commons Attribution-NonCommercial-ShareAlike 3.0 とします。 |
@@ -30,20 +55,28 @@ use strict; | ||
30 | 55 | use File::Basename; |
31 | 56 | use File::Path; |
32 | 57 | |
33 | -my $orig_dir = shift; # top directory for the original progit2 sources | |
34 | -my $ja_dir = shift; # top directory for the progit2-ja sources | |
58 | +my $orig_dir = shift; # top directory for original progit2 sources | |
59 | +my $ja_dir = shift; # top directory for progit2-ja sources | |
60 | +my $target = shift; # optional: basename of target file to be processed | |
35 | 61 | my $fh_tempfile; |
36 | 62 | my $lines = ""; |
37 | 63 | my $first_flag; |
38 | 64 | |
65 | +$orig_dir =~ s#/$##; | |
66 | +$ja_dir =~ s#/$##; | |
67 | + | |
39 | 68 | &proc_all_files($orig_dir, $ja_dir); |
40 | 69 | |
41 | 70 | sub proc_all_files { |
42 | - my @origfiles = `find $_[0] -name "*.asc" | sort`; | |
71 | + my @origfiles = `find $_[0]/ -name "*.asc" | sort`; | |
43 | 72 | chomp @origfiles; |
44 | 73 | foreach my $origfile (@origfiles) { |
45 | - my $japath = $origfile; | |
46 | - $japath =~ s/$_[0]/$_[1]/; | |
74 | + if ($target ne "" ) { | |
75 | + if ($target ne basename $origfile) { | |
76 | + next; | |
77 | + } | |
78 | + } | |
79 | + my $japath = $origfile; $japath =~ s/$_[0]/$_[1]/; | |
47 | 80 | &output_ja_tempfile($japath); |
48 | 81 | } |
49 | 82 | } |