veracode 1.0.0.alpha → 1.0.0.alpha6

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 902b115fab8cb21e15a5bd54aef3246f5380de49
4
+ data.tar.gz: ca13044ad546a545134ed74b7b7a3a0504329e47
5
+ SHA512:
6
+ metadata.gz: 2268ae1531eedcc77c9b21b77d544c06c6a1f8b10f74504b9c616a092a6d95c2966e8f98188d1f40fbba87eb9701511268a9b614c5f2a35911f0c41630770b47
7
+ data.tar.gz: 66bc411b52c53ff87c5958eb9a6c2dd1b66048d3d5fa3e2beca07798476eb9899fcb0385cf857fbd20a1e48493394a919729de0560efe47fe26d2867ed70c35c
data/bin/veracode CHANGED
@@ -13,6 +13,7 @@ APP_NAME = File.basename(Dir.pwd)
13
13
  COMMAND = "#{$0} #{ARGV.join(' ')}"
14
14
 
15
15
  require 'veracode'
16
+ require 'veracode/version'
16
17
 
17
18
  $options = {
18
19
  :phase1 => false,
@@ -58,12 +59,18 @@ case subcommand
58
59
 
59
60
  Veracode.prepare
60
61
 
62
+ when "version", "--version", "-v"
63
+ puts File.basename($0, '.*') + " " + Veracode::VERSION
64
+
61
65
  when "help", nil
62
66
  ARGV.clear
63
67
  ARGV.unshift "--help"
64
68
 
65
69
  OptionParser.new do |opts|
66
- opts.banner = "Usage: veracode prepare [options]"
70
+ opts.banner = "#{opts.program_name} #{Veracode::VERSION}\n" +
71
+ "Usage: #{opts.program_name} prepare [options]\n" +
72
+ " #{opts.program_name} version\n" +
73
+ " #{opts.program_name} help"
67
74
  end.parse!
68
75
 
69
76
  else
data/lib/veracode.rb CHANGED
@@ -1,34 +1,45 @@
1
+ require 'pathname'
2
+ require 'set'
1
3
  require 'zlib'
2
- require 'zip/zip'
3
- require "veracode/version"
4
+ require 'zip'
5
+ require 'veracode/version'
6
+ require 'veracode/schema'
7
+ require 'veracode/gems'
4
8
 
5
9
  module Veracode
6
10
  @run_id = nil
11
+ @required_libs = Set.new
7
12
 
8
13
  # Metadata and method disassemblies for all Modules (.txt.gz)
9
14
  @disasmlog = nil
10
- @disasmlog_filename = "disasm.txt.gz"
15
+ @disasmlog_filename = 'disasm.txt.gz'
11
16
 
12
17
  # Error log including capture of STDERR and any errors generated by the gem (.log)
13
18
  @errorlog = nil
14
- @errorlog_filename = "error.log"
19
+ @errorlog_filename = 'error.log'
15
20
 
16
21
  # Index file containing the names of files present in the application directory (.txt)
17
- @index_filename = "index.txt"
22
+ @index_filename = 'index.txt'
18
23
 
19
24
  # Manifest file containing original names of all files in archive (.txt)
20
25
  @manifest = []
21
- @manifest_filename = "manifest.txt"
26
+ @manifest_filename = 'manifest.txt'
27
+
28
+ # XML file containing list of gems used by application
29
+ @gems_filename = 'gems.xml'
30
+
31
+ # Archive version file containing archive format version identifier
32
+ @version_filename = 'version.txt'
22
33
 
23
34
  # The final archive that will be uploaded to Veracode for analysis (.zip)
24
35
  @archive = nil
25
36
  @archive_filename = nil
26
37
  @archive_dirname = nil
27
38
 
28
-
29
39
  def self.init
30
40
  @run_id = Time.now.strftime("%Y%m%d%H%M%S")
31
41
  @archive_dirname = File.join("tmp","veracode-#{@run_id}")
42
+ @required_libs.merge(["pathname", "set", "zlib", "zip/zip", "veracode"])
32
43
 
33
44
  if !Dir.exists?("tmp")
34
45
  begin
@@ -57,9 +68,11 @@ module Veracode
57
68
  @disasmlog_filename = File.join(@archive_dirname, @disasmlog_filename)
58
69
  @index_filename = File.join(@archive_dirname, @index_filename)
59
70
  @manifest_filename = File.join(@archive_dirname, @manifest_filename)
71
+ @gems_filename = File.join(@archive_dirname, @gems_filename)
72
+ @version_filename = File.join(@archive_dirname, @version_filename)
60
73
 
61
74
  # Try touching each of the files to be written
62
- [@disasmlog_filename, @errorlog_filename, @index_filename, @manifest_filename].each {|f|
75
+ [@disasmlog_filename, @errorlog_filename, @index_filename, @manifest_filename, @gems_filename, @version_filename].each {|f|
63
76
  begin
64
77
  File.open(f, "wb") {}
65
78
  rescue Exception => e
@@ -76,6 +89,7 @@ module Veracode
76
89
  log_error "RUBY_DESCRIPTION: #{RUBY_DESCRIPTION}"
77
90
  log_error "RAILS_VERSION: " + `rails --version`.chomp
78
91
  log_error "GEM_VERSION: #{Veracode::VERSION}"
92
+ log_error "ARCHIVE_VERSION: #{Veracode::ARCHIVE_VERSION}"
79
93
  log_error "PWD: #{Dir.pwd.to_s.dump}"
80
94
  log_error "APP_NAME: #{APP_NAME.dump}"
81
95
  log_error "RUNID: #{@run_id}"
@@ -86,6 +100,16 @@ module Veracode
86
100
  STDERR.reopen(@errorlog)
87
101
  end
88
102
 
103
+ begin
104
+ File.open(@version_filename, "wb") {|version_file|
105
+ version_file.puts Veracode::ARCHIVE_VERSION
106
+ }
107
+ rescue Exception => e
108
+ log_error "Unable to write to archive version file #{@version_filename}: #{e.message}"
109
+ end
110
+
111
+ list_gems
112
+
89
113
  index_application
90
114
 
91
115
  @manifest += Dir.glob("*").keep_if {|f| File.file?(f)}
@@ -101,6 +125,8 @@ module Veracode
101
125
  @manifest |= Dir[File.join("**","*.rb")]
102
126
  # Add any other erb files not already added
103
127
  @manifest |= Dir[File.join("**","*.erb")]
128
+ # Add any other builder files not already added
129
+ @manifest |= Dir[File.join("**","*.builder")]
104
130
  # Add any other haml files not already added
105
131
  @manifest |= Dir[File.join("**","*.haml")]
106
132
  end
@@ -133,7 +159,7 @@ module Veracode
133
159
  @errorlog.flush
134
160
 
135
161
  begin
136
- Zip::ZipFile.open(@archive_filename, Zip::ZipFile::CREATE) { |zf|
162
+ Zip::File.open(@archive_filename, Zip::File::CREATE) { |zf|
137
163
  @manifest.each {|file|
138
164
 
139
165
  if file.start_with?(@archive_dirname)
@@ -155,7 +181,7 @@ module Veracode
155
181
  end
156
182
 
157
183
  def self.cleanup
158
- [@disasmlog_filename, @errorlog_filename, @index_filename, @manifest_filename].each {|f|
184
+ [@disasmlog_filename, @errorlog_filename, @index_filename, @manifest_filename, @gems_filename, @version_filename].each {|f|
159
185
  begin
160
186
  File.delete(f)
161
187
  rescue Exception => e
@@ -198,12 +224,20 @@ module Veracode
198
224
 
199
225
  ##############################################################################
200
226
  # Helpers
227
+ def self.cond_require(lib)
228
+ if @required_libs.add?(lib)
229
+ return require lib
230
+ end
231
+ return false
232
+ end
233
+
201
234
  def self.glob_require(files)
235
+ any_new = false
202
236
  Dir.glob(files) do |f|
203
237
  print "Requiring #{f.to_s} " if $options[:verbose]
204
238
 
205
239
  begin
206
- require File.expand_path(f)
240
+ any_new |= cond_require File.expand_path(f)
207
241
  rescue Exception => e
208
242
  puts "(failed: #{e.message})" if $options[:verbose]
209
243
  log_error "Unable to require #{File.expand_path(f).to_s.dump} (#{e.message})"
@@ -212,6 +246,7 @@ module Veracode
212
246
  end
213
247
 
214
248
  end
249
+ return any_new
215
250
  end
216
251
 
217
252
  def self.safe_name(o)
@@ -412,8 +447,8 @@ module Veracode
412
447
 
413
448
  %w[ public protected private ].each {|p|
414
449
  get_methods = (p + "_instance_methods").to_sym
415
- if m.respond_to?(get_methods) && m.send(get_methods, $options[:include_inherited]).count > 0
416
- m.send(get_methods, $options[:include_inherited]).each do |m_symbol|
450
+ if m.respond_to?(get_methods) && m.__send__(get_methods, $options[:include_inherited]).count > 0
451
+ m.__send__(get_methods, $options[:include_inherited]).each do |m_symbol|
417
452
  begin
418
453
  method = m.instance_method(m_symbol)
419
454
  formatted_contents += format_method(method, "#{p.to_s}_instance", with_disasm)
@@ -465,7 +500,12 @@ module Veracode
465
500
  # Archiving Objects
466
501
  def self.archive(objects, with_disasm=true)
467
502
 
468
- objects = objects - [Veracode]
503
+ objects = objects - [
504
+ Veracode,
505
+ Veracode::ActiveRecord,
506
+ Veracode::ActiveRecord::Model,
507
+ Veracode::ActiveRecord::Schema,
508
+ ]
469
509
 
470
510
  if $options[:verbose]
471
511
  puts "Archiving #{objects.count.to_s} objects" + (with_disasm ? " with disassembly" : "")
@@ -491,6 +531,68 @@ module Veracode
491
531
  end
492
532
 
493
533
 
534
+ def self.compile_templates
535
+
536
+ begin
537
+ cond_require 'action_view' unless defined? ActionView
538
+ cond_require 'action_controller' unless defined? ActionController
539
+ rescue Exception => e
540
+ log_error "Unable to satisfy haml dependencies (#{e.message})"
541
+ return
542
+ end
543
+
544
+ types = %w{ erb builder haml }
545
+
546
+ view_paths = []
547
+ view_paths += ActionController::Base.view_paths.to_a.map(&:to_s)
548
+ view_paths |= [File.expand_path("app/views")]
549
+
550
+ puts "Looking for templates in #{view_paths.join(", ")}" if $options[:verbose]
551
+
552
+ templates = view_paths.map { |vp|
553
+ Dir[File.join(vp, "**", "*.erb")] +
554
+ Dir[File.join(vp, "**", "*.builder")] +
555
+ Dir[File.join(vp, "**", "*.haml")]
556
+ }.flatten
557
+
558
+ return unless templates.count > 0
559
+
560
+ puts "Found #{templates.count} templates" if $options[:verbose]
561
+ log_error "Found #{templates.count} templates"
562
+
563
+ haml_templates = templates.grep(/\.haml$/)
564
+ if haml_templates.any?
565
+ begin
566
+ cond_require 'haml' unless defined? Haml
567
+ cond_require 'haml/template/plugin' unless defined? Haml::Plugin
568
+ rescue Exception => e
569
+ puts "Unable to satisfy haml dependencies"
570
+ log_error "Unable to satisfy haml dependencies (#{e.message})"
571
+ templates -= haml_templates
572
+ puts " #{templates.count} templates" if $options[:verbose]
573
+ end
574
+ end
575
+
576
+ assigns = {}
577
+ view = ActionView::Base.new(view_paths, assigns)
578
+ controller_view = ApplicationController.new.view_context
579
+
580
+ templates.each { |template|
581
+ puts "Compiling template #{template}" if $options[:verbose]
582
+
583
+ begin
584
+ # This render will fail, but will trigger compilation of template
585
+ view.render(:file => template)
586
+ rescue Exception => e
587
+ log_error "Compiled template #{template} #{e.message}"
588
+ end
589
+ }
590
+
591
+ puts "Compiled #{ActionView::CompiledTemplates.instance_methods.count.to_s} templates" if $options[:verbose]
592
+ log_error "Compiled #{ActionView::CompiledTemplates.instance_methods.count.to_s} templates"
593
+ log_error "Not all templates were compiled" if ActionView::CompiledTemplates.instance_methods.count < templates.count
594
+ end
595
+
494
596
  def self.compile_erb_templates
495
597
 
496
598
  # Rails 3 has wrapped Erubis to handle block helpers in ERB templates
@@ -563,9 +665,9 @@ module Veracode
563
665
  return unless templates.count > 0
564
666
 
565
667
  begin
566
- require 'action_view'
567
- require 'haml'
568
- require 'haml/template/plugin'
668
+ cond_require 'action_view'
669
+ cond_require 'haml'
670
+ cond_require 'haml/template/plugin'
569
671
  rescue Exception => e
570
672
  log_error "Unable to satisfy haml dependencies (#{e.message})"
571
673
  return
@@ -604,7 +706,58 @@ module Veracode
604
706
 
605
707
  end
606
708
 
607
-
709
+ def self.require_libs(lib_paths)
710
+ for lib_path in lib_paths
711
+ dirsToProcess = [Pathname(lib_path)]
712
+ until dirsToProcess.count == 0 || !Dir.exists?(dirsToProcess[0])
713
+ currentDir = dirsToProcess.delete_at(0)
714
+ for child in currentDir.children
715
+ if child.directory?
716
+ dirsToProcess[dirsToProcess.count] = child
717
+ base = child.to_s.partition("#{lib_path}/")[2]
718
+ lib = ""
719
+ for part in base.split('/').reverse
720
+ lib = "#{part}/#{lib}"
721
+ lib = lib[0..lib.length-2] if lib[lib.length-1] == '/'
722
+ begin
723
+ if cond_require lib
724
+ puts "requiring #{lib}" if $options[:verbose]
725
+ end
726
+ rescue Exception => e
727
+ end
728
+ end
729
+ end
730
+ end
731
+ end
732
+ end
733
+ end
734
+
735
+ def self.require_rails(gemdir)
736
+ dirsToProcess = [Pathname(gemdir)]
737
+ until dirsToProcess.count == 0
738
+ currentDir = dirsToProcess.delete_at(0)
739
+ for child in currentDir.children
740
+ if child.directory?
741
+ dirsToProcess[dirsToProcess.count] = child
742
+ end
743
+ base = child.to_s.partition("#{gemdir}/")[2]
744
+ if base.index("action_controller") != nil || base.index("action_view") != nil || base.index("active_record") != nil
745
+ lib = ""
746
+ for part in base.split('/').reverse
747
+ lib = "#{part}/#{lib}"
748
+ lib = lib[0..lib.length-2] if lib[lib.length-1] == '/'
749
+ lib.chomp!(File.extname(lib))
750
+ begin
751
+ if cond_require lib
752
+ puts "requiring #{lib}" if $options[:verbose]
753
+ end
754
+ rescue Exception => e
755
+ end
756
+ end
757
+ end
758
+ end
759
+ end
760
+ end
608
761
 
609
762
 
610
763
  ################################################################################
@@ -653,12 +806,46 @@ module Veracode
653
806
 
654
807
  puts "Phase 2 - Load Rails" if $options[:verbose]
655
808
  begin
656
- require "rails"
809
+ cond_require "rails"
810
+ cond_require 'action_controller'
811
+ cond_require 'action_view'
812
+ cond_require 'active_record'
657
813
  rescue Exception => e
658
814
  puts "Unable to require rails: #{e.message}"
659
815
  log_error "Unable to require rails: #{e.message}"
660
816
  exit
661
817
  else
818
+ @stdlib = $:
819
+ @gemdir = Gem.dir
820
+
821
+ ## Imitate script/rails
822
+ # APP_PATH = File.expand_path('config/application')
823
+ # APP_PATH is already set in bin/veracode
824
+ #require File.expand_path('../../config/boot', __FILE__)
825
+ glob_require "config/boot.rb"
826
+ #require 'rails/commands'
827
+ # this will trigger the console to be launched
828
+ # ARGV.clear
829
+ # ARGV << 'console'
830
+ # ARGV << '--sandbox'
831
+ # require 'rails/commands'
832
+
833
+ ## Imitate rails/commands when console
834
+ glob_require 'rails/commands/console'
835
+ # require APP_PATH # => config/application.rb
836
+
837
+ glob_require "config/application.rb"
838
+
839
+ Rails.application.require_environment! unless $options[:jruby]
840
+ begin
841
+ cond_require 'sass'
842
+ cond_require 'sass/rails/importer'
843
+ cond_require 'multi_json/adapters/json_gem'
844
+ rescue Exception => e
845
+ end
846
+
847
+ require_libs(@stdlib)
848
+ require_rails(@gemdir)
662
849
  puts "Required rails" if $options[:verbose]
663
850
  end
664
851
 
@@ -681,26 +868,6 @@ module Veracode
681
868
  # phase 3 - require app
682
869
 
683
870
  puts "Phase 3 - Imitate Rails" if $options[:verbose]
684
-
685
- ## Imitate script/rails
686
- # APP_PATH = File.expand_path('config/application')
687
- # APP_PATH is already set in bin/veracode
688
- #require File.expand_path('../../config/boot', __FILE__)
689
- glob_require "config/boot.rb"
690
- #require 'rails/commands'
691
- # this will trigger the console to be launched
692
- # ARGV.clear
693
- # ARGV << 'console'
694
- # ARGV << '--sandbox'
695
- # require 'rails/commands'
696
-
697
- ## Imitate rails/commands when console
698
- glob_require 'rails/commands/console'
699
- # require APP_PATH # => config/application.rb
700
-
701
- glob_require "config/application.rb"
702
-
703
- Rails.application.require_environment! unless $options[:jruby]
704
871
  # Following line will actually kick off IRB
705
872
  # Rails::Console.start(Rails.application)
706
873
 
@@ -709,23 +876,28 @@ module Veracode
709
876
  glob_require "rails/console/app"
710
877
  glob_require "rails/console/helpers"
711
878
 
879
+ glob_require "lib/**/*.rb"
712
880
  glob_require "app/models/**/*.rb"
713
881
  glob_require "app/helpers/**/*.rb"
714
882
  glob_require "app/controllers/application_controller.rb"
715
883
  glob_require "app/controllers/**/*.rb"
716
884
 
717
- compile_erb_templates
718
- compile_haml_templates
885
+ compile_templates
719
886
 
720
887
  self.update
721
888
  self.stats if $options[:verbose]
722
889
 
890
+ # Ensure compiled templates are fully disassembled in archive
891
+ @baseline_modules.delete(ActionView::CompiledTemplates)
892
+
723
893
  if $options[:phase3]
724
894
  puts "Processing and disassembling #{APP_NAME} classes and modules"
725
895
  archive(@baseline_modules, false)
726
896
  archive(@modules - @baseline_modules, true)
727
897
  end
728
898
 
899
+ archive_schema
900
+
729
901
  ## /phase 3 - require app
730
902
  ################################################################
731
903
 
@@ -0,0 +1,49 @@
1
+ module Veracode
2
+ SupportedGems = %w{
3
+ actionmailer
4
+ actionpack
5
+ activemodel
6
+ activerecord
7
+ activeresource
8
+ activesupport
9
+ arel
10
+ builder
11
+ erubis
12
+ haml
13
+ haml-rails
14
+ rails
15
+ railties
16
+ veracode
17
+ }
18
+
19
+ def self.list_gems
20
+
21
+ gems = `bundle list`.each_line
22
+ .reject {|line| line !~ /^ \* /}
23
+ .map {|line| line[4..-1]}
24
+ .map {|line| line.split.first}
25
+
26
+ begin
27
+ File.open(@gems_filename, "wb") {|gems_file|
28
+ gems_file.puts '<messages>'
29
+ gems.each {|gem|
30
+ gems_file << <<GEMS_XML
31
+ <message>
32
+ <platform>ruby</platform>
33
+ <name>#{gem}</name>
34
+ <detailed_message>#{gem}</detailed_message>
35
+ <token>#{gem}</token>
36
+ <package>rubygem.#{gem}</package>
37
+ <errorlevel>#{(SupportedGems.include?(gem) ? "info" : "warn" )}</errorlevel>
38
+ <type>framework_unsupported</type>
39
+ </message>
40
+ GEMS_XML
41
+ }
42
+ gems_file.puts '</messages>'
43
+ }
44
+ rescue Exception => e
45
+ log_error "Unable to write to gem list to file #{@gems_filename}: #{e.message}"
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,86 @@
1
+ module Veracode
2
+ module ActiveRecord
3
+ class Model
4
+ attr_reader :name, :attributes
5
+ def initialize(name)
6
+ @name = name
7
+ @attributes = Array.new
8
+ end
9
+ def binary(name, *rest)
10
+ @attributes << [name, :binary]
11
+ end
12
+ def boolean(name, *rest)
13
+ @attributes << [name, :boolean]
14
+ end
15
+ def date(name, *rest)
16
+ @attributes << [name, :date]
17
+ end
18
+ def datetime(name, *rest)
19
+ @attributes << [name, :datetime]
20
+ end
21
+ def decimal(name, *rest)
22
+ @attributes << [name, :decimal]
23
+ end
24
+ def float(name, *rest)
25
+ @attributes << [name, :float]
26
+ end
27
+ def integer(name, *rest)
28
+ @attributes << [name, :integer]
29
+ end
30
+ def primary_key(name, *rest)
31
+ @attributes << [name, :primary_key]
32
+ end
33
+ def string(name, *rest)
34
+ @attributes << [name, :string]
35
+ end
36
+ def text(name, *rest)
37
+ @attributes << [name, :text]
38
+ end
39
+ def time(name, *rest)
40
+ @attributes << [name, :time]
41
+ end
42
+ def timestamp(name, *rest)
43
+ @attributes << [name, :timestamp]
44
+ end
45
+ end
46
+
47
+ class Schema
48
+ def self.define(info={}, &block)
49
+ Schema.new.instance_eval(&block)
50
+ end
51
+ def create_table(name, options={})
52
+ td = Model.new(name)
53
+ td.integer('id')
54
+ yield td if block_given?
55
+ Veracode.add_to_archive Veracode.format_variable("@@#{td.name}", td.attributes, 'class')
56
+ end
57
+ def add_index(table_name, column_name, options = {})
58
+ end
59
+ end
60
+ end
61
+
62
+ def self.archive_schema
63
+ puts "Evaluating and archiving schema information"
64
+ schema_file = File.join("db", "schema.rb")
65
+
66
+ begin
67
+ schema = 'Veracode::' + File.read(schema_file).each_line.reject {|l| l =~ /^\s*#/}.join
68
+ rescue Exception => e
69
+ puts "Unable to retrieve schema information from 'db/schema.rb'. Are your migrations up to date?"
70
+ log_error "Unable to retrieve schema from 'db/schema.rb' (#{e.message})"
71
+ add_to_archive %Q|module "Veracode::Schema"\n|
72
+ add_to_archive %Q|endmodule\n\n|
73
+ return
74
+ end
75
+
76
+ add_to_archive %Q|module "Veracode::Schema"\n|
77
+ begin
78
+ eval(schema)
79
+ rescue Exception => e
80
+ puts "Unable to evaluate schema information from 'db/schema.rb'. (#{e.message})"
81
+ log_error "Unable to evaluate 'db/schema.rb' (#{e.message})"
82
+ end
83
+ add_to_archive %Q|endmodule\n\n|
84
+ end
85
+
86
+ end
@@ -1,3 +1,4 @@
1
1
  module Veracode
2
- VERSION = "1.0.0.alpha"
2
+ VERSION = '1.0.0.alpha6'
3
+ ARCHIVE_VERSION = '2012-07-04'
3
4
  end
metadata CHANGED
@@ -1,27 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: veracode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha
5
- prerelease: 6
4
+ version: 1.0.0.alpha6
6
5
  platform: ruby
7
6
  authors:
8
7
  - Veracode
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-05-14 00:00:00.000000000 Z
11
+ date: 2015-06-05 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rubyzip
16
- requirement: &70257511683960 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: '1.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70257511683960
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
25
27
  description: Prepares your Ruby on Rails app for submission to Veracode.
26
28
  email: devcontact@veracode.com
27
29
  executables:
@@ -31,30 +33,34 @@ extra_rdoc_files: []
31
33
  files:
32
34
  - bin/veracode
33
35
  - lib/veracode.rb
36
+ - lib/veracode/gems.rb
37
+ - lib/veracode/schema.rb
34
38
  - lib/veracode/version.rb
35
39
  homepage: http://veracode.com/
36
40
  licenses: []
41
+ metadata: {}
37
42
  post_install_message:
38
43
  rdoc_options: []
39
44
  require_paths:
40
45
  - lib
41
46
  required_ruby_version: !ruby/object:Gem::Requirement
42
- none: false
43
47
  requirements:
44
- - - ~>
48
+ - - '>='
45
49
  - !ruby/object:Gem::Version
46
50
  version: 1.9.3.0
51
+ - - <
52
+ - !ruby/object:Gem::Version
53
+ version: 2.2.0
47
54
  required_rubygems_version: !ruby/object:Gem::Requirement
48
- none: false
49
55
  requirements:
50
- - - ! '>'
56
+ - - '>'
51
57
  - !ruby/object:Gem::Version
52
58
  version: 1.3.1
53
59
  requirements: []
54
60
  rubyforge_project:
55
- rubygems_version: 1.8.10
61
+ rubygems_version: 2.4.3
56
62
  signing_key:
57
- specification_version: 3
63
+ specification_version: 4
58
64
  summary: Command line tool for preparing your Ruby on Rails app for submission to
59
65
  Veracode
60
66
  test_files: []