ore 0.2.3 → 0.3.0

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 (72) hide show
  1. data/.document +0 -1
  2. data/ChangeLog.md +28 -18
  3. data/README.md +8 -6
  4. data/Rakefile +10 -0
  5. data/data/ore/templates/base/[name].gemspec.erb +1 -1
  6. data/data/ore/templates/base/_gemfile.erb +1 -1
  7. data/data/ore/templates/base/gemspec.yml.erb +2 -2
  8. data/data/ore/templates/base/template.yml +1 -1
  9. data/data/ore/templates/ore_tasks/template.yml +1 -1
  10. data/gemspec.yml +4 -2
  11. data/lib/ore/generator.rb +1 -1
  12. data/lib/ore/template/helpers.rb +24 -0
  13. data/ore.gemspec +9 -5
  14. data/spec/generator_spec.rb +9 -1
  15. data/spec/spec_helper.rb +2 -0
  16. metadata +43 -80
  17. data/GemspecYML.md +0 -272
  18. data/lib/ore.rb +0 -3
  19. data/lib/ore/checks.rb +0 -88
  20. data/lib/ore/defaults.rb +0 -141
  21. data/lib/ore/dependency.rb +0 -65
  22. data/lib/ore/document_file.rb +0 -118
  23. data/lib/ore/exceptions.rb +0 -3
  24. data/lib/ore/exceptions/exception.rb +0 -4
  25. data/lib/ore/exceptions/invalid_metadata.rb +0 -6
  26. data/lib/ore/exceptions/project_not_found.rb +0 -6
  27. data/lib/ore/naming.rb +0 -113
  28. data/lib/ore/paths.rb +0 -146
  29. data/lib/ore/project.rb +0 -591
  30. data/lib/ore/settings.rb +0 -262
  31. data/lib/ore/specification.rb +0 -29
  32. data/lib/ore/versions.rb +0 -3
  33. data/lib/ore/versions/exceptions.rb +0 -1
  34. data/lib/ore/versions/exceptions/invalid_version.rb +0 -8
  35. data/lib/ore/versions/version.rb +0 -75
  36. data/lib/ore/versions/version_constant.rb +0 -126
  37. data/lib/ore/versions/version_file.rb +0 -66
  38. data/lib/rubygems_plugin.rb +0 -40
  39. data/spec/dependency_spec.rb +0 -36
  40. data/spec/document_file_spec.rb +0 -29
  41. data/spec/helpers/files.rb +0 -7
  42. data/spec/helpers/files/.document +0 -5
  43. data/spec/helpers/files/VERSION +0 -1
  44. data/spec/helpers/files/VERSION.yml +0 -5
  45. data/spec/helpers/projects.rb +0 -13
  46. data/spec/helpers/projects/dm-is-plugin/Gemfile +0 -3
  47. data/spec/helpers/projects/dm-is-plugin/VERSION +0 -1
  48. data/spec/helpers/projects/dm-is-plugin/dm-is-plugin.gemspec +0 -10
  49. data/spec/helpers/projects/dm-is-plugin/gemspec.yml +0 -7
  50. data/spec/helpers/projects/dm-is-plugin/lib/dm-is-plugin.rb +0 -4
  51. data/spec/helpers/projects/dm-is-plugin/lib/dm-is-plugin/is/plugin.rb +0 -6
  52. data/spec/helpers/projects/explicit/gemspec.yml +0 -10
  53. data/spec/helpers/projects/explicit/lib/explicit/version.rb +0 -15
  54. data/spec/helpers/projects/ffi-binding/gemspec.yml +0 -9
  55. data/spec/helpers/projects/ffi-binding/lib/ffi/binding/version.rb +0 -5
  56. data/spec/helpers/projects/jewelery/VERSION +0 -1
  57. data/spec/helpers/projects/jewelery/bin/jewelery +0 -3
  58. data/spec/helpers/projects/jewelery/gemspec.yml +0 -4
  59. data/spec/helpers/projects/jewelery/jewelery.gemspec +0 -10
  60. data/spec/helpers/projects/jewelery/lib/jewelery.rb +0 -4
  61. data/spec/helpers/projects/jewelery/lib/jewelery/rubies.rb +0 -4
  62. data/spec/helpers/projects/minimal/gemspec.yml +0 -4
  63. data/spec/helpers/projects/minimal/lib/minimal.rb +0 -2
  64. data/spec/naming_spec.rb +0 -56
  65. data/spec/projects/dm_plugin_project_spec.rb +0 -29
  66. data/spec/projects/explicit_project_spec.rb +0 -33
  67. data/spec/projects/ffi_binding_project_spec.rb +0 -25
  68. data/spec/projects/jeweler_project_spec.rb +0 -17
  69. data/spec/projects/minimal_project_spec.rb +0 -17
  70. data/spec/projects/project_examples.rb +0 -34
  71. data/spec/versions/version_file_spec.rb +0 -28
  72. data/spec/versions/version_spec.rb +0 -53
@@ -1,65 +0,0 @@
1
- module Ore
2
- #
3
- # Represents a RubyGem dependency.
4
- #
5
- class Dependency
6
-
7
- # The name of the dependency
8
- attr_reader :name
9
-
10
- # The required versions
11
- attr_reader :versions
12
-
13
- #
14
- # Creates a new dependency.
15
- #
16
- # @param [String] name
17
- # The name of the dependency.
18
- #
19
- # @param [Array<String>] versions
20
- # The required versions.
21
- #
22
- def initialize(name,*versions)
23
- @name = name
24
- @versions = versions
25
- end
26
-
27
- #
28
- # Parses a version string.
29
- #
30
- # @param [String] name
31
- # The name of the dependency.
32
- #
33
- # @param [String, nil] versions
34
- # The version string.
35
- #
36
- # @return [Dependency]
37
- # The parsed dependency.
38
- #
39
- def self.parse_versions(name,versions)
40
- versions = if versions.kind_of?(String)
41
- versions.strip.split(/,\s*/)
42
- else
43
- []
44
- end
45
-
46
- return new(name,*versions)
47
- end
48
-
49
- #
50
- # Parses a dependencey string.
51
- #
52
- # @param [String] dependency
53
- # The dependencey string.
54
- #
55
- # @return [Dependency]
56
- # The parsed dependency.
57
- #
58
- def self.parse(dependency)
59
- name, versions = dependency.strip.split(/\s+/,2)
60
-
61
- return parse_versions(name,versions)
62
- end
63
-
64
- end
65
- end
@@ -1,118 +0,0 @@
1
- require 'set'
2
-
3
- module Ore
4
- #
5
- # Parses the contents of a `.document`.
6
- #
7
- class DocumentFile
8
-
9
- # The path to the `.document` file.
10
- attr_reader :path
11
-
12
- # The glob-patterns to find all code-files.
13
- attr_reader :file_globs
14
-
15
- # The glob-patterns to find all extra-files.
16
- attr_reader :extra_file_globs
17
-
18
- #
19
- # Creates a new {DocumentFile}.
20
- #
21
- # @param [String] path
22
- # The path of the `.document` file.
23
- #
24
- def initialize(path)
25
- @path = File.expand_path(path)
26
-
27
- @file_globs = Set[]
28
- @extra_file_globs = Set[]
29
-
30
- parse!
31
- end
32
-
33
- @@file = '.document'
34
-
35
- #
36
- # Finds the document file in a project.
37
- #
38
- # @param [Project] project
39
- # The project to search within.
40
- #
41
- # @return [DocumentFile, nil]
42
- # The found document file.
43
- #
44
- def self.find(project)
45
- self.new(project.path(@@file)) if project.file?(@@file)
46
- end
47
-
48
- #
49
- # All files described in the `.document` file.
50
- #
51
- # @yield [path]
52
- # The given block will be passed every path that matches the file
53
- # globs in the `.document` file.
54
- #
55
- # @yieldparam [String] path
56
- # A match that matches the `.document` file patterns.
57
- #
58
- # @return [Enumerator]
59
- # If no block was given, an enumerator object will be returned.
60
- #
61
- def each_file(&block)
62
- return enum_for(:each_file) unless block
63
-
64
- @file_globs.each do |pattern|
65
- Dir.glob(pattern,&block)
66
- end
67
- end
68
-
69
- #
70
- # All extra-files described in the `.document` file.
71
- #
72
- # @yield [path]
73
- # The given block will be passed every path that matches the
74
- # extra-file globs in the `.document` file.
75
- #
76
- # @yieldparam [String] path
77
- # A match that matches the `.document` extra-file patterns.
78
- #
79
- # @return [Enumerator]
80
- # If no block was given, an enumerator object will be returned.
81
- #
82
- def each_extra_file(&block)
83
- return enum_for(:each_extra_file) unless block
84
-
85
- @extra_file_globs.each do |pattern|
86
- Dir.glob(pattern,&block)
87
- end
88
- end
89
-
90
- protected
91
-
92
- #
93
- # Parses the contents of a `.document` file.
94
- #
95
- def parse!
96
- separator = false
97
-
98
- File.open(@path) do |file|
99
- file.each_line do |line|
100
- line = line.chomp.strip
101
-
102
- next if line.empty?
103
-
104
- unless separator
105
- if line == '-'
106
- separator = true
107
- else
108
- @file_globs << line
109
- end
110
- else
111
- @extra_file_globs << line
112
- end
113
- end
114
- end
115
- end
116
-
117
- end
118
- end
@@ -1,3 +0,0 @@
1
- require 'ore/exceptions/exception'
2
- require 'ore/exceptions/project_not_found'
3
- require 'ore/exceptions/invalid_metadata'
@@ -1,4 +0,0 @@
1
- module Ore
2
- class Exception < RuntimeError
3
- end
4
- end
@@ -1,6 +0,0 @@
1
- require 'ore/exceptions/exception'
2
-
3
- module Ore
4
- class InvalidMetadata < Exception
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- require 'ore/exceptions/exception'
2
-
3
- module Ore
4
- class ProjectNotFound < Exception
5
- end
6
- end
data/lib/ore/naming.rb DELETED
@@ -1,113 +0,0 @@
1
- module Ore
2
- #
3
- # Provides methods for guessing the namespaces and directories
4
- # of projects. {Naming} uses the naming conventions of project names
5
- # defined by the
6
- # [Ruby Packaging Standard (RPS)](http://chneukirchen.github.com/rps/).
7
- #
8
- module Naming
9
- # The directory which contains executables for a project
10
- @@bin_dir = 'bin'
11
-
12
- # The directory which contains the code for a project
13
- @@lib_dir = 'lib'
14
-
15
- # The directory which contains C extension code for a project
16
- @@ext_dir = 'ext'
17
-
18
- # The directory which contains data files for a project
19
- @@data_dir = 'data'
20
-
21
- # The directory which contains unit-tests for a project
22
- @@test_dir = 'test'
23
-
24
- # The directory which contains spec-tests for a project
25
- @@spec_dir = 'spec'
26
-
27
- # The directory which contains built packages
28
- @@pkg_dir = 'pkg'
29
-
30
- # Words used in project names, but never in directory names
31
- @@ignore_namespaces = %w[ruby java]
32
-
33
- # Common project prefixes and namespaces
34
- @@common_namespaces = {
35
- 'ffi' => 'FFI',
36
- 'dm' => 'DataMapper'
37
- }
38
-
39
- #
40
- # Splits the project name into individual names.
41
- #
42
- # @param [String] name
43
- # The name to split.
44
- #
45
- # @return [Array<String>]
46
- # The individual names of the project name.
47
- #
48
- def names_in(name)
49
- name.split('-').reject do |word|
50
- @@ignore_namespaces.include?(word)
51
- end
52
- end
53
-
54
- #
55
- # Guesses the module names from a project name.
56
- #
57
- # @return [Array<String>]
58
- # The module names for a project.
59
- #
60
- def modules_of(name)
61
- names_in(name).map do |words|
62
- words.split('_').map { |word|
63
- @@common_namespaces[word] || word.capitalize
64
- }.join
65
- end
66
- end
67
-
68
- #
69
- # Guesses the full namespace for a project.
70
- #
71
- # @return [String]
72
- # The full module namespace for a project.
73
- #
74
- def namespace_of(name)
75
- modules_of(name).join('::')
76
- end
77
-
78
- #
79
- # Converts a camel-case name to an underscored file name.
80
- #
81
- # @param [String] name
82
- # The name to underscore.
83
- #
84
- # @return [String]
85
- # The underscored version of the name.
86
- #
87
- def underscore(name)
88
- name.gsub(/[^A-Z_][A-Z][^A-Z_]/) { |cap|
89
- cap[0,1] + '_' + cap[1..-1]
90
- }.downcase
91
- end
92
-
93
- #
94
- # Guesses the namespace directories within `lib/` for a project.
95
- #
96
- # @return [Array<String>]
97
- # The namespace directories for the project.
98
- #
99
- def namespace_dirs_of(name)
100
- names_in(name).map { |word| underscore(word) }
101
- end
102
-
103
- #
104
- # Guesses the namespace directory within `lib/` for a project.
105
- #
106
- # @return [String]
107
- # The namespace directory for the project.
108
- #
109
- def namespace_path_of(name)
110
- File.join(namespace_dirs_of(name))
111
- end
112
- end
113
- end
data/lib/ore/paths.rb DELETED
@@ -1,146 +0,0 @@
1
- require 'ore/naming'
2
-
3
- module Ore
4
- #
5
- # A mixin for {Project} which provides methods for working with paths.
6
- #
7
- module Paths
8
- include Naming
9
-
10
- #
11
- # Builds a path relative to the project.
12
- #
13
- # @param [Array] names
14
- # The directory names of the path.
15
- #
16
- # @return [Pathname]
17
- # The new path.
18
- #
19
- def path(*names)
20
- @root.join(*names)
21
- end
22
-
23
- #
24
- # The `bin/` directory of the project.
25
- #
26
- # @return [Pathname]
27
- # The path to the `bin/` directory.
28
- #
29
- def bin_dir
30
- @root.join(@@lib_dir)
31
- end
32
-
33
- #
34
- # The `lib/` directory of the project.
35
- #
36
- # @return [Pathname]
37
- # The path to the `lib/` directory.
38
- #
39
- def lib_dir
40
- @root.join(@@lib_dir)
41
- end
42
-
43
- #
44
- # The `pkg/` directory of the project.
45
- #
46
- # @return [Pathname]
47
- # The path to the `pkg/` directory.
48
- #
49
- def pkg_dir
50
- @root.join(@@pkg_dir)
51
- end
52
-
53
- #
54
- # Builds a path relative to the `lib/` directory.
55
- #
56
- # @param [Array] names
57
- # The directory names of the path.
58
- #
59
- # @return [Pathname]
60
- # The new path.
61
- #
62
- def lib_path(*names)
63
- path(@@lib_dir,*names)
64
- end
65
-
66
- #
67
- # Builds a relative path into the `pkg/` directory for the `.gem` file.
68
- #
69
- # @return [String]
70
- # The path of a `.gem` file for the project.
71
- #
72
- def pkg_file
73
- File.join(@@pkg_dir,"#{@name}-#{@version}.gem")
74
- end
75
-
76
- #
77
- # Determines if a directory exists within the project.
78
- #
79
- # @param [String] path
80
- # The path of the directory, relative to the project.
81
- #
82
- # @return [Boolean]
83
- # Specifies whether the directory exists in the project.
84
- #
85
- def directory?(path)
86
- @root.join(path).directory?
87
- end
88
-
89
- #
90
- # Determines if a file exists within the project.
91
- #
92
- # @param [String] path
93
- # The path of the file, relative to the project.
94
- #
95
- # @return [Boolean]
96
- # Specifies whether the file exists in the project.
97
- #
98
- def file?(path)
99
- @project_files.include?(path)
100
- end
101
-
102
- #
103
- # Determines if a directory exists within the `lib/` directory of the
104
- # project.
105
- #
106
- # @return [Boolean]
107
- # Specifies that the directory exists within the `lib/` directory.
108
- #
109
- def lib_directory?(path)
110
- directory?(File.join(@@lib_dir,path))
111
- end
112
-
113
- #
114
- # Determines if a file exists within the `lib/` directory of the
115
- # project.
116
- #
117
- # @return [Boolean]
118
- # Specifies that the file exists within the `lib/` directory.
119
- #
120
- def lib_file?(path)
121
- file?(File.join(@@lib_dir,path))
122
- end
123
-
124
- #
125
- # Finds paths within the project that match a glob pattern.
126
- #
127
- # @param [String] pattern
128
- # The glob pattern.
129
- #
130
- # @yield [path]
131
- # The given block will be passed matching paths.
132
- #
133
- # @yieldparam [String] path
134
- # A path relative to the root directory of the project.
135
- #
136
- def glob(pattern)
137
- within do
138
- Dir.glob(pattern) do |path|
139
- if (@project_files.include?(path) || File.directory?(path))
140
- yield path
141
- end
142
- end
143
- end
144
- end
145
- end
146
- end