biocgem 0.0.2 → 0.0.3

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: b8bfbcb8142aae417fe036d452d5aaeb97e36741bf368a656ff363914277cc01
4
- data.tar.gz: 96cf48a41ea9874da8e6f35623a63218247ecbca355d07056ab3d0c7433fe9ca
3
+ metadata.gz: 42cd5ff623873b8031d52cb669f1e5c8f5893a4d6c4744c49012bc570d145871
4
+ data.tar.gz: ad395c534ceb64ad0dc6493120ce7870a02ad09dab4a804cc88599dc71363184
5
5
  SHA512:
6
- metadata.gz: da47849575cacbd3225292dd6796e58721ec27235f658221cdcc82fd884b7a014823cf11941ef7aee42aadc3f95f0668637990d9271e157619f08a7ae47446b2
7
- data.tar.gz: b434fc243049e98310a7d18ee798b7e0b165275fe065591cc371fd44fa3296b2d370e385e96a573c23f0e369c424e0e86d293857d43ea8508105c9d612f70d34
6
+ metadata.gz: cc5968031537f5057914f724500dbe9a162d95f3da4bc488edfb1df59f4412ae733a4a434c2e2a1ea75bfb32b1f6ef9f26797bc295a65ac268501b8c8cfa0645
7
+ data.tar.gz: 9db05fb3944a0cecc5985f6a794ae678329241b2989db2a14d7386583eb63f673bee4b6a887f92f25d0a62b305755f44f4f538be3a20bf4b894950131dd98f5a
@@ -8,16 +8,26 @@ module BiocGem
8
8
  attr_accessor :parser
9
9
 
10
10
  def initialize(argv = ARGV)
11
- @argv = argv
11
+ @argv = argv.clone
12
12
  @parser = Parser.new
13
13
  end
14
14
 
15
15
  def run
16
- parser.parse_options(@argv)
16
+ parser.parse!(@argv)
17
17
 
18
- pp config = parser.options.to_h
18
+ command = parser.command
19
+ options = parser.options
19
20
 
20
- target = config[:bioc_package_name]
21
+ public_send("run_#{command}", options) if [:new].include?(command)
22
+ end
23
+
24
+ def run_new(options)
25
+ config = parser.options
26
+ require_name = config.gem_require_name
27
+ package_name = config.bioc_package_name
28
+ output_directory = config.output_directory
29
+
30
+ target = File.join(output_directory, package_name)
21
31
 
22
32
  base = File.expand_path("../../template/newgem", __dir__)
23
33
 
@@ -26,21 +36,21 @@ module BiocGem
26
36
  src = File.expand_path(f, base)
27
37
  next unless File.file?(src)
28
38
 
29
- warn " - #{f}"
30
-
31
39
  str = File.read(src)
32
40
  erb = ERB.new(str)
33
41
  str = erb.result(binding)
34
42
 
35
43
  trg = File.expand_path(f, tmpdir)
36
44
  fname = File.basename(trg, ".tt")
37
- fname.gsub!("new_gem_entry", config[:gem_require_name])
45
+ fname.gsub!("new_gem_entry", config.gem_require_name)
38
46
  dirname = File.dirname(trg)
39
47
  FileUtils.mkdir_p(dirname)
40
48
  File.write(File.join(dirname, fname), str)
41
49
  end
42
50
  FileUtils.cp_r(tmpdir, target)
43
51
  end
52
+
53
+ warn "Created #{target}"
44
54
  end
45
55
  end
46
56
  end
@@ -1,10 +1,12 @@
1
1
  module BiocGem
2
2
  Options = Struct.new(
3
+ :output_directory,
3
4
  :bioc_package_name,
4
5
  :bioc_sqlite_database_name,
5
6
  :gem_icon,
6
7
  :gem_constant_name,
7
8
  :gem_require_name,
9
+ :bioc_package_md5sum,
8
10
  :bioc_package_sha256sum,
9
11
  :bioc_version,
10
12
  :bioc_package_version
@@ -5,56 +5,70 @@ module BiocGem
5
5
  class Parser
6
6
  attr_reader :command, :options
7
7
 
8
- def initialize
8
+ def initialize(args = nil)
9
9
  @comand = nil
10
10
 
11
11
  @options = Options.new
12
+ parse_options(args) if args
12
13
  end
13
14
 
14
- def parse_options(args = ARGV)
15
+ def parse!(args = ARGV)
15
16
  @command = args.shift&.to_sym
17
+ if [:new].include?(command)
18
+ public_send("parse_options_#{command}", args)
19
+ else
20
+ warn "Unknown command #{command}"
21
+ nil
22
+ end
23
+ end
16
24
 
17
- return if @command != :new
18
-
25
+ def parse_options_new(args)
19
26
  opt_parser = OptionParser.new do |parser|
20
27
  parser.banner = "Usage: biocgem new [options]"
21
28
 
22
- parser.on("-n", "--bioc_package_name VAL", "e.g. org.Hs.eg.db") do |v|
23
- options[:bioc_package_name] = v
29
+ parser.on("-o", "--output [DIR]", "Output directory") do |dir|
30
+ options.output_directory = dir
31
+ end
32
+ parser.on("-n", "--bioc_package_name VAL", "e.g. org.Hs.eg.db") do |n|
33
+ options.bioc_package_name = n
24
34
  end
25
- parser.on("-s", "--bioc_sqlite_database_name VAL", "e.g. org.Hs.eg.sqlite") do |v|
26
- options[:bioc_sqlite_database_name] = v
35
+ parser.on("-s", "--bioc_sqlite_database_name VAL", "e.g. org.Hs.eg.sqlite") do |db|
36
+ options.bioc_sqlite_database_name = db
27
37
  end
28
- parser.on("--gem_icon [VAL]", "e.g. :family:") do |v|
29
- options[:gem_icon] = v
38
+ parser.on("--gem_icon [VAL]", "e.g. :family:") do |icon|
39
+ options.gem_icon = icon
30
40
  end
31
- parser.on("--gem_constant_name [VAL]", "e.g. OrgHsEgDb") do |v|
32
- options[:gem_constant_name] = v
41
+ parser.on("--gem_constant_name [VAL]", "e.g. OrgHsEgDb") do |c|
42
+ options.gem_constant_name = c
33
43
  end
34
- parser.on("--gem_require_name [VAL]", "e.g. org_hs_eg_db") do |v|
35
- options[:gem_require_name] = v
44
+ parser.on("--gem_require_name [VAL]", "e.g. org_hs_eg_db") do |rname|
45
+ options.gem_require_name = rname
36
46
  end
37
- parser.on("--bioc_package_sha256sum [VAL]", "e.g. ") do |v|
38
- options[:bioc_package_sha256sum] = v
47
+ parser.on("-m", "--bioc_package_md5sum [VAL]", "check md5sum") do |md5|
48
+ options.bioc_package_md5sum = md5
39
49
  end
40
- parser.on("--bioc_version [VAL]", "e.g. 3.14") do |v|
41
- options[:bioc_version] = v
50
+ parser.on("--bioc_package_sha256sum [VAL]", "check sha256sum") do |sha256|
51
+ options.bioc_package_sha256sum = sha256
52
+ end
53
+ parser.on("--bioc_version [VAL]", "e.g. 3.14") do |bv|
54
+ options.bioc_version = bv
42
55
  end
43
56
  parser.on("-v", "--bioc_package_version VAL", "e.g. 3.14.0") do |v|
44
- options[:bioc_package_version] = v
57
+ options.bioc_package_version = v
45
58
  end
46
59
  end
47
60
 
48
61
  opt_parser.parse!(args)
49
62
 
50
- options.gem_icon = ":notes:" if options.gem_icon.nil?
51
- if options.gem_constant_name.nil?
52
- options.gem_constant_name = options.bioc_package_name.split(".").map(&:capitalize).join
53
- end
54
- if options.gem_require_name.nil?
55
- options.gem_require_name = options.bioc_package_name.split(".").map(&:downcase).join("_")
56
- end
57
- options.bioc_version = "release" if options.bioc_version.nil?
63
+ options.gem_icon ||= ":notes:"
64
+ options.gem_constant_name ||= \
65
+ options.bioc_package_name
66
+ .split(".").map(&:capitalize).join
67
+ options.gem_require_name.nil?
68
+ options.gem_require_name ||= \
69
+ options.bioc_package_name
70
+ .split(".").map(&:downcase).join("_")
71
+ options.bioc_version ||= "release"
58
72
 
59
73
  options
60
74
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BiocGem
4
- VERSION = "0.0.2"
4
+ VERSION = "0.0.3"
5
5
  end
@@ -36,16 +36,23 @@ def bioc_package_version
36
36
  "<%= config[:bioc_package_version] %>"
37
37
  end
38
38
 
39
+ def bioc_package_md5sum
40
+ "<%= config[:bioc_package_md5sum] %>"
41
+ end
42
+
39
43
  def bioc_package_sha256sum
40
- sha256 = "<%= config[:bioc_package_sha256sum] %>"
41
- sha256 == "" ? nil : sha256
44
+ "<%= config[:bioc_package_sha256sum] %>"
42
45
  end
43
46
 
44
47
  def bioc_package_file_name
45
48
  "#{bioc_package_name}_#{bioc_package_version}.tar.gz"
46
49
  end
47
50
 
48
- def download_annotation(database, src, file, sha256)
51
+ def gem_require_name
52
+ "<%= config[:gem_require_name] %>"
53
+ end
54
+
55
+ def download_annotation(src, database, file, md5sum, sha256)
49
56
  require "fileutils"
50
57
  require "open-uri"
51
58
  require "tmpdir"
@@ -54,11 +61,17 @@ def download_annotation(database, src, file, sha256)
54
61
  puts "Downloading #{url}"
55
62
  contents = URI.open(url).read
56
63
 
57
- if sha256
64
+ unless md5sum == ""
65
+ computed_md5sum = Digest::MD5.hexdigest(contents)
66
+ raise "MD5 checksum mismatch for #{url}" unless md5sum == computed_md5sum
67
+ end
68
+
69
+ unless sha256 == ""
58
70
  computed_sha256 = Digest::SHA256.hexdigest(contents)
59
- raise "Bad hash: #{computed_sha256}" if computed_sha256 != sha256
71
+ raise "SHA256 checksum mismatch for #{url}" unless sha256 == computed_sha256
60
72
  end
61
73
 
74
+
62
75
  Dir.chdir(Dir.mktmpdir) do
63
76
  File.binwrite(file, contents)
64
77
  command = "tar xf"
@@ -67,6 +80,18 @@ def download_annotation(database, src, file, sha256)
67
80
 
68
81
  FileUtils.mkdir_p(dest)
69
82
 
83
+ if database == ""
84
+ databases = Dir.glob("#{src}/inst/extdata/*.sqlite")
85
+ raise "No database found in #{src}/inst/extdata" if databases.empty?
86
+ raise "Multiple databases found in #{src}/inst/extdata" if databases.size > 1
87
+
88
+ database = File.basename(databases.first)
89
+ require_path = File.expand_path("lib/#{gem_require_name}.rb", __dir__)
90
+ str = File.read(require_path)
91
+ .sub!("*", File.basename(database, ".sqlite"))
92
+ File.write(require_path, str)
93
+ end
94
+
70
95
  FileUtils.cp("#{src}/inst/extdata/#{database}", "#{dest}/#{database}")
71
96
  puts "Saved extdata/#{database}"
72
97
 
@@ -78,9 +103,10 @@ end
78
103
  namespace :extdata do
79
104
  desc "download #{bioc_sqlite_database_name}"
80
105
  task :download do
81
- download_annotation(bioc_sqlite_database_name,
82
- bioc_package_name,
106
+ download_annotation(bioc_package_name,
107
+ bioc_sqlite_database_name,
83
108
  bioc_package_file_name,
109
+ bioc_package_md5sum,
84
110
  bioc_package_sha256sum)
85
111
  end
86
112
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  require 'sequel'
4
4
  <%= config[:gem_constant_name] %> = Sequel.sqlite(
5
- File.expand_path('../extdata/<%= config[:bioc_sqlite_database_name] %>', __dir__),
5
+ File.expand_path('../extdata/<%= config[:bioc_sqlite_database_name] || "*.sqlite" %>', __dir__),
6
6
  readonly: true
7
7
  )
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: biocgem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-06 00:00:00.000000000 Z
11
+ date: 2021-12-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: biocgem command line tools
14
14
  email:
@@ -39,7 +39,7 @@ homepage: https://github.com/ruby-on-bioc/biocgem
39
39
  licenses:
40
40
  - MIT
41
41
  metadata: {}
42
- post_install_message:
42
+ post_install_message:
43
43
  rdoc_options: []
44
44
  require_paths:
45
45
  - lib
@@ -54,8 +54,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  requirements: []
57
- rubygems_version: 3.0.3
58
- signing_key:
57
+ rubygems_version: 3.2.22
58
+ signing_key:
59
59
  specification_version: 4
60
60
  summary: biocgem command line tools
61
61
  test_files: []