ruby-yasm 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ -
2
+ ChangeLog.md
3
+ LICENSE.txt
@@ -0,0 +1,7 @@
1
+ doc
2
+ pkg
3
+ .yardoc
4
+ .DS_Store
5
+ *.log
6
+ *.swp
7
+ *~
data/.yardopts CHANGED
@@ -1 +1 @@
1
- --markup markdown --title 'Ruby YASM Documentation' --protected --files ChangeLog.md,LICENSE.txt
1
+ --markup markdown --title 'Ruby YASM Documentation' --protected
@@ -1,3 +1,10 @@
1
+ ### 0.2.1 / 2012-05-27
2
+
3
+ * {YASM::Task#target!} now raises an `ArgumentError` when given an unknown
4
+ target.
5
+ * Replaced ore-tasks with
6
+ [rubygems-tasks](https://github.com/postmodern/rubygems-tasks#readme).
7
+
1
8
  ### 0.2.0 / 2011-04-11
2
9
 
3
10
  * Require rprogram ~> 0.3.
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009-2011 Hal Brodigan
1
+ Copyright (c) 2009-2012 Postmodern
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # ruby-yasm
2
2
 
3
- * [Source](http://github.com/sophsec/ruby-yasm/)
4
- * [Issues](http://github.com/sophsec/ruby-yasm/issues)
3
+ * [Source](https://github.com/sophsec/ruby-yasm/)
4
+ * [Issues](https://github.com/sophsec/ruby-yasm/issues)
5
5
  * [Email](mailto:postmodern.mod3 at gmail.com)
6
6
  * [www.tortall.net/projects/yasm](http://www.tortall.net/projects/yasm/)
7
7
  * [www.sophsec.com](http://www.sophsec.com/)
@@ -26,7 +26,7 @@ Assemble a binary file:
26
26
 
27
27
  YASM::Program.assemble do |yasm|
28
28
  yasm.syntax = :gas
29
- yasm.file = 'hello_world.S'
29
+ yasm.file = 'hello_world.S'
30
30
  yasm.output = 'hello_world.o'
31
31
  end
32
32
 
@@ -37,11 +37,11 @@ debugging information:
37
37
  yasm.target! :amd64
38
38
 
39
39
  yasm.syntax = :gas
40
- yasm.file = 'hello_world.S'
40
+ yasm.file = 'hello_world.S'
41
41
 
42
- yasm.output = 'hello_world.o'
42
+ yasm.output = 'hello_world.o'
43
43
  yasm.output_format = :elf64
44
- yasm.debug_format = :stabs
44
+ yasm.debug_format = :stabs
45
45
  end
46
46
 
47
47
  ## Requirements
@@ -55,6 +55,6 @@ debugging information:
55
55
 
56
56
  ## License
57
57
 
58
- Copyright (c) 2009-2011 Hal Brodigan
58
+ Copyright (c) 2009-2017 Postmodern
59
59
 
60
60
  See {file:LICENSE.txt} for license information.
data/Rakefile CHANGED
@@ -2,13 +2,13 @@ require 'rubygems'
2
2
  require 'rake'
3
3
 
4
4
  begin
5
- gem 'ore-tasks', '~> 0.4'
6
- require 'ore/tasks'
5
+ gem 'rubygems-tasks', '~> 0.1'
6
+ require 'rubygems/tasks'
7
7
 
8
- Ore::Tasks.new
8
+ Gem::Tasks.new
9
9
  rescue LoadError => e
10
- STDERR.puts e.message
11
- STDERR.puts "Run `gem install ore-tasks` to install 'ore/tasks'."
10
+ warn e.message
11
+ warn "Run `gem install rubygems-tasks` to install 'rubygems/tasks'."
12
12
  end
13
13
 
14
14
  begin
@@ -25,7 +25,7 @@ task :test => :spec
25
25
  task :default => :spec
26
26
 
27
27
  begin
28
- gem 'yard', '~> 0.6.0'
28
+ gem 'yard', '~> 0.7'
29
29
  require 'yard'
30
30
 
31
31
  YARD::Rake::YardocTask.new
@@ -6,7 +6,7 @@ description:
6
6
  license: MIT
7
7
  authors: Postmodern
8
8
  email: postmodern.mod3@gmail.com
9
- homepage: http://github.com/sophsec/ruby-yasm
9
+ homepage: https://github.com/sophsec/ruby-yasm#readme
10
10
  has_yard: true
11
11
 
12
12
  requirements: yasm >= 0.6.0
@@ -15,6 +15,6 @@ dependencies:
15
15
  rprogram: ~> 0.3
16
16
 
17
17
  development_dependencies:
18
- ore-tasks: ~> 0.4
18
+ rubygems-tasks: ~> 0.1
19
19
  rspec: ~> 2.4
20
- yard: ~> 0.6.0
20
+ yard: ~> 0.7
@@ -27,14 +27,18 @@ module YASM
27
27
  # Specifies whether the command exited normally.
28
28
  #
29
29
  # @example
30
- # Program.assemble(:parser => :gas, :output => 'code.o', :file => 'code.S')
30
+ # Program.assemble(
31
+ # :parser => :gas,
32
+ # :output => 'code.o',
33
+ # :file => 'code.S'
34
+ # )
31
35
  #
32
36
  # @example
33
37
  # Program.assemble do |yasm|
34
38
  # yasm.target! :x86
35
39
  #
36
40
  # yasm.syntax = :gas
37
- # yasm.file = 'code.S'
41
+ # yasm.file = 'code.S'
38
42
  # yasm.output = 'code.o'
39
43
  # end
40
44
  #
@@ -64,14 +68,18 @@ module YASM
64
68
  # Specifies whether the command exited normally.
65
69
  #
66
70
  # @example
67
- # Program.assemble(:parser => :gas, :output => 'code.o', :file => 'code.S')
71
+ # Program.assemble(
72
+ # :parser => :gas,
73
+ # :output => 'code.o',
74
+ # :file => 'code.S'
75
+ # )
68
76
  #
69
77
  # @example
70
78
  # Program.assemble do |yasm|
71
79
  # yasm.target! :x86
72
80
  #
73
81
  # yasm.syntax = :gas
74
- # yasm.file = 'code.S'
82
+ # yasm.file = 'code.S'
75
83
  # yasm.output = 'code.o'
76
84
  # end
77
85
  #
@@ -41,9 +41,9 @@ module YASM
41
41
 
42
42
  # The known YASM targets
43
43
  TARGETS = {
44
- :x86 => {:arch => :x86, :machine => :x86},
44
+ :x86 => {:arch => :x86, :machine => :x86},
45
45
  :amd64 => {:arch => :x86, :machine => :amd64},
46
- :lc3b => {:arch => :lc3b, :machine => :lc3b}
46
+ :lc3b => {:arch => :lc3b, :machine => :lc3b}
47
47
  }
48
48
 
49
49
  long_option :flag => '--version'
@@ -75,21 +75,21 @@ module YASM
75
75
  :equals => true,
76
76
  :name => :map_file
77
77
 
78
- long_option :flag => '--machine', :equals => true
79
- long_option :flag => '--force-strict'
78
+ long_option :flag => '--machine', :equals => true
79
+ long_option :flag => '--force-strict'
80
80
  short_option :flag => '-w', :name => :inhibit_warnings
81
81
  short_option :flag => '-W', :name => :toggle_warnings
82
82
  short_option :flag => '-M', :name => :gen_makefile_deps
83
83
  short_option :flag => '-E', :name => :redirect_errors_to
84
84
  short_option :flag => '-s', :name => :redirect_errors
85
- long_option :flag => '--preproc-only', :name => :preprocessor_only
85
+ long_option :flag => '--preproc-only', :name => :preprocessor_only
86
86
  short_option :flag => '-I', :name => :include, :multiple => true
87
87
  short_option :flag => '-P', :name => :pre_include, :multiple => true
88
88
  short_option :flag => '-D', :name => :define, :multiple => true
89
89
  short_option :flag => '-U', :name => :undefine, :multiple => true
90
90
  short_option :flag => '-X', :name => :message_style
91
- long_option :flag => '--prefix'
92
- long_option :flag => '--suffix'
91
+ long_option :flag => '--prefix'
92
+ long_option :flag => '--suffix'
93
93
 
94
94
  non_option :tailing => true, :name => :file
95
95
 
@@ -125,7 +125,7 @@ module YASM
125
125
  # @param [String, Symbol] name
126
126
  # The target name.
127
127
  #
128
- # @raise [RuntimeError]
128
+ # @raise [ArgumentError]
129
129
  # The specified target is unknown.
130
130
  #
131
131
  # @return [true]
@@ -138,10 +138,10 @@ module YASM
138
138
  target = TARGETS[name.to_sym]
139
139
 
140
140
  unless target
141
- raise(RuntimeError,"unknown YASM target #{name.inspect}",caller)
141
+ raise(ArgumentError,"unknown YASM target #{name.inspect}")
142
142
  end
143
143
 
144
- self.arch = target[:arch]
144
+ self.arch = target[:arch]
145
145
  self.machine = target[:machine]
146
146
  return true
147
147
  end
@@ -1,4 +1,4 @@
1
1
  module YASM
2
2
  # ruby-yasm VERSION
3
- VERSION = '0.2.0'
3
+ VERSION = '0.2.1'
4
4
  end
@@ -1,15 +1,105 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- begin
4
- Ore::Specification.new do |gemspec|
5
- # custom logic here
6
- end
7
- rescue NameError
8
- begin
9
- require 'ore/specification'
10
- retry
11
- rescue LoadError
12
- STDERR.puts "The 'ruby-yasm.gemspec' file requires Ore."
13
- STDERR.puts "Run `gem install ore-core` to install Ore."
1
+ # encoding: utf-8
2
+
3
+ require 'yaml'
4
+
5
+ Gem::Specification.new do |gemspec|
6
+ root = File.dirname(__FILE__)
7
+ lib_dir = File.join(root,'lib')
8
+ files = `git ls-files`.split($/)
9
+
10
+ filter_files = lambda { |paths|
11
+ files & case paths
12
+ when Array
13
+ paths
14
+ when String
15
+ Dir[paths]
16
+ end
17
+ }
18
+
19
+ version = {
20
+ :file => 'yasm/version',
21
+ :constant => 'YASM::VERSION'
22
+ }
23
+
24
+ defaults = {
25
+ 'name' => File.basename(root),
26
+ 'files' => files,
27
+ 'require_paths' => ['ext', 'lib'].select { |dir| File.directory?(dir) },
28
+ 'executables' => filter_files['bin/*'].map { |path| File.basename(path) },
29
+ 'test_files' => filter_files['{test/{**/}*_test.rb,spec/{**/}*_spec.rb}'],
30
+ 'doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}'],
31
+ 'extra_doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}']
32
+ }
33
+
34
+ metadata = defaults.merge(YAML.load_file('gemspec.yml'))
35
+
36
+ gemspec.name = metadata['name']
37
+ gemspec.version = if metadata['version']
38
+ metadata['version']
39
+ else
40
+ $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
41
+
42
+ require version[:file]
43
+ eval(version[:constant])
44
+ end
45
+
46
+ gemspec.summary = metadata.fetch('summary',metadata['description'])
47
+ gemspec.description = metadata.fetch('description',metadata['summary'])
48
+
49
+ gemspec.licenses = Array(metadata['license'])
50
+ gemspec.authors = Array(metadata['authors'])
51
+
52
+ gemspec.email = metadata['email']
53
+ gemspec.homepage = metadata['homepage']
54
+
55
+ gemspec.require_paths = Array(metadata['require_paths'])
56
+ gemspec.files = filter_files[metadata['files']]
57
+ gemspec.files += Array(metadata['generated_files'])
58
+ gemspec.executables = metadata['executables']
59
+ gemspec.extensions = metadata['extensions']
60
+
61
+ if Gem::VERSION < '1.7.'
62
+ gemspec.default_executable = gemspec.executables.first
63
+ end
64
+
65
+ gemspec.test_files = filter_files[metadata['test_files']]
66
+ gemspec.extra_rdoc_files = Array(metadata['extra_doc_files'])
67
+
68
+ gemspec.post_install_message = metadata['post_install_message']
69
+ gemspec.requirements = metadata['requirements']
70
+
71
+ if gemspec.respond_to?(:required_ruby_version=)
72
+ gemspec.required_ruby_version = metadata['required_ruby_version']
73
+ end
74
+
75
+ if gemspec.respond_to?(:required_rubygems_version=)
76
+ gemspec.required_rubygems_version = metadata['required_ruby_version']
77
+ end
78
+
79
+ parse_versions = lambda { |versions|
80
+ case versions
81
+ when Array
82
+ versions.map { |v| v.to_s }
83
+ when String
84
+ versions.split(/,\s*/)
85
+ end
86
+ }
87
+
88
+ if metadata['dependencies']
89
+ metadata['dependencies'].each do |name,versions|
90
+ gemspec.add_dependency(name,parse_versions[versions])
91
+ end
92
+ end
93
+
94
+ if metadata['runtime_dependencies']
95
+ metadata['runtime_dependencies'].each do |name,versions|
96
+ gemspec.add_runtime_dependency(name,parse_versions[versions])
97
+ end
98
+ end
99
+
100
+ if metadata['development_dependencies']
101
+ metadata['development_dependencies'].each do |name,versions|
102
+ gemspec.add_development_dependency(name,parse_versions[versions])
103
+ end
14
104
  end
15
105
  end
@@ -7,14 +7,12 @@ require 'tempfile'
7
7
  describe Program do
8
8
  include Helpers::Files
9
9
 
10
- before(:all) do
11
- @yasm = Program.find
12
- end
10
+ subject { described_class.find }
13
11
 
14
12
  it "should be able to assemble a file" do
15
13
  file = Tempfile.new('yasm').path
16
14
 
17
- @yasm.assemble do |yasm|
15
+ subject.assemble do |yasm|
18
16
  yasm.target! :x86
19
17
 
20
18
  yasm.syntax = :gas
@@ -17,53 +17,53 @@ describe Task do
17
17
  task.target!(:amd64).should == true
18
18
  end
19
19
 
20
- it "should raise RuntimeError when passed unknown targets" do
20
+ it "should raise ArgumentError when passed unknown targets" do
21
21
  task = Task.new
22
22
 
23
23
  lambda {
24
24
  task.target! :lol
25
- }.should raise_error(RuntimeError)
25
+ }.should raise_error(ArgumentError)
26
26
  end
27
27
 
28
28
  describe "x86" do
29
- before(:all) do
30
- @task = Task.new { |task| task.target! :x86 }
29
+ subject do
30
+ Task.new { |task| task.target! :x86 }
31
31
  end
32
32
 
33
33
  it "should set the arch value" do
34
- @task.arch.should == :x86
34
+ subject.arch.should == :x86
35
35
  end
36
36
 
37
37
  it "should set the machine value" do
38
- @task.machine.should == :x86
38
+ subject.machine.should == :x86
39
39
  end
40
40
  end
41
41
 
42
42
  describe "amd64" do
43
- before(:all) do
44
- @task = Task.new { |task| task.target! :amd64 }
43
+ subject do
44
+ Task.new { |task| task.target! :amd64 }
45
45
  end
46
46
 
47
47
  it "should set the arch value" do
48
- @task.arch.should == :x86
48
+ subject.arch.should == :x86
49
49
  end
50
50
 
51
51
  it "should set the machine value" do
52
- @task.machine.should == :amd64
52
+ subject.machine.should == :amd64
53
53
  end
54
54
  end
55
55
 
56
56
  describe "lc3b" do
57
- before(:all) do
58
- @task = Task.new { |task| task.target! :lc3b }
57
+ subject do
58
+ Task.new { |task| task.target! :lc3b }
59
59
  end
60
60
 
61
61
  it "should set the arch value" do
62
- @task.arch.should == :lc3b
62
+ subject.arch.should == :lc3b
63
63
  end
64
64
 
65
65
  it "should set the machine value" do
66
- @task.machine.should == :lc3b
66
+ subject.machine.should == :lc3b
67
67
  end
68
68
  end
69
69
  end
@@ -4,6 +4,6 @@ require 'spec_helper'
4
4
 
5
5
  describe YASM do
6
6
  it "should have a VERSION constant" do
7
- YASM.const_defined?('VERSION').should == true
7
+ subject.const_defined?('VERSION').should == true
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,72 +1,92 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby-yasm
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
4
5
  prerelease:
5
- version: 0.2.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Postmodern
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-04-11 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-05-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: rprogram
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
18
+ requirements:
21
19
  - - ~>
22
- - !ruby/object:Gem::Version
23
- version: "0.3"
20
+ - !ruby/object:Gem::Version
21
+ version: '0.3'
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: ore-tasks
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '0.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rubygems-tasks
32
+ requirement: !ruby/object:Gem::Requirement
30
33
  none: false
31
- requirements:
34
+ requirements:
32
35
  - - ~>
33
- - !ruby/object:Gem::Version
34
- version: "0.4"
36
+ - !ruby/object:Gem::Version
37
+ version: '0.1'
35
38
  type: :development
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: rspec
39
39
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
- requirements:
42
+ requirements:
43
43
  - - ~>
44
- - !ruby/object:Gem::Version
45
- version: "2.4"
44
+ - !ruby/object:Gem::Version
45
+ version: '0.1'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '2.4'
46
54
  type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: yard
50
55
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '2.4'
62
+ - !ruby/object:Gem::Dependency
63
+ name: yard
64
+ requirement: !ruby/object:Gem::Requirement
52
65
  none: false
53
- requirements:
66
+ requirements:
54
67
  - - ~>
55
- - !ruby/object:Gem::Version
56
- version: 0.6.0
68
+ - !ruby/object:Gem::Version
69
+ version: '0.7'
57
70
  type: :development
58
- version_requirements: *id004
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '0.7'
59
78
  description: ruby-yasm provides a Ruby interface to YASM assembler.
60
- email:
61
- - postmodern.mod3@gmail.com
79
+ email: postmodern.mod3@gmail.com
62
80
  executables: []
63
-
64
81
  extensions: []
65
-
66
- extra_rdoc_files:
82
+ extra_rdoc_files:
83
+ - ChangeLog.md
84
+ - LICENSE.txt
67
85
  - README.md
68
- files:
86
+ files:
87
+ - .document
69
88
  - .gemtest
89
+ - .gitignore
70
90
  - .rspec
71
91
  - .specopts
72
92
  - .yardopts
@@ -86,34 +106,33 @@ files:
86
106
  - spec/spec_helper.rb
87
107
  - spec/task_spec.rb
88
108
  - spec/yasm_spec.rb
89
- homepage: http://github.com/sophsec/ruby-yasm
90
- licenses:
109
+ homepage: https://github.com/sophsec/ruby-yasm#readme
110
+ licenses:
91
111
  - MIT
92
112
  post_install_message:
93
113
  rdoc_options: []
94
-
95
- require_paths:
114
+ require_paths:
96
115
  - lib
97
- required_ruby_version: !ruby/object:Gem::Requirement
116
+ required_ruby_version: !ruby/object:Gem::Requirement
98
117
  none: false
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: "0"
103
- required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
123
  none: false
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- version: "0"
109
- requirements:
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements:
110
129
  - yasm >= 0.6.0
111
- rubyforge_project: ruby-yasm
112
- rubygems_version: 1.7.2
130
+ rubyforge_project:
131
+ rubygems_version: 1.8.24
113
132
  signing_key:
114
133
  specification_version: 3
115
134
  summary: A Ruby interface to YASM.
116
- test_files:
135
+ test_files:
117
136
  - spec/program_spec.rb
118
- - spec/yasm_spec.rb
119
137
  - spec/task_spec.rb
138
+ - spec/yasm_spec.rb