scms 1.9.6 → 2.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ef0303045a52ddd8fcd7999b9904b1d9149fa47d
4
- data.tar.gz: aad39bc24d3458379629a8e9e8706eff9c23ff90
3
+ metadata.gz: bdb6469369b7419d7255f4d534c74bf8b49034bf
4
+ data.tar.gz: f3c2e3658b9f75017551ef6b80b2202f52fdbce5
5
5
  SHA512:
6
- metadata.gz: 48b720247e9f72f87b223c6c8630f70b0e25957e74148d99f65c547fa2df939257c989eaa21cb749be651e377bf4a9859899868760d2a6ef4eb456e20df4159b
7
- data.tar.gz: b880bda1b8863d08bcd5f4d1b0e9e941151db2549b8a6275a7d1471ba9c02a1b80660a432de9421c4442c9ec39cedb4641f1120a66a9f2f3b12e767c451a32ce
6
+ metadata.gz: 2ace91b95b0605de4079bd3e251b8fc0b4bca076695d49dfa45110f3751b9d30ad84656d885f447e5706b0cc36bfee15ac1a86d490229ded12dfd3943d7683ca
7
+ data.tar.gz: 8ceeec4bfdb74813411668b2403ee1eec99f2336dc3876f2cca6bfa780e8ec48dd20f95d2026ab70c71eef11f5dbe28ca244c75cc8d5bd6d21e0e5a8653f3ee8
data/.gitignore CHANGED
@@ -26,3 +26,7 @@ Desktop.ini
26
26
 
27
27
  # Mac crap
28
28
  .DS_Store
29
+ /assets/blank-template/index.html
30
+ /assets/blank-template/about.html
31
+ /assets/blank-template/scripts/bootstrap.min-v2.1.1.js
32
+ /assets/blank-template/stylesheets/style-1.0.css
@@ -1,25 +1,36 @@
1
- template: _templates/skin.erb.html
2
-
1
+ template: _templates/skin.erb.html # The website skin (erb template)
2
+ #url: http://www.mywebsite.com/ #Whats the website root when published - All references in html ~/ will be replaced with this
3
+ # Define your pages here
3
4
  pages:
4
5
  - index:
5
- generate: index.html
6
- views :
6
+ generate: ~/index.html
7
+ navigation: Home
8
+ title: My Homepage
9
+ description: Meta description
10
+ keywords: "CMS, S3, Ruby"
11
+ views:
7
12
  intro: _views/home-intro.html
8
13
  main: _views/home-main.html
9
14
  - about:
10
- generate: about.html
11
- views :
15
+ generate: ~/about.html
16
+ navigation: About
17
+ views:
12
18
  intro: _views/about-intro.html
13
19
  main: _views/about-main.html
20
+ - contact: #Pageless for nav only
21
+ navigation: contact
22
+ navigation_meta: contactform
23
+ url: about:blank
14
24
 
25
+ # Define your bundles here (versioning is recomended if your caching assets)
15
26
  bundles:
16
27
  - script:
17
28
  generate: scripts/bootstrap.min-v2.1.1.js
18
- bundle:
29
+ files:
19
30
  - scripts/bootstrap.js
20
31
  - style:
21
32
  generate: stylesheets/style-1.0.css
22
- bundle:
33
+ files:
23
34
  - stylesheets/bootstrap.css
24
35
  - stylesheets/bootstrap-responsive.css
25
36
  - stylesheets/style.css
@@ -2,14 +2,15 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
- <title>Static-CMS</title>
5
+ <title><%= page.title %></title>
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <meta name="description" content="">
8
- <meta name="author" content="">
7
+ <meta name="description" content="<%= page.description %>">
8
+ <meta name="keywords" content="<%= page.keywords %>">
9
+ <meta name="author" content="Courtenay Probert">
9
10
 
10
- <script src='scripts/jquery-1.8.2.min.js'></script>
11
- <!-- Le styles -->
12
- <link href='<%= data.stylesheets["style"] %>' rel="stylesheet">
11
+ <script src='~/scripts/jquery-1.8.2.min.js'></script>
12
+ <!-- Le styles -->
13
+ <link href='~/<%= page.bundles["style"] %>' rel="stylesheet">
13
14
  <style type="text/css">
14
15
  body {
15
16
  padding-top: 60px;
@@ -38,15 +39,15 @@
38
39
  <ul class="nav">
39
40
 
40
41
  <%
41
- @currentpagename = data.pagename
42
+ @currentpagename = page.name
42
43
  def isActive(pagename)
43
44
  return active = "active" if @currentpagename == pagename
44
45
  end
45
- data.navigation.each do |nav|
46
+ page.navigation.each do |nav|
46
47
  %>
47
- <li class='<%=isActive(nav[:name])%>'>
48
- <a href='<%= nav[:url] %>'>
49
- <%= nav[:name] %>
48
+ <li class='<%=isActive(nav["pagename"])%> <%= nav["meta"]%>'>
49
+ <a href='<%= nav["url"] %>'>
50
+ <%= nav["text"] %>
50
51
  </a>
51
52
  </li>
52
53
  <% end %>
@@ -78,18 +79,19 @@
78
79
 
79
80
  <!-- Main hero unit for a primary marketing message or call to action -->
80
81
  <div class="hero-unit">
81
- <%= data.views["intro"] %>
82
+ <%= page.views["intro"] %>
82
83
  </div>
83
84
 
84
85
  <!-- Example row of columns -->
85
86
  <div class="row">
86
- <%= data.views["main"] %>
87
+ <%= page.views["main"] %>
87
88
  </div>
88
89
 
89
90
  <hr>
90
91
 
91
92
  <footer>
92
93
  <p>&copy; Company <%= Time.now.strftime("%Y") %></p>
94
+ <p>Built with <a href="http://cprobert.github.io/Static-CMS/">Static-CMS</a></p>
93
95
  </footer>
94
96
 
95
97
  </div> <!-- /container -->
@@ -97,8 +99,7 @@
97
99
  <!-- Le javascript
98
100
  ================================================== -->
99
101
  <!-- Placed at the end of the document so the pages load faster -->
100
- <script src='<%= data.scripts["script"] %>'></script>
101
-
102
- <%= data.monkeyhook %>
102
+ <script src='~/<%= page.bundles["script"] %>'></script>
103
+ <%= page.monkeyhook %>
103
104
  </body>
104
105
  </html>
@@ -0,0 +1 @@
1
+ Add yuicompressor-2.4.7.jar here to able to use the Yui minimise
data/bin/scms CHANGED
@@ -55,17 +55,15 @@ end
55
55
  optparse.parse!
56
56
 
57
57
  #Set globals
58
- $website = (options[:website].nil?) ? Dir.pwd : options[:website]
59
- $html = (ENV["SCMS_HTML_OUT"] or "false")
60
- #puts "html mode: #{$html}"
61
58
  $stdout.sync = true
62
59
  root_folder = File.expand_path("../", File.dirname(__FILE__))
60
+ website = (options[:website].nil?) ? Dir.pwd : options[:website]
63
61
  Folders = {
64
62
  :root => root_folder,
65
- :website => File.join($website),
63
+ :website => File.join(website),
66
64
  :pub => (ENV["SCMS_PUBLISH_FOLDER"] or options[:pub]),
67
65
  :assets => File.join(root_folder, "assets"),
68
- :config => (ENV["SCMS_CONFIG_FOLDER"] or File.join($website))
66
+ :config => (ENV["SCMS_CONFIG_FOLDER"] or File.join(website))
69
67
  }
70
68
 
71
69
  if options[:action] == "create"
@@ -79,6 +77,13 @@ if options[:action] == "create"
79
77
  exit
80
78
  end
81
79
 
80
+ monkeyhook = File.join(Folders[:website], "scripts", "air-monkey-hook.js")
81
+ if options[:mode] == "cms"
82
+ FileUtils.cp(File.join(Folders[:assets], "air-monkey-hook.js"), monkeyhook)
83
+ else
84
+ FileUtils.rm(monkeyhook) if File.exist?(monkeyhook)
85
+ end
86
+
82
87
  #puts "System root folder = #{Folders[:root]}"
83
88
  #puts "Website folder = #{Folders[:website]}"
84
89
  #puts "Pub dir = #{Folders[:pub]}"
@@ -86,7 +91,7 @@ end
86
91
  #puts "Mode = #{options[:mode]}"
87
92
 
88
93
  raise "No website in folder #{Folders[:website]}" if !File::directory?(Folders[:website])
89
- Scms.Upgrade()
90
- deployDir = Scms.build(Folders[:pub], Folders[:config], options[:mode])
91
- #puts "deployDir = #{deployDir}"
94
+ Scms.upgrade(Folders[:website])
95
+ Scms.build(Folders[:website], Folders[:pub], Folders[:config], options[:mode])
96
+ Scms.copywebsite(Folders[:website], Folders[:pub]) if Folders[:pub] != nil
92
97
  Scms.deploy(deployDir, Folders[:config]) if options[:action] == "deploy"
data/lib/scms/s3deploy.rb CHANGED
@@ -3,25 +3,28 @@ module S3Deploy
3
3
  require "scms/scms-utils.rb"
4
4
 
5
5
  def S3Deploy.sync(pub, config)
6
- ScmsUtils.log( "Syncing with Amazon S3: #{$settings['bucket']}" )
6
+ yamlpath=File.join(config, "_config.yml")
7
+ settings = ScmsUtils.getsettings(yamlpath)
8
+
9
+ ScmsUtils.log( "Syncing with Amazon S3: #{settings['bucket']}" )
7
10
  @pub = pub
8
11
  ENV["S3CONF"] = config
9
12
  ENV["AWS_CALLING_FORMAT"] = "SUBDOMAIN"
10
13
  ENV["S3SYNC_MIME_TYPES_FILE"] = File.join(Folders[:root], "assets", "mime.types")
11
14
 
12
15
  yamlpath=File.join(config, "_s3config.yml")
13
- $settings = YAML.load_file(yamlpath)
16
+ settings = YAML.load_file(yamlpath)
14
17
 
15
18
  removeold = "--delete"
16
- if $settings['clean'] != nil
17
- unless $settings['clean']
19
+ if settings['clean'] != nil
20
+ unless settings['clean']
18
21
  removeold = ""
19
22
  end
20
23
  end
21
24
 
22
25
  exclude = "(\\.svn$)|(^_)"
23
- if $settings['ignore'] != nil
24
- exclude = "#{exclude}|(#{$settings["ignore"]})"
26
+ if settings['ignore'] != nil
27
+ exclude = "#{exclude}|(#{settings["ignore"]})"
25
28
  end
26
29
 
27
30
  cmd = "s3sync"
@@ -31,27 +34,27 @@ module S3Deploy
31
34
  Dir.glob("#{@pub}/_*/").each do |f|
32
35
  privatedir = File.basename(f)
33
36
  ScmsUtils.log( "Backing up #{privatedir} (private)" )
34
- privateparams = "#{params} \"#{@pub}/#{privatedir}/\" #{$settings['bucket']}:#{privatedir}/"
37
+ privateparams = "#{params} \"#{@pub}/#{privatedir}/\" #{settings['bucket']}:#{privatedir}/"
35
38
  ScmsUtils.run(cmd, privateparams)
36
39
  end
37
40
 
38
41
  #Them deploy publid dir with caching
39
- if $settings['cache'] != nil
40
- $settings['cache'].each do |folder|
42
+ if settings['cache'] != nil
43
+ settings['cache'].each do |folder|
41
44
  ScmsUtils.log( "Syncing #{folder}(public: caching: 1 year)" )
42
- cacheparams = "#{params} --public-read --cache-control='max-age=31449600' \"#{@pub}/#{folder}/\" #{$settings['bucket']}:#{folder}/"
45
+ cacheparams = "#{params} --public-read --cache-control='max-age=31449600' \"#{@pub}/#{folder}/\" #{settings['bucket']}:#{folder}/"
43
46
  ScmsUtils.run(cmd, cacheparams)
44
47
  end
45
48
  end
46
49
 
47
50
  ScmsUtils.log( "Syncing root (public)" )
48
- roorparams = "#{params} --public-read \"#{@pub}/\" #{$settings['bucket']}:/"
51
+ roorparams = "#{params} --public-read \"#{@pub}/\" #{settings['bucket']}:/"
49
52
  #Finnaly deploy all remaining files (except excludes)
50
53
  ScmsUtils.run(cmd, roorparams)
51
54
  ScmsUtils.successLog("Deployed :)")
52
55
 
53
- if $settings['uri'] != nil
54
- ScmsUtils.log($settings['uri'])
56
+ if settings['uri'] != nil
57
+ ScmsUtils.log(settings['uri'])
55
58
  end
56
59
  end
57
60
  end
@@ -3,6 +3,31 @@ module ScmsUtils
3
3
  require 'fileutils'
4
4
  require 'open-uri'
5
5
 
6
+ def ScmsUtils.getsettings(yamlpath)
7
+ ScmsUtils.log("Loading Config: #{ScmsUtils.uriEncode("file:///#{yamlpath}")}")
8
+ config = nil
9
+
10
+ if File.exist?(yamlpath)
11
+ tree = File.read(yamlpath)
12
+ begin
13
+ myconfig = ERB.new(tree).result()
14
+ #puts "Conf = #{myconfig}"
15
+ config = YAML.load(myconfig)
16
+ #config = YAML.load_file(yamlpath)
17
+ rescue Exception => e
18
+ ScmsUtils.errLog("Error Loading _config.yml (check there are no tabs in the file)")
19
+ ScmsUtils.log( "Verify your config")
20
+ ScmsUtils.log( "http://yaml-online-parser.appspot.com/")
21
+ ScmsUtils.errLog( e.message )
22
+ ScmsUtils.errLog( e.backtrace.inspect )
23
+ end
24
+ else
25
+ ScmsUtils.errLog("Config file does not exist: #{yamlpath}")
26
+ end
27
+
28
+ return config
29
+ end
30
+
6
31
  def ScmsUtils.run(cmd, params)
7
32
  if system("#{cmd} #{params}")
8
33
  ScmsUtils.successLog( "#{cmd} ran successfully" )
@@ -13,7 +38,7 @@ module ScmsUtils
13
38
 
14
39
  def ScmsUtils.errLog(msg)
15
40
  if !msg.nil?
16
- if $html == "true"
41
+ if ENV["SCMS_HTML_OUT"] == "true"
17
42
  puts "<div style='color: red;'>#{ScmsUtils.txt_2_html(msg)}</div>"
18
43
  else
19
44
  puts msg
@@ -23,7 +48,7 @@ module ScmsUtils
23
48
 
24
49
  def ScmsUtils.successLog(msg)
25
50
  if !msg.nil?
26
- if $html == "true"
51
+ if ENV["SCMS_HTML_OUT"] == "true"
27
52
  puts "<div style='color: green;'>#{ScmsUtils.txt_2_html(msg)}</div>"
28
53
  else
29
54
  puts msg
@@ -33,7 +58,7 @@ module ScmsUtils
33
58
 
34
59
  def ScmsUtils.log(msg)
35
60
  if !msg.nil?
36
- if $html == "true"
61
+ if ENV["SCMS_HTML_OUT"] == "true"
37
62
  puts "<div>#{ScmsUtils.txt_2_html(msg)}</div>"
38
63
  else
39
64
  puts msg
data/lib/scms/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Scms
2
- VERSION = "1.9.6"
2
+ VERSION = "2.0.0"
3
3
  end
data/lib/scms/yui.rb ADDED
@@ -0,0 +1,31 @@
1
+ module Yui
2
+ def Yui.eatall(crunchDir)
3
+ ScmsUtils.log( "Starting crunching CSS and JavaScript in:\n#{crunchDir}\n\n" )
4
+ Dir.chdir(crunchDir) do
5
+ Dir.glob("**/*.{css, js}").each do |asset|
6
+ #fullFileName = File.basename(asset)
7
+ #ScmsUtils.log( "Crunching #{fullFileName}" )
8
+ ext = File.extname(asset)
9
+ Yui.compress(asset, ext)
10
+ end
11
+ end
12
+ end
13
+
14
+ def Yui.compress(asset, ext)
15
+ if File.exists?(asset)
16
+ #ScmsUtils.log( " Encoding: #{asset.encoding}" )
17
+ enc = "--charset utf-8"
18
+ enc = ""
19
+ cmd = "java"
20
+ params = "-jar \"#{File.join(Folders[:assets], "yuicompressor", "yuicompressor-2.4.7.jar")}\" #{enc} --type #{ext.gsub(".","")} \"#{asset}\" -o \"#{asset}\""
21
+ ##Need to check if asset exists
22
+ if system("#{cmd} #{params}")
23
+ ScmsUtils.log( "_Crunched #{File.basename(asset)}_" )
24
+ else
25
+ ScmsUtils.errLog( "Error crunching: #{asset}" )
26
+ end
27
+ else
28
+ ScmsUtils.errLog( "#{asset} does not exist" )
29
+ end
30
+ end
31
+ end
data/lib/scms.rb CHANGED
@@ -13,53 +13,21 @@ module Scms
13
13
 
14
14
  include YAML
15
15
 
16
- def Scms.build(pub, config, mode)
17
- @pub = $website
18
- @cleanpub = false
19
- if pub != nil
20
- @pub = pub
21
- @cleanpub = true
22
- end
23
-
24
- @configdir = config
16
+ def Scms.build(website, pub, config, mode)
17
+ @website = website
25
18
  @mode = mode
26
19
  #ScmsUtils.log("Mode: #{mode}")
27
20
 
28
- @source = File.join($website)
29
- # Support for legacy publick folders
30
- if (Dir.exists? File.join($website, "public"))
31
- @source = File.join($website, "public")
32
- @pub = File.join($website, "_site") if pub == nil
33
- end
34
-
35
- ScmsUtils.log("Source #{@source}")
36
- Scms.sassall(@source)
21
+ ScmsUtils.log("Website #{@website}")
22
+ Scms.sassall(File.join(@website))
37
23
 
38
- yamlpath=File.join(@configdir, "_config.yml")
39
- ScmsUtils.log("Loading Config: #{ScmsUtils.uriEncode("file:///#{yamlpath}")}")
40
- $settings = Scms.getsettings(yamlpath)
41
- if $settings
42
- if $settings["options"] != nil
43
- # Don't overwrite environment settings
44
- if ENV["SCMS_PUBLISH_FOLDER"] == nil && $settings["options"]["build_dir"] != nil
45
- ScmsUtils.log("_Getting pub dir from _config.yml_")
46
- @pub = $settings["options"]["build_dir"]
47
- end
48
- if $settings["options"]["clean_build_dir"] == true
49
- ScmsUtils.log("Cleaning build dir")
50
- @cleanpub = true
51
- end
52
- end
53
-
54
- if @cleanpub
55
- Scms.cleanpubdir(@pub)
56
- @cleanpub = false
57
- end
58
-
24
+ yamlpath=File.join(config, "_config.yml")
25
+ @settings = ScmsUtils.getsettings(yamlpath)
26
+ if @settings
59
27
  #Bootstrap here
60
- if $settings["bootstrap"] != nil
61
- bootstrap = File.join($website, $settings["bootstrap"])
62
- #ScmsUtils.log("Bootstrap is: #{$settings["bootstrap"]}")
28
+ if @settings["bootstrap"] != nil
29
+ bootstrap = File.join(@website, @settings["bootstrap"])
30
+ #ScmsUtils.log("Bootstrap is: #{@settings["bootstrap"]}")
63
31
  if File.exists?(bootstrap)
64
32
  begin
65
33
  require_relative bootstrap
@@ -67,76 +35,59 @@ module Scms
67
35
  ScmsUtils.errLog( e )
68
36
  end
69
37
  else
70
- ScmsUtils.log("_Bootstrap does not exist #{bootstrap}_")
38
+ ScmsUtils.log("Bootstrap does not exist #{bootstrap}")
71
39
  end
72
40
  end
73
41
 
74
- #Bundle resources
75
- scripts = Scms.bundle($settings["scripts"], ".js")
76
- stylesheets = Scms.bundle($settings["stylesheets"], ".css")
77
- bundles = Scms.bundle($settings["bundles"])
78
- #Generate pages
79
- Scms.parsepages(scripts, stylesheets, bundles)
42
+ bundles = Scms.bundle(@settings["bundles"])
43
+ Scms.parsepages(bundles)
80
44
  else
81
45
  ScmsUtils.errLog("Config is empty")
82
46
  end
83
-
84
- if @pub != $website
85
- ScmsUtils.log("Merging 'public' folder")
86
-
87
- Scms.cleanpubdir(@pub) if @cleanpub
88
- FileUtils.mkdir @pub unless Dir.exists? @pub
89
- Dir.chdir(@source) do
90
- #files = Dir.glob('*')
91
- #FileUtils.cp_r files, @pub
92
-
93
- Dir.glob("**/*").reject{|f| f['.svn']}.each do |oldfile|
94
- newfile = File.join(@pub, oldfile.sub(@source, ''))
95
- #puts newfile
96
- File.file?(oldfile) ? FileUtils.copy(oldfile, newfile) : FileUtils.mkdir(newfile) unless File.exist? newfile
97
- end
98
- end
99
- end
100
-
101
- ScmsUtils.log(ScmsUtils.uriEncode("file:///#{@pub}"))
102
- return @pub
47
+
48
+ ScmsUtils.log("Built website:")
49
+ ScmsUtils.log(ScmsUtils.uriEncode("file:///#{@website}"))
103
50
  end
104
-
105
- def Scms.parsepages(scripts, stylesheets, bundles)
51
+
52
+ def Scms.parsepages(bundles)
106
53
  # build views from templates
107
- @template = $settings["template"]
54
+ @template = @settings["template"]
108
55
 
109
- if $settings["pages"] != nil
56
+ if @settings["pages"] != nil
110
57
  # Build navigation
111
58
  navigation = Array.new
112
- $settings["pages"].each do |page|
113
- if page != nil
114
- page.each do |pageoptions|
59
+ @settings["pages"].each do |pagedata|
60
+ if pagedata != nil
61
+ pagedata.each do |pageoptions|
115
62
  pagename = pageoptions[0]
116
63
  pageconfig = pageoptions[1]
117
64
  pageurl = pageconfig["generate"]
118
- navigation.push({:name => pagename, :url => pageurl}) unless pageconfig["navigation"] == false
65
+ pageurl = pageconfig["url"] unless pageconfig["url"] == nil
66
+ navtext = pageconfig["navigation"]
67
+ navmeta = pageconfig["navigation_meta"]
68
+ navigation.push({"text" => navtext, "url" => pageurl, "pagename" => pagename, "meta" => navmeta}) unless navtext == nil
119
69
  end
120
70
  end
121
71
  end
122
72
 
123
73
  ScmsUtils.log("Compiling Pages:")
124
- $settings["pages"].each do |page|
125
- if page != nil
126
- page.each do |pageoptions|
74
+ @settings["pages"].each do |pagedata|
75
+ if pagedata != nil
76
+ pagedata.each do |pageoptions|
127
77
  pagename = pageoptions[0]
128
78
  pageconfig = pageoptions[1]
129
79
  pageurl = pageconfig["generate"]
130
- ScmsUtils.successLog("#{pageurl}")
131
- if pageconfig["template"] == nil
132
- skin = @template
133
- else
134
- skin = pageconfig["template"]
135
- end
80
+ title = pagename
81
+ title = pageconfig["title"] unless pageconfig["title"] == nil
82
+ description = pageconfig["description"]
83
+ keywords = pageconfig["keywords"]
84
+
85
+ skin = @template
86
+ skin = pageconfig["template"] unless pageconfig["template"] == nil
136
87
 
137
88
  resource = Hash.new
138
89
  if pageconfig["resource"] != nil
139
- resourcepath = File.join($website, pageconfig["resource"])
90
+ resourcepath = File.join(@website, pageconfig["resource"])
140
91
  if File.exists?(resourcepath)
141
92
  #ScmsUtils.log( "_Resource found: #{pageconfig["resource"]}_" )
142
93
  resource = YAML.load_file(resourcepath)
@@ -145,15 +96,15 @@ module Scms
145
96
  end
146
97
  end
147
98
 
148
- hasHandler = "no"
99
+ hasHandler = false
149
100
  if pageconfig["handler"] != nil
150
- handlerpath = File.join($website, pageconfig["handler"])
101
+ handlerpath = File.join(@website, pageconfig["handler"])
151
102
  if File.exists?(handlerpath)
152
103
  #ScmsUtils.log( "Handler found: #{pageconfig["handler"]}" )
153
104
  require handlerpath
154
105
  funDefined = defined? Handler.render
155
106
  if funDefined != nil
156
- hasHandler = "yes"
107
+ hasHandler = true
157
108
  else
158
109
  ScmsUtils.errLog( "Handler doesnt have a render method" )
159
110
  end
@@ -163,79 +114,93 @@ module Scms
163
114
  end
164
115
 
165
116
  views = Hash.new
166
- pageconfig["views"].each do |view|
167
- views[view[0]] = ""
168
- viewpath = File.join($website, view[1])
169
- if File.exists?(viewpath)
170
- htmlsnipet = File.read(viewpath)
171
- if !htmlsnipet.empty?
172
- model = Hash.new
173
- model = { :page => page, :sitedir => $website, :resource => resource }
174
- if hasHandler == "yes"
175
- ScmsUtils.log("Rendering with handler")
176
- viewSnippet = Handler.render(viewpath)
177
- else
178
- snnipetCode = File.read(viewpath)
179
- case File.extname(view[1])
180
- when ".md"
181
- begin
182
- doc = Maruku.new(snnipetCode)
183
- viewSnippet = doc.to_html
184
- rescue Exception => e
185
- viewSnippet = snnipetCode
186
- puts e.message
187
- puts e.backtrace.inspect
117
+ if pageconfig["views"] != nil
118
+ pageconfig["views"].each do |view|
119
+ views[view[0]] = ""
120
+ viewpath = File.join(@website, view[1])
121
+ if File.exists?(viewpath)
122
+ htmlsnipet = File.read(viewpath)
123
+ if !htmlsnipet.empty?
124
+ viewmodel = Hash.new
125
+ viewmodel = {
126
+ :page => pagedata,
127
+ :sitedir => @website,
128
+ :resource => resource
129
+ }
130
+
131
+ if hasHandler
132
+ ScmsUtils.log("Rendering with handler")
133
+ viewSnippet = Handler.render(viewpath)
134
+ else
135
+ snnipetCode = File.read(viewpath)
136
+ case File.extname(view[1])
137
+ when ".md"
138
+ begin
139
+ doc = Maruku.new(snnipetCode)
140
+ viewSnippet = doc.to_html
141
+ rescue Exception => e
142
+ viewSnippet = snnipetCode
143
+ puts e.message
144
+ puts e.backtrace.inspect
145
+ end
146
+ else
147
+ viewSnippet = snnipetCode
188
148
  end
149
+ end
150
+
151
+ if @mode == "cms"
152
+ views[view[0]] = "<div class='cms' data-view='#{view[1]}' data-page='#{pagedata}'>#{Scms.parsetemplate(viewSnippet, viewmodel)}</div>"
189
153
  else
190
- viewSnippet = snnipetCode
154
+ views[view[0]] = Scms.parsetemplate(viewSnippet, viewmodel)
191
155
  end
192
- end
193
-
194
- if @mode == "cms"
195
- views[view[0]] = "<div class='cms' data-view='#{view[1]}' data-page='#{page}'>#{Scms.parsetemplate(viewSnippet, model)}</div>"
196
156
  else
197
- views[view[0]] = Scms.parsetemplate(viewSnippet, model)
157
+ ScmsUtils.writelog("Empty file: #{viewpath}")
198
158
  end
199
159
  else
200
- ScmsUtils.writelog(@pub, "Empty file: #{viewpath}")
160
+ ScmsUtils.errLog("View not found: #{view[0]} - #{view[1]} [#{viewpath}]")
161
+ ScmsUtils.writelog("View not found: #{view[0]} - #{view[1]} [#{viewpath}]")
201
162
  end
202
- else
203
- ScmsUtils.errLog("View not found: #{view[0]} - #{view[1]} [#{viewpath}]")
204
- ScmsUtils.writelog(@pub, "View not found: #{view[0]} - #{view[1]} [#{viewpath}]")
163
+ #ScmsUtils.log( "view = #{view[0]} - #{view[1]}" )
205
164
  end
206
- #ScmsUtils.log( "view = #{view[0]} - #{view[1]}" )
207
165
  end
208
166
 
209
167
  monkeyhook = "";
210
- if @mode == "cms"
211
- monkeyhook = "<script src='scripts/air-monkey-hook.js'></script>"
212
- end
168
+ monkeyhook = "<script src='scripts/air-monkey-hook.js'></script>" if @mode == "cms"
213
169
 
214
- hash = {
215
- :page => pageurl,
216
- :pagename => pagename,
217
- :pageurl => pageurl,
170
+ pagemodel = Hash.new
171
+ pagemodel = {
172
+ :name => pagename,
173
+ :title => title,
174
+ :description => description,
175
+ :keywords => keywords,
176
+ :url => pageurl,
218
177
  :views => views,
219
178
  :resource => resource,
220
179
  :config => pageconfig,
221
- :scripts => scripts,
222
- :stylesheets => stylesheets,
223
180
  :bundles => bundles,
224
- :sitedir => $website,
225
- :monkeyhook => monkeyhook,
226
- :navigation => navigation
181
+ :navigation => navigation,
182
+ :data => pagedata,
183
+ :rootdir => @website,
184
+ :monkeyhook => monkeyhook
227
185
  }
228
186
 
229
- erb = File.join($website, skin)
230
- out = File.join(@pub, pageconfig["generate"])
187
+ erb = File.join(@website, skin)
188
+ out = File.join(@website, File.join(pageconfig["generate"].sub('~/',''))) unless pageconfig["generate"] == nil
231
189
 
232
- if File.exists?(erb)
190
+ ScmsUtils.successLog("#{pageurl}")
191
+ ScmsUtils.errLog("Template doesn't exist: #{erb}") unless File.exists?(erb)
192
+ if File.exists?(erb) && out != nil
233
193
  pubsubdir = File.dirname(out)
234
194
  Dir.mkdir(pubsubdir, 755) unless File::directory?(pubsubdir)
235
- html = Scms.parsetemplate(File.read(erb), hash)
195
+ html = Scms.parsetemplate(File.read(erb), pagemodel)
196
+
197
+ html = html.gsub('~/', ScmsUtils.uriEncode("file:///#{@website}/")) if @mode == "cms"
198
+ websiteroot = ''
199
+ websiteroot = @settings["url"] unless @settings["url"] == nil
200
+
201
+ html = html.gsub('~/', websiteroot)
202
+
236
203
  File.open(out, 'w') {|f| f.write(html) }
237
- else
238
- ScmsUtils.errLog("Template doesn't exist: #{erb}")
239
204
  end
240
205
  end
241
206
  end
@@ -244,30 +209,42 @@ module Scms
244
209
  end
245
210
  end
246
211
 
247
- def Scms.bundle(bundleConfig, defaultExt=".bundle")
248
- scripts = Hash.new
212
+ def Scms.parsetemplate(template, hash)
213
+ #lagasy fix
214
+ template = template.gsub('data.','page.')
215
+
216
+ page = OpenStruct.new(hash)
217
+ result = ""
218
+
219
+ begin
220
+ result = ERB.new(template).result(page.instance_eval { binding })
221
+ rescue Exception => e
222
+ ScmsUtils.errLog("Critical Error: Could not parse template")
223
+ ScmsUtils.log( "(if your using resources make sure their not empty)" )
224
+ ScmsUtils.errLog( e.message )
225
+ end
226
+
227
+ return result
228
+ end
229
+
230
+ def Scms.bundle(bundleConfig)
231
+ bundles = Hash.new
249
232
  if bundleConfig != nil
250
233
  ScmsUtils.log("Bundeling:")
251
234
  bundleConfig.each do |bundle|
252
235
  #ScmsUtils.log( "bundle (#{bundle.class}) = #{bundle}" )
253
236
  bundle.each do |option|
254
237
  name = option[0]
255
- if option[1]["version"] != nil
256
- bundleVersion = option[1]["version"]
257
- else
258
- bundleVersion = 1
259
- end
260
- bundleName = File.join("scripts", "#{name}-v#{bundleVersion}.#{defaultExt}") #Legasy name filename from root and version
261
- bundleName = File.join(option[1]["generate"]) if option[1]["generate"] != nil #just use the generate
262
- scripts[name] = bundleName
238
+ bundleName = File.join(option[1]["generate"])
239
+ bundles[name] = bundleName
263
240
  ScmsUtils.successLog("#{bundleName}")
264
241
 
265
242
  content = ""
266
243
  assetList = ""
267
- bundle = option[1]["bundle"]
268
- bundle.each do |asset|
244
+ files = option[1]["files"]
245
+ files.each do |asset|
269
246
  assetList += "\t#{asset}\n"
270
- assetname = File.join(@source, asset)
247
+ assetname = File.join(@website, asset)
271
248
  if File::exists?(assetname)
272
249
  content = content + "\n" + File.read(assetname)
273
250
  else
@@ -286,55 +263,7 @@ module Scms
286
263
  end
287
264
  end
288
265
  end
289
- return scripts
290
- end
291
-
292
- def Scms.parsetemplate(template, hash)
293
- data = OpenStruct.new(hash)
294
- result = ""
295
-
296
- begin
297
- result = ERB.new(template).result(data.instance_eval { binding })
298
- rescue Exception => e
299
- ScmsUtils.errLog("Critical Error: Could not parse template")
300
- ScmsUtils.log( "(if your using resources make sure their not empty)" )
301
- ScmsUtils.errLog( e.message )
302
- end
303
-
304
- return result
305
- end
306
-
307
- def Scms.getsettings(yamlpath)
308
- config = nil
309
-
310
- if File.exist?(yamlpath)
311
- tree = File.read(yamlpath)
312
- begin
313
- myconfig = ERB.new(tree).result()
314
- #puts "Conf = #{myconfig}"
315
- config = YAML.load(myconfig)
316
- #config = YAML.load_file(yamlpath)
317
- rescue Exception => e
318
- ScmsUtils.errLog("Error Loading _config.yml (check there are no tabs in the file)")
319
- ScmsUtils.log( "Verify your config")
320
- ScmsUtils.log( "http://yaml-online-parser.appspot.com/")
321
- ScmsUtils.errLog( e.message )
322
- ScmsUtils.errLog( e.backtrace.inspect )
323
- end
324
- else
325
- ScmsUtils.errLog("Config file does not exist: #{yamlpath}")
326
- end
327
-
328
- return config
329
- end
330
-
331
- def Scms.cleanpubdir(pub)
332
- ScmsUtils.log("_Cleaning pub folder #{pub}_")
333
- FileUtils.rm_rf pub
334
- #FileUtils.remove_dir(pub, force = true)
335
- sleep 0.5 # seconds
336
- FileUtils.mkdir_p(pub) unless File.exist? pub
337
- FileUtils.chmod 0755, pub
266
+ return bundles
338
267
  end
339
268
 
340
269
  def Scms.sassall(crunchDir)
@@ -380,17 +309,32 @@ module Scms
380
309
  end
381
310
  end
382
311
 
383
- def Scms.deploy(pub, config)
312
+ def Scms.deploy(website, config)
384
313
  yamlpath=File.join(config, "_s3config.yml")
385
314
  if File.exists?(yamlpath)
386
- S3Deploy.sync(pub, config)
315
+ S3Deploy.sync(website, config)
387
316
  else
388
317
  raise "The following file doesn't exist #{yamlpath}"
389
318
  end
390
319
  end
391
320
 
392
- def Scms.Upgrade()
393
- File.rename("config.yml", "_config.yml") if File.exists? File.join($website, "config.yml")
394
- File.rename("s3config.yml", "_s3config.yml") if File.exists? File.join($website, "s3config.yml")
321
+ def Scms.copywebsite(website, pub)
322
+ if pub != nil
323
+ FileUtils.mkdir pub unless Dir.exists? pub
324
+ source = File.join(website)
325
+ Dir.chdir(source) do
326
+ Dir.glob("**/*").reject{|f| f['.svn']}.each do |oldfile|
327
+ newfile = File.join(pub, oldfile.sub(source, ''))
328
+ #puts newfile
329
+ File.file?(oldfile) ? FileUtils.copy(oldfile, newfile) : FileUtils.mkdir(newfile) unless File.exist? newfile
330
+ end
331
+ end
332
+ ScmsUtils.log("Output to: #{ScmsUtils.uriEncode("file:///#{pub}")}")
333
+ end
334
+ end
335
+
336
+ def Scms.upgrade(website)
337
+ File.rename("config.yml", "_config.yml") if File.exists? File.join(website, "config.yml")
338
+ File.rename("s3config.yml", "_s3config.yml") if File.exists? File.join(website, "s3config.yml")
395
339
  end
396
340
  end
data/scms.gemspec CHANGED
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.executables << 'scms'
22
22
 
23
23
  spec.add_dependency "cprobert-s3sync"
24
- spec.add_dependency "nokogiri"
25
24
  spec.add_dependency "maruku"
26
25
  spec.add_dependency "sass"
27
26
  spec.add_dependency "packr"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scms
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.6
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Courtenay Probert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-10 00:00:00.000000000 Z
11
+ date: 2013-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cprobert-s3sync
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: nokogiri
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ! '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ! '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: maruku
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -122,9 +108,9 @@ files:
122
108
  - LICENSE.txt
123
109
  - README.md
124
110
  - Rakefile
111
+ - assets/air-monkey-hook.js
125
112
  - assets/blank-template/_config.yml
126
113
  - assets/blank-template/_s3config.template.yml
127
- - assets/blank-template/_templates/menu.xml
128
114
  - assets/blank-template/_templates/skin.erb.html
129
115
  - assets/blank-template/_views/about-intro.html
130
116
  - assets/blank-template/_views/about-main.html
@@ -133,7 +119,6 @@ files:
133
119
  - assets/blank-template/images/glyphicons-halflings-white.png
134
120
  - assets/blank-template/images/glyphicons-halflings.png
135
121
  - assets/blank-template/robots.txt
136
- - assets/blank-template/scripts/air-monkey-hook.js
137
122
  - assets/blank-template/scripts/bootstrap.js
138
123
  - assets/blank-template/scripts/jquery-1.8.2.min.js
139
124
  - assets/blank-template/scripts/script.js
@@ -141,12 +126,14 @@ files:
141
126
  - assets/blank-template/stylesheets/bootstrap.css
142
127
  - assets/blank-template/stylesheets/style.css
143
128
  - assets/mime.types
129
+ - assets/yuicompressor/readme
144
130
  - bin/scms
145
131
  - build commands.txt
146
132
  - lib/scms.rb
147
133
  - lib/scms/s3deploy.rb
148
134
  - lib/scms/scms-utils.rb
149
135
  - lib/scms/version.rb
136
+ - lib/scms/yui.rb
150
137
  - scms.gemspec
151
138
  homepage: http://cprobert.github.io/Static-CMS/
152
139
  licenses:
@@ -1,5 +0,0 @@
1
- <?xml version="1.0" encoding="ISO-8859-1"?>
2
- <menu>
3
- <page href="index.html">Home</page>
4
- <page href="about.html">About</page>
5
- </menu>