Skip to content

Commit 9584ca9

Browse files
committed
check for latest tutorial versions
1 parent 092c946 commit 9584ca9

File tree

9 files changed

+34
-14
lines changed

9 files changed

+34
-14
lines changed

lib/components/tutorials/tutorials.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ var TutorialList = (function (_super) {
4242
var _a = this.props, tutorials = _a.tutorials, loadTutorials = _a.loadTutorials, selectTutorial = _a.selectTutorial, toggleAlert = _a.toggleAlert;
4343
return (React.createElement("div", {className: 'cr-tutorials'}, React.createElement(table_1.default, null, React.createElement(table_header_1.default, {displaySelectAll: false, adjustForCheckbox: false}, React.createElement(table_row_1.default, null, React.createElement(table_header_column_1.default, null, "Tutorial"), React.createElement(table_header_column_1.default, null, "Version"))), React.createElement(table_body_1.default, {displayRowCheckbox: false}, tutorials.map(function (tutorial, index) {
4444
return (React.createElement(table_row_1.default, null, React.createElement(table_row_column_1.default, null, React.createElement(flat_button_1.default, {label: _this.trim(tutorial.name), primary: true, onTouchTap: selectTutorial.bind(_this, tutorial)})), React.createElement(table_row_column_1.default, null, tutorial.version), "/>"));
45-
}))), React.createElement("br", null), React.createElement(flat_button_1.default, {label: 'Check for Tutorials', secondary: true, onTouchTap: loadTutorials})));
45+
}))), React.createElement("br", null), React.createElement(flat_button_1.default, {style: { margin: '0 auto' }, label: 'Check for Tutorials', secondary: true, onTouchTap: loadTutorials})));
4646
};
4747
TutorialList = __decorate([
4848
react_redux_1.connect(null, function (dispatch) {

lib/reducers/tutorials/check-tutorials.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
var path = require('path');
33
var fs = require('fs');
44
var exists_1 = require('../../services/exists');
5+
var update_tutorial_1 = require('./update-tutorial');
56
var tutorialError = 'This is an error with the tutorial itself';
67
function packageJsonExists() {
78
var pathToPackageJson = path.join(window.coderoad.dir, 'package.json');
@@ -56,7 +57,7 @@ function searchForTutorials(deps) {
5657
return {
5758
name: name,
5859
version: packageJson.version,
59-
latest: true
60+
latest: update_tutorial_1.canUpdateTutorial(name, packageJson.version)
6061
};
6162
}));
6263
}
+10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
11
"use strict";
2+
var command_line_1 = require('../../services/command-line');
23
function canUpdateTutorial(name, currentVersion) {
4+
var isLatest = command_line_1.default('npm', "outdated " + name)
5+
.then(function (res) {
6+
if (res.length > 0) {
7+
return res.match(/[0-9\.]+\s+[0-9\.]+\s+([0-9\.]+)/)[1];
8+
}
9+
else {
10+
return null;
11+
}
12+
});
313
}
414
exports.canUpdateTutorial = canUpdateTutorial;
+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
.cr-tutorials {
22
padding: 10px;
3+
&-check {
4+
margin: 0 auto;
5+
}
36
}

src/components/tutorials/tutorials.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class TutorialList extends React.Component<{
6868
</Table>
6969

7070
<br />
71-
<FlatButton label='Check for Tutorials' secondary={true} onTouchTap={loadTutorials} />
71+
<FlatButton style={{margin: '0 auto'}} label='Check for Tutorials' secondary={true} onTouchTap={loadTutorials} />
7272
</div>
7373
);
7474
}

src/reducers/tutorials/check-tutorials.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export function searchForTutorials(deps: Object): CR.Tutorial[] {
7272
return {
7373
name,
7474
version: packageJson.version,
75-
latest: true
75+
latest: canUpdateTutorial(name, packageJson.version)
7676
};
7777
}));
7878
} else {

src/reducers/tutorials/tutorials.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import {loadRootPackageJson, searchForTutorials} from './check-tutorials';
44
export default function tutorialsReducer(tutorials = [], action: CR.Action): CR.Tutorial[] {
55
switch (action.type) {
66
case Type.LOAD_TUTORIALS:
7-
let packageJson: PackageJson = loadRootPackageJson();
8-
if (!!packageJson) {
9-
return [].concat(searchForTutorials(packageJson.dependencies))
10-
.concat(searchForTutorials(packageJson.devDependencies));
11-
}
12-
return [];
7+
let packageJson: PackageJson = loadRootPackageJson();
8+
if (!!packageJson) {
9+
return [].concat(searchForTutorials(packageJson.dependencies))
10+
.concat(searchForTutorials(packageJson.devDependencies));
11+
}
12+
return [];
1313
default:
1414
return tutorials;
1515
}
+9-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import commandLine from '../../services/command-line';
22

3-
export function canUpdateTutorial(name: string, currentVersion: string) {
4-
// let latestVersion = commandLine('npm', `outdated ${name}`);
5-
// console.log(latestVersion, currentVersion);
3+
export function canUpdateTutorial(name: string, currentVersion: string): string|void {
4+
let isLatest = commandLine('npm', `outdated ${name}`)
5+
.then((res) => {
6+
if (res.length > 0) {
7+
return res.match(/[0-9\.]+\s+[0-9\.]+\s+([0-9\.]+)/)[1];
8+
} else {
9+
return null;
10+
}
11+
});
612
}

src/typings/cr/cr.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ declare namespace CR {
112112
interface Tutorial {
113113
name: string;
114114
version: string;
115-
latest?: boolean;
115+
latest?: string;
116116
}
117117

118118
interface Log {

0 commit comments

Comments
 (0)