Browse Source

Update templates for use with upcoming 0.12.0 release

Manfred Kroehnert 11 years ago
parent
commit
b6a84491ce
3 changed files with 57 additions and 20 deletions
  1. 14 9
      root/index.html
  2. 4 1
      root/js/name.js
  3. 39 10
      template.js

+ 14 - 9
root/index.html

@@ -5,21 +5,26 @@
     <title>{%= title %}</title>
     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
     <meta name="author" content="{%= author_name %}" />
-    <script type='text/javascript' src='node_modules/amber/js/amber.js'></script>
+    <script type='text/javascript' src='bower_components/amber/support/requirejs/require.min.js'></script>
+    <script type='text/javascript' src='bower_components/amber/support/amber.js'></script>
   </head>
 
   <body>
     <script type='text/javascript'>
-      loadAmber({
-          packages: ['{%= name %}'],
-          packageHome: './',
-          ready: function() {
-              $(function() {
-                  smalltalk.Browser._open();
-              });
-          }
+      require.config({ paths: {
+          '{%= namespace %}': 'js', //mapping compiled .js files
+          '{%= namespace %}/_source': 'st' //mapping smalltalk source files
+      }});
+      require([
+          'amber/devel',
+          '{%= namespace %}/{%= name %}'
+      ], function (smalltalk) {
+          //used for all new packages in IDE
+          smalltalk.defaultAmdNamespace = "{%= namespace %}";
+          smalltalk.initialize();
       });
     </script>
+    <button onclick="require('amber_vm/smalltalk').Browser._open()">class browser</button>
   </body>
 </html>
 

+ 4 - 1
root/js/name.js

@@ -1,4 +1,7 @@
+define("{%= namespace %}/{%= name %}", ["amber_vm/smalltalk", "amber_vm/nil", "amber_vm/_st", "amber_core/Kernel-Objects"], function(smalltalk,nil,_st){
 smalltalk.addPackage('{%= name %}');
-smalltalk.addClass('{%= name %}', smalltalk.Object, [], '{%= name %}');
+smalltalk.packages["{%= name %}"].transport = {"type":"amd","amdNamespace":"{%= namespace %}"};
 
+smalltalk.addClass('{%= name %}', smalltalk.Object, [], '{%= name %}');
 
+});

+ 39 - 10
template.js

@@ -9,18 +9,15 @@
 'use strict';
 
 // Basic template description.
-exports.description = 'Create an Amber Smalltalk based application.';
+exports.description = 'Create a web application based on Amber Smalltalk.';
 
 // Template-specific notes to be displayed before question prompts.
 exports.notes = ' _Project title_ should be a human-readable title.';
 
 // Template-specific notes to be displayed after question prompts.
-exports.after = 'You should now install project dependencies with _npm install_.' +
-  ' After that, you may execute project tasks with _grunt_.' +
-  ' Fmore information about installing and configuring Grunt, please see ' +
-  'the Getting Started guide:' +
-  '\n\n' +
-  'http://gruntjs.com/getting-started';
+exports.after = 'You should now install project dependencies with _bower install_.' +
+  ' Afterwards, start the development server with _./bower_components/amber/bin/amber serve_.' +
+  ' Your application is then accessible via _http://localhost:4000/_';
 
 // Any existing file or directory matching this wildcard will cause a warning.
 exports.warnOn = '*';
@@ -30,9 +27,18 @@ exports.template = function(grunt, init, done) {
 
   init.process({type: 'amber'}, [
     // Prompt for these values.
-    init.prompt('name', 'AmberApp'),
+    init.prompt('name', 'AmberApplication'),
     init.prompt('title'),
     init.prompt('description', 'Amber Application.'),
+    {
+      name: 'namespace',
+      message: 'The namespace used to store your Amber Packages.',
+    },
+    {
+      name: 'amber_version',
+      default: '0.12.0',
+      message: 'The version of Amber to use. Must be >= 0.12.0',
+    },
     init.prompt('version'),
     init.prompt('repository'),
     init.prompt('homepage'),
@@ -46,7 +52,7 @@ exports.template = function(grunt, init, done) {
     props.amberjson = props.name + '.amber.json';
     props.dependencies = {'amber': '~0.10.0'};
 
-    props.keywords = ['Amber'];
+    props.keywords = ['Amber', 'Smalltalk'];
 
     //props.devDependencies = {'amber': '~0.10.0'};
     props.node_version = '>= 0.8.0';
@@ -61,7 +67,30 @@ exports.template = function(grunt, init, done) {
     init.copyAndProcess(files, props, {noProcess: 'libs/**'});
 
     // Generate package.json file, used by npm and grunt.
-    init.writePackageJSON('package.json', props);
+    //init.writePackageJSON('package.json', props);
+
+    // generate bower.json file
+    grunt.file.write('bower.json', JSON.stringify({
+
+        "name": props.name,
+        "description": props.description,
+        "version": props.version,
+        "authors": [
+            {
+                "name": props.author_name,
+                "email": props.author_email
+            }
+        ],
+        "homepage": props.homepage,
+        "main": props.main,
+        "keywords": props.keywords,
+        "license": props.licenses,
+        "private": false,
+        "dependencies": {
+            "amber": "~" + props.amber_version
+        }
+    }, null, 4));
+
 
     // All done!
     done();