veracode 1.0.0.alpha → 1.0.0.alpha2

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -101,6 +101,8 @@ module Veracode
101
101
  @manifest |= Dir[File.join("**","*.rb")]
102
102
  # Add any other erb files not already added
103
103
  @manifest |= Dir[File.join("**","*.erb")]
104
+ # Add any other builder files not already added
105
+ @manifest |= Dir[File.join("**","*.builder")]
104
106
  # Add any other haml files not already added
105
107
  @manifest |= Dir[File.join("**","*.haml")]
106
108
  end
@@ -491,6 +493,80 @@ module Veracode
491
493
  end
492
494
 
493
495
 
496
+ def self.archive_schema
497
+ puts "Archiving schema information" if $options[:verbose]
498
+ schema_file = File.join("db", "schema.rb")
499
+ begin
500
+ add_to_archive %Q|module "Veracode::Schema"\n| +
501
+ %Q|singleton_method "main" []\n| +
502
+ RubyVM::InstructionSequence.compile_file(schema_file).disasm +
503
+ %Q|== end disasm\n| +
504
+ %Q|endmodule\n\n|
505
+ rescue Exception => e
506
+ puts "Unable to retrieve schema information from 'db/schema.rb'. Are your migrations up to date?"
507
+ log_error "Unable to archive 'db/schema.rb' (#{e.message})"
508
+ end
509
+ end
510
+
511
+
512
+ def self.compile_templates
513
+
514
+ begin
515
+ require 'action_view' unless defined? ActionView
516
+ require 'action_controller' unless defined? ActionController
517
+ rescue Exception => e
518
+ log_error "Unable to satisfy haml dependencies (#{e.message})"
519
+ return
520
+ end
521
+
522
+ types = %w{ erb builder haml }
523
+
524
+ view_paths = []
525
+ view_paths += ActionController::Base.view_paths.to_a.map(&:to_s)
526
+ view_paths |= [File.expand_path("app/views")]
527
+
528
+ puts "Looking for templates in #{view_paths.join(", ")}" if $options[:verbose]
529
+
530
+ templates = view_paths.map { |vp|
531
+ Dir[File.join(vp, "**", "*.erb")] +
532
+ Dir[File.join(vp, "**", "*.builder")] +
533
+ Dir[File.join(vp, "**", "*.haml")]
534
+ }.flatten
535
+
536
+ return unless templates.count > 0
537
+
538
+ puts "Found #{templates.count} templates" if $options[:verbose]
539
+
540
+ haml_templates = templates.grep(/\.haml$/)
541
+ if haml_templates.any?
542
+ begin
543
+ require 'haml' unless defined? Haml
544
+ require 'haml/template/plugin' unless defined? Haml::Plugin
545
+ rescue Exception => e
546
+ puts "Unable to satisfy haml dependencies"
547
+ log_error "Unable to satisfy haml dependencies (#{e.message})"
548
+ templates -= haml_templates
549
+ puts " #{templates.count} templates" if $options[:verbose]
550
+ end
551
+ end
552
+
553
+ assigns = {}
554
+ view = ActionView::Base.new(view_paths, assigns)
555
+ controller_view = ApplicationController.new.view_context
556
+
557
+ templates.each { |template|
558
+ puts "Compiling template #{template}" if $options[:verbose]
559
+
560
+ begin
561
+ view.render(:file => template)
562
+ rescue Exception => e
563
+ log_error "Compiled template #{template} #{e.message}"
564
+ end
565
+ }
566
+
567
+ puts "Compiled #{ActionView::CompiledTemplates.instance_methods.count.to_s} templates " if $options[:verbose]
568
+ end
569
+
494
570
  def self.compile_erb_templates
495
571
 
496
572
  # Rails 3 has wrapped Erubis to handle block helpers in ERB templates
@@ -654,6 +730,9 @@ module Veracode
654
730
  puts "Phase 2 - Load Rails" if $options[:verbose]
655
731
  begin
656
732
  require "rails"
733
+ require 'action_controller'
734
+ require 'action_view'
735
+ require 'active_record'
657
736
  rescue Exception => e
658
737
  puts "Unable to require rails: #{e.message}"
659
738
  log_error "Unable to require rails: #{e.message}"
@@ -714,8 +793,7 @@ module Veracode
714
793
  glob_require "app/controllers/application_controller.rb"
715
794
  glob_require "app/controllers/**/*.rb"
716
795
 
717
- compile_erb_templates
718
- compile_haml_templates
796
+ compile_templates
719
797
 
720
798
  self.update
721
799
  self.stats if $options[:verbose]
@@ -726,6 +804,8 @@ module Veracode
726
804
  archive(@modules - @baseline_modules, true)
727
805
  end
728
806
 
807
+ archive_schema
808
+
729
809
  ## /phase 3 - require app
730
810
  ################################################################
731
811
 
@@ -1,3 +1,3 @@
1
1
  module Veracode
2
- VERSION = "1.0.0.alpha"
2
+ VERSION = "1.0.0.alpha2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: veracode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha
4
+ version: 1.0.0.alpha2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-14 00:00:00.000000000 Z
12
+ date: 2012-06-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubyzip
16
- requirement: &70257511683960 !ruby/object:Gem::Requirement
16
+ requirement: &70309839816480 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70257511683960
24
+ version_requirements: *70309839816480
25
25
  description: Prepares your Ruby on Rails app for submission to Veracode.
26
26
  email: devcontact@veracode.com
27
27
  executables: