skeletor 0.8.4 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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
-