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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0dfc332114a65a39a553477f60769fa8f4057f17377ec7e0626d18e51203d098
4
- data.tar.gz: 6451a8ca4d94803bd09caecf630a77781630a97763d957f3de5551b477579b5c
3
+ metadata.gz: bb639a96249cd5f2c1f4e39ed319f34969d08493b04989e109a294ae36fdd573
4
+ data.tar.gz: 878b28a9827227b283e407ce3c3f71d3576dad8628ee1f0cb424a4df15e94392
5
5
  SHA512:
6
- metadata.gz: 4505f754bce355051fcd352bd1debb1d430baf46bbdbe8a51fdba1528b9698c10cdd442b5ab2eb61b922fd7e4bfea2a36fc17400d2272f424c452e9c7e505b07
7
- data.tar.gz: 34e050758e14b5424e1c5a171f713d5962c2e8a6361a186a37024b1e7abbede412940be4d068663a5b4a9b244091e76843fb1931b45e9477f9461df61772563d
6
+ metadata.gz: 2bc14d09c9ad8dceea179efce78c7f04e597052e042bdce21dcb960bb35873062205d5ed44838bcf1129c07a1a06071de39ba951bbed637d5b80f767f06a1bfc
7
+ data.tar.gz: '02149dbe3705aaae111246c03c1b501861d1388657efedab4095ad10b21a024b3e0f1288a1daa4e968bea241ad951c5ee40fe38711597b9d8f08e1513e0c9c4b'
data/README.md CHANGED
@@ -24,6 +24,8 @@ Rubyのgemとしてインストールできます。
24
24
  gem install dratools
25
25
  ```
26
26
 
27
+ HPC環境向けに、インストールが簡単なGo言語実装の [dratools-go](https://github.com/kojix2/dratools-go) もあります。
28
+
27
29
  ## 使い方
28
30
 
29
31
  `dratools` はサブコマンド方式です。`dratools <command> --help` で各コマンドのオプションを確認できます。
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
- ダウンロード中は `curl`, `wget`, `aria2c` のいずれかの進捗が標準エラーに出ます。取得したファイルは `Downloaded<TAB>PATH` と表示します。既存ファイルを再利用した場合は `Skipped<TAB>PATH` と表示します。これらは標準エラーに出ます。最後に `dratools get: N downloaded, M skipped` のサマリを出します。状態とパスは TAB 区切りです。パスだけを取り出すには `cut -f2` を使います。
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: DownloadService.new,
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)
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Dratools
4
4
  NAME = 'dratools'
5
- VERSION = '0.0.4'
5
+ VERSION = '0.0.5'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dratools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2