added command, removed browser specific parts 1/head
authorJesse MacFadyen <purplecabbage@gmail.com>
Mon, 27 Nov 2017 20:29:11 +0000 (12:29 -0800)
committerJesse MacFadyen <purplecabbage@gmail.com>
Mon, 27 Nov 2017 20:29:11 +0000 (12:29 -0800)
bin/lib/create.js
bin/template/cordova/lib/build.js
bin/template/cordova/lib/run.js
bin/template/main.js [new file with mode: 0644]
bin/template/www/favicon.ico [deleted file]
bin/template/www/manifest.json [deleted file]
spec/manifest.spec.js [deleted file]

index 3c6b932..a6528f1 100644 (file)
@@ -74,15 +74,7 @@ module.exports.createProject = function (project_path, package_name, project_nam
     shell.cp(path.join(ROOT, 'cordova-lib', 'cordova.js'), platform_www);
 
     // copy favicon file to platform_www
-    shell.cp(path.join(ROOT, 'bin/template/www/favicon.ico'), platform_www);
-
-    // load manifest to write name/shortname
-    var manifest = require(path.join(ROOT, 'bin/template/www', 'manifest.json'));
-    manifest.name = project_name;
-    manifest.short_name = project_name;
-    // copy manifest file to platform_www
-    fs.writeFileSync(path.join(platform_www, 'manifest.json'),
-        JSON.stringify(manifest, null, 2), 'utf-8');
+    shell.cp(path.join(ROOT, 'bin/template/main.js'), project_path);
 
     return Promise.resolve();
 };
index 209cdb5..d91976c 100644 (file)
@@ -32,6 +32,5 @@ module.exports.run = function () {
 
 module.exports.help = function () {
     console.log('Usage: cordova build electron');
-    var wwwPath = path.resolve(path.join(__dirname, '../../www'));
-    console.log("Build will create the packaged app in '" + wwwPath + "'.");
+    console.log('Packages your app for distribution, or running locally.');
 };
index 2d4972f..b3e63c7 100644 (file)
  * under the License.
  */
 
-// var fs = require('fs');
-// var path = require('path');
-// var url = require('url');
-// var cordovaServe = require('cordova-serve');
+var electron = require('electron');
+var proc = require('child_process');
 
 module.exports.run = function (args) {
-    // TODO:
+
+    //console.log("runOptions : ", args);
+    var child = proc.spawn(electron,['./platforms/cordova-electron/main.js']);
+    child.on('close', function (code) {
+      process.exit(code)
+    })
 };
diff --git a/bin/template/main.js b/bin/template/main.js
new file mode 100644 (file)
index 0000000..9240855
--- /dev/null
@@ -0,0 +1,57 @@
+const electron = require('electron')
+// Module to control application life.
+const app = electron.app
+// Module to create native browser window.
+const BrowserWindow = electron.BrowserWindow
+
+// Keep a global reference of the window object, if you don't, the window will
+// be closed automatically when the JavaScript object is garbage collected.
+let mainWindow
+
+function createWindow () {
+  // Create the browser window.
+  mainWindow = new BrowserWindow({width: 800, height: 600})
+
+  // and load the index.html of the app.
+  // TODO: possibly get this data from config.xml
+  mainWindow.loadURL(`file://${__dirname}/www/index.html`)
+  mainWindow.webContents.on('did-finish-load', function() {
+    mainWindow.webContents.send('window-id', mainWindow.id);
+  });
+
+  // Open the DevTools.
+  mainWindow.webContents.openDevTools()
+
+  // Emitted when the window is closed.
+  mainWindow.on('closed', function () {
+    // Dereference the window object, usually you would store windows
+    // in an array if your app supports multi windows, this is the time
+    // when you should delete the corresponding element.
+    mainWindow = null
+  })
+}
+
+// This method will be called when Electron has finished
+// initialization and is ready to create browser windows.
+// Some APIs can only be used after this event occurs.
+app.on('ready', createWindow)
+
+// Quit when all windows are closed.
+app.on('window-all-closed', function () {
+  // On OS X it is common for applications and their menu bar
+  // to stay active until the user quits explicitly with Cmd + Q
+  if (process.platform !== 'darwin') {
+    app.quit()
+  }
+})
+
+app.on('activate', function () {
+  // On OS X it's common to re-create a window in the app when the
+  // dock icon is clicked and there are no other windows open.
+  if (mainWindow === null) {
+    createWindow()
+  }
+})
+
+// In this file you can include the rest of your app's specific main process
+// code. You can also put them in separate files and require them here.
diff --git a/bin/template/www/favicon.ico b/bin/template/www/favicon.ico
deleted file mode 100644 (file)
index fa7a758..0000000
Binary files a/bin/template/www/favicon.ico and /dev/null differ
diff --git a/bin/template/www/manifest.json b/bin/template/www/manifest.json
deleted file mode 100644 (file)
index b7e3981..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-  "name": "My App",
-  "short_name":"My Ap",
-  "description": "Description of your app from template",
-  "start_url": "index.html",
-  "scope":"index.html",
-  "icons": [{
-    "src": "img/logo.png",
-    "sizes": "192x192",
-    "type": "image/png"
-  }, {
-    "src": "img/splash.png",
-    "sizes": "512x512",
-    "type": "image/png"
-  }],
-  "default_locale": "en",
-  "display": "standalone",
-  "background_color":"#FFF",
-  "theme_color":"#000",
-  "orientation": "landscape"
-}
\ No newline at end of file
diff --git a/spec/manifest.spec.js b/spec/manifest.spec.js
deleted file mode 100644 (file)
index 8bc144f..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
- */
-
-var shell = require('shelljs');
-var fs = require('fs');
-var path = require('path');
-var util = require('util');
-
-var cordova_bin = path.join(__dirname, '../bin');// is this the same on all platforms?
-var tmpDir = path.join(__dirname, '../temp');
-var createScriptPath = path.join(cordova_bin, 'create');
-
-function createAndBuild (projectname, projectid) {
-
-    var return_code = 0;
-    var command;
-
-    // remove existing folder
-    shell.rm('-rf', tmpDir);
-    shell.mkdir(tmpDir);
-
-    // create the project
-    command = util.format('"%s" "%s/%s" "%s" "%s"', createScriptPath, tmpDir, projectname, projectid, projectname);
-
-    return_code = shell.exec(command).code;
-    expect(return_code).toBe(0);
-
-    var platWwwPath = path.join(tmpDir, projectname, 'platform_www');
-
-    var manifestPath = path.join(platWwwPath, 'manifest.json');
-    expect(fs.existsSync(manifestPath)).toBe(true);
-
-    var manifestObj = require(manifestPath);
-    expect(manifestObj.name).toBe(projectname);
-    // start_url
-    expect(manifestObj.start_url).toBe('index.html');
-    // display
-    expect(manifestObj.display).toBe('standalone');
-    // description
-    expect(manifestObj.description).toBeDefined();
-    // background_color
-    expect(manifestObj.background_color).toBeDefined();
-    // theme_color
-    expect(manifestObj.theme_color).toBeDefined();
-    // scope
-    expect(manifestObj.scope).toBeDefined();
-    // orientation
-    expect(manifestObj.orientation).toBeDefined();
-    // icons
-    expect(manifestObj.icons).toBeDefined();
-    expect(Array.isArray(manifestObj.icons)).toBe(true);
-    expect(manifestObj.icons.length).toBeDefined();
-    expect(manifestObj.icons.length).toBeGreaterThan(0);
-
-    // related_applications[{platform:'web'},{platform:'play',url:...}] ?
-
-    // clean-up
-    shell.rm('-rf', tmpDir);
-}
-
-describe('create', function () {
-
-    it('create project with manifest.json', function () {
-        var projectname = 'testcreate';
-        var projectid = 'com.test.app1';
-
-        createAndBuild(projectname, projectid);
-    });
-});