franky 1.0.0
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.
- checksums.yaml +7 -0
- data/Gemfile +6 -0
- data/README.md +90 -0
- data/Rakefile +3 -0
- data/bin/franky +5 -0
- data/lib/files/Gemfile +5 -0
- data/lib/files/app.min.rb +7 -0
- data/lib/files/app.rb +7 -0
- data/lib/files/config.ru +3 -0
- data/lib/files/index.html.erb +1 -0
- data/lib/files/layout.html.erb +11 -0
- data/lib/franky.rb +6 -0
- data/lib/franky/base.rb +62 -0
- data/lib/franky/file_handler.rb +81 -0
- data/lib/franky/version.rb +3 -0
- metadata +115 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b0057e29b78c1a61b00c4427be19fc10011b492d
|
4
|
+
data.tar.gz: 104eee8474df2f0196ac90d857512930f350eb4e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4b8ed29f02a5f74a52e4d8a7ee113382e5a002d295b0144fd30e683ea48e2187712f677f1aea6421c842ce925f9750dd366ce4bf76540c100f3ac4781859cb1c
|
7
|
+
data.tar.gz: 2ef2b43541795a01cc0176dc747d1ffdda98c40843e5c03b98ebed66411c746572072026053f44565afb358243e49f38a3a6672fe33adf81cb03e4c9134150c9
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
# Franky
|
2
|
+
|
3
|
+
A site generator for minimal Sinatra template. Check [Sinatra](http://www.sinatrarb.com/) if you don't know what it is.
|
4
|
+
|
5
|
+
## Installation 安裝
|
6
|
+
|
7
|
+
```
|
8
|
+
$ gem install franky
|
9
|
+
```
|
10
|
+
|
11
|
+
## Generation 產生專案
|
12
|
+
|
13
|
+
Under the directory you want to create your project, run:
|
14
|
+
|
15
|
+
```
|
16
|
+
$ franky
|
17
|
+
```
|
18
|
+
which prompts a message to let you specify a directory name.
|
19
|
+
|
20
|
+
Or simply run:
|
21
|
+
|
22
|
+
```
|
23
|
+
$ franky new my_project
|
24
|
+
```
|
25
|
+
|
26
|
+
Replace "my_project" with your project name.
|
27
|
+
|
28
|
+
## Configuration 設定
|
29
|
+
|
30
|
+
There are two templates: default template & minimal template. They can be specified in commands.
|
31
|
+
|
32
|
+
Add `-m` at the end if you want to create a minimal template. For example,
|
33
|
+
|
34
|
+
```
|
35
|
+
$ franky -m
|
36
|
+
```
|
37
|
+
or
|
38
|
+
|
39
|
+
```
|
40
|
+
$ franky new my_project -m
|
41
|
+
```
|
42
|
+
|
43
|
+
If nothing is specified, the template is set to default.
|
44
|
+
|
45
|
+
## Templates 版型說明
|
46
|
+
|
47
|
+
### Default Template
|
48
|
+
|
49
|
+
This template includes 3 parts:
|
50
|
+
|
51
|
+
<p style="color: blue">1. Rack configuration</p>
|
52
|
+
|
53
|
+
- Gemfile
|
54
|
+
- config.ru
|
55
|
+
|
56
|
+
<p style="color: blue">2. The app</p>
|
57
|
+
|
58
|
+
- app/app.rb
|
59
|
+
- app/views/layout.html.erb
|
60
|
+
- app/views/index.html.erb
|
61
|
+
|
62
|
+
<p style="color: blue">3. Assets</p>
|
63
|
+
|
64
|
+
- public/js/app.js
|
65
|
+
- public/css/style.css
|
66
|
+
|
67
|
+
### Minimal Template
|
68
|
+
|
69
|
+
It contains only 3 files:
|
70
|
+
- Gemfile
|
71
|
+
- app.rb
|
72
|
+
- config.ru
|
73
|
+
|
74
|
+
This is the minimal requirement for deployment. Check the following part if you want to deploy to Heroku.
|
75
|
+
|
76
|
+
## Initialization 開始
|
77
|
+
|
78
|
+
After generation, enter the project, run `$ bundle` and you are all set. Use `$ rackup` or `$ shotgun` to run local server as usual. You should see "hello world" if everything works fine.
|
79
|
+
|
80
|
+
## Deployment 佈署
|
81
|
+
|
82
|
+
For the simplest deployment, check [Heroku](https://devcenter.heroku.com/articles/rack#sinatra) for more information.
|
83
|
+
|
84
|
+
## Reference 參考資料
|
85
|
+
|
86
|
+
For a more powerful template generator, check [hazel](https://github.com/c7/hazel), which contains configuration on test, db, ruby version, git, and more.
|
87
|
+
|
88
|
+
## Feedback 回饋
|
89
|
+
|
90
|
+
Send to nkj20932@hotmail.com for any feedback. Create an issue if you find any problem. Thanks!
|
data/Rakefile
ADDED
data/bin/franky
ADDED
data/lib/files/Gemfile
ADDED
data/lib/files/app.rb
ADDED
data/lib/files/config.ru
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
<p>Hello World</p>
|
data/lib/franky.rb
ADDED
data/lib/franky/base.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'franky/file_handler'
|
2
|
+
require 'thor'
|
3
|
+
require 'colorize'
|
4
|
+
|
5
|
+
module Franky
|
6
|
+
class Base < Thor
|
7
|
+
|
8
|
+
default_task :new
|
9
|
+
desc "new [dir_name] [options]", "creates a project with minimal setup"
|
10
|
+
option :minimal, type: :boolean, default: false, aliases: "-m"
|
11
|
+
def new dir_name=nil
|
12
|
+
unless dir_name_given?(dir_name)
|
13
|
+
dir_name = specify_dir
|
14
|
+
end
|
15
|
+
|
16
|
+
dir_name = dir_name.gsub("\n", "")
|
17
|
+
return unless dir_valid?(dir_name)
|
18
|
+
|
19
|
+
if options[:minimal]
|
20
|
+
FileHandler.new.minimal_template(dir_name)
|
21
|
+
else
|
22
|
+
FileHandler.new.default_template(dir_name)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# 將--version和-v指令轉入__print_version
|
27
|
+
# prefix底線是為了避免變成一般的thor command
|
28
|
+
map %w[--version -v] => :__print_version
|
29
|
+
desc "--version, -v", "show version"
|
30
|
+
def __print_version
|
31
|
+
puts Franky::VERSION
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def dir_name_given?(dir_name)
|
37
|
+
dir_name == nil ? false : true
|
38
|
+
end
|
39
|
+
|
40
|
+
def specify_dir
|
41
|
+
print "specify a directroy name: "
|
42
|
+
# 只要command有帶參數,Ruby預設gets會去抓第一個變數當做檔案名稱,所以要指明$stdin.gets當做user input
|
43
|
+
dir_name = $stdin.gets
|
44
|
+
dir_name
|
45
|
+
end
|
46
|
+
|
47
|
+
def dir_valid?(dir_name)
|
48
|
+
if dir_name == ""
|
49
|
+
puts "No directory name is given"
|
50
|
+
return false
|
51
|
+
end
|
52
|
+
|
53
|
+
if Dir.exist? dir_name
|
54
|
+
puts "'#{dir_name}' already exists. Please rename.".red
|
55
|
+
return false
|
56
|
+
end
|
57
|
+
|
58
|
+
true
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
class FileHandler
|
2
|
+
|
3
|
+
# def self.read file_name
|
4
|
+
# File.read(File.expand_path("../../files/#{file_name}", __FILE__))
|
5
|
+
# end
|
6
|
+
|
7
|
+
# def self.create dir, file, content
|
8
|
+
# File.open("#{dir}/#{file}", 'w+') {|f| f.write(content)}
|
9
|
+
# end
|
10
|
+
|
11
|
+
def self.copy file_name, dir_name, new_file_name
|
12
|
+
FileUtils.cp File.expand_path("../../files/#{file_name}", __FILE__), "#{dir_name}/#{new_file_name}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def minimal_template dir_name
|
16
|
+
puts "Creating minimal Sinatra project '#{dir_name}'..."
|
17
|
+
|
18
|
+
Dir.mkdir dir_name
|
19
|
+
puts "Created ".green + "#{dir_name}/"
|
20
|
+
|
21
|
+
FileHandler.copy "config.ru", dir_name, "config.ru"
|
22
|
+
puts "Created ".green + "#{dir_name}/config.ru"
|
23
|
+
|
24
|
+
FileHandler.copy "Gemfile", dir_name, "Gemfile"
|
25
|
+
puts "Created ".green + "#{dir_name}/Gemfile"
|
26
|
+
|
27
|
+
FileHandler.copy "app.min.rb", dir_name, "app.rb"
|
28
|
+
puts "Created ".green + "#{dir_name}/app.rb"
|
29
|
+
|
30
|
+
puts "Done!".green
|
31
|
+
end
|
32
|
+
|
33
|
+
def default_template dir_name
|
34
|
+
puts "Creating default Sinatra project '#{dir_name}'..."
|
35
|
+
|
36
|
+
Dir.mkdir dir_name
|
37
|
+
puts "Created ".green + "#{dir_name}/"
|
38
|
+
|
39
|
+
FileHandler.copy "config.ru", dir_name, "config.ru"
|
40
|
+
puts "Created ".green + "#{dir_name}/config.ru"
|
41
|
+
|
42
|
+
FileHandler.copy "Gemfile", dir_name, "Gemfile"
|
43
|
+
puts "Created ".green + "#{dir_name}/Gemfile"
|
44
|
+
|
45
|
+
File.open("#{dir_name}/README.md", 'w+') {|f| f.write("\nPowered by [Franky](https://github.com/nkj20932/franky)")}
|
46
|
+
puts "Created ".green + "#{dir_name}/README.md"
|
47
|
+
|
48
|
+
Dir.mkdir "#{dir_name}/app"
|
49
|
+
puts "Created ".green + "#{dir_name}/app/"
|
50
|
+
|
51
|
+
FileHandler.copy "app.rb", "#{dir_name}/app", "app.rb"
|
52
|
+
puts "Created ".green + "#{dir_name}/app.rb"
|
53
|
+
|
54
|
+
Dir.mkdir "#{dir_name}/app/views"
|
55
|
+
puts "Created ".green + "#{dir_name}/app/views/"
|
56
|
+
|
57
|
+
FileHandler.copy "layout.html.erb", "#{dir_name}/app/views", "layout.html.erb"
|
58
|
+
puts "Created ".green + "#{dir_name}/app/views/layout.html.erb"
|
59
|
+
|
60
|
+
FileHandler.copy "index.html.erb", "#{dir_name}/app/views", "index.html.erb"
|
61
|
+
puts "Created ".green + "#{dir_name}/app/views/index.html.erb"
|
62
|
+
|
63
|
+
Dir.mkdir "#{dir_name}/public"
|
64
|
+
puts "Created ".green + "#{dir_name}/public/"
|
65
|
+
|
66
|
+
Dir.mkdir "#{dir_name}/public/js"
|
67
|
+
puts "Created ".green + "#{dir_name}/public/js"
|
68
|
+
|
69
|
+
File.open("#{dir_name}/public/js/app.js", 'w+')
|
70
|
+
puts "Created ".green + "#{dir_name}/public/js/app.js"
|
71
|
+
|
72
|
+
Dir.mkdir "#{dir_name}/public/css"
|
73
|
+
puts "Created ".green + "#{dir_name}/public/css"
|
74
|
+
|
75
|
+
File.open("#{dir_name}/public/css/style.css", 'w+')
|
76
|
+
puts "Created ".green + "#{dir_name}/public/js/style.css"
|
77
|
+
|
78
|
+
puts "Done!".green
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: franky
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Adler Hsieh
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-01-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: thor
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.19'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.19'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: colorize
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Generates a Sinatra project containing only necessary files
|
70
|
+
email:
|
71
|
+
- nkj20932@hotmail.com
|
72
|
+
executables:
|
73
|
+
- franky
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- Gemfile
|
78
|
+
- README.md
|
79
|
+
- Rakefile
|
80
|
+
- bin/franky
|
81
|
+
- lib/files/Gemfile
|
82
|
+
- lib/files/app.min.rb
|
83
|
+
- lib/files/app.rb
|
84
|
+
- lib/files/config.ru
|
85
|
+
- lib/files/index.html.erb
|
86
|
+
- lib/files/layout.html.erb
|
87
|
+
- lib/franky.rb
|
88
|
+
- lib/franky/base.rb
|
89
|
+
- lib/franky/file_handler.rb
|
90
|
+
- lib/franky/version.rb
|
91
|
+
homepage: https://github.com/nkj20932/franky
|
92
|
+
licenses:
|
93
|
+
- MIT
|
94
|
+
metadata: {}
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
require_paths:
|
98
|
+
- lib
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
requirements: []
|
110
|
+
rubyforge_project:
|
111
|
+
rubygems_version: 2.2.2
|
112
|
+
signing_key:
|
113
|
+
specification_version: 4
|
114
|
+
summary: Generates a minimal Sinatra project
|
115
|
+
test_files: []
|