beds 0.1.2 → 1.0.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.
data/bin/beds CHANGED
@@ -4,12 +4,12 @@ require "#{File.dirname(__FILE__)}/../lib/cli.rb"
4
4
 
5
5
  ## A bit of magic to call Beds::CLI::<CLI-Command>
6
6
  cmd = ARGV[0].nil? ? "" : ARGV[0]
7
- if ! cmd == "" and Beds::CLI.const_defined?(cmd.capitalize.to_sym) then
7
+ if cmd != "" and Beds::CLI.const_defined?(cmd.capitalize) then
8
8
  Beds::CLI.const_get(cmd.capitalize.to_sym).send(:new,ARGV[1..-1])
9
9
  exit 0
10
10
  else
11
11
  puts " Usage: #{File.basename($0)} [scaffold|new] [OPTIONS]"
12
- puts " See #{File.basename($0)} scaffold --help or #{File.basename($0)} new --help foor more information"
12
+ puts " See #{File.basename($0)} scaffold --help or #{File.basename($0)} new --help for more information"
13
13
  exit 1
14
14
  end
15
15
 
data/lib/new.rb CHANGED
@@ -1,6 +1,52 @@
1
1
  module Beds
2
2
  module CLI
3
3
  class New
4
+ attr_accessor :options, :gems, :app,:opts
5
+
6
+ def initialize(opts)
7
+ @options = { :configru => true, :bundler => true, :git => true, :db => :dm,:view => 'erb' }
8
+ @gems=[]
9
+ parse_args(opts)
10
+ (STDERR.puts("Directory #{@app} already exists"); exit 1) if Dir.exist?("./#{@app}")
11
+ init_dirs
12
+ write_files
13
+ end
14
+ private
15
+ def parse_args(options)
16
+ @app ||= ""
17
+ opts = OptionParser.new
18
+ opts.banner = "Usage: #{__FILE__} [options] -a <app_name>"
19
+ opts.on('-a', '--app [app]') {|app| @app=app}
20
+ opts.on('-h', '--help', 'Display this information') { puts opts; exit }
21
+ opts.on('-g', '--include-gem GEM', 'Require gem in gemfile') {|gem| @gems << gem}
22
+ opts.on_tail("-h", "--help", "Display this information") { puts opts ; exit }
23
+ begin
24
+ (puts opts; exit 1) if options.empty?
25
+ opts.parse! options
26
+ rescue OptionParser::InvalidArgument
27
+ opts.warn "Invalid Argument: #{$!}"
28
+ exit 1
29
+ end
30
+ return opts
31
+ end
32
+ def init_dirs
33
+ Dir.mkdir("./#{@app}")
34
+ Dir.chdir("./#{@app}")
35
+ Dir.mkdir("./tmp")
36
+ Dir.mkdir("./views")
37
+ Dir.mkdir("./public")
38
+ Dir.mkdir('./controllers')
39
+ end
40
+
41
+ def write_files
42
+ template_dir = "#{File.dirname(__FILE__)}/../templates/new"
43
+ template_files = Dir.exist?("~/.beds/new") ? Dir.glob("~/.beds/new/*") : Dir.glob("/#{template_dir}/*")
44
+ template_files.each do |file|
45
+ File.open(File.basename(file).sub(/\.erb$/,""),"w") { |output|
46
+ output.write(ERB.new(File.open(file).read,nil,"<>").result(binding))
47
+ }
48
+ end
49
+ end
4
50
  end
5
51
  end
6
52
  end
@@ -0,0 +1,11 @@
1
+ source :rubygems
2
+
3
+ gem 'sinatra'
4
+ gem 'dm-core'
5
+ gem 'dm-mysql-adapter'
6
+ gem 'dm-migrations'
7
+ gem 'dm-validations'
8
+ gem 'shotgun'
9
+ <% @gems.each do |gem| %>
10
+ gem '<%= gem %>'
11
+ <% end unless @gems.empty? %>
@@ -0,0 +1,9 @@
1
+ namespace "db" do
2
+ desc "Migrate the database"
3
+ task :migrate, [:environment] do |t,args|
4
+ args.with_defaults(:environment => ENV['RAILS_ENV'].nil? ? "production" : ENV['RAILS_ENV'])
5
+ require './models.rb'
6
+ DataMapper.auto_migrate!
7
+ end
8
+ end
9
+
@@ -0,0 +1,4 @@
1
+ require 'sinatra'
2
+ require './models.rb'
3
+ Dir.glob("#{File.dirname(__FILE__)}/controllers/*.rb").each { |controller| load controller }
4
+
@@ -0,0 +1,3 @@
1
+ require './app.rb'
2
+ run Sinatra::Application
3
+
@@ -0,0 +1,21 @@
1
+ require 'rubygems'
2
+ require 'dm-core'
3
+ require 'dm-mysql-adapter'
4
+ require 'dm-migrations'
5
+ require 'dm-validations'
6
+
7
+ DataMapper.setup(:default, "mysql://localhost/#{@app}")
8
+
9
+ ## Include Models Below.
10
+ ## Example:
11
+ #class User
12
+ # include DataMapper::Resource
13
+ # property :id, Serial
14
+ # property :name, String, :required => true, :messages => { :presence => "Please enter your name" }
15
+ # property :login, String, :required => true, :unique => true, :messages => { :presence => "Please select a login ID", :is_unique => "Login already in use. Try again" }
16
+ # property :pasword, String, :required => true, :length => 6..100, :messages => { :presence => "Please provide a password", :length => "Sorry. Your password must be between 6 and 100 characters long." }
17
+ # property :email, String, :format => :email_address, :unique => true, :messages => { :format => "Please check your email address and try again.", :presence => "It looks like you forgot to enter your email address.", :is_unique => "Sorry. This email is already associated with a different account" }
18
+ # property :level , Integer, :required => true
19
+ # property :account_id, Integer, :required => true
20
+ #end
21
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beds
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-04 00:00:00.000000000 Z
12
+ date: 2012-09-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &2156320300 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 1.3.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2156320300
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.3.3
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rubyzip
27
- requirement: &2156319800 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 0.9.9
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *2156319800
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.9.9
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rspec
38
- requirement: &2156319380 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,7 +53,12 @@ dependencies:
43
53
  version: '0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *2156319380
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  description: Easily create Sinatra applications quikcly and easily by scaffolding
48
63
  your models.
49
64
  email: james@ruby-code.com
@@ -61,6 +76,11 @@ files:
61
76
  - ./templates/erb/new.erb
62
77
  - ./templates/hooks/bootstrap.rb
63
78
  - ./templates/hooks/jquery.rb
79
+ - ./templates/new/app.rb
80
+ - ./templates/new/config.ru
81
+ - ./templates/new/Gemfile
82
+ - ./templates/new/models.rb
83
+ - ./templates/new/Rakefile
64
84
  - ./templates/routes/delete.erb
65
85
  - ./templates/routes/edit.erb
66
86
  - ./templates/routes/list.erb
@@ -93,7 +113,7 @@ requirements:
93
113
  - sinatra, version 1.3.3
94
114
  - rubyzip, version 0.9.9
95
115
  rubyforge_project:
96
- rubygems_version: 1.8.15
116
+ rubygems_version: 1.8.24
97
117
  signing_key:
98
118
  specification_version: 3
99
119
  summary: The BootStrap ERb DataMapper Sinatra [scaffolder]