-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinitES6.sh
executable file
·182 lines (127 loc) · 3.93 KB
/
initES6.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#!/bin/bash
cwd=${name:-${PWD##*/}}
echo;
read -p "👉 Project name for package.json [${cwd}]: " name;
name=${name:-${cwd}}
noJsBaseName=${name/%\.js/}
sed -i '' "s/init-es6/${name}/" package.json;
sed -i '' "s/\.js\.js/.js/" package.json;
printf "✨ Project name is ${name}\n";
skipquestions="no"
if [[ $1 == "-y" || $1 == "--yes" ]]; then
skipquestions="yes"
fi;
if [ ! -d "src" ]; then mkdir src; fi;
printf "✨ New \`src\` dir created\n";
if [ ! -d "flow" ]; then mkdir flow; fi;
printf "✨ New \`flow\` dir created\n";
if [ ! -d "flow-typed" ]; then mkdir flow-typed; fi;
printf "✨ New \`flow-typed\` dir created\n";
if [ ! -d "dist" ]; then mkdir dist; fi;
printf "✨ New \`dist\` dir created\n\n";
printf "👉 ESLint\n";
if [[ $skipquestions == "no" ]]; then
read -n 1 -p "Pick (A)ttitude or (E)SNext config, [a]/e: " eslint && echo;
fi;
eslint=${eslint:-a}
if [[ -z $eslint || $eslint == "a" || $eslint == "A" ]]; then
if [ -e "attitude/.eslintrc" ]; then
mv attitude/.eslintrc .eslintrc;
yarn add eslint-config-with-attitude --dev;
yarn eslint-config-with-attitude-linker link;
fi;
printf "✅ ESLint with Attitude Config\n\n";
else
if [ -e "default/.eslintrc" ]; then
mv default/.eslintrc .eslintrc;
yarn add eslint eslint-config-esnext --dev;
fi;
printf "✅ ESLint ESNext Config\n\n";
fi;
printf "👉 Browserlist\n";
if [[ $skipquestions == "no" ]]; then
read -n 1 -p "Pick (A)ttitude or (D)efault browserslist config, [a]/d: " browserslist && echo;
fi;
browserslist=${browserslist:-a}
yarn add eslint-plugin-compat;
if [[ -z $browserslist || $browserslist == "a" || $browserslist == "A" ]]; then
if [ -e attitude/.browserslistrc ]; then
mv attitude/.browserslistrc .browserslistrc
fi;
printf "✅ Browserslist config set to Attitude\n\n";
else
printf "✅ Browserslist config set to Default\n\n";
fi;
printf "👉 Babel...\n"
yarn add @babel/core \
@babel/cli \
@babel/preset-env \
--dev;
echo;
printf "👉 Terser...\n"
yarn add terser --dev;
echo;
printf "👉 Flow\n";
if [[ $skipquestions == "no" ]]; then
read -n 1 -p "Use Flow types? [y]/n: " useflow && echo;
fi;
useflow=${useflow:-y}
if [[ $useflow != "y" ]]; then
touch src/${noJsBaseName}.js;
printf "👎 No Flow\n\n";
else
if [ -e attitude/.flowconfig ]; then
mv attitude/.flowconfig .flowconfig;
sed -i '' "s/\/\/\ *\(\"@babel\/preset-flow\".*\)/\1/" .babelrc
yarn add flow-bin @babel/preset-flow --dev;
fi;
if [ ! -e "src/${noJsBaseName}.js" ];
then printf "// @flow\n" > src/${noJsBaseName}.js;
fi;
printf "✅ Flow is now set up\n\n";
fi;
printf "👉 Licence\n";
if [[ $skipquestions == "no" ]]; then
read -n 1 -p "Keep the MIT licence?: [y]/n: " mit && echo;
fi;
mit=${mit:-y}
if [[ $mit == "n" ]]; then
unlink LICENSE;
printf "🧹 LICENCE file removed\n";
else
printf "📌 Keeping the MIT license\n";
fi;
rm -rf attitude
printf "\n🧹 attitude/ removed\n";
rm -rf default
printf "🧹 default/ removed\n\n";
printf "👉 Readme\n";
if [[ $skipquestions == "no" ]]; then
read -n 1 -p "Init a new blank README.md?: [y]/n: " blankreadme && echo;
fi;
blankreadme=${blankreadme:-y}
if [[ $blankreadme == "y" ]]; then
prinf "# ${name}\n" > README.md;
printf "📖 New README.md created\n";
else
unlink README.md;
printf "🧹 README.md removed\n";
fi;
unlink initES6.sh
printf "🧹 init.sh removed itself\n";
echo;
printf "\n🚨 Resetting the Git for your new project...\n";
rm -rf .git;
printf "🧹 .git/ removed\n";
echo;
git init && git checkout -b main && git add --all && git commit -m "Initial commit";
printf "\n✨ New empty repository initiated..\n\n";
printf "👉 Add remote Git origin\n";
read -p "Remote origin [enter to skip]: " remote;
if [[ ! -z $remote ]]; then
git remote add origin $remote;
git remote -v;
printf "🔗 Remote origin is set\n\n";
fi;
printf "🚀 You can now type \`$ yarn start\`\n\n";
printf "🎉 Done\n\n";