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 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 uses YAML templates to specify a directory structure of files and
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:
@@ -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.loadTemplate(template)
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.loadTemplate(template)
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
- skeleton = YAML.load_file(template)
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
- raise LoadError, 'Error: Template File ' + File.basename(template) + ' Could Not Be Found'
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
- puts 'Template ' + File.basename(template) + '.yml loaded from ' + path
41
- if skeleton
42
- skeleton['path'] = path
43
- else
44
- raise LoadError, 'Error: Template could not be parsed as vald YAML'
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.loadTemplate(template)
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"]
@@ -1,4 +1,4 @@
1
1
  module Skeletor
2
2
  # Current version number
3
- VERSION="0.8.4"
3
+ VERSION="0.9.0"
4
4
  end
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
- prerelease: false
5
- segments:
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
- date: 2011-10-02 00:00:00 +01:00
18
- default_executable:
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
- prerelease: false
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- segments:
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
- version_requirements: *id002
50
- description: Skeletor is a command line gem for creating project skeletons based on a YAML template. It will create files and folders, including pulling in specified includes, and run tasks to set up your project.
51
- email:
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
- segments:
95
- - 0
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
- segments:
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.3.7
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
-