sample-template-generator-gem 0.2.1 → 0.3.0

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.
@@ -0,0 +1,22 @@
1
+ require 'seek/sample_templates/column'
2
+ require 'seek/sample_templates/generator'
3
+
4
+ module Seek
5
+ # Main entry point for generating templates
6
+ module SampleTemplates
7
+ # generates a template at the specific path
8
+ def self.generate(sheet_name, sheet_index, columns, path)
9
+ Seek::SampleTemplates::Generator.new(
10
+ path, create_json(columns, sheet_index, sheet_name)
11
+ ).generate
12
+ end
13
+
14
+ def self.create_json(columns, sheet_index, sheet_name)
15
+ { sheet_name: sheet_name,
16
+ sheet_index: sheet_index,
17
+ columns: columns.collect(&:as_json) }.to_json
18
+ end
19
+
20
+ private_class_method :create_json
21
+ end
22
+ end
@@ -0,0 +1,19 @@
1
+ module Seek
2
+ module SampleTemplates
3
+ # Describes a column in the template.
4
+ # The name is the text put in the top row,
5
+ # and contents will create a dropdown in the row below unless empty
6
+ class Column
7
+ attr_reader :name, :contents
8
+
9
+ def initialize(name, contents = [])
10
+ @name = name
11
+ @contents = contents
12
+ end
13
+
14
+ def as_json
15
+ { @name => @contents }
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,44 +1,27 @@
1
- require 'open4'
1
+ require 'cocaine'
2
2
 
3
3
  module Seek
4
4
  module SampleTemplates
5
- def self.generate(sheet_name, sheet_index, columns, path)
6
- Seek::SampleTemplates::Generator.new(path, create_json(columns, sheet_index, sheet_name)).generate
7
- end
8
-
9
- def self.create_json(columns, sheet_index, sheet_name)
10
- { sheet_name: sheet_name, sheet_index: sheet_index, columns: columns.collect(&:as_json) }.to_json
11
- end
12
-
13
- class Column
14
- attr_accessor :name, :contents
15
- def initialize(name, contents = [])
16
- @name = name
17
- @contents = contents
18
- end
19
-
20
- def as_json
21
- { @name => @contents }
22
- end
23
- end
24
-
5
+ # Generator class for creating templates.
6
+ # Generally this shouldn't be used directly, but instead should be used
7
+ # through Seek::SampleTemplates.generate(..)
25
8
  class Generator
26
- JAR_VERSION = '0.2'.freeze
27
- JAR_PATH = File.dirname(__FILE__) + "/../../../jars/sample-template-generator-#{JAR_VERSION}.jar"
9
+ JAR_VERSION = '0.3'.freeze
10
+ JAR_PATH = File.dirname(__FILE__) +
11
+ "/../../../jars/sample-template-generator-#{JAR_VERSION}.jar"
28
12
  DEFAULT_MEMORY_ALLOCATION = '512M'.freeze
29
13
  BUFFER_SIZE = 250_000 # 1/4 a megabyte
30
14
 
31
- attr_accessor :json, :path, :memory_allocation
15
+ attr_reader :json, :path, :memory_allocation
32
16
 
33
17
  def initialize(path, json, memory_allocation = DEFAULT_MEMORY_ALLOCATION)
34
18
  @path = path
35
19
  @json = json
36
20
  @memory_allocation = memory_allocation
37
- raise Exception, 'Windows is not currently supported' if windows?
38
21
  end
39
22
 
40
23
  def generate
41
- run_with_open4
24
+ run_with_cocaine
42
25
  end
43
26
 
44
27
  private
@@ -50,29 +33,11 @@ module Seek
50
33
  command
51
34
  end
52
35
 
53
- def run_with_open4
54
- output = ''
55
- err_message = ''
56
- command = command()
57
- status = Open4.popen4(command) do |_pid, _stdin, stdout, stderr|
58
- until (line = stdout.gets(BUFFER_SIZE)).nil?
59
- output << line
60
- end
61
- stdout.close
62
-
63
- until (line = stderr.gets(BUFFER_SIZE)).nil?
64
- err_message << line
65
- end
66
- stderr.close
67
- end
68
-
69
- raise err_message if status.to_i.nonzero?
70
-
36
+ def run_with_cocaine
37
+ output = Cocaine::CommandLine.new(command).run
71
38
  output.strip
72
- end
73
-
74
- def windows?
75
- !(RUBY_PLATFORM =~ /mswin32/ || RUBY_PLATFORM =~ /mingw32/).nil?
39
+ rescue Cocaine::ExitStatusError => exception
40
+ raise exception.message
76
41
  end
77
42
  end
78
43
  end
@@ -1,5 +1,5 @@
1
1
  module Seek
2
2
  module SampleTemplates
3
- VERSION = '0.2.1'.freeze
3
+ VERSION = '0.3.0'.freeze
4
4
  end
5
5
  end
@@ -9,29 +9,22 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ['Stuart Owen']
10
10
  spec.email = ['stuart.owen@manchester.ac.uk']
11
11
 
12
- spec.summary = 'Prototype for generating spreadsheet templates for use with SEEK.'
12
+ spec.summary = 'Bespoke tool for generating spreadsheet templates from Sample Types for use with SEEK.'
13
13
  spec.homepage = 'http://seek4science.org'
14
- spec.license = 'BSD-3-Clause' # https://spdx.org/licenses/BSD-3-Clause.html#licenseText
15
-
16
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
- # to allow pushing to a single host or delete this section to allow pushing to any host.
18
- # if spec.respond_to?(:metadata)
19
- # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
20
- # else
21
- # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
- # end
14
+ spec.license = 'BSD-3-Clause'
23
15
 
24
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
17
  spec.bindir = 'exe'
26
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
19
  spec.require_paths = ['lib']
28
20
 
29
- spec.add_dependency('open4', ['= 1.3.0'])
30
21
  spec.add_dependency('rdoc', ['>= 0'])
22
+ spec.add_dependency('cocaine', ['>= 0'])
31
23
 
32
24
  spec.add_development_dependency('rubocop', ['>= 0'])
33
25
  spec.add_development_dependency('rubycritic', ['>= 0'])
34
26
  spec.add_development_dependency 'bundler', '~> 1.12'
35
27
  spec.add_development_dependency 'rake', '~> 10.0'
36
28
  spec.add_development_dependency 'minitest', '~> 5.0'
29
+ spec.add_development_dependency('activesupport', ">= 3.0.0", "< 5.0")
37
30
  end
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sample-template-generator-gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Owen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-12 00:00:00.000000000 Z
11
+ date: 2016-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: open4
14
+ name: rdoc
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3.0
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.3.0
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rdoc
28
+ name: cocaine
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -108,6 +108,26 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '5.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: activesupport
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 3.0.0
118
+ - - "<"
119
+ - !ruby/object:Gem::Version
120
+ version: '5.0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: 3.0.0
128
+ - - "<"
129
+ - !ruby/object:Gem::Version
130
+ version: '5.0'
111
131
  description:
112
132
  email:
113
133
  - stuart.owen@manchester.ac.uk
@@ -137,7 +157,9 @@ files:
137
157
  - jars/lib/poi-ooxml-schemas-3.14.jar
138
158
  - jars/lib/stax-api-1.0.1.jar
139
159
  - jars/lib/xmlbeans-2.6.0.jar
140
- - jars/sample-template-generator-0.2.jar
160
+ - jars/sample-template-generator-0.3.jar
161
+ - lib/seek/sample_templates.rb
162
+ - lib/seek/sample_templates/column.rb
141
163
  - lib/seek/sample_templates/generator.rb
142
164
  - lib/seek/sample_templates/version.rb
143
165
  - sample-template-generator-gem.gemspec
@@ -164,5 +186,6 @@ rubyforge_project:
164
186
  rubygems_version: 2.4.8
165
187
  signing_key:
166
188
  specification_version: 4
167
- summary: Prototype for generating spreadsheet templates for use with SEEK.
189
+ summary: Bespoke tool for generating spreadsheet templates from Sample Types for use
190
+ with SEEK.
168
191
  test_files: []
Binary file