Skip to content

Commit b4ef9c9

Browse files
init starterkit-cli
1 parent 438dc68 commit b4ef9c9

File tree

4 files changed

+153
-14
lines changed

4 files changed

+153
-14
lines changed

README.md

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,32 @@
1-
# angular-2-rails-starterkit
1+
# Angular 2 Rails Starterkit
22
quick start with angular 2 and rails api application
3+
4+
<img src="https://raw.githubusercontent.com/igorbezsmertnyi/angular-2-rails-starterkit/master/src/logo.png" height="200px" />
5+
6+
7+
## Installtion
8+
```npm install angular-2-rails-starterkit -g```<br/>
9+
for linux ```sudo npm install angular-2-rails-starterkit -g```
10+
11+
## Quick Start
12+
- **Install Angular-CLI**
13+
```npm install -g @angular/cli```<br/>
14+
for linux ```sudo npm install -g @angular/cli```
15+
- **Generate Rails project**<br/>
16+
```rails new PROJECT_NEME --api```
17+
- **Install gems**<br/>
18+
Add to **Gemfile**
19+
> ```gem 'rack-rewrite'```<br/>
20+
> ```gem 'rack-cors'```<br/>
21+
> ```gem 'foreman'``` to ```group :development```<br/>
22+
>then run ```bundle install```
23+
- **Inside project folder run starterkit**<br/>
24+
```starterkit -g```
25+
- **Strat Server**<br/>
26+
```bundle exec foreman start -f Procfile.dev```
27+
- **Generate Production**<br/>
28+
```bundle exec foreman start -f Procfile.prod```
29+
30+
31+
32+
[LINK TO NPM PACKAGE](https://www.npmjs.com/package/angular-2-rails-starterkit)

package.json

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "angular-2-rails-starterkit",
3-
"version": "0.1.2",
4-
"description": "qucki start with Angular 2 frame fork and rails server, with deployment to Heroku",
3+
"version": "0.2.0",
4+
"description": "qucki start with Angular 2 framework and rails server, with deployment to Heroku",
55
"main": "starterkit-cli.js",
66
"bin": {
77
"starterkit": "starterkit-cli.js"
@@ -18,7 +18,9 @@
1818
"ng2",
1919
"TypeScript",
2020
"Rails",
21-
"Angular-Rails"
21+
"Angular-Rails",
22+
"Angular 2 Rails",
23+
"Angular 2 Rails tutorial"
2224
],
2325
"author": "Igor Bezsmertnyi",
2426
"license": "MIT",
@@ -28,6 +30,13 @@
2830
},
2931
"homepage": "https://github.com/igorbezsmertnyi/angular-2-rails-starterkit#readme",
3032
"dependencies": {
31-
"commander": "^2.9.0"
33+
"bluebird": "^3.5.0",
34+
"chalk": "^1.1.3",
35+
"cli-spinner": "^0.2.6",
36+
"commander": "^2.9.0",
37+
"figlet": "^1.2.0",
38+
"git-cli": "^0.10.0",
39+
"inquirer": "^3.0.6",
40+
"node-cmd": "^3.0.0"
3241
}
3342
}

src/logo.png

99.1 KB
Loading

starterkit-cli.js

100644100755
Lines changed: 109 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,120 @@ const path = require('path')
33
const Repository = require('git-cli').Repository
44
const fs = require('fs')
55
const Program = require('commander')
6+
const Promise = require('bluebird')
7+
const cmd = require('node-cmd')
8+
const inquirer = require('inquirer')
9+
const chalk = require('chalk')
10+
const Spinner = require('cli-spinner').Spinner
11+
const figlet = require('figlet')
12+
13+
14+
module.exports = {
15+
getCurrentDirectoryBase: () => {
16+
return path.basename(process.cwd())
17+
},
18+
directoryExists: (filePath) => {
19+
try {
20+
return fs.statSync(filePath).isDirectory()
21+
} catch (err) {
22+
return false
23+
}
24+
}
25+
}
26+
27+
28+
const spinner = new Spinner(chalk.bold.magenta('install %s'))
29+
spinner.setSpinnerString(18)
30+
31+
const welcome = () => {
32+
console.log(
33+
chalk.yellow(
34+
figlet.textSync('Angular Rails Starterkit', { horizontalLayout: 'full' })
35+
)
36+
)
37+
}
38+
39+
const error = (err) => {
40+
spinner.stop()
41+
console.log(chalk.bold.red(err))
42+
process.exit(-1)
43+
}
44+
45+
const beforeInstall = () => {
46+
cmd.get('ls client',
47+
(err, data, stderr) => {
48+
if (!data) {
49+
install()
50+
} else {
51+
console.log(chalk.bold.red('Cilent folder already exist\r\n'))
52+
const questions = [{
53+
name: 'option',
54+
type: 'list',
55+
message: 'Are you sure wont rewrite client folder',
56+
choices: [ 'yes', 'not']
57+
}]
58+
59+
inquirer.prompt(questions).then(function (answers) {
60+
if (answers.option === 'yes') {
61+
cmd.get('rm -rf client', install)
62+
} else {
63+
process.exit(1)
64+
}
65+
})
66+
}
67+
}
68+
)
69+
}
70+
71+
const afterInstall = () => {
72+
console.log(chalk.blue('Installing packages for tooling via npm.'))
73+
cmd.get('cd client/; npm i',
74+
(err, data, stderr) => {
75+
if (err) {
76+
error(err)
77+
} else {
78+
spinner.stop()
79+
console.log(data)
80+
console.log(chalk.green('Successfuly generated'))
81+
}
82+
})
83+
}
684

785
const install = () => {
8-
return Repository.clone('https://github.com/igorbezsmertnyi/angular-2-rails-starterkit', 'client')
9-
.then(repo => console.log(repo))
10-
.catch(e => console.log(e))
86+
Repository.clone('https://github.com/igorbezsmertnyi/starterkit-content', 'client')
87+
.then(repo => {
88+
spinner.start()
89+
console.log(chalk.blue('Successfully initialized git.'))
90+
afterInstall()
91+
})
92+
.catch(err => error(err))
93+
}
94+
95+
const herokuProcfiles = () => {
96+
fs.writeFile("./Procfile", "web: bundle exec rails server -p $PORT", (err) => {
97+
if (err) error(err)
98+
console.log(chalk.green('Procfile - created'))
99+
})
100+
101+
fs.writeFile("./Procfile.prod", "angular-assets: sh -c 'cd client/ ; ng build'", (err) => {
102+
if (err) error(err)
103+
console.log(chalk.green('Procfile.prod - created'))
104+
})
105+
106+
fs.writeFile("./Procfile.dev", "angular-assets: sh -c 'cd client/ ; ng build --dev --watch'\r\nrails-server: rails s -p 3000", (err) => {
107+
if (err) error(err)
108+
console.log(chalk.green('Procfile.dev - created'))
109+
})
11110
}
12111

13112
Program
14-
.option('-i, --install [name]', 'Instalation')
15-
.option('-H, --heroku', 'Heroku deployment')
113+
.option('-g, --generate', 'Generate files')
114+
.option('-h, --help', 'Help')
16115
.parse(process.argv)
17116

18-
if (Program.install) {
19-
console.log('install %s app', Program.install)
20-
install()
117+
if (Program.generate) {
118+
welcome()
119+
console.log(chalk.bold.magenta('Generate files'))
120+
beforeInstall()
121+
herokuProcfiles()
21122
}
22-
if (Program.heroku) console.log('heroku')

0 commit comments

Comments
 (0)