This repository has been archived by the owner on Jul 25, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
task
executable file
·126 lines (103 loc) · 2.07 KB
/
task
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
#!/bin/bash
# Small Tasks runner script
# -------------------------
# Usage: ./task task_name
# Note: It requires `PKG_NAME` env variable for `build` task in your `package.json`.
#
# "scripts": {
# "build": env NODE_ENV=production PKG_NAME=$npm_package_name ./task build
# }
#
# Packages:
# Typescript
TSC=node_modules/typescript/bin/tsc
# Node Sass
SCSS=node_modules/node-sass/bin/node-sass
# Clean CSS
CCSS=node_modules/clean-css-cli/bin/cleancss
# Rollup
RUP=node_modules/rollup/bin/rollup
# Karma
KRM=node_modules/karma/bin/karma
# TSLint
TSL=node_modules/tslint/bin/tslint
# dts-bundle-generator
DTS=./node_modules/.bin/dts-bundle-generator
# Files & directories
TSL_FILE=tsconfig.json
SCSS_FILE=src/style.scss
DIST_DIR=dist
# Allowed tasks
ALLOWED_TASKS="^(build|test|lint|clean|dts|tsc)$"
# Styles
bold=$(tput bold)
normal=$(tput sgr0)
# Tasks start
function build () {
clean
test
compile
cssc
cssmin
copy
}
function test () {
lint
$KRM start --single-run --reporters spec
}
function lint () {
$TSL --format stylish --project $TSL_FILE
}
function clean () {
rm -rf .cache
rm -rf $DIST_DIR
}
function compile () {
tsc
jsc
cjs
cssc
}
function tsc () {
$TSC --outDir .cache --module es2015
}
function cjs () {
env MODULE_FORMAT=cjs $RUP -c
}
function jsc () {
env MODULE_FORMAT=umd $RUP -c
}
function cssc () {
$SCSS $SCSS_FILE $DIST_DIR/$PKG_NAME.css
}
function cssmin () {
$CCSS $DIST_DIR/$PKG_NAME.css -o $DIST_DIR/$PKG_NAME.min.css
}
function test_watch () {
env NODE_ENV=debug $KRM start
}
function copy () {
cp $SCSS_FILE $DIST_DIR/$PKG_NAME.scss
cp ./index.d.ts $DIST_DIR/
}
# Tasks end
# Check the incoming task
if [[ -z "$1" ]]; then
echo
echo "⛔️ No task was provided."
echo
exit 1
fi
# Validate if the task is allowed
if [[ $1 =~ $ALLOWED_TASKS ]]; then
echo
echo "✅ Running ${bold}$1${normal} task..."
echo
# Ok, just let it be!
$1
else
echo
echo "⛔️ Task provided is not available."
echo
exit 1
fi