create 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/create +3 -0
- data/create.gemspec +17 -0
- data/lib/create.rb +154 -0
- metadata +48 -0
data/bin/create
ADDED
data/create.gemspec
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
Gem::Specification.new do |gem|
|
2
|
+
gem.name = 'create'
|
3
|
+
gem.version = '0.1.1'
|
4
|
+
gem.date = '2011-07-05'
|
5
|
+
|
6
|
+
gem.description = 'Sinatra directory structure and code generator.'
|
7
|
+
gem.summary = gem.description
|
8
|
+
|
9
|
+
gem.author = 'Denis Fadeev'
|
10
|
+
gem.email = 'denis@fadeev.in'
|
11
|
+
|
12
|
+
gem.files = %w{ create.gemspec lib/create.rb bin/create }
|
13
|
+
|
14
|
+
gem.executable = 'create'
|
15
|
+
|
16
|
+
gem.homepage = 'http://github.com/fadeev/create'
|
17
|
+
end
|
data/lib/create.rb
ADDED
@@ -0,0 +1,154 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'open-uri'
|
3
|
+
|
4
|
+
include FileUtils
|
5
|
+
|
6
|
+
arguments = %w{ haml erb sass reset jquery prototype datamapper textile }
|
7
|
+
arguments.each do |argument|
|
8
|
+
instance_variable_set("@#{argument}", true) if ARGV.include? argument
|
9
|
+
end
|
10
|
+
|
11
|
+
if ARGV.empty?
|
12
|
+
puts " \033[31merror\033[0m\ Please supply at least one argument (name of the app)."
|
13
|
+
exit
|
14
|
+
elsif arguments.include?(ARGV.first)
|
15
|
+
puts " \033[31merror\033[0m\ First argument cannot be #{arguments}."
|
16
|
+
exit
|
17
|
+
elsif Dir.exists?(ARGV.first)
|
18
|
+
puts " \033[31merror\033[0m\ Directory '#{ARGV.first}' already exists."
|
19
|
+
exit
|
20
|
+
end
|
21
|
+
|
22
|
+
app_name = ARGV.first
|
23
|
+
|
24
|
+
mkdir app_name
|
25
|
+
cd app_name
|
26
|
+
mkdir_p ['views', 'public/javascripts', 'public/stylesheets', 'public/images']
|
27
|
+
|
28
|
+
File.open "#{app_name}.rb", 'w' do |f|
|
29
|
+
puts " \033[32mnew\033[0m\ #{app_name}.rb"
|
30
|
+
f << "# encoding: utf-8\n"
|
31
|
+
f << "\n"
|
32
|
+
f << "require 'sinatra'\n"
|
33
|
+
f << "require 'data_mapper'\n" if @datamapper
|
34
|
+
f << "require 'haml'\n" if @haml
|
35
|
+
f << "require 'sass'\n" if @sass
|
36
|
+
f << "\n"
|
37
|
+
f << "use Rack::MethodOverride\n"
|
38
|
+
f << "\n"
|
39
|
+
if @datamapper || @haml
|
40
|
+
f << "configure do\n"
|
41
|
+
f << " set :haml, :format => :html5\n" if @haml
|
42
|
+
f << ' DataMapper::setup(:default, ENV["DATABASE_URL"] || "sqlite3://#{Dir.pwd}/data.db")' + "\n" if @datamapper
|
43
|
+
f << " DataMapper.auto_upgrade!\n" if @datamapper
|
44
|
+
f << "end\n"
|
45
|
+
f << "\n"
|
46
|
+
end
|
47
|
+
if @sass
|
48
|
+
f << "get '/stylesheets/application.css' do\n"
|
49
|
+
f << " sass :stylesheet, :style => :expanded\n"
|
50
|
+
f << "end\n"
|
51
|
+
f << "\n"
|
52
|
+
end
|
53
|
+
f << "get '/' do\n"
|
54
|
+
f << " haml :index\n" if @haml
|
55
|
+
f << " erb :index\n" if @erb
|
56
|
+
f << "end\n"
|
57
|
+
end
|
58
|
+
|
59
|
+
File.open 'config.ru', 'w' do |f|
|
60
|
+
puts " \033[32mnew\033[0m\ config.ru"
|
61
|
+
f << "# encoding: utf-8\n"
|
62
|
+
f << "\n"
|
63
|
+
f << "require 'sinatra'\n"
|
64
|
+
f << "require './#{app_name}.rb'\n"
|
65
|
+
f << "\n"
|
66
|
+
f << "run Sinatra::Application\n"
|
67
|
+
end
|
68
|
+
|
69
|
+
File.open 'Gemfile', 'w' do |f|
|
70
|
+
puts " \033[32mnew\033[0m\ Gemfile"
|
71
|
+
f << "source :rubygems\n"
|
72
|
+
f << "\n"
|
73
|
+
f << "gem 'sinatra'\n"
|
74
|
+
f << "gem 'data_mapper'\n" if @datamapper
|
75
|
+
f << "gem 'haml'\n" if @haml
|
76
|
+
f << "gem 'sass\n" if @sass
|
77
|
+
f << "gem 'RedCloth'\n"
|
78
|
+
end
|
79
|
+
|
80
|
+
if @haml
|
81
|
+
File.open './views/layout.haml', 'w' do |f|
|
82
|
+
puts " \033[32mnew\033[0m\ views/layout.haml"
|
83
|
+
f << "!!!\n"
|
84
|
+
f << "%html\n"
|
85
|
+
f << " %head\n"
|
86
|
+
f << " %meta{charset: 'utf-8'}\n"
|
87
|
+
f << " %title \n"
|
88
|
+
f << " %link{rel: 'stylesheet', type: 'text/stylesheet', href: '/stylesheets/reset.css'}\n" if @reset
|
89
|
+
f << " %link{rel: 'stylesheet', type: 'text/stylesheet', href: '/stylesheets/application.css'}\n"
|
90
|
+
f << " %script{type: 'text/javascript', src: '/javascripts/jquery.min.js'}\n" if @jquery
|
91
|
+
f << " %script{type: 'text/javascript', src: '/javascripts/prototype.js'}\n" if @prototype
|
92
|
+
f << " %script{type: 'text/javascript', src: '/javascripts/application.js'}\n"
|
93
|
+
f << " %body\n"
|
94
|
+
f << " = yield\n"
|
95
|
+
end
|
96
|
+
|
97
|
+
touch './views/index.haml'
|
98
|
+
puts " \033[32mnew\033[0m\ views/index.haml"
|
99
|
+
|
100
|
+
elsif @erb
|
101
|
+
File.open './views/layout.erb', 'w' do |f|
|
102
|
+
puts " \033[32mnew\033[0m\ views/layout.erb"
|
103
|
+
f << "<!DOCTYPE html>\n"
|
104
|
+
f << "<html>\n"
|
105
|
+
f << " <head>\n"
|
106
|
+
f << " <meta charset='utf-8' />\n"
|
107
|
+
f << " <title> </title>\n"
|
108
|
+
f << " <link rel='stylesheet' type='text/stylesheet' href='/stylesheets/reset.css' />\n" if @reset
|
109
|
+
f << " <link rel='stylesheet' type='text/stylesheet' href='/stylesheets/application.css' />\n"
|
110
|
+
f << " <script type='text/javascript' src='/javascripts/jquery.min.js' />\n" if @jquery
|
111
|
+
f << " <script type='text/javascript' src='/javascripts/prototype.js' />\n" if @prototype
|
112
|
+
f << " <script type='text/javascript' src='/javascripts/application.js' />\n"
|
113
|
+
f << " </head>\n"
|
114
|
+
f << " <body>\n"
|
115
|
+
f << " <%= yield %>\n"
|
116
|
+
f << " </body>\n"
|
117
|
+
f << "</html>\n"
|
118
|
+
end
|
119
|
+
|
120
|
+
touch './views/index.erb'
|
121
|
+
puts " \033[32mnew\033[0m\ views/index.erb"
|
122
|
+
end
|
123
|
+
|
124
|
+
File.open './public/stylesheets/reset.css', 'w' do |f|
|
125
|
+
puts " \033[32mnew\033[0m\ public/stylesheets/reset.css"
|
126
|
+
f << open('http://meyerweb.com/eric/tools/css/reset/reset.css').read
|
127
|
+
end if @reset
|
128
|
+
|
129
|
+
File.open './views/application.sass', 'w' do |f|
|
130
|
+
puts " \033[32mnew\033[0m\ public/application.sass"
|
131
|
+
end
|
132
|
+
|
133
|
+
touch './public/javascripts/application.js'
|
134
|
+
puts " \033[32mnew\033[0m\ public/javascripts/application.js"
|
135
|
+
|
136
|
+
if @jquery
|
137
|
+
File.open './public/javascripts/jquery.min.js', 'w' do |f|
|
138
|
+
puts " \033[32mnew\033[0m\ public/javascripts/jquery.min.js"
|
139
|
+
f << open('http://code.jquery.com/jquery.min.js').read
|
140
|
+
end
|
141
|
+
|
142
|
+
File.open './public/javascripts/application.js', 'w' do |f|
|
143
|
+
f << "$(function() {\n"
|
144
|
+
f << " \n"
|
145
|
+
f << " // Code goes here...\n"
|
146
|
+
f << " \n"
|
147
|
+
f << "});\n"
|
148
|
+
end
|
149
|
+
elsif @prototype
|
150
|
+
File.open './public/javascripts/prototype.js', 'w' do |f|
|
151
|
+
puts " \033[32mnew\033[0m\ public/javascripts/prototype.js"
|
152
|
+
f << open('https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js').read
|
153
|
+
end
|
154
|
+
end
|
metadata
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: create
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Denis Fadeev
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-07-05 00:00:00.000000000Z
|
13
|
+
dependencies: []
|
14
|
+
description: Sinatra directory structure and code generator.
|
15
|
+
email: denis@fadeev.in
|
16
|
+
executables:
|
17
|
+
- create
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- create.gemspec
|
22
|
+
- lib/create.rb
|
23
|
+
- bin/create
|
24
|
+
homepage: http://github.com/fadeev/create
|
25
|
+
licenses: []
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ! '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
requirements: []
|
43
|
+
rubyforge_project:
|
44
|
+
rubygems_version: 1.8.5
|
45
|
+
signing_key:
|
46
|
+
specification_version: 3
|
47
|
+
summary: Sinatra directory structure and code generator.
|
48
|
+
test_files: []
|