origen 0.0.4 → 0.0.5

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: 67638f71155b698c46c36ac11275cbd932f59f4c
4
- data.tar.gz: 71f951d39c6a92b7f9ffc4a60b8613f164cdab61
3
+ metadata.gz: 2444b500452b441ffe3b828caf07864c4bac244c
4
+ data.tar.gz: bf221ec3d4731ac3e36a5c2ea25ec3b65cc4680c
5
5
  SHA512:
6
- metadata.gz: cc180e1083595da71e9d7ffe40a34fe084fc950f0cd9affd03da76f62695bc398d97dc7b7112386c56b66f903fd8072c4b06a9507c4205fb1a541e91ad748c7a
7
- data.tar.gz: 4cdac149a1a653a8aede5ea906f2fdbfce0c625c90dcf6cca5dad24d86fb498010eedac1e6513127f32d614e53d3461d3108b914a1e0596e2ac50b60bc02d678
6
+ metadata.gz: c299c349c1623868cccc9e93a0cdbab6e9b20b19471c83db65a89c273a80d2fe455e48b7b8d09395238fc4f35bc83810343c4d8c2cc7326951b1f5a405424f33
7
+ data.tar.gz: cfe2bae4e3193971e82f470e0a542ade063aa941bd08d32980884af5a0b3ae0bd9549641b01e35a1db5132f244a990c713bb7e1332c045b4be37968a09ccd723
@@ -29,8 +29,7 @@ class OrigenCoreApplication < Origen::Application
29
29
 
30
30
  #config.lsf.project = "origen core"
31
31
 
32
- config.web_directory = "/proj/.web_origen/html/origen"
33
-
32
+ config.web_directory = "git@github.com:Origen-SDK/Origen-SDK.github.io.git/origen"
34
33
  config.web_domain = "http://origen-sdk.org/origen"
35
34
 
36
35
  config.pattern_prefix = "nvm"
@@ -112,13 +111,13 @@ class OrigenCoreApplication < Origen::Application
112
111
  end
113
112
 
114
113
  def before_deploy_site
115
- Dir.chdir Origen.root do
116
- system "origen specs -c"
117
- system "origen examples -c"
118
- dir = "#{Origen.root}/web/output/coverage"
119
- FileUtils.remove_dir(dir, true) if File.exists?(dir)
120
- system "mv #{Origen.root}/coverage #{dir}"
121
- end
114
+ #Dir.chdir Origen.root do
115
+ # system "origen specs -c"
116
+ # system "origen examples -c"
117
+ # dir = "#{Origen.root}/web/output/coverage"
118
+ # FileUtils.remove_dir(dir, true) if File.exists?(dir)
119
+ # system "mv #{Origen.root}/coverage #{dir}"
120
+ #end
122
121
  end
123
122
 
124
123
  def after_release_email(tag, note, type, selector, options)
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
3
  MINOR = 0
4
- BUGFIX = 4
4
+ BUGFIX = 5
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
data/helpers/url.rb CHANGED
@@ -23,6 +23,9 @@ module Origen
23
23
 
24
24
  if Origen.development?
25
25
  "#{p}" # dev mode used for local website generation
26
+ # For Git deploy don't maintain versions
27
+ elsif Origen.app.deployer.deploy_to_git?
28
+ "#{root_path}#{p}"
26
29
  else
27
30
  "#{root_path}/#{_version}#{p}"
28
31
  end
@@ -54,8 +57,8 @@ module Origen
54
57
  end
55
58
  end
56
59
 
57
- # Returns any path attached to the domain, for example will return "/tfs"
58
- # for "http://origen.freescale.net/tfs"
60
+ # Returns any path attached to the domain, for example will return "/jtag"
61
+ # for "http://origen-sdk.org/jtag"
59
62
  def root_path # :nodoc:
60
63
  if domain =~ /\/\/[^\/]*(\/.*)/ # http://rubular.com/r/UY06Z6DXUS
61
64
  $1
@@ -1,75 +1,90 @@
1
1
  module Origen
2
2
  class Application
3
- # This class currently serves two APIs and is a bit of a mess.
4
- # The first API is the old style deploy which is deprecated, in this approach the
5
- # entire application was built and manged remotely with pages compiled in the remote
6
- # application.
3
+ # This class manages deploying an application's website.
7
4
  #
8
- # The new appraoch is that the web pages are compiled in the local application and
9
- # then deploy consists of simply copying them to the remote location.
5
+ # The web pages are compiled in the local application workspace and
6
+ # deploy consists of copying them to the remote location.
7
+ #
8
+ # Two directories are maintained in the remote location, one containing the live
9
+ # website and another where the new site is copied to during a deploy.
10
+ # A symlink is used to indicate which one of the two directories is currently being
11
+ # served.
12
+ #
13
+ # Upon a successful copy the symlink is switched over, thereby providing zero-downtime
14
+ # deploys and guaranteeing that the old site will stay up if an error is encountered
15
+ # during a deploy.
16
+ #
17
+ # An alternative method of deploying is also supported by pushing to a Git repository.
10
18
  class Deployer
11
19
  require 'fileutils'
12
20
 
13
- attr_writer :version, :directory, :origen_directory, :rdoc_command, :test
14
-
15
- # Deploys this release to origen.freescale.net/tfs
16
- # This needs to be made generic so that projects can use it to, right now this
17
- # code exists both here and in the TFS project
18
- def deploy(options = {})
19
- options = {
20
- test: false, # Do a test run deploy in the local workspace
21
- archive: false
22
- }.merge(options)
23
- @directory = options[:directory]
24
- @app_sub_directory = options[:app_sub_directory]
25
- @test = options[:test]
26
- @version = options[:version]
27
- @rdoc_command = options[:rdoc_command]
28
- @successful = false
29
-
30
- puts '***********************************************************************'
31
- puts "'deploy' is deprecated, please transition to 'origen web compile' instead"
32
- puts '***********************************************************************'
21
+ attr_writer :directory, :test
33
22
 
34
- begin
35
- puts ''
36
- puts 'Deploying...'
37
- puts ''
38
- populate(offline_release_dir) unless test_run?
39
- generate_web_pages
40
- generate_rdoc_pages if @rdoc_command
41
- # If web pages were generated compile them through nanoc, this is not done
42
- # as part of generate web pages to allow the application to add additional web
43
- # pages during the rdoc command
44
- if @nanoc_dir
45
- Dir.chdir @nanoc_dir do
46
- system 'nanoc'
47
- end
23
+ # Prepare for deploying, this will raise an error if the current user is found to
24
+ # have insufficient permissions to deploy to the target directory
25
+ def prepare!(options = {})
26
+ if deploy_to_git?
27
+ require 'highline/import'
28
+ @commit_message = options[:message] || ask('Enter a deployment commit message: ') do |q|
29
+ q.validate = /\w/
30
+ q.responses[:not_valid] = "Can't be blank"
31
+ end
32
+ Origen.log.info "Fetching the website's Git respository..."
33
+ begin
34
+ git_repo
35
+ fail unless git_repo.can_checkin?
36
+ rescue
37
+ puts "Sorry, but you don't have permission to write to #{Origen.config.web_directory}!"
38
+ exit 1
48
39
  end
49
- unless test_run?
50
- create_symlinks
51
- make_archive if options[:archive]
40
+ else
41
+ begin
42
+ require_remote_directories
43
+ test_file = "#{Origen.config.web_directory}/_test_file.txt"
44
+ FileUtils.rm_f(test_file) if File.exist?(test_file)
45
+ FileUtils.touch(test_file)
46
+ FileUtils.rm_f(test_file)
47
+ rescue
48
+ puts "Sorry, but you don't have permission to write to #{Origen.config.web_directory}!"
49
+ exit 1
52
50
  end
53
- @successful = true
54
- true
55
- rescue Exception => e
56
- puts e.message
57
- puts e.backtrace
58
- deploy_unsuccessful(@directory)
59
- @successful = false
60
- false
61
51
  end
62
52
  end
63
53
 
64
- # Reports whether the last deploy was successful or not
65
- def successful?
66
- @successful
54
+ def git_sub_dir
55
+ if Origen.config.web_directory =~ /\.git\/(.*)$/
56
+ Regexp.last_match(1)
57
+ end
58
+ end
59
+
60
+ # Returns a RevisionControl::Git object that points to a local copy of the website repo
61
+ # which is will build and checkout as required
62
+ def git_repo
63
+ @git_repo ||= begin
64
+ local = Pathname.new("#{Origen.app.workspace_manager.imports_directory}/git/#{Origen.config.web_directory.gsub('/', '-').symbolize}")
65
+ if git_sub_dir
66
+ remote = Origen.config.web_directory.sub("\/#{git_sub_dir}", '')
67
+ else
68
+ remote = Origen.config.web_directory
69
+ end
70
+ git = RevisionControl::Git.new(local: local, remote: remote)
71
+ if git.initialized?
72
+ git.checkout(force: true)
73
+ else
74
+ git.build(force: true)
75
+ end
76
+ git
77
+ end
67
78
  end
68
79
 
69
80
  def test_run?
70
81
  @test
71
82
  end
72
83
 
84
+ def deploy_to_git?
85
+ !!(Origen.config.web_directory =~ /\.git\/?#{git_sub_dir}$/)
86
+ end
87
+
73
88
  def require_remote_directories
74
89
  %w(remote1 remote2).each do |dir|
75
90
  dir = "#{Origen.config.web_directory}/#{dir}"
@@ -111,22 +126,33 @@ module Origen
111
126
  # directory to the remote server.
112
127
  def deploy_site
113
128
  Origen.app.listeners_for(:before_deploy_site).each(&:before_deploy_site)
114
- # Empty the contents of the remote dir
115
- if File.exist?(offline_remote_directory)
116
- FileUtils.remove_dir(offline_remote_directory, true)
117
- require_remote_directories
118
- end
119
- # Copy the new contents accross
120
- `chmod g+w -R #{Origen.root}/web/output` # Ensure group writable
121
- FileUtils.cp_r "#{Origen.root}/web/output/.", offline_remote_directory
122
- `chmod g+w -R #{offline_remote_directory}` # Double ensure group writable
123
- # Make live
124
- create_symlink offline_remote_directory, latest_symlink
125
- index = "#{Origen.config.web_directory}/index.html"
126
- # This symlink allows the site homepage to be accessed from the web root
127
- # directory rather than root directory/latest
128
- unless File.exist?(index)
129
- create_symlink "#{latest_symlink}/index.html", index
129
+ if deploy_to_git?
130
+ dir = git_repo.local.to_s
131
+ dir += "/#{git_sub_dir}" if git_sub_dir
132
+ # Delete everything so that we don't preserve old files
133
+ git_repo.delete_all(git_sub_dir)
134
+ FileUtils.mkdir_p(dir) unless File.exist?(dir)
135
+ `chmod a+w -R #{Origen.root}/web/output` # Ensure world writable, required?
136
+ FileUtils.cp_r "#{Origen.root}/web/output/.", dir
137
+ git_repo.checkin git_sub_dir, unmanaged: true, comment: @commit_message
138
+ else
139
+ # Empty the contents of the remote dir
140
+ if File.exist?(offline_remote_directory)
141
+ FileUtils.remove_dir(offline_remote_directory, true)
142
+ require_remote_directories
143
+ end
144
+ # Copy the new contents across
145
+ `chmod g+w -R #{Origen.root}/web/output` # Ensure group writable
146
+ FileUtils.cp_r "#{Origen.root}/web/output/.", offline_remote_directory
147
+ `chmod g+w -R #{offline_remote_directory}` # Double ensure group writable
148
+ # Make live
149
+ create_symlink offline_remote_directory, latest_symlink
150
+ index = "#{Origen.config.web_directory}/index.html"
151
+ # This symlink allows the site homepage to be accessed from the web root
152
+ # directory rather than root directory/latest
153
+ unless File.exist?(index)
154
+ create_symlink "#{latest_symlink}/index.html", index
155
+ end
130
156
  end
131
157
  end
132
158
 
@@ -156,6 +182,18 @@ module Origen
156
182
  title = "#{Origen.config.name} #{Origen.app.version}"
157
183
  end
158
184
  system("yard doc --output-dir #{Origen.root}/web/output/api --title '#{title}'")
185
+ # Yard doesn't have an option to ignore github-style READMEs, so force it here to
186
+ # always present the API index on the API homepage for consistency
187
+ index = "#{Origen.root}/web/output/api/index.html"
188
+ _index = "#{Origen.root}/web/output/api/_index.html"
189
+ FileUtils.rm_f(index) if File.exist?(index)
190
+ # This removes a prominent link that we are left with to a README file that doesn't work
191
+ require 'nokogiri'
192
+ doc = Nokogiri::HTML(File.read(_index))
193
+ doc.xpath('//h2[contains(text(), "File Listing")]').remove
194
+ doc.css('#files').remove
195
+ File.open(_index, 'w') { |f| f.write(doc.to_html) }
196
+ FileUtils.cp(_index, index)
159
197
  end
160
198
 
161
199
  def deploy_archive(id)
@@ -169,48 +207,17 @@ module Origen
169
207
  end
170
208
  end
171
209
 
172
- # Make an archive directory for the current release, this will create
173
- # a new directory specifically for this release and copy over the web
174
- # pages and api docs.
175
- def make_archive
176
- if version == 'latest'
177
- puts 'Cannot archive latest, need a tag reference'
178
- else
179
- dir = archive_directory(force_clear: true)
180
- FileUtils.cp_r Dir.glob("#{origen_directory}/web/output/*").sort, dir
181
- api = "#{archive_directory}/api"
182
- FileUtils.mkdir_p api unless File.exist?(api)
183
- FileUtils.cp_r Dir.glob("#{origen_directory}/api/*").sort, api
184
- end
185
- end
186
-
187
- def create_symlinks
188
- {
189
- "#{origen_directory}/web/output" => "#{root_directory}/latest",
190
- "#{origen_directory}/api" => "#{origen_directory}/web/output/api"
191
-
192
- }.each do |from, to|
193
- create_symlink(from, to)
194
- end
195
- end
196
-
197
210
  def create_symlink(from, to)
198
211
  `rm -f #{to}` if File.exist?(to)
199
212
  `ln -s #{from} #{to}` if File.exist?(from)
200
213
  end
201
214
 
202
- def populate(dir)
203
- # Populate to the new tag
204
- system "dssc setvault #{Origen.config.vault} #{dir}"
205
- system "dssc pop -rec -uni -force -ver #{version} #{dir}"
206
- end
207
-
208
215
  def web_server_dir
209
- "#{origen_directory}/web"
216
+ "#{Origen.root}/web"
210
217
  end
211
218
 
212
219
  def create_web_server_dir
213
- if File.exist?("#{origen_directory}/templates/web")
220
+ if File.exist?("#{Origen.root}/templates/web")
214
221
  dir = web_server_dir
215
222
  FileUtils.rm_rf dir if File.exist?(dir)
216
223
  FileUtils.mkdir_p dir
@@ -220,10 +227,10 @@ module Origen
220
227
  Origen.app.runner.launch action: :compile,
221
228
  files: "#{Origen.top}/templates/nanoc_dynamic",
222
229
  output: dir
223
- unless Origen.root == origen_directory
230
+ unless Origen.root == Origen.top
224
231
  # Copy any application overrides if they exist
225
- if File.exist?("#{origen_directory}/templates/nanoc")
226
- FileUtils.cp_r Dir.glob("#{origen_directory}/templates/nanoc/*").sort, dir, remove_destination: true
232
+ if File.exist?("#{Origen.root}/templates/nanoc")
233
+ FileUtils.cp_r Dir.glob("#{Origen.root}/templates/nanoc/*").sort, dir, remove_destination: true
227
234
  end
228
235
  end
229
236
  # Remove the .SYNCs
@@ -231,137 +238,6 @@ module Origen
231
238
  @nanoc_dir = dir
232
239
  end
233
240
  end
234
-
235
- # Compiles and creates the web documentation pages, combining the Origen Jekyll
236
- # infrastructure and the application specific content
237
- def generate_web_pages
238
- if File.exist?("#{origen_directory}/templates/web")
239
- create_web_server_dir
240
- # Finally compile the application web pages
241
- Origen.app.runner.generate(files: "#{origen_directory}/templates/web",
242
- compile: true,
243
- output: "#{@nanoc_dir}/content")
244
- end
245
- end
246
-
247
- # Run the rdoc task
248
- def generate_rdoc_pages
249
- if File.exist?("#{origen_directory}/templates/api_doc")
250
- Origen.app.runner.generate(files: "#{origen_directory}/templates/api_doc",
251
- compile: true,
252
- output: "#{origen_directory}/api_doc")
253
- end
254
- Dir.chdir origen_directory do
255
- system "origen #{rdoc_command}"
256
- end
257
- end
258
-
259
- def rdoc_command
260
- @rdoc_command || 'rdoc'
261
- end
262
-
263
- # The top level directory that hosts all releases
264
- def root_directory
265
- return @root_directory if @root_directory
266
- FileUtils.mkdir_p @directory unless File.exist?(@directory)
267
- @root_directory = @directory
268
- end
269
-
270
- # The directory that contains the current release
271
- def release_directory1
272
- return @release_directory1 if @release_directory1
273
- if test_run?
274
- @release_directory1 = Origen.root
275
- else
276
- @release_directory1 = "#{root_directory}/release_1"
277
- unless File.exist?(@release_directory1)
278
- FileUtils.mkdir_p @release_directory1
279
- populate(@release_directory1)
280
- end
281
- end
282
- @release_directory1
283
- end
284
-
285
- def release_directory2
286
- return @release_directory2 if @release_directory2
287
- if test_run?
288
- @release_directory2 = Origen.root
289
- else
290
- @release_directory2 = "#{root_directory}/release_2"
291
- unless File.exist?(@release_directory2)
292
- FileUtils.mkdir_p @release_directory2
293
- populate(@release_directory2)
294
- end
295
- end
296
- @release_directory2
297
- end
298
-
299
- def archive_directory(options = {})
300
- ver = version
301
- return Origen.root if test_run?
302
- if options[:force_clear]
303
- @archive_directory = "#{root_directory}/#{ver}"
304
- FileUtils.rm_rf @archive_directory if File.exist?(@archive_directory)
305
- else
306
- return @archive_directory if @archive_directory
307
- @archive_directory = "#{root_directory}/#{ver}"
308
- end
309
- FileUtils.mkdir_p @archive_directory unless File.exist?(@archive_directory)
310
- @archive_directory
311
- end
312
-
313
- def offline_release_dir
314
- link = "#{root_directory}/latest"
315
- if File.exist?(link)
316
- if File.readlink(link) =~ /release_1/
317
- @offline_release_dir = release_directory2
318
- else
319
- @offline_release_dir = release_directory1
320
- end
321
- else
322
- @offline_release_dir = release_directory1
323
- end
324
- end
325
-
326
- # The directory that contains the Origen app for the current release
327
- def origen_directory
328
- return @origen_directory if @origen_directory
329
- if test_run?
330
- @origen_directory = Origen.root
331
- else
332
- @origen_directory = @app_sub_directory ? "#{offline_release_dir}/#{@app_sub_directory}" : offline_release_dir
333
- FileUtils.mkdir_p @origen_directory unless File.exist?(@origen_directory)
334
- end
335
- @origen_directory
336
- end
337
-
338
- def version
339
- @version
340
- end
341
-
342
- # Returns true if the user account belongs to the origen group
343
- def user_belongs_to_origen?
344
- if Origen.running_on_windows?
345
- false
346
- else
347
- `"groups"`.gsub("\n", '').split(' ').include?('origen')
348
- end
349
- end
350
-
351
- # Returns true if running on CDE
352
- def running_on_cde?
353
- if Origen.running_on_windows?
354
- false
355
- else
356
- !!(`"domainname"` =~ /cde/i)
357
- end
358
- end
359
-
360
- def deploy_unsuccessful(directory)
361
- puts ''
362
- puts "*** ERROR *** - Could not deploy to: #{directory}"
363
- puts ''
364
- end
365
241
  end
366
242
  end
367
243
  end
@@ -18,7 +18,7 @@ module Origen
18
18
  #
19
19
  # However within Origen core (and possibly some plugins) it is often the case that registered
20
20
  # listeners will be objects that are not re-instantiated upon target load and persist for
21
- # the entire Origen thread. In this case use the CoreCallbacks module instead of the regular
21
+ # the entire Origen thread. In this case use the PersistentCallbacks module instead of the regular
22
22
  # Callbacks module to make these objects register as permanent listeners.
23
23
  module PersistentCallbacks
24
24
  extend ActiveSupport::Concern
@@ -132,7 +132,7 @@ The following options are available:
132
132
  Origen.app.load_target!
133
133
  if options[:remote]
134
134
  _require_web_directory
135
- _deployer.require_remote_directories
135
+ _deployer.prepare!
136
136
  # If the whole site has been requested that start from a clean slate
137
137
  _build_web_dir if ARGV.empty?
138
138
  else
@@ -1,8 +1,8 @@
1
1
  module Origen
2
2
  module RevisionControl
3
3
  class Git < Base
4
- def build
5
- if Dir["#{local}/*"].empty?
4
+ def build(options = {})
5
+ if Dir["#{local}/*"].empty? || options[:force]
6
6
  FileUtils.rm_rf(local.to_s)
7
7
  # Not using the regular 'git' method here since the local dir doesn't exist to CD into
8
8
  system "git clone #{remote} #{local}"
@@ -74,7 +74,11 @@ module Origen
74
74
  checkout unless options[:initial]
75
75
  end
76
76
  cmd = 'add'
77
- cmd += ' -u' unless options[:unmanaged]
77
+ if options[:unmanaged]
78
+ cmd += ' -A'
79
+ else
80
+ cmd += ' -u' unless options[:unmanaged]
81
+ end
78
82
  cmd += " #{paths.join(' ')}"
79
83
  git cmd, options
80
84
  if changes_pending_commit?
@@ -101,6 +105,15 @@ module Origen
101
105
  paths
102
106
  end
103
107
 
108
+ # Returns true if the current user can checkin to the given repo (means has permission
109
+ # to push in Git terms)
110
+ def can_checkin?
111
+ git('push --dry-run', verbose: false)
112
+ true
113
+ rescue
114
+ false
115
+ end
116
+
104
117
  def changes(dir = nil, options = {})
105
118
  paths, options = clean_path(dir, options)
106
119
  options = {
@@ -176,8 +189,25 @@ module Origen
176
189
  git('tag', verbose: false).include?(tag.to_s)
177
190
  end
178
191
 
192
+ def initialized?
193
+ File.exist?("#{local}/.git") &&
194
+ git('remote -v', verbose: false).any? { |r| r =~ /#{remote_without_protocol}/ } &&
195
+ !git('status', verbose: false).any? { |l| l == 'Initial commit' }
196
+ end
197
+
198
+ # Delete everything in the given directory, or the whole repo
199
+ def delete_all(dir = nil, options = {})
200
+ paths, options = clean_path(dir, options)
201
+ files = git("ls-files #{paths.first}")
202
+ FileUtils.rm_f files
203
+ end
204
+
179
205
  private
180
206
 
207
+ def remote_without_protocol
208
+ Pathname.new(remote.sub(/^.*:\/\//, ''))
209
+ end
210
+
181
211
  def create_gitignore
182
212
  c = Origen::Generator::Compiler.new
183
213
  c.compile "#{Origen.top}/templates/git/gitignore.erb",
@@ -204,10 +234,6 @@ module Origen
204
234
  end
205
235
  end
206
236
 
207
- def initialized?
208
- File.exist?("#{local}/.git")
209
- end
210
-
211
237
  # Execute a git operation, the resultant output is returned in an array
212
238
  def git(command, options = {})
213
239
  options = {
@@ -36,14 +36,11 @@ compile '*' do
36
36
  filter :codeblocks
37
37
  end
38
38
  unless ["xml", "js"].include?(item[:extension])
39
- if item[:layout] == "bootstrap"
39
+ if item[:layout] == "bootstrap" || item[:layout] == "bootstrap3" || !item[:layout]
40
40
  filter :bootstrap
41
41
  layout 'bootstrap'
42
- elsif item[:layout] == "bootstrap3"
43
- filter :bootstrap
44
- layout 'bootstrap3'
45
- elsif item[:layout] != "none"
46
- layout 'freescale'
42
+ else
43
+ fail "Unknown web page layout: #{item[:layout]}"
47
44
  end
48
45
  filter :search
49
46
  end
@@ -2,8 +2,11 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
8
+
5
9
  <title><%= @item[:title] %></title>
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
10
  <% if @item[:description] %>
8
11
  <meta name="description" content="<%= @item[:description] %>">
9
12
  <% end %>
@@ -11,53 +14,47 @@
11
14
  <meta name="author" content="<%= @item[:author] %>">
12
15
  <% end %>
13
16
 
14
- <!-- Le styles -->
15
- <link href="http://rgen.freescale.net/css/bootstrap.min.css" rel="stylesheet">
16
- <link href="http://rgen.freescale.net/css/bootstrap_custom.css" rel="stylesheet">
17
- <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">
17
+ <!-- Bootstrap core CSS -->
18
+ <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
19
+ <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
20
+ <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
21
+ <link rel="stylesheet" href="http://origen-sdk.org/css/bootstrap_custom.css"></script>
18
22
 
19
- <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
23
+ <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
20
24
  <!--[if lt IE 9]>
21
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
25
+ <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
26
+ <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
22
27
  <![endif]-->
23
28
 
24
29
  <!-- Fav and touch icons -->
25
30
  <link rel="shortcut icon" href="http://rgen.freescale.net/favicon.ico"/>
26
31
  <link rel="icon" type="image/ico" href="http://rgen.freescale.net/favicon.ico"/>
27
- <script src="http://rgen.freescale.net/js/jquery.min.js"></script>
28
- <script src="http://rgen.freescale.net/js/bootstrap.min.js"></script>
29
32
  </head>
30
33
 
31
- <body class="freescale">
32
-
33
- <div id="wrap">
34
- <div id="wrapper">
35
- <div class="container" id="top-level-container">
36
- <% if @item[:yammer_share].nil? || @item[:yammer_share] %>
37
- <div id="yj-share-button"></div>
38
- <% end %>
39
- <%= yield %>
40
- </div>
41
-
42
- <div id="push"></div>
43
- </div>
44
- </div>
34
+ <body>
35
+ <% if @item[:full_width] %>
36
+ <%= yield %>
37
+ <% else %>
38
+ <div class="container">
39
+ <%= yield %>
40
+ </div><!-- /.container -->
41
+ <% end %>
45
42
 
46
- <div id=footer>
47
- <div class="container" style="padding-top:20px">
48
- <p class="pull-left">
43
+ <footer class="footer">
44
+ <div class="container">
45
+ <p class="pull-left text-muted">
49
46
  Freescale Internal Use Only
50
47
  </p>
51
- <p class="pull-right">&copy; Copyright <%= Time.now.year %> Freescale, Inc. All Rights Reserved</p>
48
+ <p class="pull-right text-muted">&copy; Copyright <%= Time.now.year %> Freescale, Inc. All Rights Reserved</p>
52
49
  </div>
53
- <div>
54
-
55
- <script src="http://rgen.freescale.net/js/lunr.min.js"></script>
56
- <script src="http://rgen.freescale.net/js/highlight.js"></script>
57
- <script src="http://rgen.freescale.net/js/custom.js"></script>
58
- <% if @item[:yammer_share].nil? || @item[:yammer_share] %>
59
- <script type="text/javascript" src="https://c64.assets-yammer.com/assets/platform_social_buttons.min.js"></script>
60
- <script type="text/javascript">yam.platform.yammerShare();</script>
61
- <% end %>
50
+ </footer>
51
+ <!-- Bootstrap core JavaScript
52
+ ================================================== -->
53
+ <!-- Placed at the end of the document so the pages load faster -->
54
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
55
+ <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
56
+ <script src="http://origen-sdk.org/js/lunr.min.js"></script>
57
+ <script src="http://origen-sdk.org/js/highlight.js"></script>
58
+ <script src="http://origen-sdk.org/js/custom.js"></script>
62
59
  </body>
63
60
  </html>
@@ -1,10 +1,10 @@
1
1
  <div class="pull-right logo-rgen" style="margin-top: 18px; margin-left: 10px">
2
- <a href="http://rgen.freescale.net" style="text-decoration: none; color: #e66a08; font-weight: bold; font-size: 20px;">
3
- <span>RGen</span>
2
+ <a href="http://origen-sdk.org" style="text-decoration: none; color: #e66a08; font-weight: bold; font-size: 20px;">
3
+ <span>Origen</span>
4
4
  </a>
5
5
  </div>
6
6
  <div class="pull-right">
7
- <a href="http://rgen.freescale.net">
7
+ <a href="http://origen-sdk.org">
8
8
  <img src="http://rgen.freescale.net/img/fsl_logo.png" style="height:40px">
9
9
  </a>
10
10
  </div>
@@ -0,0 +1,11 @@
1
+ % render "layouts/basic.html", tab: :archive do
2
+
3
+ ## Archive
4
+
5
+ Documentation from previous releases is available via the links below:
6
+
7
+ % Origen.app.versions.reverse_each do |version|
8
+ * [<%= version %>](<%= Origen.app.config.web_domain %>/<%= version.gsub(".", "_") %>)
9
+ % end
10
+
11
+ % end
@@ -0,0 +1,40 @@
1
+ % render "layouts/basic.html", tab: :contact do
2
+
3
+ ## Contact Us
4
+
5
+ The following engineers can be contacted about this application:
6
+
7
+ % Origen.app.developers.each do |user|
8
+ % if user.email
9
+ * [<%= user.name %>](mailto:<%= user.email %>)
10
+ % else
11
+ * <%= user.name %>
12
+ % end
13
+ % end
14
+
15
+ %# An example of how to manually write a more detailed contact page:
16
+ %#Please use PDM For any bug reports or change/feature requests:
17
+ %#
18
+ %#* [C90TFS_NVM_tester on PDM](http://designpdm.freescale.net/Agile/PLMServlet?fromPCClient=true&module=PartFamilyHandler&requestUrl=module%3DPartFamilyHandler%26opcode%3DdisplayObject%26classid%3D2000004409%26objid%3D17718323%26tabid%3D2%26)
19
+ %#
20
+ %#For test related issues you can contact:
21
+ %#
22
+ %#* [Stephen McGinty](http://freeshare.freescale.net:2222/my/Person.aspx?accountname=fsl\r49409)
23
+ %#* [Thao Huynh](http://freeshare.freescale.net:2222/my/Person.aspx?accountname=fsl\R6AANF)
24
+ %#
25
+ %#For product/yield issues contact:
26
+ %#
27
+ %#* [Andrew Hardell](http://freeshare.freescale.net:2222/my/Person.aspx?accountname=fsl\R12635)
28
+ %#* [Eddie Lepore](http://freeshare.freescale.net:2222/my/Person.aspx?accountname=fsl\B06626)
29
+ %#
30
+ %#The manager of this project is:
31
+ %#
32
+ %#* [Wendy Malloch](http://freeshare.freescale.net:2222/my/Person.aspx?accountname=fsl\TTZ231)
33
+ %#
34
+ %#
35
+ %#Finally if you are not sure who to contact, or if your question may have device/reliability
36
+ %#implications, then you can use the Split Gate Flash Test and Reliability mailing list:
37
+ %#
38
+ %#* [Email SGFTANDR](mailto:SGFTANDR@freescale.com)
39
+
40
+ % end
@@ -0,0 +1,17 @@
1
+ % render "../../layouts/doc.html" do
2
+
3
+ %# Add any new entries anywhere in this list, it will get sorted into
4
+ %# alphabetical order during compilation:
5
+ %
6
+ % terms = {
7
+ % "Origen" => "A general purpose semiconductor engineering framework that uses the Ruby programming language, read more at http://origen.freescale.net",
8
+ % "Application" => "The generic name given to a project that uses Origen",
9
+ % }
10
+
11
+ | Term or Acronym | Definition
12
+ |:----------------|:----------
13
+ % terms.sort.each do |term|
14
+ | <%= term[0] %> | <%= term[1] %>
15
+ % end
16
+
17
+ % end
@@ -0,0 +1,22 @@
1
+ % render "../../layouts/doc.html" do
2
+
3
+ Follow the steps below to setup a new environment.
4
+
5
+ #### 1. Install Origen
6
+
7
+ Follow these instructions to install Origen: [How to Install Origen](http://origen.freescale.net/origen/latest/guides/starting/installing)
8
+
9
+ #### 2. Create the application workspace
10
+
11
+ This workspace must be situated outside of the Origen workspace that you have just created.
12
+
13
+ Execute the following commands:
14
+
15
+ ~~~
16
+ mkdir <%= Origen.app.name %>
17
+ cd <%= Origen.app.name %>
18
+ dssc setvault <%= Origen.config.vault %> .
19
+ dssc pop -rec -uni -get -force -ver <%= Origen.app.version %> .
20
+ ~~~
21
+
22
+ % end
@@ -0,0 +1,5 @@
1
+ % render "../../layouts/doc.html" do
2
+
3
+ Welcome to the docs...
4
+
5
+ % end
@@ -0,0 +1,12 @@
1
+ % render "layouts/basic.html" do
2
+
3
+ %# HTML tags can be embedded in mark down files if you want to do specific custom
4
+ %# formatting like this, but in most cases that is not required.
5
+ <h1><%= Origen.app.namespace %> <span style="font-size: 14px">(<%= Origen.app.version %>)</span></h1>
6
+
7
+ ### Introduction
8
+
9
+ Use this page to give a brief overview of what your application does, put the detail
10
+ in the docs section.
11
+
12
+ % end
@@ -0,0 +1,13 @@
1
+ ---
2
+ title: <%= options[:title] || Origen.app.namespace %>
3
+ ---
4
+ <%= render "templates/web/partials/navbar.html", tab: options[:tab] %>
5
+
6
+ <div class="row">
7
+ %# The markdown attribute is important if you are going to include content written
8
+ %# in markdown, without this is will be included verbatim
9
+ <div class="span12" markdown="1">
10
+ <%= yield %>
11
+
12
+ </div>
13
+ </div>
@@ -0,0 +1,32 @@
1
+ ---
2
+ title: <%= options[:title] || "#{Origen.app.namespace} - Docs" %>
3
+ ---
4
+ <%= render "templates/web/partials/navbar.html", tab: :docs %>
5
+ % s = {}
6
+
7
+ %# This creates the index on the left of your doc pages
8
+ %#
9
+ %# Naming of the keys is very important and must be of the form:
10
+ %# <section>_<page> with no other underscores
11
+ %# Origen will then look for the corresponding page in:
12
+ %# templates/web/docs/<section>/<page>.md.erb
13
+ %#
14
+ %# See here for more info: http://origen.freescale.net/doc_helpers/latest/examples/searchable/intro/
15
+
16
+ % s["Environment"] = {
17
+ % environment_introduction: "Introduction",
18
+ % environment_installation: "Installation",
19
+ % environment_definitions: "Definitions and Acronyms",
20
+ % }
21
+ %
22
+ %# Define additional sections as required, e.g.
23
+ %# s["Registers"] = {
24
+ %# registers_map: "Register Map",
25
+ %# }
26
+
27
+
28
+ % #render "doc_helpers/searchable.html", options.merge(:index => s) do
29
+
30
+ <%= yield %>
31
+
32
+ % #end
@@ -0,0 +1,24 @@
1
+ <nav class="navbar navbar-inverse navbar-fixed-top">
2
+ <div class="container">
3
+ <div class="navbar-header">
4
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
5
+ <span class="sr-only">Toggle navigation</span>
6
+ <span class="icon-bar"></span>
7
+ <span class="icon-bar"></span>
8
+ <span class="icon-bar"></span>
9
+ </button>
10
+ <a class="navbar-brand" href="<%= path "/" %>">Home</a>
11
+ </div>
12
+ <div id="navbar" class="collapse navbar-collapse">
13
+ <ul class="nav navbar-nav">
14
+ <li class="<%= options[:tab] == :docs ? 'active' : '' %>"><a href="<%= path("/docs/environment/introduction") %>">Docs</a></li>
15
+ <li class="<%= options[:tab] == :api ? 'active' : '' %>"><a href="<%= path "/api/" %>">API</a></li>
16
+ <li class="<%= options[:tab] == :references ? 'active' : '' %>"><a href="<%= path "/references" %>">References</a></li>
17
+ <li class="<%= options[:tab] == :archive ? 'active' : '' %>"><a href="<%= path "/archive" %>">Archive</a></li>
18
+ <li class="<%= options[:tab] == :release ? 'active' : '' %>"><a href="<%= path "/release_notes" %>">Release Notes</a></li>
19
+ <li class="<%= options[:tab] == :contact ? 'active' : '' %>"><a href="<%= path "/contact" %>">Contact</a></li>
20
+ </ul>
21
+ <%= import "origen/web/logo.html" %>
22
+ </div><!--/.nav-collapse -->
23
+ </div>
24
+ </nav>
@@ -0,0 +1,39 @@
1
+ % render "layouts/basic.html", tab: :references do
2
+
3
+ ## References
4
+
5
+ %# An example of how to write a references page:
6
+ %#### Documents
7
+ %#
8
+ %#* Block Guides
9
+ %# * [FTFL Block Guide](http://compass.freescale.net/go/ftflspecs)
10
+ %# * [FTFE Block Guide](http://compass.freescale.net/go/ftfespecs)
11
+ %# * [FTFA Block Guide](http://compass.freescale.net/go/ftflspecs)
12
+ %#* Hardmacro Creation Guides
13
+ %# * [TFSL Creation Guide](http://compass.freescale.net/go/tfsspec)
14
+ %# * [TFSE Creation Guide](http://compass.freescale.net/go/tfsspec)
15
+ %#* Training
16
+ %# * [FTFL Overview](http://compass.freescale.net/livelink/livelink/207024304/FTFL_Overview.ppt?func=doc.Fetch&nodeid=207024304)
17
+ %#* Quality
18
+ %# * [Quality Level Cheatsheet](http://compass.freescale.net/livelink/livelink/227376170/SOC_3.6_NVM_Quality_Level_1409_C90TFS.xlsx?func=doc.Fetch&nodeid=227376170)
19
+ %#
20
+ %#### Origen
21
+ %#
22
+ %#* [Origen Documentation](http://origen.freescale.net)
23
+ %#* [Origen Freeshare Commmunity](http://freeshare.freescale.net:2222/public/origen-cmty-svc/Pages/PublicHome.aspx)
24
+ %#
25
+ %#### Design Sync Vaults
26
+ %#
27
+ %#* C90TFS NVM Test Module
28
+ %# * <%= Origen.config.vault %>
29
+ %#* FTFL Design
30
+ %# * sync://sync-15040:15040/Projects/nvm_c90tfsw/ftfl
31
+ %# * sync://sync-15040:15040/Projects/nvm_c90tfsw/ftfl_firmware
32
+ %#* FTFE Design
33
+ %# * sync://sync-15040:15040/Projects/nvm_c90ftfe/ftfe
34
+ %# * sync://sync-15040:15040/Projects/nvm_c90ftfe/ftfe_firmware
35
+ %#* FTFA Design
36
+ %# * sync://sync-15040:15040/Projects/nvm_c90tfsw/ftfa
37
+ %# * sync://sync-15040:15040/Projects/nvm_c90tfsw/ftfa_firmware
38
+
39
+ % end
@@ -0,0 +1,5 @@
1
+ % render "layouts/basic.html", tab: :release do
2
+
3
+ <%= render "#{Origen.root}/doc/history" %>
4
+
5
+ % end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-24 00:00:00.000000000 Z
11
+ date: 2015-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -664,7 +664,7 @@ files:
664
664
  - lib/tasks/gem.rake
665
665
  - origen_site_config.yml
666
666
  - source_setup
667
- - spec/format/rgen_formatter.rb
667
+ - spec/format/origen_formatter.rb
668
668
  - templates/api_doc/README.txt.erb
669
669
  - templates/code_generators/gemfile_app.rb
670
670
  - templates/code_generators/gemfile_plugin.rb
@@ -681,8 +681,6 @@ files:
681
681
  - templates/nanoc/config.yaml
682
682
  - templates/nanoc/content/favicon.ico
683
683
  - templates/nanoc/layouts/bootstrap.html.erb
684
- - templates/nanoc/layouts/bootstrap3.html.erb
685
- - templates/nanoc/layouts/freescale.html.erb
686
684
  - templates/nanoc/lib/bootstrap_filter.rb
687
685
  - templates/nanoc/lib/codeblocks_filter.rb
688
686
  - templates/nanoc/lib/default.rb
@@ -709,6 +707,17 @@ files:
709
707
  - templates/test/set3/content.html.erb
710
708
  - templates/time/filter.rb.erb
711
709
  - templates/time/rules.rb.erb
710
+ - templates/web/archive.md.erb
711
+ - templates/web/contact.md.erb
712
+ - templates/web/docs/environment/definitions.md.erb
713
+ - templates/web/docs/environment/installation.md.erb
714
+ - templates/web/docs/environment/introduction.md.erb
715
+ - templates/web/index.md.erb
716
+ - templates/web/layouts/_basic.html.erb
717
+ - templates/web/layouts/_doc.html.erb
718
+ - templates/web/partials/_navbar.html.erb
719
+ - templates/web/references.md.erb
720
+ - templates/web/release_notes.md.erb
712
721
  homepage: http://origen-sdk.org
713
722
  licenses:
714
723
  - LGPL-3
@@ -1,71 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
- <meta name="viewport" content="width=device-width, initial-scale=1">
7
-
8
- <title><%= @item[:title] %></title>
9
- <% if @item[:description] %>
10
- <meta name="description" content="<%= @item[:description] %>">
11
- <% end %>
12
- <% if @item[:author] %>
13
- <meta name="author" content="<%= @item[:author] %>">
14
- <% end %>
15
-
16
- <!-- Le styles -->
17
- <link href="http://rgen.freescale.net/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
18
- <link href="http://rgen.freescale.net/css/bootstrap_custom.css" rel="stylesheet">
19
- <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">
20
-
21
- <!--[if lt IE 9]>
22
- <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
23
- <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
24
- <![endif]-->
25
- <!-- Fav and touch icons -->
26
- <link rel="shortcut icon" href="http://rgen.freescale.net/favicon.ico"/>
27
- <link rel="icon" type="image/ico" href="http://rgen.freescale.net/favicon.ico"/>
28
- </head>
29
-
30
- <body class="freescale">
31
-
32
- <div id="wrap">
33
- <div id="wrapper">
34
- <% if @item[:full_width] %>
35
- <% if @item[:yammer_share].nil? || @item[:yammer_share] %>
36
- <div id="yj-share-button"></div>
37
- <% end %>
38
- <%= yield %>
39
- <% else %>
40
- <div class="container" id="top-level-container">
41
- <% if @item[:yammer_share].nil? || @item[:yammer_share] %>
42
- <div id="yj-share-button"></div>
43
- <% end %>
44
- <%= yield %>
45
- </div>
46
- <% end %>
47
-
48
- <div id="push"></div>
49
- </div>
50
- </div>
51
-
52
- <div id=footer>
53
- <div class="container" style="padding-top:20px">
54
- <p class="pull-left">
55
- Freescale Internal Use Only
56
- </p>
57
- <p class="pull-right">&copy; Copyright <%= Time.now.year %> Freescale, Inc. All Rights Reserved</p>
58
- </div>
59
- <div>
60
-
61
- <script src="http://rgen.freescale.net/js/jquery.min.js"></script>
62
- <script src="http://rgen.freescale.net/bootstrap/3.2.0/js/bootstrap.min.js"></script>
63
- <script src="http://rgen.freescale.net/js/lunr.min.js"></script>
64
- <script src="http://rgen.freescale.net/js/highlight.js"></script>
65
- <script src="http://rgen.freescale.net/js/custom.js"></script>
66
- <% if @item[:yammer_share].nil? || @item[:yammer_share] %>
67
- <script type="text/javascript" src="https://c64.assets-yammer.com/assets/platform_social_buttons.min.js"></script>
68
- <script type="text/javascript">yam.platform.yammerShare();</script>
69
- <% end %>
70
- </body>
71
- </html>
@@ -1,79 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml">
4
- <head>
5
- <title><%= @item[:title] %></title>
6
- <% if @item[:description] %>
7
- <meta name="description" content="<%= @item[:description] %>">
8
- <% end %>
9
- <% if @item[:author] %>
10
- <meta name="author" content="<%= @item[:author] %>">
11
- <% end %>
12
- <link rel="shortcut icon" href="http://rgen.freescale.net/favicon.ico"/>
13
- <link rel="icon" type="image/ico" href="http://rgen.freescale.net/favicon.ico"/>
14
- <link href="http://swo.freescale.net/css/fsl.css" rel="stylesheet"
15
- type="text/css" />
16
- <link href="http://swo.freescale.net/css/leftnav.css" rel=
17
- "stylesheet" type="text/css" />
18
- <script language="JavaScript" src=
19
- "http://swo.freescale.net/jscripts/FSLHeader.js" type=
20
- "text/javascript">
21
- </script>
22
-
23
- <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
24
- <!--[if lt IE 9]>
25
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
26
- <![endif]-->
27
-
28
- <link href="http://rgen.freescale.net/css/fsl.css" rel="stylesheet" type="text/css" media="all">
29
- </head>
30
-
31
- <body>
32
- <a name="top" id="top"></a>
33
- <script language="JavaScript" type="text/javascript">
34
- HideDropDowns = true;
35
- WriteFSHeader();
36
- </script>
37
- <table width="100%">
38
- <tr>
39
- <td valign="top"><!-- BEGIN LEFT NAVIGATION, IF DESIRED -->
40
- </td>
41
-
42
- <td width="100%" valign="top">
43
- <% if false %>
44
- <div class="breadcrumbs">
45
- <a href="index.htm">Home Page</a>
46
- This Page
47
- </div>
48
- <% end %>
49
- <!-- Page Header -->
50
- <table width="100%">
51
- <tr>
52
- <td>
53
- <h1><%= @item[:title] %></h1>
54
- </td>
55
- </tr>
56
- </table>
57
-
58
- <table width="100%">
59
- <tr><!-- Begin Left Column -->
60
- <td valign="top">
61
- <%= yield %>
62
- </td>
63
- </tr>
64
- </table>
65
-
66
- </td>
67
- </tr>
68
- </table>
69
- <div>
70
- <p>Generated with <a href="http://rgen.freescale.net" target="_blank" title="RGen">RGen</a>
71
- </p>
72
- </div>
73
- <script language="JavaScript" type="text/javascript">
74
- Contact = 'mailto:stephen.mcginty@freescale.com';
75
- POPI = "FIUO"
76
- WriteFooter();
77
- </script>
78
- </body>
79
- </html>