Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2eb838d

Browse files
committed
setup checks, npm version >= 3
1 parent5dcdd0a commit2eb838d

24 files changed

+393
-93
lines changed

‎lib/atom/main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ var render_1 = require('../components/render');
33
varpolyfills_1=require('../services/polyfills');
44
varsubscriptions_1=require('./subscriptions');
55
vareditor_1=require('./editor');
6-
varsetup_checks_1=require('../services/setup-checks');
6+
varsetup_1=require('../services/setup/setup');
77
varMain=(function(){
88
functionMain(){
99
window.coderoad={
1010
dir:null
1111
};
1212
polyfills_1.default();
1313
editor_1.setAtomGlobals();
14-
setup_checks_1.verifySetupComplete();
14+
setup_1.verifySetupComplete();
1515
this.root=render_1.initRoot();
1616
}
1717
Main.prototype.activate=function(){

‎lib/components/start/setup.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ var __extends = (this && this.__extends) || function (d, b) {
77
varReact=require('react');
88
varmaterial_ui_1=require('material-ui');
99
var_components_1=require('../_components');
10-
varsetup_checks_1=require('../../services/setup-checks');
10+
varsetup_1=require('../../services/setup/setup');
1111
vardefault_1=(function(_super){
1212
__extends(default_1,_super);
1313
functiondefault_1(){
1414
_super.apply(this,arguments);
1515
}
1616
default_1.prototype.render=function(){
1717
varwarning=this.props.warning;
18-
return(React.createElement("div",{className:'cr-setup'},React.createElement(material_ui_1.List,{subheader:'Setup'},React.createElement(material_ui_1.ListItem,{key:warning.key},React.createElement("h4",null,warning.title),React.createElement(_components_1.MarkdownText,{text:warning.text}))),React.createElement("br",null),!!warning.button ?React.createElement("div",{class:'cr-setup-action'},React.createElement(material_ui_1.RaisedButton,{primary:true,label:warning.button,onTouchTap:warning.click}),React.createElement("br",null),React.createElement("br",null)) :null,!!warning.verify ?React.createElement("div",{class:'cr-setup-action'},React.createElement(material_ui_1.RaisedButton,{label:"Verify "+warning.verify,secondary:true,onTouchTap:setup_checks_1.verifySetupComplete}),React.createElement("br",null),React.createElement("br",null)) :null,React.createElement("div",{className:'setup-guide'},React.createElement("span",null,"Check the",React.createElement("a",{href:'https://coderoad.github.io/docs#install'}," ",React.createElement("strong",null,"Install Guide"))))));
18+
return(React.createElement("div",{className:'cr-setup'},React.createElement(material_ui_1.List,{subheader:'Setup'},React.createElement(material_ui_1.ListItem,{key:warning.key},React.createElement("h4",null,warning.title),React.createElement(_components_1.MarkdownText,{text:warning.text}))),React.createElement("br",null),!!warning.button ?React.createElement("div",{class:'cr-setup-action'},React.createElement(material_ui_1.RaisedButton,{primary:true,label:warning.button,onTouchTap:warning.click}),React.createElement("br",null),React.createElement("br",null)) :null,!!warning.verify ?React.createElement("div",{class:'cr-setup-action'},React.createElement(material_ui_1.RaisedButton,{label:"Verify "+warning.verify,secondary:true,onTouchTap:setup_1.verifySetupComplete}),React.createElement("br",null),React.createElement("br",null)) :null,React.createElement("div",{className:'setup-guide'},React.createElement("span",null,"Check the",React.createElement("a",{href:'https://coderoad.github.io/docs#install'}," ",React.createElement("strong",null,"Install Guide"))))));
1919
};
2020
;
2121
returndefault_1;

‎lib/services/command-line.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"use strict";
2+
varexists_1=require('./exists');
3+
varchild_process_1=require('child_process');
4+
functioncommandLine(root,commands){
5+
if(process.platform==='darwin'&&process.resourcesPath){
6+
varlocalPath='/usr/local/bin/'+root;
7+
varglobalPath='/usr/bin/'+root;
8+
if(exists_1.fileExists(localPath)){
9+
root=localPath;
10+
}
11+
elseif(exists_1.fileExists(globalPath)){
12+
root=globalPath;
13+
}
14+
else{
15+
throwroot+' not found. Python may not be installed';
16+
}
17+
}
18+
varrun=child_process_1.exec(root+" "+commands);
19+
returnnewPromise(function(resolve,reject){
20+
run.stdout.on('data',function(data){
21+
resolve(data);
22+
});
23+
run.stderr.on('data',function(data){
24+
reject(data);
25+
});
26+
});
27+
}
28+
Object.defineProperty(exports,"__esModule",{value:true});
29+
exports.default=commandLine;

‎lib/services/package.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use strict";
22
varpath=require('path');
3-
varset_globals_1=require('./set-globals');
3+
varset_globals_1=require('./setup/set-globals');
44
varAction=require('../actions/actions');
55
var_base_1=require('../_base');
66
var_=require('lodash');

‎lib/services/setup/set-globals.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
"use strict";
2+
varpath=require('path');
3+
varexists_1=require('../exists');
4+
functionsetGlobals(config){
5+
window.coderoad=Object.assign(window.coderoad,{
6+
tutorial:config.name,
7+
suffix:config.config.testSuffix.substring(config.config.testSuffix.lastIndexOf('.')+1,config.config.testSuffix.length),
8+
tutorialDir:path.join(window.coderoad.dir,'node_modules',config.name,config.config.testDir),
9+
testRunner:config.config.testRunner,
10+
testRunnerOptions:config.config.testRunnerOptions||{}
11+
});
12+
loadRepo(config);
13+
loadRunnerDep(config);
14+
}
15+
exports.setGlobals=setGlobals;
16+
functionloadRunnerDep(config){
17+
varflatDep=path.join(window.coderoad.dir,'node_modules',config.config.testRunner,'package.json');
18+
vartreeDep=path.join(window.coderoad.dir,'node_modules',config.name,'node_modules',config.config.testRunner,'package.json');
19+
varrunnerMain;
20+
varrunnerRoot;
21+
if(exists_1.fileExists(flatDep)){
22+
runnerMain=require(flatDep).main;
23+
runnerRoot=flatDep;
24+
}
25+
elseif(exists_1.fileExists(treeDep)){
26+
runnerMain=require(treeDep).main;
27+
runnerRoot=treeDep;
28+
}
29+
else{
30+
varmessage='Error loading test runner. Post an issue. https://github.com/coderoad/atom-coderoad/issues';
31+
console.log(message);
32+
throwmessage;
33+
}
34+
varslash=window.coderoad.win ?'\\' :'/';
35+
runnerMain=path.join.apply(null,runnerMain.split(slash));
36+
runnerRoot=runnerRoot.substring(0,runnerRoot.lastIndexOf(slash));
37+
varpathToMain=path.join(runnerRoot,runnerMain);
38+
if(!!require(pathToMain).default){
39+
window.coderoad.runner=require(pathToMain).default;
40+
}
41+
else{
42+
window.coderoad.runner=require(pathToMain);
43+
}
44+
}
45+
functionloadRepo(config){
46+
if(config.bugs&&config.bugs.url){
47+
window.coderoad.issuesPath=config.bugs.url;
48+
}
49+
if(config.repo&&config.repo.url){
50+
varrepo=config.repo.url;
51+
if(!!repo.match(/\.git$/)){
52+
repo=repo.slice(0,repo.length-4);
53+
}
54+
window.coderoad.repo=repo;
55+
}
56+
window.coderoad.edit=config.config.edit&&!!window.coderoad.repo||false;
57+
}

‎lib/services/setup/setup-actions.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"use strict";
2+
varpath=require('path');
3+
vareditor_1=require('../../atom/editor');
4+
varactions_1=require('../../atom/actions');
5+
varsetup_1=require('./setup');
6+
varpackageData="{\n \"name\": \"demo\",\n \"dependencies\": {\n \"coderoad-functional-school\": \"^0.2.1\"\n }\n}";
7+
functioncreatePackageJson(){
8+
varpackagePath=path.join(window.coderoad.dir,'package.json');
9+
returnnewPromise(function(resolve,reject){
10+
editor_1.open(packagePath);
11+
setTimeout(function(){
12+
resolve();
13+
});
14+
}).then(function(){
15+
editor_1.set(packageData);
16+
setup_1.verifySetupComplete();
17+
});
18+
}
19+
exports.createPackageJson=createPackageJson;
20+
functionopenDirectory(){
21+
returnactions_1.openFolder();
22+
}
23+
exports.openDirectory=openDirectory;
24+
functioninstallTutorial(){
25+
returnactions_1.openTerminal();
26+
}
27+
exports.installTutorial=installTutorial;

‎lib/services/setup/setup-checks.js

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
"use strict";
2+
vartutorials_1=require('./tutorials');
3+
varsetup_actions_1=require('./setup-actions');
4+
functionhasDirectory(){
5+
returnnewPromise(function(resolve,reject){
6+
varhasDirectory=!!window.coderoad.dir;
7+
if(!hasDirectory){
8+
reject({
9+
key:'noProject',
10+
title:'Create an Atom Project',
11+
click:setup_actions_1.openDirectory,
12+
text:'Start by opening a folder to work in.\nFile > Open',
13+
button:'Open Folder',
14+
verify:null
15+
});
16+
}
17+
else{
18+
resolve();
19+
}
20+
});
21+
}
22+
exports.hasDirectory=hasDirectory;
23+
functionhasPackageJson(){
24+
returnnewPromise(function(resolve,reject){
25+
varhasPackageJson=tutorials_1.packageJsonExists();
26+
if(!hasPackageJson){
27+
reject({
28+
key:'noPackageJson',
29+
title:'Create a `package.json` file',
30+
click:setup_actions_1.createPackageJson,
31+
text:'Open a terminal in this directory and run:\n`npm init` or `npm init --y`.\n',
32+
button:'Create Package.json',
33+
verify:'Package.json created'
34+
});
35+
}
36+
resolve();
37+
});
38+
}
39+
exports.hasPackageJson=hasPackageJson;
40+
functionhasTutorialDep(){
41+
returnnewPromise(function(resolve,reject){
42+
varpackageJson=hasPackageJson ?tutorials_1.loadRootPackageJson() :null;
43+
varhasTutorialDep=!!packageJson&&_tutorialInstalled(packageJson.dependencies)||
44+
_tutorialInstalled(packageJson.devDependencies);
45+
if(!hasTutorialDep){
46+
reject({
47+
key:'noTutorialDep',
48+
title:'Install a Tutorial',
49+
click:setup_actions_1.installTutorial,
50+
button:'Install functional-school',
51+
text:'In terminal in this project directory run:\n`npm i --save coderoad-functional-school`',
52+
verify:'Tutorial Installed'
53+
});
54+
}
55+
resolve();
56+
});
57+
}
58+
exports.hasTutorialDep=hasTutorialDep;
59+
function_hasKeys(obj){
60+
returnObject.keys(obj).length>0;
61+
}
62+
function_tutorialInstalled(location){
63+
return!!location&&_hasKeys(location)&&tutorials_1.searchForTutorials(location).length>0;
64+
}

‎lib/services/setup/setup.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use strict";
2+
varsystem_checks_1=require('./system-checks');
3+
varsetup_checks_1=require('./setup-checks');
4+
var_base_1=require('../../_base');
5+
varAction=require('../../actions/actions');
6+
functionverifySetupComplete(){
7+
system_checks_1.npmVersionThreeOrLater()
8+
.then(setup_checks_1.hasDirectory)
9+
.then(setup_checks_1.hasPackageJson)
10+
.then(setup_checks_1.hasTutorialDep)
11+
.then(function(){
12+
_base_1.store.dispatch(Action.setupWarning(null));
13+
_base_1.store.dispatch(Action.loadTutorials());
14+
})
15+
.catch(function(warning){
16+
_base_1.store.dispatch(Action.setupWarning(warning));
17+
});
18+
}
19+
exports.verifySetupComplete=verifySetupComplete;

‎lib/services/setup/system-checks.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
"use strict";
2+
varcommand_line_1=require('../command-line');
3+
functionnpmVersionThreeOrLater(){
4+
varminVersion=3;
5+
returnnewPromise(function(resolve,reject){
6+
varthreeOrLater=command_line_1.default('npm','-v').then(function(res){returnparseInt(res,10)>=minVersion;});
7+
if(!threeOrLater){
8+
reject({
9+
key:'updateNpm',
10+
title:'Please update to NPM version 3+',
11+
click:null,
12+
text:'Open a terminal and run:\n `npm install npm -g`',
13+
button:'Update NPM',
14+
verify:'NPM updated to version 3 or later'
15+
});
16+
}
17+
else{
18+
resolve();
19+
}
20+
});
21+
}
22+
exports.npmVersionThreeOrLater=npmVersionThreeOrLater;

‎lib/services/setup/tutorials.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
"use strict";
2+
varpath=require('path');
3+
varfs=require('fs');
4+
varexists_1=require('../exists');
5+
vartutorialError='This is an error with the tutorial itself';
6+
functionpackageJsonExists(){
7+
varpathToPackageJson=path.join(window.coderoad.dir,'package.json');
8+
returnexists_1.fileExists(pathToPackageJson);
9+
}
10+
exports.packageJsonExists=packageJsonExists;
11+
functionloadRootPackageJson(){
12+
varpathToPackageJson=path.join(window.coderoad.dir,'package.json');
13+
if(exists_1.fileExists(pathToPackageJson)){
14+
returnJSON.parse(fs.readFileSync(pathToPackageJson,'utf8'));
15+
}
16+
returnnull;
17+
}
18+
exports.loadRootPackageJson=loadRootPackageJson;
19+
function_isTutorial(name){
20+
varpathToTutorialPackageJson=path.join(window.coderoad.dir,'node_modules',name,'package.json');
21+
if(!exists_1.fileExists(pathToTutorialPackageJson)){
22+
console.log("Error with "+name+": no package.json file found. "+tutorialError);
23+
returnfalse;
24+
}
25+
varpackageJson=JSON.parse(fs.readFileSync(pathToTutorialPackageJson,'utf8'));
26+
if(!packageJson.main&&packageJson.main.match(/coderoad.json$/)){
27+
console.log("Error with "+name+": main does not load a coderoad.json file. "+tutorialError);
28+
returnfalse;
29+
}
30+
varpathToCoderoadJson=path.join(window.coderoad.dir,'node_modules',name,packageJson.main);
31+
if(!exists_1.fileExists(pathToCoderoadJson)){
32+
console.log("Error with "+name+": no coderoad.json file. "+tutorialError);
33+
returnfalse;
34+
}
35+
;
36+
if(!packageJson.config||!packageJson.config.testRunner){
37+
console.log("Error with "+name+": no test runner specified. "+tutorialError);
38+
returnfalse;
39+
}
40+
varpathToTestRunner=path.join(window.coderoad.dir,'node_modules',packageJson.config.testRunner);
41+
returntrue;
42+
}
43+
functionsearchForTutorials(deps){
44+
if(!!deps&&Object.keys(deps).length>0){
45+
returnObject.keys(deps).filter(function(name){return_isTutorial(name);});
46+
}
47+
else{
48+
return[];
49+
}
50+
}
51+
exports.searchForTutorials=searchForTutorials;

‎lib/services/write.js

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +0,0 @@
1-
"use strict";
2-
varfs=require('fs');
3-
varpath=require('path');
4-
functiongetPath(filePath){
5-
returnpath.normalize(path.join(window.coderoad.dir,filePath));
6-
}
7-
functionwrite(filePath,text){
8-
try{
9-
fs.writeFileSync(getPath(filePath),text,'utf8');
10-
}
11-
catch(e){
12-
if(e){
13-
console.log('Error writing to filePath',filePath);
14-
}
15-
}
16-
}
17-
exports.write=write;
18-
functionreadWrite(writePath,readPath){
19-
try{
20-
write(writePath,fs.readFileSync(getPath(readPath)));
21-
}
22-
catch(e){
23-
if(e){
24-
console.log('Error reading from filePath',readPath);
25-
}
26-
}
27-
}
28-
exports.readWrite=readWrite;

‎src/atom/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {render, initRoot, togglePanel} from '../components/render';
44
importloadPolyfillsfrom'../services/polyfills';
55
import{onActivate,onDeactivate,addToStatusBar}from'./subscriptions';
66
import{setAtomGlobals}from'./editor';
7-
import{verifySetupComplete}from'../services/setup-checks';
7+
import{verifySetupComplete}from'../services/setup/setup';
88

99
classMain{
1010
root:HTMLElement;

‎src/components/start/setup.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import*asReactfrom'react';
22
import{List,ListItem,RaisedButton}from'material-ui';
33
import{MarkdownText}from'../_components';
4-
import{verifySetupComplete}from'../../services/setup-checks';
4+
import{verifySetupComplete}from'../../services/setup/setup';
55

66
exportdefaultclassextendsReact.Component<{warning:CR.SetupWarning},{}>{
77
render(){

‎src/components/start/start.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22
import*asReactfrom'react';
3-
import{Paper}from'material-ui';
3+
import{Paper,RaisedButton}from'material-ui';
44
importSetupGuidefrom'./setup';
55
importTutorialsfrom'./tutorials';
66

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp