diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8fc1617a3d..521a4850d8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,8 +17,7 @@ Before you fil an issue or a pull request, quickly read of the following tips on ### Prerequisites -Most of the time, you'll have installed Kitematic before contibuting, but for the -sake of completeness, you can also install [Node.js 0.10.38](https://nodejs.org/dist/v0.10.38/). +- [Node.js 0.10.38](https://nodejs.org/dist/v0.10.38/) ### Other Prerequisites (Mac) - The latest Xcode from the Apple App Store. diff --git a/README.md b/README.md index ff1fcca754..2eb39471f4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ [![Build Status](https://travis-ci.org/kitematic/kitematic.svg?branch=master)](https://travis-ci.org/kitematic/kitematic) -[![Coverage Status](https://coveralls.io/repos/kitematic/kitematic/badge.svg?branch=master)](https://coveralls.io/r/kitematic/kitematic?branch=master) [![bitHound Score](https://www.bithound.io/github/kitematic/kitematic/badges/score.svg)](https://www.bithound.io/github/kitematic/kitematic) @@ -7,6 +6,8 @@ Kitematic is a simple application for managing Docker containers on Mac OS X and Windows (coming soon). +![Kitematic Screenshot](https://cloud.githubusercontent.com/assets/3325447/8119979/152f1010-104f-11e5-9298-cd3e92b61ec6.png) + ## Installing Kitematic [Download the latest version](https://kitematic.com/download) of Kitematic. diff --git a/package.json b/package.json index 447b9c1286..a2ee190495 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Kitematic", - "version": "0.6.5", + "version": "0.6.6", "author": "Kitematic", "description": "Simple Docker Container management for Mac OS X.", "homepage": "https://kitematic.com/", diff --git a/src/components/ContainerHomeFolders.react.js b/src/components/ContainerHomeFolders.react.js index ffcebd0213..e2fbf89e78 100644 --- a/src/components/ContainerHomeFolders.react.js +++ b/src/components/ContainerHomeFolders.react.js @@ -63,7 +63,6 @@ var ContainerHomeFolder = React.createClass({ return false; } - console.log(this.props.container.Volumes); var folders = _.map(_.omit(this.props.container.Volumes, (v, k) => k.indexOf('/Users/') !== -1), (val, key) => { var firstFolder = key; return ( diff --git a/src/components/Containers.react.js b/src/components/Containers.react.js index 41baa39979..449afb4835 100644 --- a/src/components/Containers.react.js +++ b/src/components/Containers.react.js @@ -160,7 +160,7 @@ var Containers = React.createClass({

Containers

- + New
diff --git a/src/stores/SetupStore.js b/src/stores/SetupStore.js index ddedcb3545..588d2c07e8 100644 --- a/src/stores/SetupStore.js +++ b/src/stores/SetupStore.js @@ -49,6 +49,8 @@ var _steps = [{ } catch (err) { throw null; } + } else if (!virtualBox.active()) { + yield util.exec(setupUtil.macSudoCmd(util.escapePath('/Library/Application Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh') + ' restart')); } }) }, { @@ -157,7 +159,7 @@ var SetupStore = assign(Object.create(EventEmitter.prototype), { var vboxNeedsInstall = !virtualBox.installed(); required.download = vboxNeedsInstall && (!fs.existsSync(vboxfile) || setupUtil.checksum(vboxfile) !== virtualBox.checksum()); - required.install = vboxNeedsInstall; + required.install = vboxNeedsInstall || !virtualBox.active(); required.init = required.install || !(yield machine.exists()) || (yield machine.state()) !== 'Running' || !isoversion || util.compareVersions(isoversion, packagejson['docker-version']) < 0; var exists = yield machine.exists(); diff --git a/src/utils/SetupUtil.js b/src/utils/SetupUtil.js index a7697daec1..25925741f4 100644 --- a/src/utils/SetupUtil.js +++ b/src/utils/SetupUtil.js @@ -59,7 +59,7 @@ var SetupUtil = { } }, macSudoCmd: function (cmd) { - return `${util.escapePath(resources.macsudo())} -p "Kitematic requires administrative privileges to install." sh -c \"${cmd}\"`; + return `${util.escapePath(resources.macsudo())} -p "Kitematic requires administrative privileges to install and/or start VirtualBox." sh -c \"${cmd}\"`; }, simulateProgress(estimateSeconds, progress) { var times = _.range(0, estimateSeconds * 1000, 200); diff --git a/src/utils/VirtualBoxUtil.js b/src/utils/VirtualBoxUtil.js index 80705cbe78..b6729cef60 100644 --- a/src/utils/VirtualBoxUtil.js +++ b/src/utils/VirtualBoxUtil.js @@ -23,9 +23,12 @@ var VirtualBox = { if(util.isWindows()) { return fs.existsSync('C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe') && fs.existsSync('C:\\Program Files\\Oracle\\VirtualBox\\VirtualBox.exe'); } else { - return fs.existsSync('/usr/bin/VBoxManage') && fs.existsSync('/Applications/VirtualBox.app'); + return fs.existsSync('/usr/bin/VBoxManage') && fs.existsSync('/Applications/VirtualBox.app') && fs.existsSync('/Applications/VirtualBox.app/Contents/MacOS/VBoxManage'); } }, + active: function () { + return fs.existsSync('/dev/vboxnetctl'); + }, version: function () { return new Promise((resolve, reject) => { util.exec([this.command(), '-v']).then(stdout => { diff --git a/styles/theme.less b/styles/theme.less index cf58f23e6d..6b70e109a6 100644 --- a/styles/theme.less +++ b/styles/theme.less @@ -29,6 +29,7 @@ a { text-decoration: none; color: darken(@brand-action, 10%); } + outline: 0 !important; } input[type="text"] {