ucc 2.0.3 → 2.0.4

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.
Files changed (3) hide show
  1. data/lib/ucc.rb +13 -8
  2. data/lib/ucc/version.rb +1 -1
  3. metadata +1 -1
data/lib/ucc.rb CHANGED
@@ -28,15 +28,19 @@ module Ucc
28
28
  opts.banner = "Usage: #{CURRENT_EXECUTABLE} [options] file..."
29
29
 
30
30
  options[:runopts] = nil
31
- opts.on( '-r', '--runopts "STRING"', 'Pass STRING as the command line argument to the compiled app' ) do |s|
31
+ opts.on( '-r', '--runopts STRING', 'Pass STRING as the command line argument to the compiled app' ) do |s|
32
32
  options[:runopts] = s
33
33
  end
34
34
 
35
35
  options[:compileopts] = nil
36
- opts.on( '-c', '--compileopts "STRING"', 'Pass STRING as the command line argument to the compiler' ) do |s|
36
+ opts.on( '-c', '--compileopts STRING', 'Pass STRING as the command line argument to the compiler' ) do |s|
37
37
  options[:compileopts] = s
38
38
  end
39
39
 
40
+ opts.on( '-o', '--output FILE', 'Use FILE as the output file' ) do |s|
41
+ @app_filename = s
42
+ end
43
+
40
44
  options[:memcheck] = false
41
45
  opts.on( '-V', '--valgrind', 'Run the app in valgrind' ) do
42
46
  options[:memcheck] = true
@@ -67,7 +71,9 @@ module Ucc
67
71
  # Filename to use when executing compiled app
68
72
  def app_filename
69
73
  return @app_filename if @app_filename
70
- @app_filename = source_files[0].sub(/\.\w+$/, '')
74
+ @app_filename = source_files.find{ |param| param !~ /^-/ }
75
+ return nil unless @app_filename
76
+ @app_filename = @app_filename.sub(/\.\w+$/, '')
71
77
  @app_filename += ".exe" if WINDOWS
72
78
  @app_filename
73
79
  end
@@ -84,9 +90,9 @@ module Ucc
84
90
  exit(1)
85
91
  end
86
92
 
87
- # Here we have already parsed ARGV
93
+ # Here we have already clean ARGV
88
94
  @source_files = ARGV
89
- if @source_files.empty?
95
+ unless app_filename
90
96
  puts "#{CURRENT_EXECUTABLE}: no input files"
91
97
  exit(1)
92
98
  end
@@ -94,8 +100,7 @@ module Ucc
94
100
 
95
101
  # Everything special goes here
96
102
  def work
97
- compilation_params = %Q[#{@compiler} -Wall -o "#{app_filename}" #{source_files.map{ |f| enquote(f) }.join(" ")}]
98
- compilation_params = "#{compilation_params} #{options[:compileopts]}" if options[:compileopts]
103
+ compilation_params = %Q[#{@compiler} #{options[:compileopts]} -Wall -o #{enquote(app_filename)} #{source_files.map{ |f| enquote(f) }.join(" ")}]
99
104
  trace compilation_params
100
105
  exit unless system compilation_params
101
106
 
@@ -104,7 +109,7 @@ module Ucc
104
109
  exec_params = "#{exec_params} #{options[:runopts]}" if options[:runopts]
105
110
  exec_params = "valgrind #{exec_params}" if options[:memcheck]
106
111
  trace exec_params
107
- puts "=== Compiled successfully, executing... === "
112
+ puts "=== Compiled successfully, executing... ==="
108
113
  exec exec_params
109
114
  end
110
115
 
@@ -1,3 +1,3 @@
1
1
  module Ucc
2
- VERSION = "2.0.3"
2
+ VERSION = "2.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ucc
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: