create 0.1.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.
Files changed (4) hide show
  1. data/bin/create +3 -0
  2. data/create.gemspec +17 -0
  3. data/lib/create.rb +154 -0
  4. metadata +48 -0
data/bin/create ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'create'
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: []