flg 0.1.0 → 0.2.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 +4 -4
- data/README.md +29 -63
- data/bin/flg +42 -2
- data/demo.js +13 -0
- data/generators/assets/a.text +0 -0
- data/generators/{flg → flg.rb} +3 -3
- data/lib/flg.rb +3 -2
- data/lib/flg/shell.rb +58 -3
- data/lib/flg/template.rb +6 -33
- data/lib/flg/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eef4be82e88bd546068afc336e09d92eaa08b375
|
4
|
+
data.tar.gz: a2799ada8fe16609bc16b34797c175c36525484d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0d22edd2c4c63c6e183fc9d3ea9750e8bc5c8053293799e5d039fd1454f968c0906ad06dbc6d547a2dc843ed7921700f5d82b49a8ab8936313bb7248359d232
|
7
|
+
data.tar.gz: bf5137399932681b80f6e49308c1c907bd3a07d811c9fe232cb6639e4623da2d0ea7aca6df27645004e182dd3bb85d2ed45a001d12a443cf3326e0e2935fef42
|
data/README.md
CHANGED
@@ -1,14 +1,37 @@
|
|
1
1
|
# Flg
|
2
2
|
|
3
|
-
|
3
|
+
本工具是一个团队效率工具,快速构建非rails项目的脚手架,兼容其他语言。
|
4
4
|
|
5
|
-
##
|
6
|
-
http://ruby-doc.org/stdlib-2.4.1/libdoc/fileutils/rdoc/FileUtils.html
|
5
|
+
## 安装
|
7
6
|
|
7
|
+
1. 安装 Ruby 版本要求2.0以上
|
8
|
+
2. gem install flg
|
8
9
|
|
9
|
-
|
10
|
+
如果安装很慢的话,请使用国内[ruby源](https://gems.ruby-china.org/)
|
11
|
+
|
12
|
+
## 使用
|
13
|
+
|
14
|
+
你可以使用 flg start 来新建一个项目,或者 flg start url 来同步已经有的模板库
|
15
|
+
|
16
|
+
1. 在你的项目里新建 generators 文件夹
|
17
|
+
2. 在 generators 里面创建 flg 目录
|
18
|
+
3. 上面的 generators 是一个例子
|
19
|
+
|
20
|
+
## API 备忘
|
21
|
+
|
22
|
+
### commod
|
23
|
+
|
24
|
+
[link](http://naildrivin5.com/gli/)
|
25
|
+
|
26
|
+
### TTY
|
27
|
+
[link]()
|
28
|
+
|
29
|
+
### File API
|
30
|
+
|
31
|
+
[link](https://github.com/piotrmurach/tty-file)
|
32
|
+
|
33
|
+
### Data handle
|
10
34
|
|
11
|
-
support active_support
|
12
35
|
|
13
36
|
```ruby
|
14
37
|
'active_record'.camelize # => "ActiveRecord"
|
@@ -28,33 +51,10 @@ support active_support
|
|
28
51
|
```
|
29
52
|
|
30
53
|
```ruby
|
31
|
-
ActiveModel'.underscore # => "active_model"
|
54
|
+
'ActiveModel'.underscore # => "active_model"
|
32
55
|
'ActiveModel::Errors'.underscore # => "active_model/errors"
|
33
56
|
```
|
34
57
|
|
35
|
-
```ruby
|
36
|
-
"13-12-2012".to_time # => 2012-12-13 00:00:00 +0100
|
37
|
-
"06:12".to_time # => 2012-12-13 06:12:00 +0100
|
38
|
-
"2012-12-13 06:12".to_time # => 2012-12-13 06:12:00 +0100
|
39
|
-
"2012-12-13T06:12".to_time # => 2012-12-13 06:12:00 +0100
|
40
|
-
"2012-12-13T06:12".to_time(:utc) # => 2012-12-13 06:12:00 UTC
|
41
|
-
"12/13/2012".to_time # => ArgumentError: argument out of range
|
42
|
-
```
|
43
|
-
|
44
|
-
```ruby
|
45
|
-
"1-1-2012".to_datetime # => Sun, 01 Jan 2012 00:00:00 +0000
|
46
|
-
"01/01/2012 23:59:59".to_datetime # => Sun, 01 Jan 2012 23:59:59 +0000
|
47
|
-
"2012-12-13 12:50".to_datetime # => Thu, 13 Dec 2012 12:50:00 +0000
|
48
|
-
"12/13/2012".to_datetime # => ArgumentError: invalid date
|
49
|
-
```
|
50
|
-
|
51
|
-
```ruby
|
52
|
-
"1-1-2012".to_date # => Sun, 01 Jan 2012
|
53
|
-
"01/01/2012".to_date # => Sun, 01 Jan 2012
|
54
|
-
"2012-12-13".to_date # => Thu, 13 Dec 2012
|
55
|
-
"12/13/2012".to_date # => ArgumentError: invalid date
|
56
|
-
```
|
57
|
-
|
58
58
|
```ruby
|
59
59
|
'RawScaledScorer'.tableize # => "raw_scaled_scorers"
|
60
60
|
'ham_and_egg'.tableize # => "ham_and_eggs"
|
@@ -83,37 +83,3 @@ ActiveModel'.underscore # => "active_model"
|
|
83
83
|
'ley'.pluralize(:es) # => "leyes"
|
84
84
|
'ley'.pluralize(1, :es) # => "ley"
|
85
85
|
```
|
86
|
-
|
87
|
-
```ruby
|
88
|
-
|
89
|
-
```
|
90
|
-
## Installation
|
91
|
-
|
92
|
-
Add this line to your application's Gemfile:
|
93
|
-
|
94
|
-
```ruby
|
95
|
-
gem 'flg'
|
96
|
-
```
|
97
|
-
|
98
|
-
And then execute:
|
99
|
-
|
100
|
-
$ bundle
|
101
|
-
|
102
|
-
Or install it yourself as:
|
103
|
-
|
104
|
-
$ gem install flg
|
105
|
-
|
106
|
-
## Usage
|
107
|
-
|
108
|
-
TODO: Write usage instructions here
|
109
|
-
|
110
|
-
## Development
|
111
|
-
|
112
|
-
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
113
|
-
|
114
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
115
|
-
|
116
|
-
## Contributing
|
117
|
-
|
118
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/mj/flg.
|
119
|
-
|
data/bin/flg
CHANGED
@@ -8,7 +8,47 @@ include GLI::App
|
|
8
8
|
include Flg::Shell
|
9
9
|
include Flg::Template
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
begin
|
12
|
+
_source = open('./generators/flg.rb').read
|
13
|
+
eval(_source)
|
14
|
+
rescue Errno::ENOENT => e
|
15
|
+
nil
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
demo_str = """
|
20
|
+
program_desc '命令行描述'
|
21
|
+
|
22
|
+
desc '简短说明'
|
23
|
+
long_desc '长说明'
|
24
|
+
command :add do |c|
|
25
|
+
c.action do |global, options, args|
|
26
|
+
say 'hello word'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
"""
|
30
|
+
|
31
|
+
desc 'start project'
|
32
|
+
long_desc """
|
33
|
+
flg start
|
34
|
+
flg start git@github.com:oxoooo/demo.git
|
35
|
+
"""
|
36
|
+
command :start do |c|
|
37
|
+
c.action do |global, options, args|
|
38
|
+
if args.first.blank?
|
39
|
+
tree = {
|
40
|
+
'generators' => [
|
41
|
+
['flg', demo_str],
|
42
|
+
'templates' => [],
|
43
|
+
'assets' => []
|
44
|
+
]
|
45
|
+
}
|
46
|
+
TTY::File.create_dir(tree)
|
47
|
+
else
|
48
|
+
shell "git clone #{args.first} generators"
|
49
|
+
remove_file "./generators/.git"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
13
53
|
|
14
54
|
exit run(ARGV)
|
data/demo.js
ADDED
File without changes
|
data/generators/{flg → flg.rb}
RENAMED
@@ -4,7 +4,7 @@ desc '简短说明'
|
|
4
4
|
long_desc '长说明'
|
5
5
|
command :add do |c|
|
6
6
|
c.action do |global, options, args|
|
7
|
-
|
7
|
+
say 'active_record'.camelize
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
@@ -16,13 +16,13 @@ end
|
|
16
16
|
|
17
17
|
command :mkdir do |c|
|
18
18
|
c.action do |global, options, args|
|
19
|
-
|
19
|
+
copy_file "a.text", "./app.txt"
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
command :t do |c|
|
24
24
|
c.action do |global, options, args|
|
25
|
-
|
25
|
+
template name: 'demo.js.erb',
|
26
26
|
data: {
|
27
27
|
class_name: args.first.camelize
|
28
28
|
},
|
data/lib/flg.rb
CHANGED
data/lib/flg/shell.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
require 'fileutils'
|
3
|
-
|
3
|
+
require 'irb'
|
4
4
|
|
5
5
|
module Flg
|
6
6
|
module Shell
|
7
|
-
def shell(str)
|
7
|
+
def shell(str, &black)
|
8
8
|
cmd = TTY::Command.new
|
9
|
-
cmd.run str
|
9
|
+
cmd.run str, &black
|
10
10
|
end
|
11
11
|
|
12
12
|
def file(path)
|
@@ -14,5 +14,60 @@ module Flg
|
|
14
14
|
FileUtils.mkdir_p pathname.dirname.to_s
|
15
15
|
File.open(path, 'w+')
|
16
16
|
end
|
17
|
+
|
18
|
+
def say(str)
|
19
|
+
prompt = TTY::Prompt.new
|
20
|
+
prompt.say str
|
21
|
+
end
|
22
|
+
|
23
|
+
def ok(str)
|
24
|
+
prompt = TTY::Prompt.new
|
25
|
+
prompt.ok str
|
26
|
+
end
|
27
|
+
|
28
|
+
def warn(str)
|
29
|
+
prompt = TTY::Prompt.new
|
30
|
+
prompt.warn str
|
31
|
+
end
|
32
|
+
|
33
|
+
def error(str)
|
34
|
+
prompt = TTY::Prompt.new
|
35
|
+
prompt.warn str
|
36
|
+
end
|
37
|
+
|
38
|
+
def copy_file(name, path)
|
39
|
+
pathname = "./generators/assets/#{name}"
|
40
|
+
TTY::File.copy_file pathname, path
|
41
|
+
end
|
42
|
+
|
43
|
+
def copy_dir(name, path)
|
44
|
+
pathname = "./generators/assets/#{name}"
|
45
|
+
TTY::File.copy_directory pathname, path
|
46
|
+
end
|
47
|
+
|
48
|
+
def create_file(path, str)
|
49
|
+
TTY::File.create_file path, str
|
50
|
+
end
|
51
|
+
|
52
|
+
def create_dir(path)
|
53
|
+
TTY::File.create_dir path
|
54
|
+
end
|
55
|
+
|
56
|
+
def download_file(url, path)
|
57
|
+
TTY::File.download_file url, path
|
58
|
+
end
|
59
|
+
|
60
|
+
def append_to_file(name, str)
|
61
|
+
TTY::File.append_to_file name, str
|
62
|
+
end
|
63
|
+
|
64
|
+
def prepend_to_file(name, str)
|
65
|
+
TTY::File.prepend_to_file name, str
|
66
|
+
end
|
67
|
+
|
68
|
+
def remove_file(path)
|
69
|
+
TTY::File.remove_file path
|
70
|
+
end
|
71
|
+
|
17
72
|
end
|
18
73
|
end
|
data/lib/flg/template.rb
CHANGED
@@ -5,39 +5,12 @@ require 'pathname'
|
|
5
5
|
|
6
6
|
module Flg
|
7
7
|
module Template
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
ERB.new(template).result(binding)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def render(name: nil, data: nil, path: nil)
|
19
|
-
template = File.read("./generators/templates/#{name}")
|
20
|
-
str = ErbalT::render_from_hash(template, data)
|
21
|
-
if File.exist?(path)
|
22
|
-
prompt = TTY::Prompt.new
|
23
|
-
if prompt.no?("#{path} replace?")
|
24
|
-
puts 'ignore: ' + path
|
25
|
-
save_file(path, str)
|
26
|
-
else
|
27
|
-
return
|
28
|
-
end
|
29
|
-
else
|
30
|
-
save_file(path, str)
|
31
|
-
puts 'created: ' + path
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def save_file(path, str)
|
36
|
-
pathname = Pathname.new path
|
37
|
-
FileUtils.mkdir_p pathname.dirname.to_s
|
38
|
-
File.open(path, 'w+') do |f|
|
39
|
-
f.puts str
|
40
|
-
end
|
8
|
+
def template(name: nil, data: nil, path: nil)
|
9
|
+
TTY::File.copy_file(
|
10
|
+
"./generators/templates/#{name}",
|
11
|
+
path,
|
12
|
+
context: OpenStruct.new(data)
|
13
|
+
)
|
41
14
|
end
|
42
15
|
end
|
43
16
|
end
|
data/lib/flg/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mj
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -95,8 +95,10 @@ files:
|
|
95
95
|
- bin/console
|
96
96
|
- bin/flg
|
97
97
|
- bin/setup
|
98
|
+
- demo.js
|
98
99
|
- flg.gemspec
|
99
|
-
- generators/
|
100
|
+
- generators/assets/a.text
|
101
|
+
- generators/flg.rb
|
100
102
|
- generators/templates/demo.js.erb
|
101
103
|
- lib/flg.rb
|
102
104
|
- lib/flg/shell.rb
|