dratools 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/docs/design.md +1 -1
- data/docs/usage.md +3 -3
- data/lib/dratools/command_line_interface.rb +3 -3
- data/lib/dratools/commands/base_command.rb +5 -1
- data/lib/dratools/commands/get_command.rb +7 -4
- data/lib/dratools/download_service.rb +3 -1
- data/lib/dratools/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bb639a96249cd5f2c1f4e39ed319f34969d08493b04989e109a294ae36fdd573
|
|
4
|
+
data.tar.gz: 878b28a9827227b283e407ce3c3f71d3576dad8628ee1f0cb424a4df15e94392
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2bc14d09c9ad8dceea179efce78c7f04e597052e042bdce21dcb960bb35873062205d5ed44838bcf1129c07a1a06071de39ba951bbed637d5b80f767f06a1bfc
|
|
7
|
+
data.tar.gz: '02149dbe3705aaae111246c03c1b501861d1388657efedab4095ad10b21a024b3e0f1288a1daa4e968bea241ad951c5ee40fe38711597b9d8f08e1513e0c9c4b'
|
data/README.md
CHANGED
data/docs/design.md
CHANGED
|
@@ -66,7 +66,7 @@ md5 が得られる候補では、ダウンロード後に `Digest::MD5.file`
|
|
|
66
66
|
|
|
67
67
|
1. `--force` があれば既存ファイルを使わず再取得する
|
|
68
68
|
2. `--skip-existing` があれば md5 を見ずに既存ファイルを使う
|
|
69
|
-
3. md5 があり、既存ファイルの md5 が一致すれば再取得せず `Skipped` にする
|
|
69
|
+
3. md5 があり、既存ファイルの md5 が一致すれば再取得せず `[dratools] Skipped` にする
|
|
70
70
|
4. それ以外は `curl --continue-at -`, `wget --continue`, `aria2c --continue=true` でレジュームを試みる
|
|
71
71
|
|
|
72
72
|
md5 が無い候補では、既定では既存ファイルをスキップしません。SRA ファイルとしての検証は dratools の既定動作には含めません。
|
data/docs/usage.md
CHANGED
|
@@ -190,7 +190,7 @@ direct run を多数持つ親 accession では、`tree` は各 run を個別取
|
|
|
190
190
|
dratools get -O ~/Downloads DRR000001
|
|
191
191
|
```
|
|
192
192
|
|
|
193
|
-
|
|
193
|
+
ダウンロード開始時は `[dratools] Downloading<TAB>PATH` と表示し、その後に `curl`, `wget`, `aria2c` のいずれかの進捗が標準エラーに出ます。取得したファイルは `[dratools] Downloaded<TAB>PATH` と表示します。既存ファイルを再利用した場合は `[dratools] Skipped<TAB>PATH` と表示します。これらは標準エラーに出ます。最後に `[dratools] dratools get: N downloaded, M skipped` のサマリを出します。状態とパスは TAB 区切りです。パスだけを取り出すには `cut -f2` を使います。
|
|
194
194
|
|
|
195
195
|
### 既存ファイルの扱い
|
|
196
196
|
|
|
@@ -198,11 +198,11 @@ DDBJ のメタデータに md5 が含まれることは多くありません。
|
|
|
198
198
|
|
|
199
199
|
同名のファイルが既にある場合、`get` はサーバにファイルサイズを問い合わせます。それをローカルのファイルサイズと比べます。
|
|
200
200
|
|
|
201
|
-
- サイズが同じなら、再取得しません。`Skipped` と表示します。
|
|
201
|
+
- サイズが同じなら、再取得しません。`[dratools] Skipped` と表示します。
|
|
202
202
|
- ローカルのほうが小さいなら、再取得します。途中で中断したファイルが対象です。
|
|
203
203
|
- ローカルのほうが大きいなら、エラーになります。別物の可能性があるためです。`--force` で上書きできます。
|
|
204
204
|
|
|
205
|
-
md5 が得られる場合は、サイズではなく md5 で判定します。既存ファイルの md5 が一致すれば `Skipped` と表示します。ダウンロード後にも md5 を照合します。
|
|
205
|
+
md5 が得られる場合は、サイズではなく md5 で判定します。既存ファイルの md5 が一致すれば `[dratools] Skipped` と表示します。ダウンロード後にも md5 を照合します。
|
|
206
206
|
|
|
207
207
|
### オプション
|
|
208
208
|
|
|
@@ -70,7 +70,7 @@ module Dratools
|
|
|
70
70
|
def initialize(
|
|
71
71
|
argv,
|
|
72
72
|
resolver: nil,
|
|
73
|
-
downloader:
|
|
73
|
+
downloader: nil,
|
|
74
74
|
stdout: $stdout,
|
|
75
75
|
stderr: $stderr,
|
|
76
76
|
stdin: $stdin
|
|
@@ -84,7 +84,7 @@ module Dratools
|
|
|
84
84
|
enabled: interactive?(stderr)
|
|
85
85
|
)
|
|
86
86
|
@resolver = resolver || default_resolver
|
|
87
|
-
@downloader = downloader
|
|
87
|
+
@downloader = downloader || DownloadService.new
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
def run
|
|
@@ -106,7 +106,7 @@ module Dratools
|
|
|
106
106
|
command_class = SUBCOMMANDS[name] || SUBCOMMANDS[SUBCOMMAND_ALIASES[name]]
|
|
107
107
|
unless command_class
|
|
108
108
|
expected = SUBCOMMANDS.keys.join(', ')
|
|
109
|
-
@stderr.puts "#{COMMAND_NAME}: unknown command '#{name}' (expected: #{expected})"
|
|
109
|
+
@stderr.puts "[#{COMMAND_NAME}] #{COMMAND_NAME}: unknown command '#{name}' (expected: #{expected})"
|
|
110
110
|
return FAILURE_EXIT_STATUS
|
|
111
111
|
end
|
|
112
112
|
|
|
@@ -179,10 +179,14 @@ module Dratools
|
|
|
179
179
|
@tsv_header_printed = true
|
|
180
180
|
end
|
|
181
181
|
|
|
182
|
+
def dratools_message(message)
|
|
183
|
+
"[#{Dratools::NAME}] #{message}"
|
|
184
|
+
end
|
|
185
|
+
|
|
182
186
|
def report_error(message, accession: nil)
|
|
183
187
|
prefix = "#{Dratools::NAME} #{command_name}"
|
|
184
188
|
prefix = "#{prefix}: #{accession}" if accession
|
|
185
|
-
@stderr.puts "#{prefix}: #{message}"
|
|
189
|
+
@stderr.puts dratools_message("#{prefix}: #{message}")
|
|
186
190
|
end
|
|
187
191
|
end
|
|
188
192
|
end
|
|
@@ -7,6 +7,7 @@ module Dratools
|
|
|
7
7
|
# 実際にファイルをダウンロードする。
|
|
8
8
|
class GetCommand < BaseCommand
|
|
9
9
|
DEFAULT_OUTPUT_DIRECTORY = DownloadService::DEFAULT_OUTPUT_DIRECTORY
|
|
10
|
+
DOWNLOAD_START_PREFIX = 'Downloading'
|
|
10
11
|
DOWNLOAD_SUCCESS_PREFIX = 'Downloaded'
|
|
11
12
|
DOWNLOAD_SKIPPED_PREFIX = 'Skipped'
|
|
12
13
|
|
|
@@ -59,7 +60,7 @@ module Dratools
|
|
|
59
60
|
def finalize
|
|
60
61
|
parts = ["#{@downloaded_count.to_i} downloaded", "#{@skipped_count.to_i} skipped"]
|
|
61
62
|
parts << "#{@failed_count} failed" if @failed_count.positive?
|
|
62
|
-
@stderr.puts "#{Dratools::NAME} #{command_name}: #{parts.join(', ')}"
|
|
63
|
+
@stderr.puts dratools_message("#{Dratools::NAME} #{command_name}: #{parts.join(', ')}")
|
|
63
64
|
end
|
|
64
65
|
|
|
65
66
|
def save_one_download(accession, download)
|
|
@@ -70,13 +71,15 @@ module Dratools
|
|
|
70
71
|
verify: @options[:verify],
|
|
71
72
|
force: @options[:force],
|
|
72
73
|
skip_existing: @options[:skip_existing]
|
|
73
|
-
)
|
|
74
|
+
) do |path|
|
|
75
|
+
@stderr.puts dratools_message("#{DOWNLOAD_START_PREFIX}\t#{path}")
|
|
76
|
+
end
|
|
74
77
|
if result.skipped?
|
|
75
78
|
@skipped_count = @skipped_count.to_i + 1
|
|
76
|
-
@stderr.puts "#{DOWNLOAD_SKIPPED_PREFIX}\t#{result.path}"
|
|
79
|
+
@stderr.puts dratools_message("#{DOWNLOAD_SKIPPED_PREFIX}\t#{result.path}")
|
|
77
80
|
else
|
|
78
81
|
@downloaded_count = @downloaded_count.to_i + 1
|
|
79
|
-
@stderr.puts "#{DOWNLOAD_SUCCESS_PREFIX}\t#{result.path}"
|
|
82
|
+
@stderr.puts dratools_message("#{DOWNLOAD_SUCCESS_PREFIX}\t#{result.path}")
|
|
80
83
|
end
|
|
81
84
|
rescue Error => error
|
|
82
85
|
report_error(error.message, accession: accession)
|
|
@@ -66,7 +66,8 @@ module Dratools
|
|
|
66
66
|
protocol: DEFAULT_PROTOCOL,
|
|
67
67
|
verify: true,
|
|
68
68
|
force: false,
|
|
69
|
-
skip_existing: false
|
|
69
|
+
skip_existing: false,
|
|
70
|
+
&before_download
|
|
70
71
|
)
|
|
71
72
|
FileUtils.mkdir_p(outdir)
|
|
72
73
|
download_url = download.url_for_protocol(protocol)
|
|
@@ -85,6 +86,7 @@ module Dratools
|
|
|
85
86
|
return DownloadResult.new(path: output_path, skipped: true)
|
|
86
87
|
end
|
|
87
88
|
|
|
89
|
+
before_download&.call(output_path)
|
|
88
90
|
@runner.download_url(download_url, output_path)
|
|
89
91
|
if verify && checksum_available?(download)
|
|
90
92
|
@checksum_verifier.verify_md5!(output_path, download.md5)
|
data/lib/dratools/version.rb
CHANGED