prigner 0.1.0 → 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.
- data/CHANGELOG +123 -200
- data/{README.mkd → README.rdoc} +36 -42
- data/Rakefile +140 -112
- data/lib/prigner/cli/copy.rb +39 -0
- data/lib/prigner/cli/new.rb +10 -8
- data/lib/prigner/extensions.rb +17 -2
- data/lib/prigner/template.rb +2 -24
- data/lib/prigner.rb +46 -10
- data/prigner.gemspec +27 -30
- data/test/fixtures/templates/shared/templates/ruby/sinatra/models/README.mkd +2 -0
- data/test/fixtures/templates/shared/templates/ruby/sinatra/models/Rakefile +7 -0
- data/test/fixtures/templates/shared/templates/ruby/sinatra/models/empty_test.rb +21 -0
- data/test/fixtures/templates/shared/templates/ruby/sinatra/models/module.rb +6 -0
- data/test/fixtures/templates/shared/templates/ruby/sinatra/specfile +18 -0
- data/test/fixtures/templates/user/.prigner/sources +1 -0
- data/test/helpers.rb +36 -1
- data/test/spec_test.rb +1 -1
- data/test/template_test.rb +7 -9
- metadata +30 -32
- /data/test/fixtures/templates/shared/{ruby → templates/ruby}/default/README.mkd +0 -0
- /data/test/fixtures/templates/shared/{ruby → templates/ruby}/default/models/README.mkd +0 -0
- /data/test/fixtures/templates/shared/{ruby → templates/ruby}/default/models/Rakefile +0 -0
- /data/test/fixtures/templates/shared/{ruby → templates/ruby}/default/models/empty_test.rb +0 -0
- /data/test/fixtures/templates/shared/{ruby → templates/ruby}/default/models/module.rb +0 -0
- /data/test/fixtures/templates/shared/{ruby → templates/ruby}/default/specfile +0 -0
- /data/test/fixtures/templates/user/{bash → .prigner/templates/bash}/default/specfile +0 -0
- /data/test/fixtures/templates/user/{ruby → .prigner/templates/ruby}/program/models/README.erb +0 -0
- /data/test/fixtures/templates/user/{ruby → .prigner/templates/ruby}/program/models/cli.rb.erb +0 -0
- /data/test/fixtures/templates/user/{ruby → .prigner/templates/ruby}/program/models/module.rb.erb +0 -0
- /data/test/fixtures/templates/user/{ruby → .prigner/templates/ruby}/program/models/program.rb.erb +0 -0
- /data/test/fixtures/templates/user/{ruby → .prigner/templates/ruby}/program/specfile +0 -0
- /data/test/fixtures/templates/user/{vim → .prigner/templates/vim}/default/specfile +0 -0
- /data/test/fixtures/templates/user/{vim → .prigner/templates/vim}/plugin/specfile +0 -0
- /data/test/fixtures/templates/user/{vim → .prigner/templates/vim}/syntax/specfile +0 -0
data/Rakefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "rake/clean"
|
2
2
|
require "lib/prigner"
|
3
3
|
|
4
|
-
#
|
4
|
+
# Configurations
|
5
5
|
# =============================================================================
|
6
6
|
|
7
7
|
def rdoc(*args)
|
@@ -24,120 +24,125 @@ def test(pattern)
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
def git(cmd, *args)
|
28
|
+
`git #{cmd.to_s.gsub('_','-')} #{args.join(' ')}`
|
29
|
+
end
|
30
|
+
|
27
31
|
def manifest
|
28
|
-
@manifest ||=
|
32
|
+
@manifest ||= git(:ls_files).split("\n").sort.reject do |out|
|
29
33
|
out =~ /^\./ || out =~ /^doc/
|
30
34
|
end.map do |file|
|
31
35
|
" #{file.inspect}"
|
32
36
|
end.join(",\n")
|
33
37
|
end
|
34
38
|
|
39
|
+
def version
|
40
|
+
@version ||= Prigner.version
|
41
|
+
end
|
42
|
+
|
43
|
+
def tag
|
44
|
+
git(:tag).split("\n").last
|
45
|
+
end
|
46
|
+
|
47
|
+
def release_notes
|
48
|
+
@release_notes ||= Pathname.new("v#{spec.version}.rdoc")
|
49
|
+
end
|
50
|
+
|
35
51
|
def log
|
36
|
-
|
52
|
+
yaml = git :log,
|
53
|
+
"--date=short",
|
54
|
+
"--format='- head: %d%n date: %cd%n summary: %s%n notes: \"%n%b\"%n'"
|
55
|
+
YAML.load(yaml)
|
37
56
|
end
|
38
57
|
|
39
|
-
def
|
40
|
-
@
|
58
|
+
def specfile
|
59
|
+
@specfile ||= Pathname.new("prigner.gemspec")
|
60
|
+
end
|
61
|
+
|
62
|
+
def spec
|
63
|
+
@spec ||= eval(specfile.read)
|
41
64
|
end
|
42
65
|
|
43
|
-
def
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
66
|
+
def package_path
|
67
|
+
specfile.dirname.join("pkg").join("#{File.basename(spec.file_name, '.*')}")
|
68
|
+
end
|
69
|
+
|
70
|
+
def package(ext = "")
|
71
|
+
specfile.dirname.join("#{package_path}#{ext}")
|
48
72
|
end
|
49
73
|
|
50
74
|
# Documentation
|
51
75
|
# =============================================================================
|
52
76
|
|
53
|
-
|
77
|
+
CLOBBER << FileList["doc/*"]
|
78
|
+
|
79
|
+
file "doc/api/index.html" => FileList["lib/**/*.rb", "README.rdoc", "CHANGELOG"] do |filespec|
|
80
|
+
rm_rf "doc"
|
81
|
+
rdoc "--op", "doc/api",
|
82
|
+
"--charset", "utf8",
|
83
|
+
"--main", "'Prigner'",
|
84
|
+
"--title", "'Prigner v#{version.tag} API Documentation'",
|
85
|
+
"--inline-source",
|
86
|
+
"--promiscuous",
|
87
|
+
"--line-numbers",
|
88
|
+
filespec.prerequisites.join(" ")
|
89
|
+
end
|
54
90
|
|
55
|
-
|
91
|
+
desc "Build API documentation (doc/api)."
|
92
|
+
task :doc => "doc/api/index.html"
|
56
93
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
"--inline-source",
|
64
|
-
"--promiscuous",
|
65
|
-
"--line-numbers",
|
66
|
-
filespec.prerequisites.join(" ")
|
67
|
-
end
|
68
|
-
|
69
|
-
desc "Build API documentation (doc/api)"
|
70
|
-
task :api => "doc/api/index.html"
|
94
|
+
desc "Build CHANGELOG file."
|
95
|
+
task :changelog do
|
96
|
+
open("CHANGELOG", "w+") do |changelog|
|
97
|
+
title = lambda do |charlevel, text|
|
98
|
+
text << "\n" << charlevel
|
99
|
+
end
|
71
100
|
|
72
|
-
|
73
|
-
task :changelog do |spec|
|
74
|
-
historic = {}
|
75
|
-
text = ""
|
101
|
+
changelog << "= #{Prigner::Version} - Changelog"
|
76
102
|
|
77
|
-
log.
|
78
|
-
|
79
|
-
historic[date] = {
|
80
|
-
:release => "#{date} #{tag.match(/(v\d\..*)/im) ? tag : nil}",
|
81
|
-
:changes => []
|
82
|
-
} unless historic.has_key? date
|
103
|
+
historic = log.group_by { |entry| entry["date"] }
|
83
104
|
|
84
|
-
|
85
|
-
|
86
|
-
end
|
105
|
+
historic.keys.sort.reverse.map do |date|
|
106
|
+
changelog << "\n\n" << "== #{date}" << "\n"
|
87
107
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
end_text
|
108
|
+
for entry in historic[date]
|
109
|
+
notes = entry["notes"]
|
110
|
+
changelog << "\n* #{entry["summary"]}."
|
111
|
+
unless notes.empty?
|
112
|
+
changelog << notes.strip.gsub(/([\*-].*?)/){ "\n #{$1}" }
|
113
|
+
end
|
114
|
+
end
|
96
115
|
end
|
97
116
|
|
98
|
-
|
99
|
-
puts "Historic has #{historic.keys.size} entry dates"
|
100
|
-
puts "Successfully updated CHANGELOG file"
|
117
|
+
puts "Successfully updated the CHANGELOG file with #{historic.keys.size} dates."
|
101
118
|
end
|
102
|
-
|
103
119
|
end
|
104
120
|
|
121
|
+
file "CHANGELOG" => :changelog
|
122
|
+
|
105
123
|
# Versioning
|
106
124
|
# =============================================================================
|
107
125
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
desc "Dump major version"
|
113
|
-
task :major do
|
114
|
-
version.tag = "#{major+=1}.0.0"
|
115
|
-
version.save!
|
116
|
-
puts version.to_hash.to_yaml
|
117
|
-
end
|
118
|
-
|
119
|
-
desc "Dump minor version"
|
120
|
-
task :minor do
|
121
|
-
version.tag = "#{major}.#{minor+=1}.0"
|
122
|
-
version.save!
|
123
|
-
puts version.to_hash.to_yaml
|
124
|
-
end
|
126
|
+
desc "Dump version (current v#{version.tag})."
|
127
|
+
task :version, [:counter,:release] do |spec, args|
|
128
|
+
numbering = version.numbering
|
129
|
+
tagnames = %w[major minor patch]
|
125
130
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
+
if index = tagnames.index(args[:counter])
|
132
|
+
numbering[index] += 1
|
133
|
+
numbering.fill(0, (index + 1)..-1)
|
134
|
+
else
|
135
|
+
numbering[-1] += 1
|
131
136
|
end
|
132
137
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
end
|
138
|
+
numbering[-1] = "#{numbering[-1]}#{args[:release]}"
|
139
|
+
version.tag = numbering.join(".")
|
140
|
+
version.save!
|
141
|
+
puts version.to_hash.to_yaml
|
142
|
+
end
|
139
143
|
|
140
|
-
|
144
|
+
namespace :version do
|
145
|
+
desc "Update version date (current #{version.date})."
|
141
146
|
task :date, [:date] do |spec, args|
|
142
147
|
require "parsedate"
|
143
148
|
require "date"
|
@@ -148,58 +153,81 @@ namespace :version do
|
|
148
153
|
end
|
149
154
|
end
|
150
155
|
|
151
|
-
|
152
|
-
|
153
|
-
# RubyGems
|
156
|
+
# Packaging
|
154
157
|
# =============================================================================
|
155
158
|
|
156
|
-
|
159
|
+
CLOBBER << FileList["#{package_path.dirname}/*"]
|
157
160
|
|
158
|
-
|
159
|
-
|
161
|
+
task :tagged do
|
162
|
+
abort "The version #{version.tag} is not tagged, yet." unless tag[1..-1] == version.tag
|
163
|
+
end
|
160
164
|
|
161
|
-
|
162
|
-
|
165
|
+
file specfile => FileList["{bin,lib,test}/**", "Rakefile"] do
|
166
|
+
spec = specfile.read
|
163
167
|
|
164
|
-
|
165
|
-
|
168
|
+
puts "Updating version ..."
|
169
|
+
spec.sub! /spec\.version\s*=\s*".*?"/, "spec.version = #{version.tag.inspect}"
|
166
170
|
|
167
|
-
|
168
|
-
|
171
|
+
puts "Updating date of version ..."
|
172
|
+
spec.sub! /spec\.date\s*=\s*".*?"/, "spec.date = #{version.date.to_s.inspect}"
|
169
173
|
|
170
|
-
|
174
|
+
puts "Updating file list ..."
|
175
|
+
spec.sub! /spec\.files\s*=\s*\[.*?\]/m, "spec.files = [\n#{manifest}\n ]"
|
171
176
|
|
172
|
-
|
173
|
-
end
|
177
|
+
specfile.open("w+") { |file| file << spec }
|
174
178
|
|
175
|
-
|
176
|
-
|
177
|
-
sh "gem build #{gemspec.file}"
|
178
|
-
end
|
179
|
+
puts "Successfully update #{specfile} file"
|
180
|
+
end
|
179
181
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
182
|
+
directory package_path.to_s
|
183
|
+
|
184
|
+
file package(".gem") => [ specfile, package_path.dirname ] do |file|
|
185
|
+
sh "gem build #{specfile}"
|
186
|
+
mv spec.file_name, file.prerequisites.last
|
187
|
+
end
|
184
188
|
|
185
|
-
|
186
|
-
|
187
|
-
|
189
|
+
file package(".tar.gz") => [ specfile, package_path ] do |file|
|
190
|
+
spec.files.each do |source|
|
191
|
+
package_path.join(source).dirname.mkpath
|
192
|
+
cp source, package_path.join(source)
|
188
193
|
end
|
194
|
+
cd package_path.dirname do
|
195
|
+
sh "tar czvf #{package(".tar.gz").basename} #{package_path.basename}/*"
|
196
|
+
end
|
197
|
+
end
|
189
198
|
|
190
|
-
|
191
|
-
|
192
|
-
|
199
|
+
desc "Build packages."
|
200
|
+
task :package => [package(".gem"), package(".tar.gz")]
|
201
|
+
|
202
|
+
desc "Release gem package to repositories."
|
203
|
+
task :release => [ :tagged, :package ] do
|
204
|
+
sh "gem push #{package('.gem')}"
|
205
|
+
{ :release => ".gem", :file => ".tar.gz" }.each do |file, ext|
|
206
|
+
sh "rubyforge add_#{file}",
|
207
|
+
"#{spec.rubyforge_project}",
|
208
|
+
"#{spec.name} #{spec.version} #{package(ext)}"
|
209
|
+
end
|
210
|
+
if release_notes.exist?
|
211
|
+
sh "rubyforge add_news 'Prigner v#{spec.version} released' '#{release_notes.read}'"
|
193
212
|
end
|
213
|
+
end
|
214
|
+
|
215
|
+
desc "Install gem package #{spec.file_name}."
|
216
|
+
task :install => :package do
|
217
|
+
sh "gem install #{package('.gem')} --local"
|
218
|
+
end
|
194
219
|
|
220
|
+
desc "Uninstall gem package #{spec.file_name}."
|
221
|
+
task :uninstall do
|
222
|
+
sh "gem uninstall #{spec.name} --version #{spec.version}"
|
195
223
|
end
|
196
224
|
|
197
|
-
task :gem => "gem
|
225
|
+
task :gem => package(".gem")
|
198
226
|
|
199
227
|
# Test
|
200
228
|
# =============================================================================
|
201
229
|
|
202
|
-
desc "Run tests"
|
230
|
+
desc "Run tests."
|
203
231
|
task :test, [:pattern] do |spec, args|
|
204
232
|
test(args[:pattern] ? "test/#{args[:pattern]}_test.rb" : "test/*_test.rb")
|
205
233
|
end
|
@@ -207,5 +235,5 @@ end
|
|
207
235
|
# Default
|
208
236
|
# =============================================================================
|
209
237
|
|
210
|
-
task :default =>
|
238
|
+
task :default => :test
|
211
239
|
|
data/lib/prigner/cli/copy.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
# Copyright (c) 2010 Hallison Batista
|
2
|
+
|
3
|
+
require "prigner"
|
4
|
+
|
5
|
+
program = :prign
|
6
|
+
command = File.basename(__FILE__, ".rb")
|
7
|
+
|
8
|
+
begin
|
9
|
+
ARGV.options do |arguments|
|
10
|
+
|
11
|
+
arguments.summary_indent = " "
|
12
|
+
arguments.summary_width = 24
|
13
|
+
arguments.banner = <<-end_banner.gsub /^[ ]{6}/, ''
|
14
|
+
#{Prigner::Version}
|
15
|
+
|
16
|
+
Usage:
|
17
|
+
#{program} #{command} <namespace>[:template] <path>
|
18
|
+
|
19
|
+
Templates:
|
20
|
+
#{Prigner::CLI.templates.sort.join("\n" + arguments.summary_indent)}
|
21
|
+
|
22
|
+
end_banner
|
23
|
+
|
24
|
+
if ARGV.empty?
|
25
|
+
puts arguments
|
26
|
+
exit 0
|
27
|
+
else
|
28
|
+
arguments.parse!
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
rescue => error
|
34
|
+
puts "#{program}: #{command}: #{error.message} (#{error.class})"
|
35
|
+
puts "Try '#{program} #{command} -h' or '#{program} #{command} --help' for more information."
|
36
|
+
exit 1
|
37
|
+
end
|
38
|
+
|
39
|
+
|
data/lib/prigner/cli/new.rb
CHANGED
@@ -22,8 +22,9 @@ begin
|
|
22
22
|
end_banner
|
23
23
|
|
24
24
|
unless ARGV.empty?
|
25
|
-
|
26
|
-
|
25
|
+
arguments.parse!
|
26
|
+
|
27
|
+
name = ARGV.shift
|
27
28
|
|
28
29
|
template = Prigner::Template.load(*name.split(":"))
|
29
30
|
|
@@ -52,12 +53,13 @@ begin
|
|
52
53
|
end
|
53
54
|
end
|
54
55
|
|
55
|
-
unless
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
56
|
+
path = unless ARGV.empty?
|
57
|
+
arguments.parse!
|
58
|
+
path = ARGV.shift unless name.nil?
|
59
|
+
else
|
60
|
+
puts arguments
|
61
|
+
exit 0
|
62
|
+
end
|
61
63
|
|
62
64
|
project = Prigner::Project.new(path)
|
63
65
|
builder = Prigner::Builder.new(project, template)
|
data/lib/prigner/extensions.rb
CHANGED
@@ -58,9 +58,24 @@ class Struct
|
|
58
58
|
end
|
59
59
|
|
60
60
|
class Pathname
|
61
|
+
def get(file)
|
62
|
+
result = self.join(file.gsub(/^\/(.*?)$/){$1})
|
63
|
+
def result.to_s
|
64
|
+
return [self.inspect, self.read].join("\n")
|
65
|
+
end
|
66
|
+
result
|
67
|
+
end
|
68
|
+
|
69
|
+
alias read_body read
|
70
|
+
|
71
|
+
alias address expand_path
|
72
|
+
|
73
|
+
def port
|
74
|
+
nil
|
75
|
+
end
|
61
76
|
|
62
|
-
def
|
63
|
-
|
77
|
+
def start
|
78
|
+
block_given? ? (yield self) : self
|
64
79
|
end
|
65
80
|
|
66
81
|
end
|
data/lib/prigner/template.rb
CHANGED
@@ -64,39 +64,17 @@ class Prigner::Template
|
|
64
64
|
# Load template from shared directories. The shared path set the home user
|
65
65
|
# directory and Prigner::Template shared files.
|
66
66
|
def self.load(namespace, template = :default)
|
67
|
-
shared_path.map do |source|
|
67
|
+
Prigner.shared_path.map do |source|
|
68
68
|
path = "#{source}/#{namespace}/#{template}"
|
69
69
|
return new(path) if File.exist? path
|
70
70
|
end
|
71
71
|
nil
|
72
72
|
end
|
73
73
|
|
74
|
-
# Look at user home and template shared path.
|
75
|
-
def self.shared_path
|
76
|
-
user_home_templates = File.join(user_home_basedir, "templates")
|
77
|
-
[ user_home_templates, "#{Prigner::ROOT}/share/templates" ]
|
78
|
-
end
|
79
|
-
|
80
|
-
# User home.
|
81
|
-
def self.user_home
|
82
|
-
File.expand_path "~"
|
83
|
-
rescue
|
84
|
-
if File::ALT_SEPARATOR then
|
85
|
-
"C:/"
|
86
|
-
else
|
87
|
-
"/"
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
# User home base directory for Prigner files.
|
92
|
-
def self.user_home_basedir
|
93
|
-
File.join(user_home, ".prigner")
|
94
|
-
end
|
95
|
-
|
96
74
|
# Return all template paths placed in shared user or in project base
|
97
75
|
# directory.
|
98
76
|
def self.all_template_paths
|
99
|
-
shared_path.map do |source|
|
77
|
+
Prigner.shared_path.map do |source|
|
100
78
|
Dir.glob("#{source}/*/*")
|
101
79
|
end.flatten.compact
|
102
80
|
end
|
data/lib/prigner.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
#@ ---
|
2
2
|
#@ :timestamp: 2009-07-16 14:05:16 -04:00
|
3
|
-
#@ :date: 2010-10-
|
4
|
-
#@ :tag: 0.1.
|
5
|
-
#@ :milestone: Alpha
|
3
|
+
#@ :date: 2010-10-21
|
4
|
+
#@ :tag: 0.1.1
|
6
5
|
# encoding: UTF-8
|
7
6
|
|
8
7
|
# Copyright (c) 2009, 2010, Hallison Batista
|
@@ -28,6 +27,7 @@ module Prigner
|
|
28
27
|
autoload :Project, "prigner/project"
|
29
28
|
autoload :Model, "prigner/model"
|
30
29
|
autoload :Template, "prigner/template"
|
30
|
+
autoload :Source, "prigner/source"
|
31
31
|
autoload :Builder, "prigner/builder"
|
32
32
|
autoload :CLI, "prigner/cli"
|
33
33
|
|
@@ -36,13 +36,17 @@ module Prigner
|
|
36
36
|
@version ||= Version.current
|
37
37
|
end
|
38
38
|
|
39
|
-
class
|
39
|
+
# The objective of this class is to implement various ideas proposed by the
|
40
|
+
# Semantic Versioning Specification (see reference[http://semver.org/]).
|
41
|
+
class Version
|
40
42
|
|
41
43
|
FILE = Pathname.new(__FILE__).freeze
|
42
44
|
|
43
|
-
attr_accessor :
|
45
|
+
attr_accessor :date, :tag
|
46
|
+
|
44
47
|
attr_reader :timestamp
|
45
48
|
|
49
|
+
# Basic initialization of the attributes using a single hash.
|
46
50
|
def initialize(attributes = {})
|
47
51
|
attributes.each do |attribute, value|
|
48
52
|
send("#{attribute}=", value) if respond_to? "#{attribute}="
|
@@ -50,17 +54,27 @@ module Prigner
|
|
50
54
|
@timestamp = attributes[:timestamp]
|
51
55
|
end
|
52
56
|
|
57
|
+
# The numbering of the major, minor and patch values.
|
58
|
+
def numbering
|
59
|
+
self.tag.split(".").map do |key|
|
60
|
+
if key.match(/^(\d{1,})(\w+).*$/)
|
61
|
+
[ $1.to_i, $2 ]
|
62
|
+
else
|
63
|
+
key.to_i
|
64
|
+
end
|
65
|
+
end.flatten
|
66
|
+
end
|
67
|
+
|
53
68
|
def to_hash
|
54
|
-
[:tag, :date, :
|
69
|
+
[:tag, :date, :timestamp].inject({}) do |hash, key|
|
55
70
|
hash[key] = send(key)
|
56
71
|
hash
|
57
72
|
end
|
58
73
|
end
|
59
74
|
|
60
75
|
def save!
|
61
|
-
@date = Date.today
|
62
76
|
source = FILE.readlines
|
63
|
-
source[0..
|
77
|
+
source[0..3] = self.to_hash.to_yaml.to_s.gsub(/^/, '#@ ')
|
64
78
|
FILE.open("w+") do |file|
|
65
79
|
file << source.join("")
|
66
80
|
end
|
@@ -69,7 +83,7 @@ module Prigner
|
|
69
83
|
|
70
84
|
class << self
|
71
85
|
def current
|
72
|
-
yaml = FILE.readlines[0..
|
86
|
+
yaml = FILE.readlines[0..3].
|
73
87
|
join("").
|
74
88
|
gsub(/\#@ /,'')
|
75
89
|
new(YAML.load(yaml))
|
@@ -77,7 +91,7 @@ module Prigner
|
|
77
91
|
|
78
92
|
def to_s
|
79
93
|
name.match(/(.*?)::.*/)
|
80
|
-
"#{$1} v#{current.tag}
|
94
|
+
"#{$1} v#{current.tag} (#{current.date})"
|
81
95
|
end
|
82
96
|
end # self
|
83
97
|
|
@@ -182,5 +196,27 @@ module Prigner
|
|
182
196
|
|
183
197
|
end
|
184
198
|
|
199
|
+
# Look at user home and template shared path.
|
200
|
+
def self.shared_path
|
201
|
+
user_home_templates = File.join(user_home_basedir, "templates")
|
202
|
+
[ user_home_templates, "#{Prigner::ROOT}/share/templates" ]
|
203
|
+
end
|
204
|
+
|
205
|
+
# User home base directory for Prigner files.
|
206
|
+
def self.user_home_basedir
|
207
|
+
File.join(user_home, ".prigner")
|
208
|
+
end
|
209
|
+
|
210
|
+
# User home.
|
211
|
+
def self.user_home
|
212
|
+
File.expand_path(ENV["HOME"])
|
213
|
+
rescue
|
214
|
+
if File::ALT_SEPARATOR then
|
215
|
+
"C:/"
|
216
|
+
else
|
217
|
+
"/"
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
185
221
|
end # Prigner
|
186
222
|
|