Refactor compile-time glitch-soc theme handling
This commit is contained in:
		
							parent
							
								
									59b7ba451b
								
							
						
					
					
						commit
						9f763b5b79
					
				| @ -21,8 +21,7 @@ const core = function () { | |||||||
|   return data.pack ? data : {}; |   return data.pack ? data : {}; | ||||||
| }(); | }(); | ||||||
| 
 | 
 | ||||||
| for (let i = 0; i < flavourFiles.length; i++) { | flavourFiles.forEach((flavourFile) => { | ||||||
|   const flavourFile = flavourFiles[i]; |  | ||||||
|   const data = load(readFileSync(flavourFile), 'utf8'); |   const data = load(readFileSync(flavourFile), 'utf8'); | ||||||
|   data.name = basename(dirname(flavourFile)); |   data.name = basename(dirname(flavourFile)); | ||||||
|   data.skin = {}; |   data.skin = {}; | ||||||
| @ -35,27 +34,25 @@ for (let i = 0; i < flavourFiles.length; i++) { | |||||||
|   if (data.pack && typeof data.pack === 'object') { |   if (data.pack && typeof data.pack === 'object') { | ||||||
|     flavours[data.name] = data; |     flavours[data.name] = data; | ||||||
|   } |   } | ||||||
| } | }); | ||||||
| 
 | 
 | ||||||
| for (let i = 0; i < skinFiles.length; i++) { | skinFiles.forEach((skinFile) => { | ||||||
|   const skinFile = skinFiles[i]; |  | ||||||
|   let skin = basename(skinFile); |   let skin = basename(skinFile); | ||||||
|   const name = basename(dirname(skinFile)); |   const name = basename(dirname(skinFile)); | ||||||
|   if (!flavours[name]) { |   if (!flavours[name]) { | ||||||
|     continue; |     return; | ||||||
|   } |   } | ||||||
|   const data = flavours[name].skin; |   const data = flavours[name].skin; | ||||||
|   if (lstatSync(skinFile).isDirectory()) { |   if (lstatSync(skinFile).isDirectory()) { | ||||||
|     data[skin] = {}; |     data[skin] = {}; | ||||||
|     const skinPacks = glob.sync(join(skinFile, '*.{css,scss}')); |     const skinPacks = glob.sync(join(skinFile, '*.{css,scss}')); | ||||||
|     for (let j = 0; j < skinPacks.length; j++) { |     skinPacks.forEach((pack) => { | ||||||
|       const pack = skinPacks[j]; |  | ||||||
|       data[skin][basename(pack, extname(pack))] = pack; |       data[skin][basename(pack, extname(pack))] = pack; | ||||||
|     } |     }); | ||||||
|   } else if ((skin = skin.match(/^(.*)\.s?css$/i))) { |   } else if ((skin = skin.match(/^(.*)\.s?css$/i))) { | ||||||
|     data[skin[1]] = { common: skinFile }; |     data[skin[1]] = { common: skinFile }; | ||||||
|   } |   } | ||||||
| } | }); | ||||||
| 
 | 
 | ||||||
| const output = { | const output = { | ||||||
|   path: resolve('public', settings.public_output_path), |   path: resolve('public', settings.public_output_path), | ||||||
|  | |||||||
| @ -10,38 +10,33 @@ const rules = require('./rules'); | |||||||
| const localePacks = require('./generateLocalePacks'); | const localePacks = require('./generateLocalePacks'); | ||||||
| 
 | 
 | ||||||
| function reducePacks (data, into = {}) { | function reducePacks (data, into = {}) { | ||||||
|   if (!data.pack) { |   if (!data.pack) return into; | ||||||
|     return into; | 
 | ||||||
|   } |   for (const entry in data.pack) { | ||||||
|   Object.keys(data.pack).reduce((map, entry) => { |  | ||||||
|     const pack = data.pack[entry]; |     const pack = data.pack[entry]; | ||||||
|     if (!pack) { |     if (!pack) continue; | ||||||
|       return map; | 
 | ||||||
|     } |  | ||||||
|     const packFile = typeof pack === 'string' ? pack : pack.filename; |     const packFile = typeof pack === 'string' ? pack : pack.filename; | ||||||
|  | 
 | ||||||
|     if (packFile) { |     if (packFile) { | ||||||
|       map[data.name ? `flavours/${data.name}/${entry}` : `core/${entry}`] = resolve(data.pack_directory, packFile); |       into[data.name ? `flavours/${data.name}/${entry}` : `core/${entry}`] = resolve(data.pack_directory, packFile); | ||||||
|     } |     } | ||||||
|     return map; |  | ||||||
|   }, into); |  | ||||||
|   if (data.name) { |  | ||||||
|     Object.keys(data.skin).reduce((map, entry) => { |  | ||||||
|       const skin = data.skin[entry]; |  | ||||||
|       const skinName = entry; |  | ||||||
|       if (!skin) { |  | ||||||
|         return map; |  | ||||||
|       } |  | ||||||
|       Object.keys(skin).reduce((map, entry) => { |  | ||||||
|         const packFile = skin[entry]; |  | ||||||
|         if (!packFile) { |  | ||||||
|           return map; |  | ||||||
|         } |  | ||||||
|         map[`skins/${data.name}/${skinName}/${entry}`] = resolve(packFile); |  | ||||||
|         return map; |  | ||||||
|       }, into); |  | ||||||
|       return map; |  | ||||||
|     }, into); |  | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   if (!data.name) return into; | ||||||
|  | 
 | ||||||
|  |   for (const skinName in data.skin) { | ||||||
|  |     const skin = data.skin[skinName]; | ||||||
|  |     if (!skin) continue; | ||||||
|  | 
 | ||||||
|  |     for (const entry in skin) { | ||||||
|  |       const packFile = skin[entry]; | ||||||
|  |       if (!packFile) continue; | ||||||
|  | 
 | ||||||
|  |       into[`skins/${data.name}/${skinName}/${entry}`] = resolve(packFile); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   return into; |   return into; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -49,7 +44,7 @@ const entries = Object.assign( | |||||||
|   { locales: resolve('app', 'javascript', 'locales') }, |   { locales: resolve('app', 'javascript', 'locales') }, | ||||||
|   localePacks, |   localePacks, | ||||||
|   reducePacks(core), |   reducePacks(core), | ||||||
|   Object.keys(flavours).reduce((map, entry) => reducePacks(flavours[entry], map), {}) |   Object.values(flavours).reduce((map, data) => reducePacks(data, map), {}) | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user