ruby-yasm 0.2.0 → 0.2.1

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.
@@ -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