namelessjon-dm-gen 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/dm_gen.rb CHANGED
@@ -20,3 +20,4 @@ end
20
20
  dir = File.join(File.dirname(__FILE__), 'generators')
21
21
 
22
22
  require File.join(dir, 'one_file')
23
+ require File.join(dir, 'is')
@@ -0,0 +1,43 @@
1
+ module DMGen
2
+ class Is < Templater::Generator
3
+ first_argument :name, :required => true
4
+
5
+ desc <<-eos
6
+ Generates an 'is' plugin for DataMapper, such as dm-is-list.
7
+
8
+ Use like
9
+ dm-gen is plugin
10
+
11
+ This generates the full plugin structure with skeleton code and specs, as
12
+ well as a Rakefile. All it needs is a README and some real functionality.
13
+
14
+ eos
15
+
16
+ def self.source_root
17
+ File.join(File.dirname(__FILE__), '..', 'templates', 'is')
18
+ end
19
+
20
+ def gem_name
21
+ "dm-is-#{snake_name}"
22
+ end
23
+
24
+ def snake_name
25
+ name.snake_case
26
+ end
27
+
28
+ def class_name
29
+ name.camel_case
30
+ end
31
+
32
+ def destination_root
33
+ File.join(@destination_root, gem_name)
34
+ end
35
+
36
+ # glob the template dir for all templates.
37
+ # since we want text files processed, we have to replace the default
38
+ # extension list.
39
+ glob!('', %w[rb txt Rakefile LICENSE TODO])
40
+ end
41
+
42
+ add :is, Is
43
+ end
@@ -0,0 +1,4 @@
1
+ === 0.0.1 / <%= Time.now.strftime('%Y-%m-%d') %>
2
+
3
+ * Release!
4
+
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 John Doe
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,14 @@
1
+ History.txt
2
+ LICENSE
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ TODO
7
+ lib/<%= gem_name %>.rb
8
+ lib/<%= gem_name %>/is/<%= snake_name %>.rb
9
+ lib/<%= gem_name %>/is/version.rb
10
+ spec/integration/<%= snake_name %>_spec.rb
11
+ spec/spec.opts
12
+ spec/spec_helper.rb
13
+ tasks/spec.rb
14
+ tasks/install.rb
@@ -0,0 +1,3 @@
1
+ = <%= gem_name %>
2
+
3
+ Description of plugin. What it does, and how.
@@ -0,0 +1,30 @@
1
+ require 'pathname'
2
+ require 'rubygems'
3
+ require 'hoe'
4
+
5
+ ROOT = Pathname(__FILE__).dirname.expand_path
6
+ JRUBY = RUBY_PLATFORM =~ /java/
7
+ WINDOWS = Gem.win_platform?
8
+ SUDO = (WINDOWS || JRUBY) ? '' : ('sudo' unless ENV['SUDOLESS'])
9
+
10
+ require ROOT + 'lib/<%= gem_name %>/is/version'
11
+
12
+ # define some constants to help with task files
13
+ GEM_NAME = '<%= gem_name %>'
14
+ GEM_VERSION = DataMapper::Is::<%= class_name %>::VERSION
15
+
16
+ Hoe.new(GEM_NAME, GEM_VERSION) do |p|
17
+ p.developer('John Doe', 'john [a] doe [d] com')
18
+
19
+ p.description = 'A DataMapper plugin that ...'
20
+ p.summary = 'A DataMapper plugin that ...'
21
+ p.url = 'http://github.com/USERNAME/<%= gem_name %>'
22
+
23
+ p.clean_globs |= %w[ log pkg coverage ]
24
+ p.spec_extras = { :has_rdoc => true, :extra_rdoc_files => %w[ README.txt LICENSE TODO History.txt ] }
25
+
26
+ p.extra_deps << [['dm-core', "~> 0.9.10"]]
27
+
28
+ end
29
+
30
+ Pathname.glob(ROOT.join('tasks/**/*.rb').to_s).each { |f| require f }
File without changes
@@ -0,0 +1,20 @@
1
+ # Needed to import datamapper and other gems
2
+ require 'rubygems'
3
+ require 'pathname'
4
+
5
+ # Add all external dependencies for the plugin here
6
+ gem 'dm-core', '~>0.9.10'
7
+ require 'dm-core'
8
+
9
+ # Require plugin-files
10
+ require Pathname(__FILE__).dirname.expand_path / '<%= gem_name %>' / 'is' / '<%= snake_name %>.rb'
11
+
12
+
13
+ # Include the plugin in Resource
14
+ module DataMapper
15
+ module Resource
16
+ module ClassMethods
17
+ include DataMapper::Is::<%= class_name %>
18
+ end # module ClassMethods
19
+ end # module Resource
20
+ end # module DataMapper
@@ -0,0 +1,38 @@
1
+ module DataMapper
2
+ module Is
3
+ module <%= class_name %>
4
+
5
+ ##
6
+ # fired when your plugin gets included into Resource
7
+ #
8
+ def self.included(base)
9
+
10
+ end
11
+
12
+ ##
13
+ # Methods that should be included in DataMapper::Model.
14
+ # Normally this should just be your generator, so that the namespace
15
+ # does not get cluttered. ClassMethods and InstanceMethods gets added
16
+ # in the specific resources when you fire is :<%= snake_name %>
17
+ ##
18
+
19
+ def is_<%= snake_name %>(options)
20
+
21
+ # Add class-methods
22
+ extend DataMapper::Is::<%= class_name %>::ClassMethods
23
+ # Add instance-methods
24
+ include DataMapper::Is::<%= class_name %>::InstanceMethods
25
+
26
+ end
27
+
28
+ module ClassMethods
29
+
30
+ end # ClassMethods
31
+
32
+ module InstanceMethods
33
+
34
+ end # InstanceMethods
35
+
36
+ end # <%= class_name %>
37
+ end # Is
38
+ end # DataMapper
@@ -0,0 +1,7 @@
1
+ module DataMapper
2
+ module Is
3
+ module <%= class_name %>
4
+ VERSION = '0.0.1'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ require 'pathname'
2
+ require Pathname(__FILE__).dirname.expand_path.parent + 'spec_helper'
3
+
4
+ if HAS_SQLITE3 || HAS_MYSQL || HAS_POSTGRES
5
+ describe 'DataMapper::Is::<%= class_name %>' do
6
+
7
+ end
8
+ end
@@ -0,0 +1 @@
1
+ --colour
@@ -0,0 +1,26 @@
1
+ require 'pathname'
2
+ require 'rubygems'
3
+
4
+ gem 'rspec', '~>1.1.11'
5
+ require 'spec'
6
+
7
+ require Pathname(__FILE__).dirname.expand_path.parent + 'lib/<%= gem_name %>'
8
+
9
+ def load_driver(name, default_uri)
10
+ return false if ENV['ADAPTER'] != name.to_s
11
+
12
+ begin
13
+ DataMapper.setup(name, ENV["#{name.to_s.upcase}_SPEC_URI"] || default_uri)
14
+ DataMapper::Repository.adapters[:default] = DataMapper::Repository.adapters[name]
15
+ true
16
+ rescue LoadError => e
17
+ warn "Could not load do_#{name}: #{e}"
18
+ false
19
+ end
20
+ end
21
+
22
+ ENV['ADAPTER'] ||= 'sqlite3'
23
+
24
+ HAS_SQLITE3 = load_driver(:sqlite3, 'sqlite3::memory:')
25
+ HAS_MYSQL = load_driver(:mysql, 'mysql://localhost/dm_core_test')
26
+ HAS_POSTGRES = load_driver(:postgres, 'postgres://postgres@localhost/dm_core_test')
@@ -0,0 +1,13 @@
1
+ def sudo_gem(cmd)
2
+ sh "#{SUDO} #{RUBY} -S gem #{cmd}", :verbose => false
3
+ end
4
+
5
+ desc "Install #{GEM_NAME} #{GEM_VERSION}"
6
+ task :install => [ :package ] do
7
+ sudo_gem "install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources"
8
+ end
9
+
10
+ desc "Uninstall #{GEM_NAME} #{GEM_VERSION}"
11
+ task :uninstall => [ :clobber ] do
12
+ sudo_gem "uninstall #{GEM_NAME} -v#{GEM_VERSION} -Ix"
13
+ end
@@ -0,0 +1,25 @@
1
+ begin
2
+ gem 'rspec', '~>1.1.11'
3
+ require 'spec'
4
+ require 'spec/rake/spectask'
5
+
6
+ task :default => [ :spec ]
7
+
8
+ desc 'Run specifications'
9
+ Spec::Rake::SpecTask.new(:spec) do |t|
10
+ t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
11
+ t.spec_files = Pathname.glob((ROOT + 'spec/**/*_spec.rb').to_s)
12
+
13
+ begin
14
+ gem 'rcov', '~>0.8'
15
+ t.rcov = JRUBY ? false : (ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true)
16
+ t.rcov_opts << '--exclude' << 'spec'
17
+ t.rcov_opts << '--text-summary'
18
+ t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
19
+ rescue LoadError
20
+ # rcov not installed
21
+ end
22
+ end
23
+ rescue LoadError
24
+ # rspec not installed
25
+ end
@@ -0,0 +1,41 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "DMGen::OneFile" do
4
+ before do
5
+ @generator = DMGen::Is.new('/tmp', {}, 'awesome')
6
+ end
7
+
8
+ # basic file creation.
9
+ it "creates a Rakefile" do
10
+ @generator.should create('/tmp/dm-is-awesome/Rakefile')
11
+ end
12
+ it "creates the lib folder layout" do
13
+ @generator.should create('/tmp/dm-is-awesome/lib/dm-is-awesome.rb')
14
+ @generator.should create('/tmp/dm-is-awesome/lib/dm-is-awesome/is/version.rb')
15
+ @generator.should create('/tmp/dm-is-awesome/lib/dm-is-awesome/is/awesome.rb')
16
+ end
17
+ it "creates the spec folder layout" do
18
+ @generator.should create('/tmp/dm-is-awesome/spec/integration/awesome_spec.rb')
19
+ @generator.should create('/tmp/dm-is-awesome/spec/spec.opts')
20
+ @generator.should create('/tmp/dm-is-awesome/spec/spec_helper.rb')
21
+ end
22
+ it "creates a README" do
23
+ @generator.should create('/tmp/dm-is-awesome/README.txt')
24
+ end
25
+ it "creates a History file" do
26
+ @generator.should create('/tmp/dm-is-awesome/History.txt')
27
+ end
28
+ it "creates a LICENSE" do
29
+ @generator.should create('/tmp/dm-is-awesome/LICENSE')
30
+ end
31
+ it "creates a Manifest for Hoe" do
32
+ @generator.should create('/tmp/dm-is-awesome/Manifest.txt')
33
+ end
34
+ it "creates a TODO list" do
35
+ @generator.should create('/tmp/dm-is-awesome/TODO')
36
+ end
37
+ it "creates support tasks" do
38
+ @generator.should create('/tmp/dm-is-awesome/tasks/spec.rb')
39
+ @generator.should create('/tmp/dm-is-awesome/tasks/install.rb')
40
+ end
41
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: namelessjon-dm-gen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Stott
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-13 00:00:00 -08:00
12
+ date: 2009-01-20 00:00:00 -08:00
13
13
  default_executable: dm-gen
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -33,17 +33,42 @@ files:
33
33
  - bin/dm-gen
34
34
  - lib/templates
35
35
  - lib/templates/one_file.rb
36
+ - lib/templates/is
37
+ - lib/templates/is/lib
38
+ - lib/templates/is/lib/dm-is-example
39
+ - lib/templates/is/lib/%gem_name%.rb
40
+ - lib/templates/is/lib/%gem_name%
41
+ - lib/templates/is/lib/%gem_name%/is
42
+ - lib/templates/is/lib/%gem_name%/is/%snake_name%.rb
43
+ - lib/templates/is/lib/%gem_name%/is/version.rb
44
+ - lib/templates/is/History.txt
45
+ - lib/templates/is/LICENSE
46
+ - lib/templates/is/Manifest.txt
47
+ - lib/templates/is/README.txt
48
+ - lib/templates/is/Rakefile
49
+ - lib/templates/is/TODO
50
+ - lib/templates/is/spec
51
+ - lib/templates/is/spec/integration
52
+ - lib/templates/is/spec/integration/%snake_name%_spec.rb
53
+ - lib/templates/is/spec/spec.opts
54
+ - lib/templates/is/spec/spec_helper.rb
55
+ - lib/templates/is/tasks
56
+ - lib/templates/is/tasks/install.rb
57
+ - lib/templates/is/tasks/spec.rb
36
58
  - lib/generators
37
59
  - lib/generators/one_file.rb
60
+ - lib/generators/is.rb
38
61
  - lib/dm_gen.rb
39
62
  - spec/dm_gen_spec.rb
40
63
  - spec/spec_helper.rb
41
64
  - spec/one_file_spec.rb
42
- has_rdoc: false
65
+ - spec/is_plugin_spec.rb
66
+ has_rdoc: true
43
67
  homepage: http://github.com/namelessjon/dm-gen
44
68
  post_install_message:
45
- rdoc_options: []
46
-
69
+ rdoc_options:
70
+ - --inline-source
71
+ - --charset=UTF-8
47
72
  require_paths:
48
73
  - lib
49
74
  required_ruby_version: !ruby/object:Gem::Requirement