beds 0.1.2 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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]