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.
- checksums.yaml +4 -4
 - data/.rubocop.yml +0 -1156
 - data/jars/sample-template-generator-0.3.jar +0 -0
 - data/lib/seek/sample_templates.rb +22 -0
 - data/lib/seek/sample_templates/column.rb +19 -0
 - data/lib/seek/sample_templates/generator.rb +13 -48
 - data/lib/seek/sample_templates/version.rb +1 -1
 - data/sample-template-generator-gem.gemspec +4 -11
 - metadata +33 -10
 - data/jars/sample-template-generator-0.2.jar +0 -0
 
| 
         Binary file 
     | 
| 
         @@ -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 ' 
     | 
| 
      
 1 
     | 
    
         
            +
            require 'cocaine'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module Seek
         
     | 
| 
       4 
4 
     | 
    
         
             
              module SampleTemplates
         
     | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                 
     | 
| 
       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. 
     | 
| 
       27 
     | 
    
         
            -
                  JAR_PATH = File.dirname(__FILE__) + 
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
      
 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 
     | 
    
         
            -
                     
     | 
| 
      
 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  
     | 
| 
       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 
     | 
    
         
            -
                   
     | 
| 
       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
         
     | 
| 
         @@ -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       = ' 
     | 
| 
      
 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' 
     | 
| 
       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. 
     | 
| 
      
 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- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-09-20 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
     | 
    
         
            -
              name:  
     | 
| 
      
 14 
     | 
    
         
            +
              name: rdoc
         
     | 
| 
       15 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
     | 
    
         
            -
                - -  
     | 
| 
      
 17 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version:  
     | 
| 
      
 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:  
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
     | 
    
         
            -
              name:  
     | 
| 
      
 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. 
     | 
| 
      
 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:  
     | 
| 
      
 189 
     | 
    
         
            +
            summary: Bespoke tool for generating spreadsheet templates from Sample Types for use
         
     | 
| 
      
 190 
     | 
    
         
            +
              with SEEK.
         
     | 
| 
       168 
191 
     | 
    
         
             
            test_files: []
         
     | 
| 
         Binary file 
     |