ant-design-vue/scripts/syncStyleFromAntd.js

70 lines
1.8 KiB
JavaScript

const GitHub = require('@octokit/rest')
const Base64 = require('js-base64').Base64
const fs = require('fs')
const fse = require('fs-extra')
const path = require('path')
const owner = 'ant-design'
const repo = 'ant-design'
const tag = '3.10.9'
const clientId = '5f6ccfdc4cdc69f8ba12'
const clientSecret = process.env.CLIENT_SECRET
const github = new GitHub()
async function syncFiles (data = []) {
for (const item of data) {
try {
const { data: itemData } = await github.repos.getContent({
owner,
repo,
path: `${item.path}`,
ref: tag,
client_id: clientId,
client_secret: clientSecret,
})
if (Array.isArray(itemData)) {
syncFiles(itemData)
} else {
const toPath = path.join(__dirname, '..', itemData.path.replace(`/${itemData.name}`, ''))
if (!fs.existsSync(toPath)) {
fse.ensureDirSync(toPath)
}
console.log('update style: ', path.join(toPath, itemData.name.replace('.tsx', '.js')))
const content = Base64.decode(itemData.content)
fs.writeFileSync(path.join(toPath, itemData.name.replace('.tsx', '.js')), content)
}
} catch (e) {
}
}
}
async function syncStyle () {
const { data = [] } = await github.repos.getContent({
owner,
repo,
path: 'components',
ref: tag,
client_id: clientId,
client_secret: clientSecret,
})
for (const item of data) {
try {
if (item.name === 'style') {
syncFiles([item])
} else {
const { data: itemData } = await github.repos.getContent({
owner,
repo,
path: `${item.path}/style`,
ref: tag,
client_id: clientId,
client_secret: clientSecret,
})
syncFiles(itemData)
}
} catch (e) {}
}
}
syncStyle()