mirror of https://github.com/docker/docs.git
Adding setup page for usage diagnostics
This commit is contained in:
parent
c1907be3d2
commit
59e14fb883
37
index.js
37
index.js
|
@ -47,7 +47,7 @@ var start = function (callback) {
|
||||||
console.log('MongoDB: ' + mongoPort);
|
console.log('MongoDB: ' + mongoPort);
|
||||||
console.log('webPort: ' + webPort);
|
console.log('webPort: ' + webPort);
|
||||||
child_process.exec('kill $(ps aux -e | grep PURPOSE=KITEMATIC | awk \'{print $2}\') && rm ' + path.join(dataPath, 'mongod.lock'), function (error, stdout, stderr) {
|
child_process.exec('kill $(ps aux -e | grep PURPOSE=KITEMATIC | awk \'{print $2}\') && rm ' + path.join(dataPath, 'mongod.lock'), function (error, stdout, stderr) {
|
||||||
var mongoChild = child_process.spawn(path.join(process.cwd(), 'resources', 'mongod'), ['--bind_ip', '127.0.0.1', '--dbpath', dataPath, '--port', mongoPort, '--unixSocketPrefix', dataPath], {
|
var mongoChild = child_process.spawn(path.join(__dirname, 'resources', 'mongod'), ['--bind_ip', '127.0.0.1', '--dbpath', dataPath, '--port', mongoPort, '--unixSocketPrefix', dataPath], {
|
||||||
env: {
|
env: {
|
||||||
PURPOSE: 'KITEMATIC'
|
PURPOSE: 'KITEMATIC'
|
||||||
}
|
}
|
||||||
|
@ -65,29 +65,16 @@ var start = function (callback) {
|
||||||
console.log('Starting node child...');
|
console.log('Starting node child...');
|
||||||
var rootURL = 'http://localhost:' + webPort;
|
var rootURL = 'http://localhost:' + webPort;
|
||||||
var user_env = process.env;
|
var user_env = process.env;
|
||||||
user_env.ROOT_URL = rootURL;
|
process.env.ROOT_URL = rootURL;
|
||||||
user_env.PORT = webPort;
|
process.env.PORT = webPort;
|
||||||
user_env.BIND_IP = '127.0.0.1';
|
process.env.BIND_IP = '127.0.0.1';
|
||||||
user_env.DB_PATH = dataPath;
|
process.env.DB_PATH = dataPath;
|
||||||
user_env.MONGO_URL = 'mongodb://localhost:' + mongoPort + '/meteor';
|
process.env.MONGO_URL = 'mongodb://localhost:' + mongoPort + '/meteor';
|
||||||
user_env.METEOR_SETTINGS = fs.readFileSync(path.join(process.cwd(), 'resources', 'settings.json'), 'utf8');
|
process.env.METEOR_SETTINGS = fs.readFileSync(path.join(__dirname, 'resources', 'settings.json'), 'utf8');
|
||||||
var nodeChild = child_process.spawn(path.join(process.cwd(), 'resources', 'node'), ['./bundle/main.js'], {
|
process.env.DIR = __dirname;
|
||||||
env: user_env
|
process.env.NODE_ENV = 'production';
|
||||||
});
|
process.env.NODE_PATH = path.join(__dirname, 'node_modules');
|
||||||
|
require('./bundle/main.js');
|
||||||
var opened = false;
|
|
||||||
nodeChild.stdout.setEncoding('utf8');
|
|
||||||
nodeChild.stdout.on('data', function (data) {
|
|
||||||
console.log(data);
|
|
||||||
if (data.indexOf('Kitematic started.') !== -1) {
|
|
||||||
if (!opened) {
|
|
||||||
opened = true;
|
|
||||||
} else {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
callback(rootURL, nodeChild, mongoChild);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -128,5 +115,7 @@ app.on('ready', function() {
|
||||||
// and load the index.html of the app.
|
// and load the index.html of the app.
|
||||||
mainWindow.loadUrl(url);
|
mainWindow.loadUrl(url);
|
||||||
mainWindow.show();
|
mainWindow.show();
|
||||||
|
mainWindow.focus();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -7,7 +7,7 @@ Docker = {};
|
||||||
Docker.DOCKER_HOST = '192.168.60.103';
|
Docker.DOCKER_HOST = '192.168.60.103';
|
||||||
|
|
||||||
Docker.DEFAULT_IMAGES_FILENAME = 'base-images-0.0.2.tar.gz';
|
Docker.DEFAULT_IMAGES_FILENAME = 'base-images-0.0.2.tar.gz';
|
||||||
Docker.DEFAULT_IMAGES_CHECKSUM = '67e7c7562991a4208c90007461ec14bc184a52ad6048e6bed3e8a8c2b306cee7'; // Sha256 Checksum
|
Docker.DEFAULT_IMAGES_CHECKSUM = 'a3517ac21034a1969d9ff15e3c41b1e2f1aa83c67b16a8bd0bc378ffefaf573b'; // Sha256 Checksum
|
||||||
|
|
||||||
Docker.client = function () {
|
Docker.client = function () {
|
||||||
return new Dockerode({host: Docker.DOCKER_HOST, port: '2375'});
|
return new Dockerode({host: Docker.DOCKER_HOST, port: '2375'});
|
||||||
|
|
|
@ -88,7 +88,9 @@ Installer.steps = [
|
||||||
callback('Boot2Docker SSH key doesn\'t exist. Fix by deleting the existing Boot2Docker VM and re-run the installer. This usually occurs because an old version of Boot2Docker is installed.');
|
callback('Boot2Docker SSH key doesn\'t exist. Fix by deleting the existing Boot2Docker VM and re-run the installer. This usually occurs because an old version of Boot2Docker is installed.');
|
||||||
} else {
|
} else {
|
||||||
Boot2Docker.stop(function(err) {
|
Boot2Docker.stop(function(err) {
|
||||||
callback();
|
Boot2Docker.upgrade(function (err) {
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,14 +13,14 @@ Router.configure({
|
||||||
SetupController = RouteController.extend({
|
SetupController = RouteController.extend({
|
||||||
layoutTemplate: 'setup_layout',
|
layoutTemplate: 'setup_layout',
|
||||||
waitOn: function () {
|
waitOn: function () {
|
||||||
return [Meteor.subscribe('installs')];
|
return [Meteor.subscribe('installs'), Meteor.subscribe('settings')];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
DashboardController = RouteController.extend({
|
DashboardController = RouteController.extend({
|
||||||
layoutTemplate: 'dashboard_layout',
|
layoutTemplate: 'dashboard_layout',
|
||||||
waitOn: function () {
|
waitOn: function () {
|
||||||
return [Meteor.subscribe('apps'), Meteor.subscribe('images'), Meteor.subscribe('installs')];
|
return [Meteor.subscribe('apps'), Meteor.subscribe('images'), Meteor.subscribe('installs'), Meteor.subscribe('settings')];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -50,6 +50,11 @@ Router.map(function () {
|
||||||
controller: 'SetupController'
|
controller: 'SetupController'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.route('setup_finish', {
|
||||||
|
path: '/setup/finish',
|
||||||
|
controller: 'SetupController'
|
||||||
|
});
|
||||||
|
|
||||||
this.route('setup', {
|
this.route('setup', {
|
||||||
path: '/',
|
path: '/',
|
||||||
controller: 'SetupController',
|
controller: 'SetupController',
|
||||||
|
@ -58,12 +63,11 @@ Router.map(function () {
|
||||||
if (!Installer.isUpToDate()) {
|
if (!Installer.isUpToDate()) {
|
||||||
if (!Installs.findOne()) {
|
if (!Installs.findOne()) {
|
||||||
console.log('No installs detected, running installer again.');
|
console.log('No installs detected, running installer again.');
|
||||||
this.redirect('/setup/intro');
|
|
||||||
} else {
|
} else {
|
||||||
// There's an install but it's lower than the current version, re-run as an 'update'.
|
// There's an install but it's lower than the current version, re-run as an 'update'.
|
||||||
Session.set('isUpdating', true);
|
Session.set('isUpdating', true);
|
||||||
this.redirect('/setup/intro');
|
|
||||||
}
|
}
|
||||||
|
this.redirect('/setup/intro');
|
||||||
} else {
|
} else {
|
||||||
this.redirect('/apps');
|
this.redirect('/apps');
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var wget = require('wget');
|
|
||||||
var nodeCrypto = require('crypto');
|
var nodeCrypto = require('crypto');
|
||||||
|
var request = require('request');
|
||||||
|
var progress = require('request-progress');
|
||||||
|
|
||||||
Util = {};
|
Util = {};
|
||||||
|
|
||||||
|
@ -10,15 +11,7 @@ Util.getHomePath = function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
Util.getBinDir = function () {
|
Util.getBinDir = function () {
|
||||||
if (process.env.NODE_ENV === 'development') {
|
return path.join(process.env.DIR, 'resources');
|
||||||
return path.join(path.join(process.env.PWD, '..'), 'resources');
|
|
||||||
} else {
|
|
||||||
if (Meteor.isClient) {
|
|
||||||
return path.join(process.cwd(), 'resources');
|
|
||||||
} else {
|
|
||||||
return path.join(process.cwd(), '../../../resources');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Util.getResourceDir = function () {
|
Util.getResourceDir = function () {
|
||||||
|
@ -97,22 +90,16 @@ Util.openTerminal = function (command) {
|
||||||
|
|
||||||
Util.downloadFile = function (url, filename, checksum, callback, progressCallback) {
|
Util.downloadFile = function (url, filename, checksum, callback, progressCallback) {
|
||||||
var doDownload = function () {
|
var doDownload = function () {
|
||||||
var percent = 0;
|
progress(request(url), {
|
||||||
var interval = setInterval(function () {
|
throttle: 250,
|
||||||
progressCallback(percent);
|
}).on('progress', function (state) {
|
||||||
}, 250);
|
progressCallback(state.percent);
|
||||||
var download = wget.download(url, filename);
|
}).on('error', function (err) {
|
||||||
download.on('error', function (err) {
|
callback(err);
|
||||||
console.log(err);
|
}).pipe(fs.createWriteStream(filename)).on('error', function (err) {
|
||||||
clearInterval(interval);
|
callback(err);
|
||||||
});
|
}).on('close', function (err) {
|
||||||
download.on('end', function (output) {
|
callback(err);
|
||||||
console.log(output);
|
|
||||||
callback();
|
|
||||||
clearInterval(interval);
|
|
||||||
});
|
|
||||||
download.on('progress', function (progress) {
|
|
||||||
percent = Math.round(progress * 100.0);
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var exec = require('exec');
|
var exec = require('exec');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
var crypto = require('crypto');
|
|
||||||
|
|
||||||
VirtualBox = {};
|
VirtualBox = {};
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,25 @@
|
||||||
margin-top: 60px;
|
margin-top: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.install-finish {
|
||||||
|
-webkit-app-region: no-drag;
|
||||||
|
margin-top: 80px;
|
||||||
|
p {
|
||||||
|
margin-top: 0;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.install-diagonistics {
|
||||||
|
-webkit-app-region: no-drag;
|
||||||
|
label {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 300px;
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
.install-continue {
|
.install-continue {
|
||||||
-webkit-app-region: no-drag;
|
-webkit-app-region: no-drag;
|
||||||
margin-top: 140px;
|
margin-top: 140px;
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
var path = require('path');
|
|
||||||
|
|
||||||
Template.dashboard_apps_layout.rendered = function () {
|
Template.dashboard_apps_layout.rendered = function () {
|
||||||
Meteor.setInterval(function () {
|
Meteor.setInterval(function () {
|
||||||
$('.header .icons a').tooltip();
|
$('.header .icons a').tooltip();
|
||||||
|
@ -26,7 +24,7 @@ Template.dashboard_apps_layout.events({
|
||||||
AppUtil.logs(this._id);
|
AppUtil.logs(this._id);
|
||||||
},
|
},
|
||||||
'click .btn-terminal': function () {
|
'click .btn-terminal': function () {
|
||||||
var cmd = Boot2Docker.command() + ' ssh -t "sudo docker-enter ' + app.docker.Id + '"';
|
var cmd = Boot2Docker.command() + ' ssh -t "sudo docker-enter ' + this.docker.Id + '"';
|
||||||
Util.openTerminal(cmd);
|
Util.openTerminal(cmd);
|
||||||
},
|
},
|
||||||
'click .btn-restart': function () {
|
'click .btn-restart': function () {
|
||||||
|
|
|
@ -41,14 +41,14 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="section dashboard-settings">
|
<div class="section dashboard-settings">
|
||||||
<div class="left-section">
|
<div class="left-section">
|
||||||
<h4>Usage Analytics</h4>
|
<h4>Usage Diagnostics</h4>
|
||||||
<p class="help-block">Send usage analytics to help us improve the developer experience. No sensitive data will be tracked. We really appreciate the help.</p>
|
<p class="help-block">Send anonymized usage diagnostics to help us improve Kitematic.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="right-section">
|
<div class="right-section">
|
||||||
{{#if install.tracking}}
|
{{#if settings.tracking}}
|
||||||
<a onclick="trackLink('turn off usage analytics')" class="btn btn-negative btn-usage-analytics-off">Turn Off Usage Analytics</a>
|
<a onclick="trackLink('turn off usage analytics')" class="btn btn-negative btn-usage-analytics-off">Turn Off Usage Diagnostics</a>
|
||||||
{{else}}
|
{{else}}
|
||||||
<a onclick="trackLink('turn on usage analytics')" class="btn btn-positive btn-usage-analytics-on">Turn On Usage Analytics</a>
|
<a onclick="trackLink('turn on usage analytics')" class="btn btn-positive btn-usage-analytics-on">Turn On Usage Diagnostics</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -22,16 +22,16 @@ Template.dashboard_settings.events({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
'click .btn-usage-analytics-on': function () {
|
'click .btn-usage-analytics-on': function () {
|
||||||
var install = Installs.findOne({});
|
var settings = Settings.findOne();
|
||||||
Installs.update(install._id, {
|
Settings.update(settings._id, {
|
||||||
$set: {
|
$set: {
|
||||||
tracking: true
|
tracking: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
'click .btn-usage-analytics-off': function () {
|
'click .btn-usage-analytics-off': function () {
|
||||||
var install = Installs.findOne({});
|
var settings = Settings.findOne();
|
||||||
Installs.update(install._id, {
|
Settings.update(settings._id, {
|
||||||
$set: {
|
$set: {
|
||||||
tracking: false
|
tracking: false
|
||||||
}
|
}
|
||||||
|
@ -40,8 +40,8 @@ Template.dashboard_settings.events({
|
||||||
});
|
});
|
||||||
|
|
||||||
Template.dashboard_settings.helpers({
|
Template.dashboard_settings.helpers({
|
||||||
install: function () {
|
settings: function () {
|
||||||
return Installs.findOne({});
|
return Settings.findOne({});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
<template name="setup_finish">
|
||||||
|
<h2>Installation Complete</h2>
|
||||||
|
<div class="container text-center">
|
||||||
|
<div class="install_logo">
|
||||||
|
<img src="/install_finished.png">
|
||||||
|
</div>
|
||||||
|
<div class="install-diagonistics">
|
||||||
|
<div class="checkbox">
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" checked> Enable anonymous usage diagnostics to help us improve Kitematic.
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="install-finish">
|
||||||
|
<a onclick="trackLink('finish install')" class="finish-button">
|
||||||
|
<img src="/continue.png">
|
||||||
|
<p>Finish</p>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
|
@ -0,0 +1,20 @@
|
||||||
|
Template.setup_finish.events({
|
||||||
|
'click .finish-button': function (e) {
|
||||||
|
var enableDiagnostics = $('.install-diagonistics input').attr('checked') ? true : false;
|
||||||
|
Installs.insert({version: Installer.CURRENT_VERSION});
|
||||||
|
var settings = Settings.findOne();
|
||||||
|
if (!settings) {
|
||||||
|
Settings.insert({tracking: enableDiagnostics});
|
||||||
|
} else {
|
||||||
|
settings.update(settings._id, {
|
||||||
|
$set: {
|
||||||
|
tracking: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Router.go('dashboard_apps');
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
|
@ -1,4 +1,11 @@
|
||||||
<template name="setup_install">
|
<template name="setup_install">
|
||||||
|
{{#if isUpdating}}
|
||||||
|
<h2>Updating</h2>
|
||||||
|
<p>This may take a few minutes.</p>
|
||||||
|
{{else}}
|
||||||
|
<h2>Installing</h2>
|
||||||
|
<p>This may take a few minutes.</p>
|
||||||
|
{{/if}}
|
||||||
<div class="container text-left">
|
<div class="container text-left">
|
||||||
<div class="steps">
|
<div class="steps">
|
||||||
{{#each steps}}
|
{{#each steps}}
|
||||||
|
|
|
@ -7,8 +7,7 @@ Template.setup_install.rendered = function() {
|
||||||
console.log('Setup failed.');
|
console.log('Setup failed.');
|
||||||
console.log(err);
|
console.log(err);
|
||||||
} else {
|
} else {
|
||||||
Installs.insert({version: Installer.CURRENT_VERSION});
|
Router.go('setup_finish');
|
||||||
Router.go('dashboard_apps');
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,11 @@
|
||||||
<template name="setup_intro">
|
<template name="setup_intro">
|
||||||
|
{{#if isUpdating}}
|
||||||
|
<h2>Welcome Back</h2>
|
||||||
|
<p>Kitematic needs to update itself to continue.</p>
|
||||||
|
{{else}}
|
||||||
|
<h2>Welcome to Kitematic</h2>
|
||||||
|
<p>This will set up everything needed to run Kitematic on your Mac.</p>
|
||||||
|
{{/if}}
|
||||||
<div class="container text-center">
|
<div class="container text-center">
|
||||||
<div class="install_logo">
|
<div class="install_logo">
|
||||||
<img src="/install_logo.png">
|
<img src="/install_logo.png">
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
Template.setup_intro.events({
|
Template.setup_intro.events({
|
||||||
'click .continue-button': function (e) {
|
'click .continue-button': function (e) {
|
||||||
console.log('here');
|
|
||||||
Router.go('setup_install');
|
Router.go('setup_install');
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
|
@ -1,13 +1,6 @@
|
||||||
<template name="setup_layout">
|
<template name="setup_layout">
|
||||||
{{setTitle}}
|
{{setTitle}}
|
||||||
<div class="setup content text-center">
|
<div class="setup content text-center">
|
||||||
{{#if isUpdating}}
|
|
||||||
<h2>Welcome Back</h2>
|
|
||||||
<p>Kitematic needs to update itself to continue.</p>
|
|
||||||
{{else}}
|
|
||||||
<h2>Welcome to Kitematic</h2>
|
|
||||||
<p>This will set up everything needed to run Kitematic on your Mac.</p>
|
|
||||||
{{/if}}
|
|
||||||
{{> yield}}
|
{{> yield}}
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
Settings = new Meteor.Collection('settings');
|
||||||
|
|
||||||
|
Settings.allow({
|
||||||
|
'update': function () {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
'insert': function () {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
'remove': function () {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
Binary file not shown.
Before Width: | Height: | Size: 857 B |
Binary file not shown.
After Width: | Height: | Size: 9.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
|
@ -9,3 +9,7 @@ Meteor.publish('images', function () {
|
||||||
Meteor.publish('installs', function () {
|
Meteor.publish('installs', function () {
|
||||||
return Installs.find({});
|
return Installs.find({});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Meteor.publish('settings', function () {
|
||||||
|
return Settings.find({});
|
||||||
|
});
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"dockerode": "2.0.3",
|
"dockerode": "2.0.3",
|
||||||
"tar": "0.1.20",
|
"tar": "0.1.20",
|
||||||
"ansi-to-html": "0.2.0",
|
"ansi-to-html": "0.2.0",
|
||||||
"wget": "0.0.1"
|
"request": "2.42.0",
|
||||||
|
"request-progress": "0.3.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,8 @@ source $DIR/colors.sh
|
||||||
|
|
||||||
BASE=$DIR/..
|
BASE=$DIR/..
|
||||||
NPM="$BASE/cache/node/bin/npm"
|
NPM="$BASE/cache/node/bin/npm"
|
||||||
|
NODE="$BASE/cache/node/bin/node"
|
||||||
|
VERSION=$($NODE -pe 'JSON.parse(process.argv[1]).version' "$(cat package.json)")
|
||||||
|
|
||||||
pushd $BASE/meteor
|
pushd $BASE/meteor
|
||||||
|
|
||||||
|
@ -28,51 +30,55 @@ popd
|
||||||
|
|
||||||
pushd $BASE
|
pushd $BASE
|
||||||
|
|
||||||
rm -rf dist/osx/Kitematic.app
|
rm -rf dist/osx
|
||||||
rm -rf dist/osx/Kitematic.zip
|
|
||||||
mkdir -p dist/osx/
|
mkdir -p dist/osx/
|
||||||
|
|
||||||
cecho "-----> Creating Kitematic.app..." $blue
|
DIST_APP=Kitematic.app
|
||||||
|
|
||||||
|
cecho "-----> Creating $DIST_APP..." $blue
|
||||||
find cache/atom-shell -name "debug\.log" -print0 | xargs -0 rm -rf
|
find cache/atom-shell -name "debug\.log" -print0 | xargs -0 rm -rf
|
||||||
cp -R cache/atom-shell/Atom.app dist/osx/
|
cp -R cache/atom-shell/Atom.app dist/osx/
|
||||||
mv dist/osx/Atom.app dist/osx/Kitematic.app
|
mv dist/osx/Atom.app dist/osx/$DIST_APP
|
||||||
mkdir -p dist/osx/Kitematic.app/Contents/Resources/app
|
mkdir -p dist/osx/$DIST_APP/Contents/Resources/app
|
||||||
|
|
||||||
cecho "-----> Copying meteor bundle into Kitematic.app..." $blue
|
cecho "-----> Copying meteor bundle into $DIST_APP..." $blue
|
||||||
cp -R bundle dist/osx/Kitematic.app/Contents/Resources/app/
|
mv bundle dist/osx/$DIST_APP/Contents/Resources/app/
|
||||||
|
|
||||||
cecho "-----> Copying node-webkit app into Kitematic.app..." $blue
|
cecho "-----> Copying node-webkit app into $DIST_APP..." $blue
|
||||||
cp index.js dist/osx/Kitematic.app/Contents/Resources/app/
|
cp index.js dist/osx/$DIST_APP/Contents/Resources/app/
|
||||||
cp package.json dist/osx/Kitematic.app/Contents/Resources/app/
|
cp package.json dist/osx/$DIST_APP/Contents/Resources/app/
|
||||||
cp -R node_modules dist/osx/Kitematic.app/Contents/Resources/app/
|
cp -R node_modules dist/osx/$DIST_APP/Contents/Resources/app/
|
||||||
|
|
||||||
cecho "-----> Copying binary files to Kitematic.app" $blue
|
cecho "-----> Copying binary files to $DIST_APP" $blue
|
||||||
mkdir -p dist/osx/Kitematic.app/Contents/Resources/app/resources
|
mkdir -p dist/osx/$DIST_APP/Contents/Resources/app/resources
|
||||||
cp -v resources/* dist/osx/Kitematic.app/Contents/Resources/app/resources/ || :
|
cp -v resources/* dist/osx/$DIST_APP/Contents/Resources/app/resources/ || :
|
||||||
|
|
||||||
chmod +x dist/osx/Kitematic.app/Contents/Resources/app/resources/$BOOT2DOCKER_CLI_FILE
|
cecho "-----> Copying icon to $DIST_APP" $blue
|
||||||
chmod +x dist/osx/Kitematic.app/Contents/Resources/app/resources/$COCOASUDO_FILE
|
cp kitematic.icns dist/osx/$DIST_APP/Contents/Resources/atom.icns
|
||||||
chmod +x dist/osx/Kitematic.app/Contents/Resources/app/resources/install
|
|
||||||
chmod +x dist/osx/Kitematic.app/Contents/Resources/app/resources/terminal
|
chmod +x dist/osx/$DIST_APP/Contents/Resources/app/resources/$BOOT2DOCKER_CLI_FILE
|
||||||
chmod +x dist/osx/Kitematic.app/Contents/Resources/app/resources/unison
|
chmod +x dist/osx/$DIST_APP/Contents/Resources/app/resources/$COCOASUDO_FILE
|
||||||
chmod +x dist/osx/Kitematic.app/Contents/Resources/app/resources/node
|
chmod +x dist/osx/$DIST_APP/Contents/Resources/app/resources/install
|
||||||
|
chmod +x dist/osx/$DIST_APP/Contents/Resources/app/resources/terminal
|
||||||
|
chmod +x dist/osx/$DIST_APP/Contents/Resources/app/resources/unison
|
||||||
|
chmod +x dist/osx/$DIST_APP/Contents/Resources/app/resources/node
|
||||||
|
|
||||||
|
cecho "-----> Updating Info.plist version to $VERSION" $blue
|
||||||
|
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $VERSION" $BASE/dist/osx/$DIST_APP/Contents/Info.plist
|
||||||
|
/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName Kitematic" $BASE/dist/osx/$DIST_APP/Contents/Info.plist
|
||||||
|
|
||||||
if [ -f $DIR/sign.sh ]; then
|
if [ -f $DIR/sign.sh ]; then
|
||||||
cecho "-----> Signing app file...." $blue
|
cecho "-----> Signing app file...." $blue
|
||||||
$DIR/sign.sh $BASE/dist/osx/Kitematic.app
|
$DIR/sign.sh $BASE/dist/osx/$DIST_APP
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pushd dist/osx
|
pushd dist/osx
|
||||||
cecho "-----> Creating disributable zip file...." $blue
|
cecho "-----> Creating disributable zip file...." $blue
|
||||||
ditto -c -k --sequesterRsrc --keepParent Kitematic.app Kitematic.zip
|
ditto -c -k --sequesterRsrc --keepParent $DIST_APP Kitematic-$VERSION.zip
|
||||||
popd
|
popd
|
||||||
|
|
||||||
VERSION=$(node -pe 'JSON.parse(process.argv[1]).version' "$(cat package.json)")
|
|
||||||
cecho "Updating Info.plist version to $VERSION"
|
|
||||||
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion 0.3.0" $BASE/dist/osx/Kitematic.app/Contents/Info.plist
|
|
||||||
|
|
||||||
cecho "Done." $green
|
cecho "Done." $green
|
||||||
cecho "Kitematic app available at dist/osx/Kitematic.app" $green
|
cecho "Kitematic app available at dist/osx/$DIST_APP" $green
|
||||||
cecho "Kitematic zip distribution available at dist/osx/Kitematic.zip" $green
|
cecho "Kitematic zip distribution available at dist/osx/Kitematic.zip" $green
|
||||||
|
|
||||||
popd
|
popd
|
||||||
|
|
|
@ -3,9 +3,12 @@
|
||||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
BASE=$DIR/..
|
BASE=$DIR/..
|
||||||
|
|
||||||
|
source $BASE/script/setup.sh
|
||||||
|
|
||||||
export ROOT_URL=https://localhost:3000
|
export ROOT_URL=https://localhost:3000
|
||||||
export DOCKER_HOST=http://192.168.59.103
|
export DOCKER_HOST=http://192.168.59.103
|
||||||
export DOCKER_PORT=2375
|
export DOCKER_PORT=2375
|
||||||
|
export DIR=$BASE
|
||||||
|
|
||||||
cd $BASE/meteor
|
cd $BASE/meteor
|
||||||
exec 3< <(meteor --settings $BASE/meteor/settings_dev.json)
|
exec 3< <(meteor --settings $BASE/meteor/settings_dev.json)
|
||||||
|
|
|
@ -15,6 +15,16 @@ BOOT2DOCKER_CLI_VERSION=1.2.0
|
||||||
BOOT2DOCKER_CLI_VERSION_FILE=boot2docker-$BOOT2DOCKER_CLI_VERSION
|
BOOT2DOCKER_CLI_VERSION_FILE=boot2docker-$BOOT2DOCKER_CLI_VERSION
|
||||||
BOOT2DOCKER_CLI_FILE=boot2docker
|
BOOT2DOCKER_CLI_FILE=boot2docker
|
||||||
|
|
||||||
|
ATOM_SHELL_VERSION=0.16.2
|
||||||
|
ATOM_SHELL_FILE=atom-shell-v$ATOM_SHELL_VERSION-darwin-x64.zip
|
||||||
|
|
||||||
|
if [ ! -f $ATOM_SHELL_FILE ]; then
|
||||||
|
cecho "-----> Downloading Boot2docker CLI..." $purple
|
||||||
|
curl -L -o $ATOM_SHELL_FILE https://github.com/atom/atom-shell/releases/download/v$ATOM_SHELL_VERSION/$ATOM_SHELL_FILE
|
||||||
|
mkdir -p atom-shell
|
||||||
|
unzip -d atom-shell $ATOM_SHELL_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
if [ ! -f $BOOT2DOCKER_CLI_VERSION_FILE ]; then
|
if [ ! -f $BOOT2DOCKER_CLI_VERSION_FILE ]; then
|
||||||
cecho "-----> Downloading Boot2docker CLI..." $purple
|
cecho "-----> Downloading Boot2docker CLI..." $purple
|
||||||
curl -L -o $BOOT2DOCKER_CLI_VERSION_FILE https://s3.amazonaws.com/kite-installer/boot2docker-v$BOOT2DOCKER_CLI_VERSION
|
curl -L -o $BOOT2DOCKER_CLI_VERSION_FILE https://s3.amazonaws.com/kite-installer/boot2docker-v$BOOT2DOCKER_CLI_VERSION
|
||||||
|
@ -55,7 +65,7 @@ popd
|
||||||
NPM="$BASE/cache/node/bin/npm"
|
NPM="$BASE/cache/node/bin/npm"
|
||||||
|
|
||||||
export npm_config_disturl=https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist
|
export npm_config_disturl=https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist
|
||||||
export npm_config_target=0.16.0
|
export npm_config_target=0.16.2
|
||||||
export npm_config_arch=ia32
|
export npm_config_arch=ia32
|
||||||
HOME=~/.atom-shell-gyp $NPM install
|
HOME=~/.atom-shell-gyp $NPM install
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue