45 lines
1.6 KiB
CoffeeScript
Executable File
45 lines
1.6 KiB
CoffeeScript
Executable File
#!/usr/bin/env coffee
|
|
|
|
fs = require "fs"
|
|
{Item} = require("crafting-guide-common").deprecated.game
|
|
{ItemParser} = require("crafting-guide-common").deprecated.parsing
|
|
{Logger} = require("crafting-guide-common").util
|
|
path = require "path"
|
|
|
|
########################################################################################################################
|
|
|
|
global.logger = new Logger level:Logger.INFO
|
|
|
|
try
|
|
dataPath = "data"
|
|
modSlugs = fs.readdirSync dataPath
|
|
for modSlug in modSlugs
|
|
modItemsPath = path.join dataPath, modSlug, "items"
|
|
try
|
|
itemSlugs = fs.readdirSync modItemsPath
|
|
catch error
|
|
continue # skip this mod, it has no items
|
|
|
|
for itemSlug in itemSlugs
|
|
itemCgPath = path.join modItemsPath, itemSlug, "item.cg"
|
|
itemJsonPath = path.join modItemsPath, itemSlug, "item.json"
|
|
try
|
|
itemDataText = fs.readFileSync itemCgPath, "utf-8"
|
|
catch error
|
|
continue # skip this item, it has not extra data
|
|
|
|
oldItem = new Item name:itemSlug
|
|
itemParser = new ItemParser model:oldItem
|
|
itemParser.parse itemDataText
|
|
|
|
itemJson = description: oldItem.description
|
|
if oldItem.videos.length > 0
|
|
itemJson.videos = ({name:video.name, youtTubeId:video.youTubeId} for video in oldItem.videos)
|
|
if oldItem.officialUrl
|
|
itemJson.links = [{name:"official site", url:oldItem.officialUrl}]
|
|
|
|
fs.writeFileSync itemJsonPath, JSON.stringify(itemJson, null, " ")
|
|
catch error
|
|
console.error error.stack
|
|
|