cutagem 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,4 +1,4 @@
1
- == 0.0.1 / 2007-10-07
1
+ 2007-10-07 SATOH Hiroh <cho45@lowreal.net>
2
2
 
3
- * initial release
3
+ * 0.0.1 release
4
4
 
data/ChangeLog ADDED
@@ -0,0 +1,4 @@
1
+ 2007-10-07 SATOH Hiroh <cho45@lowreal.net>
2
+
3
+ * 0.0.1 release
4
+
data/README CHANGED
@@ -59,11 +59,30 @@ Select templates interactively. (<code>-s</code>, <code>--select</code> option)
59
59
  cp -r /Users/cho45/.cutagem/templates/default /Users/cho45/tmp/module-test
60
60
  Done
61
61
 
62
+ Edit user configuration.
63
+
64
+ $ cutagem -c
65
+ [Open ~/.cutagem/config.yaml with $EDITOR]
66
+
67
+ Other options:
68
+
69
+ Usage: cutagem [options] gemname
70
+
71
+ Options:
72
+ -s, --select Select template interactively.
73
+ -d, --desc Describe this gem.
74
+ -c, --config Configure user values. Use vim
75
+ --copy-template NAME Copy template to user template dir naming NAME
76
+ --version Show version string `0.0.2'
77
+
78
+
62
79
  == Customization
63
80
 
64
81
  +cutagem+ reads ~/.cutagem/template/* for using it as custom template.
65
82
  Especially "default" template is precedence.
66
83
 
84
+ You can make new template by coping the existing template using '--copy-template NAME' option.
85
+
67
86
  === Priority Example
68
87
 
69
88
  Library installed templates:
@@ -109,11 +128,13 @@ All files process through ERB.
109
128
  classfied gemname.
110
129
  (ex. gemname is <code>hoge-hoge_fuga</code> then, gemclass is <code>Hoge/HogeFuga</code>)
111
130
  [<%=author%>]
112
- ENV["USER"]
131
+ ENV["USER"] or ~/.cutagem/config.yaml#author
113
132
  [<%=email%>]
114
- <code>#{ENV["USER"]}@#{ENV["HOST"]}</code>
133
+ <code>#{ENV["USER"]}@#{ENV["HOST"]}</code> or ~/.cutagem/config.yaml#email
115
134
  [<%=description%>]
116
135
  <code>-d</code>, <code>--desc</code> option's value
136
+ [<%=config["user_config_value"]%>]
137
+ Replace with ~/.cutagem/config.yaml entry.
117
138
 
118
139
  Of course ERB is Ruby, you can write everything in the bracket.
119
140
 
data/Rakefile CHANGED
@@ -48,7 +48,7 @@ spec = Gem::Specification.new do |s|
48
48
  s.version = VERS
49
49
  s.platform = Gem::Platform::RUBY
50
50
  s.has_rdoc = true
51
- s.extra_rdoc_files = ["README", "CHANGELOG"]
51
+ s.extra_rdoc_files = ["README", "ChangeLog"]
52
52
  s.rdoc_options += RDOC_OPTS + ['--exclude', '^(examples|extras)/']
53
53
  s.summary = DESCRIPTION
54
54
  s.description = DESCRIPTION
data/lib/cutagem.rb CHANGED
@@ -3,9 +3,10 @@ require "optparse"
3
3
  require "pathname"
4
4
  require "fileutils"
5
5
  require "erb"
6
+ require "yaml"
6
7
 
7
8
  class CutAGemCommand
8
- VERSION = "0.0.1"
9
+ VERSION = "0.0.2"
9
10
 
10
11
  include FileUtils
11
12
  def self.run(argv)
@@ -15,6 +16,7 @@ class CutAGemCommand
15
16
  def initialize(argv)
16
17
  @argv = argv
17
18
 
19
+ @config = Pathname.new(ENV["HOME"]) + ".cutagem/config.yaml"
18
20
  @parser = OptionParser.new do |parser|
19
21
  parser.banner = <<-EOB.gsub(/^\t+/, "")
20
22
  Usage: #$0 [options] gemname
@@ -29,6 +31,31 @@ class CutAGemCommand
29
31
  parser.on("-d", "--desc", "Describe this gem.") do |@description|
30
32
  end
31
33
 
34
+ parser.on("-c", "--config", "Configure user values. Use #{ENV["EDITOR"]}") do |c|
35
+ @config.parent.mkpath
36
+ unless @config.exist?
37
+ @config.open("w") do |f|
38
+ f << <<-EOF.gsub(/^\t+/, "")
39
+ author: "#{ENV['USER']}"
40
+ email: "#{ENV['USER']}@#{ENV['HOST']}"
41
+ EOF
42
+ end
43
+ end
44
+ exec(ENV["EDITOR"], @config.to_s)
45
+ end
46
+
47
+ parser.on("--copy-template NAME", "Copy template to user template dir naming NAME") do |name|
48
+ @select = true
49
+ path = Pathname.new(ENV["HOME"]) + ".cutagem/templates" + name
50
+ if path.exist?
51
+ puts "#{path} is already exists."
52
+ exit 1
53
+ end
54
+ template = select_template()
55
+ cp_r template, path, :verbose => true
56
+ exit
57
+ end
58
+
32
59
  parser.on("--version", "Show version string `#{VERSION}'") do
33
60
  puts VERSION
34
61
  exit
@@ -43,31 +70,6 @@ class CutAGemCommand
43
70
  exit
44
71
  end
45
72
 
46
- @templates = Pathname.new(File.dirname(__FILE__)).realpath + '../templates'
47
- @user_templates = Pathname.new(ENV["HOME"]).realpath + '.cutagem/templates'
48
-
49
- templates = []
50
- u_templates = []
51
- if @user_templates.exist?
52
- Pathname.glob(@user_templates + "*").each do |t|
53
- t = [".cutagem/templates/#{t.basename}", t]
54
- if t[1].basename.to_s == "default"
55
- u_templates.unshift(t)
56
- else
57
- u_templates << t
58
- end
59
- end
60
- end
61
- Pathname.glob(@templates + "*").each do |t|
62
- t = ["#{t.basename}", t]
63
- if t[1].basename.to_s == "default"
64
- templates.unshift(t)
65
- else
66
- templates << t
67
- end
68
- end
69
- templates = u_templates + templates
70
-
71
73
  pwd = Pathname.pwd
72
74
 
73
75
  author = ENV['USER']
@@ -80,32 +82,7 @@ class CutAGemCommand
80
82
  }.join("::")
81
83
  description = @description
82
84
 
83
- template = nil
84
- if @select
85
- puts "Select template:"
86
- templates.each_with_index do |item,index|
87
- puts "% 2d. %s" % [index+1, item.first]
88
- end
89
- input = gets.chomp
90
- case input
91
- when ""
92
- template = templates.first
93
- when /^\d+$/
94
- template = templates[input.to_i-1]
95
- else
96
- template = nil
97
- puts "Canceled"
98
- exit
99
- end
100
- else
101
- template = templates.first
102
- end
103
- unless template
104
- puts "Not select template."
105
- exit
106
- end
107
- puts "Using Template: %s" % template
108
- template = template[1]
85
+ template = select_template()
109
86
 
110
87
  gemdir = pwd + gemname
111
88
 
@@ -114,6 +91,13 @@ class CutAGemCommand
114
91
  exit
115
92
  end
116
93
 
94
+ begin
95
+ config = YAML.load(@config.read)
96
+ author = config["author"] if config["author"]
97
+ email = config["email"] if config["email"]
98
+ rescue Errno::ENOENT
99
+ end
100
+
117
101
  begin
118
102
  cp_r template, gemdir, :verbose => true
119
103
  Pathname.glob(gemdir + "**/gemname*") do |f|
@@ -145,4 +129,57 @@ class CutAGemCommand
145
129
  exec(ENV["EDITOR"], gemdir + "Rakefile")
146
130
  end
147
131
  end
132
+
133
+ def select_template
134
+ @templates = Pathname.new(File.dirname(__FILE__)).realpath + '../templates'
135
+ @user_templates = Pathname.new(ENV["HOME"]).realpath + '.cutagem/templates'
136
+
137
+ templates = []
138
+ u_templates = []
139
+ if @user_templates.exist?
140
+ Pathname.glob(@user_templates + "*").each do |t|
141
+ t = [".cutagem/templates/#{t.basename}", t]
142
+ if t[1].basename.to_s == "default"
143
+ u_templates.unshift(t)
144
+ else
145
+ u_templates << t
146
+ end
147
+ end
148
+ end
149
+ Pathname.glob(@templates + "*").each do |t|
150
+ t = ["#{t.basename}", t]
151
+ if t[1].basename.to_s == "default"
152
+ templates.unshift(t)
153
+ else
154
+ templates << t
155
+ end
156
+ end
157
+ templates = u_templates + templates
158
+
159
+ if @select
160
+ puts "Select template:"
161
+ templates.each_with_index do |item,index|
162
+ puts "% 2d. %s" % [index+1, item.first]
163
+ end
164
+ input = gets.chomp
165
+ case input
166
+ when ""
167
+ template = templates.first
168
+ when /^\d+$/
169
+ template = templates[input.to_i-1]
170
+ else
171
+ template = nil
172
+ puts "Canceled"
173
+ exit
174
+ end
175
+ else
176
+ template = templates.first
177
+ end
178
+ unless template
179
+ puts "Not select template."
180
+ exit
181
+ end
182
+ puts "Using Template: %s" % template
183
+ template[1]
184
+ end
148
185
  end
File without changes
@@ -44,7 +44,7 @@ spec = Gem::Specification.new do |s|
44
44
  s.version = VERS
45
45
  s.platform = Gem::Platform::RUBY
46
46
  s.has_rdoc = true
47
- s.extra_rdoc_files = ["README", "CHANGELOG"]
47
+ s.extra_rdoc_files = ["README", "ChangeLog"]
48
48
  s.rdoc_options += RDOC_OPTS + ['--exclude', '^(examples|extras)/']
49
49
  s.summary = DESCRIPTION
50
50
  s.description = DESCRIPTION
File without changes
@@ -44,7 +44,7 @@ spec = Gem::Specification.new do |s|
44
44
  s.version = VERS
45
45
  s.platform = Gem::Platform::RUBY
46
46
  s.has_rdoc = true
47
- s.extra_rdoc_files = ["README", "CHANGELOG"]
47
+ s.extra_rdoc_files = ["README", "ChangeLog"]
48
48
  s.rdoc_options += RDOC_OPTS + ['--exclude', '^(examples|extras)/']
49
49
  s.summary = DESCRIPTION
50
50
  s.description = DESCRIPTION
data/test/cutagem_test.rb CHANGED
@@ -2,94 +2,7 @@ require File.dirname(__FILE__) + '/test_helper.rb'
2
2
 
3
3
  require "test/unit"
4
4
  class SafeEvalTest < Test::Unit::TestCase
5
-
6
- def setup
7
- @t = SafeEval.new.taint
8
- end
9
-
10
- def test_interface
11
- assert_nothing_raised do
12
- @t.safe_eval(":foo")
13
- end
14
-
15
- assert_nothing_raised do
16
- @t.eval(":foo")
17
- end
18
-
19
- assert_nothing_raised do
20
- SafeEval.eval(":foo")
21
- end
22
- end
23
-
24
- def test_safe
25
- assert_raise(SecurityError) do
26
- @t.safe_eval("puts ''")
27
- end
28
-
29
- assert_raise(SecurityError) do
30
- @t.safe_eval("$foo = :foo")
31
- end
32
- end
33
-
34
- def test_thread
35
- a = Thread.list.size
36
- ret = @t.safe_eval <<-EOC
37
- Thread.start {
38
- sleep
39
- }
40
- EOC
41
- assert_equal(a, Thread.list.size)
42
-
43
- a = Thread.list.size
44
- ret = @t.safe_eval <<-EOC
45
- 100.times do
46
- Thread.start {
47
- sleep
48
- }
49
- end
50
- EOC
51
- assert_equal(a, Thread.list.size)
5
+ def test_t
6
+ assert true
52
7
  end
53
-
54
- def test_timeout
55
- assert_raise(Timeout::Error) do
56
- @t.safe_eval("sleep", 0.1)
57
- end
58
-
59
- assert_nothing_raised(Timeout::Error) do
60
- @t.safe_eval("nil", 0.1)
61
- end
62
-
63
- end
64
-
65
- def test_define_method
66
- # failed on ruby1.9 (2007-09-24)
67
- assert_nothing_raised(SecurityError) do
68
- @t.safe_eval("def hoge; end")
69
- end
70
-
71
- @t.safe_eval <<-EOS
72
- def safe_eval(code)
73
- "Nice boat."
74
- end
75
- EOS
76
- assert_not_equal("Nice boat", @t.safe_eval("nil"))
77
- end
78
-
79
- def test_safe_access
80
- assert_raise(NoMethodError) do
81
- @t.safe_eval("@foo << :bar")
82
- end
83
- assert_equal(nil, @t.instance_variable_get(:@foo))
84
-
85
- assert_raise(NameError) do
86
- @t.safe_eval("@@foo")
87
- end
88
-
89
- assert_raise(SecurityError) do
90
- @t.safe_eval("@@foo = :foo")
91
- end
92
-
93
- end
94
-
95
8
  end
data/test/test_helper.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  require 'test/unit'
2
- require File.dirname(__FILE__) + '/../lib/safe_eval'
2
+ require File.dirname(__FILE__) + '/../lib/cutagem.rb'
3
3
 
metadata CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: cutagem
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.1
6
+ version: 0.0.2
7
7
  date: 2007-10-07 00:00:00 +09:00
8
8
  summary: More safe eval codes.
9
9
  require_paths:
@@ -40,7 +40,7 @@ files:
40
40
  - templates/command
41
41
  - templates/default
42
42
  - templates/command/bin
43
- - templates/command/CHANGELOG
43
+ - templates/command/ChangeLog
44
44
  - templates/command/lib
45
45
  - templates/command/Rakefile
46
46
  - templates/command/README
@@ -49,7 +49,7 @@ files:
49
49
  - templates/command/test/gemname_test.rb
50
50
  - templates/command/test/test_helper.rb
51
51
  - templates/default/bin
52
- - templates/default/CHANGELOG
52
+ - templates/default/ChangeLog
53
53
  - templates/default/lib
54
54
  - templates/default/Rakefile
55
55
  - templates/default/README
@@ -57,6 +57,7 @@ files:
57
57
  - templates/default/lib/gempath.rb
58
58
  - templates/default/test/gemname_test.rb
59
59
  - templates/default/test/test_helper.rb
60
+ - ChangeLog
60
61
  test_files:
61
62
  - test/test_helper.rb
62
63
  rdoc_options:
@@ -74,7 +75,7 @@ rdoc_options:
74
75
  - "^(examples|extras)/"
75
76
  extra_rdoc_files:
76
77
  - README
77
- - CHANGELOG
78
+ - ChangeLog
78
79
  executables:
79
80
  - cutagem
80
81
  extensions: []