skeletor 0.8.4 → 0.9.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.
- data/README.md +32 -4
- data/lib/skeletor/cli.rb +1 -1
- data/lib/skeletor/skeletons/loader.rb +45 -18
- data/lib/skeletor/skeletons/skeleton.rb +1 -1
- data/lib/skeletor/version.rb +1 -1
- metadata +50 -61
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Skeletor
|
2
2
|
========
|
3
3
|
|
4
|
-
Skeletor is a Ruby Library for setting up quick project skeletons based on code templates. It
|
4
|
+
Skeletor is a Ruby Library for setting up quick project skeletons based on code templates. It can use YAML or JSON templates to specify a directory structure of files and
|
5
5
|
folders, a list of includes to pull and any tasks to run. It also contains built in templates
|
6
6
|
|
7
7
|
Installation
|
@@ -35,7 +35,7 @@ Cleans the entire project directory. A helper method to let you start again. Us
|
|
35
35
|
|
36
36
|
skeletor validate TEMPLATE
|
37
37
|
|
38
|
-
Validates that TEMPLATE is a valid YAML file and that it matches the expected schema (see below).
|
38
|
+
Validates that TEMPLATE is a valid YAML or JSON file and that it matches the expected schema (see below).
|
39
39
|
|
40
40
|
###Help###
|
41
41
|
|
@@ -48,10 +48,10 @@ Templates
|
|
48
48
|
|
49
49
|
###Creating Templates###
|
50
50
|
|
51
|
-
A Skeletor template is a YAML file in a folder with the same name as the file so for instance, a basic template on file would look like this:
|
51
|
+
A Skeletor template is a YAML or JSON file in a folder with the same name as the file so for instance, a basic template on file would look like this:
|
52
52
|
|
53
53
|
sample-template/
|
54
|
-
- sample-template.yml
|
54
|
+
- sample-template.(yml|json)
|
55
55
|
|
56
56
|
The yaml structure looks like this:
|
57
57
|
|
@@ -71,6 +71,34 @@ The yaml structure looks like this:
|
|
71
71
|
- TASKANDARGUMENTS
|
72
72
|
- ANOTHERTASKANDARGUMENTS
|
73
73
|
|
74
|
+
The JSON structure looks like this:
|
75
|
+
|
76
|
+
{
|
77
|
+
"directory_structure":[
|
78
|
+
{
|
79
|
+
"dirname':[
|
80
|
+
{
|
81
|
+
"subdir':[]
|
82
|
+
},
|
83
|
+
[
|
84
|
+
"NESTEDFILE"
|
85
|
+
]
|
86
|
+
]
|
87
|
+
},
|
88
|
+
[
|
89
|
+
"FILENAME"
|
90
|
+
]
|
91
|
+
],
|
92
|
+
"includes":{
|
93
|
+
"FILENAME": "path/to/file"
|
94
|
+
"NESTEDFILE": "remoteurloffile"
|
95
|
+
},
|
96
|
+
"tasks":[
|
97
|
+
"TASKANDARGUMENTS"
|
98
|
+
"ANOTHERTASKANDARGUMENTS"
|
99
|
+
]
|
100
|
+
}
|
101
|
+
|
74
102
|
It should match the following schema:
|
75
103
|
|
76
104
|
sections:
|
data/lib/skeletor/cli.rb
CHANGED
@@ -44,7 +44,7 @@ module Skeletor
|
|
44
44
|
desc "validate TEMPLATE" ,"Checks TEMPLATE is a valid YAML file and matches the required schema."
|
45
45
|
# Loads a template, creates a new *Validator* and validates the template
|
46
46
|
def validate(template)
|
47
|
-
skeleton = Skeletons::Loader.
|
47
|
+
skeleton = Skeletons::Loader.load_template(template)
|
48
48
|
validator = Grayskull::Validator.new(skeleton,Skeletons::Skeleton::SCHEMA_FILE)
|
49
49
|
results = validator.validate
|
50
50
|
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'hike'
|
3
|
+
require 'grayskull'
|
2
4
|
|
3
5
|
module Skeletor
|
4
6
|
|
@@ -17,33 +19,58 @@ module Skeletor
|
|
17
19
|
# Searches for the specified template and loads it into a variable
|
18
20
|
#
|
19
21
|
# Also adds the path where it was found to the returned Hash
|
20
|
-
def self.
|
22
|
+
def self.load_template(template)
|
21
23
|
|
22
24
|
puts 'Loading Template - ' + template
|
23
25
|
|
26
|
+
#if File.exists?(template) && !File.directory?(template)
|
27
|
+
# skeleton = YAML.load_file(template)
|
28
|
+
# path = File.dirname(template)
|
29
|
+
#elsif File.exists?(File.join(template,File.basename(template) + '.yml'))
|
30
|
+
# skeleton = YAML.load_file(File.join(template,File.basename(template) + '.yml'))
|
31
|
+
# path = template
|
32
|
+
#elsif File.exists?(File.join(USER_TEMPLATE_PATH,template,template+'.yml'))
|
33
|
+
# skeleton = YAML.load_file(File.join(USER_TEMPLATE_PATH,template,template+'.yml'))
|
34
|
+
# path = File.join(USER_TEMPLATE_PATH,template)
|
35
|
+
#elsif File.exists?(File.join(TEMPLATE_PATH,template,template+'.yml'))
|
36
|
+
# skeleton = YAML.load_file(File.join(TEMPLATE_PATH,template,template+'.yml'))
|
37
|
+
# path = File.join(TEMPLATE_PATH,template)
|
38
|
+
#else
|
39
|
+
# raise LoadError, 'Error: Template File ' + File.basename(template) + ' Could Not Be Found'
|
40
|
+
#end
|
41
|
+
|
24
42
|
if File.exists?(template) && !File.directory?(template)
|
25
|
-
|
26
|
-
path = File.dirname(template)
|
27
|
-
elsif File.exists?(File.join(template,File.basename(template) + '.yml'))
|
28
|
-
skeleton = YAML.load_file(File.join(template,File.basename(template) + '.yml'))
|
29
|
-
path = template
|
30
|
-
elsif File.exists?(File.join(USER_TEMPLATE_PATH,template,template+'.yml'))
|
31
|
-
skeleton = YAML.load_file(File.join(USER_TEMPLATE_PATH,template,template+'.yml'))
|
32
|
-
path = File.join(USER_TEMPLATE_PATH,template)
|
33
|
-
elsif File.exists?(File.join(TEMPLATE_PATH,template,template+'.yml'))
|
34
|
-
skeleton = YAML.load_file(File.join(TEMPLATE_PATH,template,template+'.yml'))
|
35
|
-
path = File.join(TEMPLATE_PATH,template)
|
43
|
+
result = template
|
36
44
|
else
|
37
|
-
|
45
|
+
trail = Hike::Trail.new "/"
|
46
|
+
trail.append_extensions ".yml", ".json"
|
47
|
+
|
48
|
+
if File.directory?(template)
|
49
|
+
trail.append_paths template
|
50
|
+
result = trail.find File.basename(template)
|
51
|
+
else
|
52
|
+
trail.append_paths USER_TEMPLATE_PATH, TEMPLATE_PATH
|
53
|
+
result = trail.find File.basename(template) + "/" + File.basename(template)
|
54
|
+
end
|
55
|
+
|
38
56
|
end
|
39
57
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
58
|
+
if result
|
59
|
+
begin
|
60
|
+
file = File.basename(result)
|
61
|
+
path = File.dirname(result)
|
62
|
+
skeleton = Grayskull::DataFile.load(result)
|
63
|
+
skeleton['file'] = file
|
64
|
+
skeleton['path'] = path
|
65
|
+
puts 'Template ' + file + ' loaded from ' + path
|
66
|
+
rescue Exception => e
|
67
|
+
puts e.message
|
68
|
+
exit
|
69
|
+
end
|
45
70
|
end
|
46
71
|
|
72
|
+
puts 'Template ' + file + ' loaded from ' + path
|
73
|
+
|
47
74
|
return skeleton
|
48
75
|
|
49
76
|
end
|
@@ -16,7 +16,7 @@ module Skeletor
|
|
16
16
|
def initialize(template)
|
17
17
|
|
18
18
|
begin
|
19
|
-
@template = Loader.
|
19
|
+
@template = Loader.load_template(template)
|
20
20
|
validator = Grayskull::Validator.new(@template,SCHEMA_FILE)
|
21
21
|
results = validator.validate
|
22
22
|
if results["result"]
|
data/lib/skeletor/version.rb
CHANGED
metadata
CHANGED
@@ -1,62 +1,59 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: skeletor
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 8
|
8
|
-
- 4
|
9
|
-
version: 0.8.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Will McKenzie
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-10-03 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: thor
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70191011871680 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
18
|
+
requirements:
|
26
19
|
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 14
|
31
|
-
- 6
|
20
|
+
- !ruby/object:Gem::Version
|
32
21
|
version: 0.14.6
|
33
22
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: grayskull
|
37
23
|
prerelease: false
|
38
|
-
|
24
|
+
version_requirements: *70191011871680
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: hike
|
27
|
+
requirement: &70191011870700 !ruby/object:Gem::Requirement
|
39
28
|
none: false
|
40
|
-
requirements:
|
29
|
+
requirements:
|
41
30
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
- 0
|
45
|
-
- 1
|
46
|
-
- 6
|
47
|
-
version: 0.1.6
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.2.1
|
48
33
|
type: :runtime
|
49
|
-
|
50
|
-
|
51
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70191011870700
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: grayskull
|
38
|
+
requirement: &70191011869780 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.1.7
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70191011869780
|
47
|
+
description: Skeletor is a command line gem for creating project skeletons based on
|
48
|
+
a YAML template. It will create files and folders, including pulling in specified
|
49
|
+
includes, and run tasks to set up your project.
|
50
|
+
email:
|
52
51
|
- will@oinutter.co.uk
|
53
|
-
executables:
|
52
|
+
executables:
|
54
53
|
- skeletor
|
55
54
|
extensions: []
|
56
|
-
|
57
55
|
extra_rdoc_files: []
|
58
|
-
|
59
|
-
files:
|
56
|
+
files:
|
60
57
|
- README.md
|
61
58
|
- lib/skeletor/builder.rb
|
62
59
|
- lib/skeletor/cli.rb
|
@@ -77,37 +74,29 @@ files:
|
|
77
74
|
- lib/skeletor/templates/rb-gem/includes/sample.gemspec
|
78
75
|
- lib/skeletor/templates/rb-gem/rb-gem.yml
|
79
76
|
- lib/skeletor/templates/template-schema.yml
|
80
|
-
has_rdoc: true
|
81
77
|
homepage: http://github.com/OiNutter/skeletor
|
82
|
-
licenses:
|
78
|
+
licenses:
|
83
79
|
- MIT
|
84
80
|
post_install_message:
|
85
81
|
rdoc_options: []
|
86
|
-
|
87
|
-
require_paths:
|
82
|
+
require_paths:
|
88
83
|
- lib
|
89
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
90
85
|
none: false
|
91
|
-
requirements:
|
92
|
-
- -
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
|
95
|
-
|
96
|
-
version: "0"
|
97
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
91
|
none: false
|
99
|
-
requirements:
|
100
|
-
- -
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
|
103
|
-
- 0
|
104
|
-
version: "0"
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
105
96
|
requirements: []
|
106
|
-
|
107
97
|
rubyforge_project: skeletor
|
108
|
-
rubygems_version: 1.
|
98
|
+
rubygems_version: 1.8.10
|
109
99
|
signing_key:
|
110
100
|
specification_version: 3
|
111
101
|
summary: Gem for creating project skeletons based on YAML templates
|
112
102
|
test_files: []
|
113
|
-
|