diff options
| author | Igor Minar | 2012-08-20 08:28:04 -0700 | 
|---|---|---|
| committer | Igor Minar | 2012-08-24 14:54:35 -0700 | 
| commit | 4a4b28dbf3af9a1871f00dfeded6da9eda557412 (patch) | |
| tree | 9ff84de1b3636193a95e161b271067e8b403c2c2 | |
| parent | 3e12bc481d7a6b089c32e79b45991294d046872f (diff) | |
| download | angular.js-4a4b28dbf3af9a1871f00dfeded6da9eda557412.tar.bz2 | |
chore(docs): use GAE and Google CDN for docs
Short summary: if you use local node server everything should work as before,
if you use GAE, everything should work now as well, but we pull assets from CDN.
- GAE doesn't support ':' in filenames, so I had to replace it with '_'
  but only in the filename, all servers were reconfigured to rewrite the
  urls from : to _ when doing file lookup
- We now pull angular assets from google CDN when deployed on GAE (locally
  or in production). When running on a non GAE server we pull assets from
  ../ directory as before
- Since only certain versions of Angular are available on CDN and we want
  to be able to autodeploy docs, I had to pin down the Angular files
  to a "stable" version when running on GAE
| -rw-r--r-- | Rakefile | 13 | ||||
| -rwxr-xr-x | docs/src/gen-docs.js | 7 | ||||
| -rw-r--r-- | docs/src/templates/app.yaml | 66 | ||||
| -rw-r--r-- | docs/src/templates/docs-scenario.html | 39 | ||||
| -rw-r--r-- | docs/src/templates/favicon.ico | bin | 0 -> 1150 bytes | |||
| -rw-r--r-- | docs/src/templates/index.html | 21 | ||||
| -rw-r--r-- | docs/src/templates/index.yaml | 12 | ||||
| -rw-r--r-- | lib/nodeserver/server.js | 4 | ||||
| -rw-r--r-- | version.yaml | 1 | 
9 files changed, 157 insertions, 6 deletions
| @@ -19,12 +19,13 @@ task :init do    v = YAML::load( File.open( 'version.yaml' ) )    match = v['version'].match(/^([^-]*)(-snapshot)?$/) -  NG_VERSION = Struct.new(:full, :major, :minor, :dot, :codename). +  NG_VERSION = Struct.new(:full, :major, :minor, :dot, :codename, :stable).                        new(match[1] + (match[2] ? ('-' + %x(git rev-parse HEAD)[0..7]) : ''),                            match[1].split('.')[0],                            match[1].split('.')[1],                            match[1].split('.')[2].sub(/\D+.*$/, ''), -                          v['codename']) +                          v['codename'], +                          v['stable'])  end @@ -115,6 +116,14 @@ task :docs => [:init] do    rewrite_file(path_to('docs/.htaccess')) do |content|      content.sub!('"NG_VERSION_FULL"', NG_VERSION.full)    end +  rewrite_file(path_to('docs/index.html')) do |content| +    content.sub!('"NG_VERSION_FULL"', NG_VERSION.full). +            sub!('"NG_VERSION_STABLE"', NG_VERSION.stable) +  end +  rewrite_file(path_to('docs/docs-scenario.html')) do |content| +      content.sub!('"NG_VERSION_FULL"', NG_VERSION.full). +              sub!('"NG_VERSION_STABLE"', NG_VERSION.stable) +    end  end diff --git a/docs/src/gen-docs.js b/docs/src/gen-docs.js index 2f72f404..67923fbc 100755 --- a/docs/src/gen-docs.js +++ b/docs/src/gen-docs.js @@ -21,7 +21,8 @@ writer.makeDir('build/docs/syntaxhighlighter').then(function() {    var fileFutures = [];    docs.forEach(function(doc){      // this hack is here because on OSX angular.module and angular.Module map to the same file. -    var id = doc.id.replace('angular.Module', 'angular.IModule'); +    var id = doc.id.replace('angular.Module', 'angular.IModule'). +                    replace(':', '_'); // rewrite : to _ to be GAE-friendly      fileFutures.push(writer.output('partials/' + doc.section + '/' + id + '.html', doc.html()));    }); @@ -89,6 +90,10 @@ function writeTheRest(writesFuture) {    writesFuture.push(writer.copyTpl('font/fontawesome-webfont.svgz'));    writesFuture.push(writer.copyTpl('font/fontawesome-webfont.ttf'));    writesFuture.push(writer.copyTpl('font/fontawesome-webfont.woff')); + +  writesFuture.push(writer.copyTpl('app.yaml')); +  writesFuture.push(writer.copyTpl('index.yaml')); +  writesFuture.push(writer.copyTpl('favicon.ico'));  } diff --git a/docs/src/templates/app.yaml b/docs/src/templates/app.yaml new file mode 100644 index 00000000..c204b150 --- /dev/null +++ b/docs/src/templates/app.yaml @@ -0,0 +1,66 @@ +application: docs-angularjs-org +version: 1 +runtime: python27 +api_version: 1 +threadsafe: yes +default_expiration: "2h" + +handlers: +- url: / +  static_files: index.html +  upload: index.html + +- url: /appcache.manifest +  static_files: appcache.manifest +  upload: appcache\.manifest + +- url: /docs-scenario.html +  static_files: docs-scenario.html +  upload: docs-scenario\.html + +- url: /docs-scenario.js +  static_files: docs-scenario.js +  upload: docs-scenario\.js + +- url: /favicon\.ico +  static_files: favicon.ico +  upload: favicon\.ico + +- url: /robots.txt +  static_files: robots.txt +  upload: robots\.txt + +- url: /sitemap.xml +  static_files: sitemap.xml +  upload: sitemap\.xml + +- url: /css +  static_dir: css + +- url: /font +  static_dir: font + +- url: /img +  static_dir: img + +- url: /js +  static_dir: js + +- url: /partials/(.+):(.+) +  static_files: partials/\1_\2 +  upload: partials/.* + +- url: /partials +  static_dir: partials + +- url: /syntaxhighlighter +  static_dir: syntaxhighlighter + +- url: /.* +  static_files: index.html +  upload: index.html + + +libraries: +- name: webapp2 +  version: "2.5.1" diff --git a/docs/src/templates/docs-scenario.html b/docs/src/templates/docs-scenario.html index 49b9bf89..f1816947 100644 --- a/docs/src/templates/docs-scenario.html +++ b/docs/src/templates/docs-scenario.html @@ -2,8 +2,43 @@  <html xmlns:ng="http://angularjs.org">  <head>    <title>AngularJS Docs E2E Test Runner</title> -  <script type="text/javascript" src="../angular-scenario.js" ng:autotest></script> -  <script type="text/javascript" src="docs-scenario.js"></script> +  <script> +    var gae = (location.pathname.split('/').length == 2), +        headEl = document.head, +        angularVersion = { +          current: '"NG_VERSION_FULL"', // rewrite during build +          stable: '"NG_VERSION_STABLE"' +        }; + +    addTag('script', {src: path('angular-scenario.js')}, function() { +      addTag('script', {src: 'docs-scenario.js'}, function() { +        angular.scenario.setUpAndRun(); +      }); +    }); + +    function addTag(name, attributes, callback) { +      var el = document.createElement(name), +          attrName; + +      for (attrName in attributes) { +        el.setAttribute(attrName, attributes[attrName]); +      } + +      if (callback) { +        el.onload = callback; +      } + +      headEl.appendChild(el); +    } + + +    function path(name) { +      return gae +          ? 'http://code.angularjs.org/' + angularVersion.stable + '/' + +              name.replace(/\.js$/, '-' + angularVersion.stable + '.js') +          : '../' + name; +    } +  </script>  </head>  <body>  </body> diff --git a/docs/src/templates/favicon.ico b/docs/src/templates/favicon.icoBinary files differ new file mode 100644 index 00000000..fe24a63a --- /dev/null +++ b/docs/src/templates/favicon.ico diff --git a/docs/src/templates/index.html b/docs/src/templates/index.html index 4c6dc2cb..49a1beec 100644 --- a/docs/src/templates/index.html +++ b/docs/src/templates/index.html @@ -22,8 +22,13 @@            baseUrl = location.href.replace(rUrl, indexFile),            jQuery = /index-jq[^\.]*\.html$/.test(baseUrl),            debug = /index[^\.]*-debug\.html$/.test(baseUrl), +          gae = (baseUrl.split('/').length == 4),            headEl = document.getElementsByTagName('head')[0], -          sync = true; +          sync = true, +          angularVersion = { +            current: '"NG_VERSION_FULL"', // rewrite during build +            stable: '"NG_VERSION_STABLE"' +          };        addTag('base', {href: baseUrl});        addTag('link', {rel: 'stylesheet', href: 'css/bootstrap.min.css', type: 'text/css'}); @@ -40,6 +45,20 @@        addTag('script', {src: 'js/docs-keywords.js'}, sync);        function path(name) { +        if (gae) { +          if (name.match(/^angular(-\w+)?\.js/) && !name.match(/bootstrap/)) { +            name =  '//ajax.googleapis.com/ajax/libs/angularjs/' + +                angularVersion.stable + +                '/' + +                name.replace(/\.js$/, '.min.js'); +          } else { +            name =  'http://code.angularjs.org/' + +                angularVersion.stable + +                '/' + +                name.replace(/\.js$/, '-' + angularVersion.stable +'.min.js'); +          } +          return name; +        }          return '../' + name.replace(/\.js$/, debug ? '.js' : '.min.js');        } diff --git a/docs/src/templates/index.yaml b/docs/src/templates/index.yaml new file mode 100644 index 00000000..8e6046de --- /dev/null +++ b/docs/src/templates/index.yaml @@ -0,0 +1,12 @@ +indexes: + +# AUTOGENERATED + +# This index.yaml is automatically updated whenever the dev_appserver +# detects that a new type of query is run.  If you want to manage the +# index.yaml file manually, remove the above marker line (the line +# saying "# AUTOGENERATED").  If you want to manage some indexes +# manually, move them above the marker line.  The index.yaml file is +# automatically uploaded to the admin console when you next deploy +# your application using appcfg.py. + diff --git a/lib/nodeserver/server.js b/lib/nodeserver/server.js index ab79c299..f4f9457a 100644 --- a/lib/nodeserver/server.js +++ b/lib/nodeserver/server.js @@ -108,6 +108,10 @@ StaticServlet.prototype.handleRequest = function(req, res) {        path = path.replace(match[0], '/index.html');        sys.puts('Rewrite to ' + path);    } + +  // rewrite : to _ to be GAE-friendly +  path = path.replace(':', '_'); +    // end of docs rewriting    fs.stat(path, function(err, stat) { diff --git a/version.yaml b/version.yaml index bacc06cc..734e672c 100644 --- a/version.yaml +++ b/version.yaml @@ -2,3 +2,4 @@  ---  version: 1.1.0-snapshot  codename: increase-gravatas +stable: 1.0.1 | 
