@@ -11,68 +11,68 @@ const FOOTER = Path.join(__dirname, '../footer.html')
11
11
12
12
const env = require ( 'dotenv' ) . config ( ) ;
13
13
if ( env . error ) {
14
- throw env . error ;
14
+ throw env . error ;
15
15
}
16
16
17
17
if ( ! process . env . GITHUB_PERSONAL_ACCESS_TOKEN ) {
18
- throw new Error ( 'GITHUB_PERSONAL_ACCESS_TOKEN environment variable is not found' ) ;
18
+ throw new Error ( 'GITHUB_PERSONAL_ACCESS_TOKEN environment variable is not found' ) ;
19
19
}
20
20
21
21
const axios = require ( 'axios' ) . create ( {
22
- baseURL : 'https://api.github.com/' ,
23
- headers : { 'Authorization' : `token ${ process . env . GITHUB_PERSONAL_ACCESS_TOKEN } ` }
22
+ baseURL : 'https://api.github.com/' ,
23
+ headers : { 'Authorization' : `token ${ process . env . GITHUB_PERSONAL_ACCESS_TOKEN } ` }
24
24
} ) ;
25
25
26
26
function createLangButton ( dom , file , lang , langName ) {
27
27
var li = dom . createElement ( 'li' )
28
- li . className = 'nav-lang-' + lang
29
- li . innerHTML = '<a href="/' + ( lang === 'en' ? '' : lang + '/' ) + ( file === 'index.html' ? '' : file ) + '" class="switch-lang" lang="' + lang + '">' + langName + '</a>'
30
- return li
28
+ li . className = 'nav-lang-' + lang
29
+ li . innerHTML = '<a href="/' + ( lang === 'en' ? '' : lang + '/' ) + ( file === 'index.html' ? '' : file ) + '" class="switch-lang" lang="' + lang + '">' + langName + '</a>'
30
+ return li
31
31
}
32
32
33
33
function createSkipButton ( dom ) {
34
- var a = dom . createElement ( 'a' )
35
- a . className = 'skip'
36
- a . href = '#main'
37
- a . innerHTML = 'Skip to Content'
38
- return a
34
+ var a = dom . createElement ( 'a' )
35
+ a . className = 'skip'
36
+ a . href = '#main'
37
+ a . innerHTML = 'Skip to Content'
38
+ return a
39
39
}
40
40
41
41
function addTranslationNav ( dom , file , languages ) {
42
42
var items = [ ]
43
- var nav = dom . createElement ( 'ul' )
44
- nav . className = "nav-lang"
43
+ var nav = dom . createElement ( 'ul' )
44
+ nav . className = "nav-lang"
45
45
46
- Object . keys ( languages ) . sort ( function ( a , b ) {
47
- return languages [ a ] > languages [ b ] ? 1 : - 1
48
- } ) . forEach ( function ( lang ) {
49
- var button = createLangButton ( dom , file , lang , languages [ lang ] )
50
- items . push ( button . firstChild )
51
- nav . appendChild ( button )
52
- } )
53
- var node = dom . querySelector ( 'header > *:first-child' )
54
- if ( node ) {
55
- node . parentNode . insertBefore ( createSkipButton ( dom ) , node )
56
- node . parentNode . insertBefore ( nav , node )
57
- }
58
- return items
46
+ Object . keys ( languages ) . sort ( function ( a , b ) {
47
+ return languages [ a ] > languages [ b ] ? 1 : - 1
48
+ } ) . forEach ( function ( lang ) {
49
+ var button = createLangButton ( dom , file , lang , languages [ lang ] )
50
+ items . push ( button . firstChild )
51
+ nav . appendChild ( button )
52
+ } )
53
+ var node = dom . querySelector ( 'header > *:first-child' )
54
+ if ( node ) {
55
+ node . parentNode . insertBefore ( createSkipButton ( dom ) , node )
56
+ node . parentNode . insertBefore ( nav , node )
57
+ }
58
+ return items
59
59
}
60
60
61
61
function createLanguageLink ( dom , href , locale ) {
62
- var link = dom . createElement ( 'link' )
63
- link . setAttribute ( 'rel' , 'alternate' )
64
- link . setAttribute ( 'href' , href )
65
- link . setAttribute ( 'hreflang' , locale )
66
- return link
62
+ var link = dom . createElement ( 'link' )
63
+ link . setAttribute ( 'rel' , 'alternate' )
64
+ link . setAttribute ( 'href' , href )
65
+ link . setAttribute ( 'hreflang' , locale )
66
+ return link
67
67
}
68
68
69
69
function addLanguageLinks ( dom , file , locales ) {
70
- var head = dom . querySelector ( 'head' )
71
- return Object . keys ( locales ) . map ( function ( locale ) {
70
+ var head = dom . querySelector ( 'head' )
71
+ return Object . keys ( locales ) . map ( function ( locale ) {
72
72
var link = createLanguageLink ( dom , ( locale != 'en' ? '/' + locale : '' ) + '/' + ( file === 'index.html' ? '' : file ) , locale )
73
73
head . appendChild ( link )
74
74
return link
75
- } )
75
+ } )
76
76
}
77
77
78
78
function getNodeByLanguage ( nodes , lang ) {
@@ -87,53 +87,53 @@ function getNodeByLanguage(nodes, lang) {
87
87
}
88
88
89
89
async function getStargazers ( workshopElement ) {
90
- const url = require ( 'url' ) ;
91
- const githubUrl = workshopElement . getAttribute ( "href" ) ;
92
- let response , parsedUrl ;
90
+ const url = require ( 'url' ) ;
91
+ const githubUrl = workshopElement . getAttribute ( "href" ) ;
92
+ let response , parsedUrl ;
93
93
94
- if ( ! githubUrl ) {
95
- return 0 ;
96
- }
94
+ if ( ! githubUrl ) {
95
+ return 0 ;
96
+ }
97
97
98
- try {
99
- parsedUrl = url . parse ( githubUrl ) ;
100
- } catch ( e ) {
101
- throw e ;
102
- }
98
+ try {
99
+ parsedUrl = url . parse ( githubUrl ) ;
100
+ } catch ( e ) {
101
+ throw e ;
102
+ }
103
103
104
- try {
105
- response = await axios . get ( `/repos${ parsedUrl . path } ?per_page=1` ) ;
106
- } catch ( e ) {
107
- throw e ;
108
- }
109
- writeStargazers ( workshopElement , response . data . stargazers_count )
104
+ try {
105
+ response = await axios . get ( `/repos${ parsedUrl . path } ?per_page=1` ) ;
106
+ } catch ( e ) {
107
+ throw e ;
108
+ }
109
+ writeStargazers ( workshopElement , response . data . stargazers_count )
110
110
}
111
111
112
112
function writeStargazers ( workshopElement , stargazersCount ) {
113
- const starIconSVG = `<svg style="vertical-align: middle" viewBox="0 0 16 16" version="1.1" width="16" height="16" role="img"><path fill="currentColor" fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"></path></svg>` ;
114
- workshopElement . innerHTML = `
115
- <span>${ workshopElement . innerHTML } </span>
116
- <span>(${ starIconSVG } ${ kFormatter ( stargazersCount ) } )<span>
117
- `;
113
+ const starIconSVG = `<svg style="vertical-align: middle" viewBox="0 0 16 16" version="1.1" width="16" height="16" role="img"><path fill="currentColor" fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"></path></svg>` ;
114
+ workshopElement . innerHTML = `
115
+ <span>${ workshopElement . innerHTML } </span>
116
+ <span>(${ starIconSVG } ${ kFormatter ( stargazersCount ) } )<span>
117
+ `;
118
118
}
119
119
120
120
function kFormatter ( number ) {
121
- return number > 999 ? ( number / 1000 ) . toFixed ( 1 ) + 'k' : number
121
+ return number > 999 ? ( number / 1000 ) . toFixed ( 1 ) + 'k' : number
122
122
}
123
123
124
124
async function isRateLimitReached ( nbToPerform ) {
125
- const remaining = await axios . get ( '/rate_limit' )
126
- if ( remaining . data . resources . core . remaining < nbToPerform ) {
127
- console . error ( `💔 GitHub Rate Limit Reached. Reset at ${ new Date ( remaining . data . resources . core . reset * 1000 ) . toLocaleTimeString ( ) } ` ) ;
128
- return true ;
129
- }
130
- return false ;
125
+ const remaining = await axios . get ( '/rate_limit' )
126
+ if ( remaining . data . resources . core . remaining < nbToPerform ) {
127
+ console . error ( `💔 GitHub Rate Limit Reached. Reset at ${ new Date ( remaining . data . resources . core . reset * 1000 ) . toLocaleTimeString ( ) } ` ) ;
128
+ return true ;
129
+ }
130
+ return false ;
131
131
}
132
132
133
133
cmdwatcher ( 'build-html'
134
- , '!(node_modules).html'
135
- , 'languages/**'
136
- , function processFiles ( files )
134
+ , '!(node_modules).html'
135
+ , 'languages/**'
136
+ , function processFiles ( files )
137
137
{
138
138
var languages
139
139
try {
@@ -144,7 +144,7 @@ cmdwatcher('build-html'
144
144
var translations = { }
145
145
Object . keys ( languages ) . forEach ( function ( lang ) {
146
146
var raw
147
- , translationPath = Path . join ( __dirname , '../languages/' , lang + '.json' )
147
+ , translationPath = Path . join ( __dirname , '../languages/' , lang + '.json' )
148
148
try {
149
149
raw = Fs . readFileSync ( translationPath , 'utf8' )
150
150
} catch ( e ) {
@@ -163,27 +163,27 @@ cmdwatcher('build-html'
163
163
languages [ 'en' ] = 'English'
164
164
files . forEach ( async function ( file ) {
165
165
var raw
166
- , dom
167
- , original
166
+ , dom
167
+ , original
168
168
try {
169
169
raw = Fs . readFileSync ( file , 'utf8' )
170
170
} catch ( e ) {
171
171
return console . log ( 'Error while reading %s:\n%s' , file , e )
172
172
}
173
173
try {
174
- dom = jsdom . jsdom ( raw )
175
- if ( file === 'index.html' ) {
176
- const t0 = performance . now ( ) ;
177
- const workshops = dom . getElementsByClassName ( 'js-workshop-link' ) ;
178
- await isRateLimitReached ( workshops . length ) ;
179
- const githubPromises = Array . from ( workshops ) . map ( getStargazers ) ;
180
- await Promise . all ( githubPromises ) ;
181
- const t1 = performance . now ( ) ;
182
- console . log ( `⭐️ GitHub Stargazers fetched in ${ ( ( t1 - t0 ) / 1000 ) . toFixed ( 1 ) } s` )
183
- }
174
+ dom = jsdom . jsdom ( raw )
175
+ if ( file === 'index.html' ) {
176
+ const t0 = performance . now ( ) ;
177
+ const workshops = dom . getElementsByClassName ( 'js-workshop-link' ) ;
178
+ await isRateLimitReached ( workshops . length ) ;
179
+ const githubPromises = Array . from ( workshops ) . map ( getStargazers ) ;
180
+ await Promise . all ( githubPromises ) ;
181
+ const t1 = performance . now ( ) ;
182
+ console . log ( `⭐️ GitHub Stargazers fetched in ${ ( ( t1 - t0 ) / 1000 ) . toFixed ( 1 ) } s` )
183
+ }
184
184
} catch ( e ) {
185
- return console . log ( 'Error while domify %s:\n%s' , file , e )
186
- }
185
+ return console . log ( 'Error while domify %s:\n%s' , file , e )
186
+ }
187
187
188
188
var footer = dom . querySelector ( 'footer' )
189
189
if ( footer ) {
@@ -209,9 +209,9 @@ cmdwatcher('build-html'
209
209
210
210
Object . keys ( languages ) . forEach ( function ( lang ) {
211
211
var translation = translations [ lang ]
212
- , outputPath = Path . join ( '.build/' , ( lang === 'en' ? '' : lang + '/' ) , file )
213
- , outputDir = Path . dirname ( outputPath )
214
- , output
212
+ , outputPath = Path . join ( '.build/' , ( lang === 'en' ? '' : lang + '/' ) , file )
213
+ , outputDir = Path . dirname ( outputPath )
214
+ , output
215
215
html . setAttribute ( 'lang' , lang )
216
216
if ( list ) {
217
217
try {
0 commit comments