Support parameterize packaging

This commit is contained in:
Luo Tim 2024-08-27 16:49:24 +08:00
parent cc35fd3380
commit 6ba62c44bf
3 changed files with 86 additions and 22 deletions

7
.env.example Normal file
View File

@ -0,0 +1,7 @@
EXTENSION_NAME=devchat
PUBLISHER=merico
ASSISTANT_NAME_EN=DevChat
ASSISTANT_NAME_ZH=DevChat
EXTENSION_ICON=/path/to/extension_icon.png
SIDEBAR_ICON=/path/to/sidebar_icon.svg
DIFF_APPLY_ICON=/path/to/diff_apply_icon.svg

View File

@ -1,13 +1,17 @@
{ {
"name": "devchat", "name": "${EXTENSION_NAME}",
"displayName": "DevChat", "displayName": "${ASSISTANT_NAME_ZH}",
"description": "Write prompts, not code", "description": "Write prompts, not code",
"version": "0.1.74", "version": "0.1.74",
"icon": "assets/devchat.png", "icon": "assets/devchat.png",
"publisher": "merico", "publisher": "${PUBLISHER}",
"engines": { "engines": {
"vscode": "^1.75.0" "vscode": "^1.75.0"
}, },
"assistantNames": {
"ASSISTANT_NAME_EN": "${ASSISTANT_NAME_EN}",
"ASSISTANT_NAME_ZH": "${ASSISTANT_NAME_ZH}"
},
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/devchat-ai/devchat-vscode.git" "url": "https://github.com/devchat-ai/devchat-vscode.git"
@ -72,7 +76,7 @@
"activitybar": [ "activitybar": [
{ {
"id": "devchat-sidebar", "id": "devchat-sidebar",
"title": "DevChat", "title": "${ASSISTANT_NAME_ZH}",
"icon": "assets/devchat_icon.svg" "icon": "assets/devchat_icon.svg"
} }
] ]
@ -82,7 +86,7 @@
{ {
"type": "webview", "type": "webview",
"id": "devchat-view", "id": "devchat-view",
"name": "DevChat" "name": "${ASSISTANT_NAME_ZH}"
} }
] ]
}, },
@ -103,27 +107,27 @@
}, },
{ {
"command": "devchat.addContext", "command": "devchat.addContext",
"title": "Devchat:Add to DevChat" "title": "${ASSISTANT_NAME_EN}:Add to ${ASSISTANT_NAME_EN}"
}, },
{ {
"command": "devchat.askForCode", "command": "devchat.askForCode",
"title": "Devchat:Add to DevChat" "title": "${ASSISTANT_NAME_EN}:Add to ${ASSISTANT_NAME_EN}"
}, },
{ {
"command": "devchat.askForFile", "command": "devchat.askForFile",
"title": "Devchat:Add to DevChat" "title": "${ASSISTANT_NAME_EN}:Add to ${ASSISTANT_NAME_EN}"
}, },
{ {
"command": "devchat.addConext_chinese", "command": "devchat.addConext_chinese",
"title": "Devchat:添加到DevChat" "title": "${ASSISTANT_NAME_ZH}:添加到${ASSISTANT_NAME_ZH}"
}, },
{ {
"command": "devchat.askForCode_chinese", "command": "devchat.askForCode_chinese",
"title": "Devchat:添加到DevChat" "title": "${ASSISTANT_NAME_ZH}:添加到${ASSISTANT_NAME_ZH}"
}, },
{ {
"command": "devchat.askForFile_chinese", "command": "devchat.askForFile_chinese",
"title": "Devchat:添加到DevChat" "title": "${ASSISTANT_NAME_ZH}:添加到${ASSISTANT_NAME_ZH}"
}, },
{ {
"command": "DevChat.InstallCommands", "command": "DevChat.InstallCommands",
@ -137,32 +141,32 @@
}, },
{ {
"command": "DevChat.Chat", "command": "DevChat.Chat",
"title": "Chat with DevChat", "title": "Chat with ${ASSISTANT_NAME_EN}",
"category": "DevChat" "category": "DevChat"
}, },
{ {
"command": "devchat.explain", "command": "devchat.explain",
"title": "Devchat:Generate Explain" "title": "${ASSISTANT_NAME_EN}:Generate Explain"
}, },
{ {
"command": "devchat.explain_chinese", "command": "devchat.explain_chinese",
"title": "Devchat:代码解释" "title": "${ASSISTANT_NAME_ZH}:代码解释"
}, },
{ {
"command": "devchat.comments", "command": "devchat.comments",
"title": "Devchat:Generate Comments" "title": "${ASSISTANT_NAME_EN}:Generate Comments"
}, },
{ {
"command": "devchat.comments_chinese", "command": "devchat.comments_chinese",
"title": "Devchat:生成注释" "title": "${ASSISTANT_NAME_ZH}:生成注释"
}, },
{ {
"command": "devchat.fix", "command": "devchat.fix",
"title": "Devchat:Fix this" "title": "${ASSISTANT_NAME_EN}:Fix this"
}, },
{ {
"command": "devchat.fix_chinese", "command": "devchat.fix_chinese",
"title": "Devchat:修复此" "title": "${ASSISTANT_NAME_ZH}:修复此"
}, },
{ {
"command": "DevChat.codecomplete_callback", "command": "DevChat.codecomplete_callback",
@ -171,12 +175,12 @@
}, },
{ {
"command": "DevChat.quickFixAskDevChat", "command": "DevChat.quickFixAskDevChat",
"title": "Ask DevChat", "title": "Ask ${ASSISTANT_NAME_EN}",
"category": "DevChat" "category": "DevChat"
}, },
{ {
"command": "DevChat.quickFixUsingDevChat", "command": "DevChat.quickFixUsingDevChat",
"title": "Ask DevChat", "title": "Ask ${ASSISTANT_NAME_EN}",
"category": "DevChat" "category": "DevChat"
} }
], ],
@ -344,10 +348,14 @@
"vscode:uninstall": "node ./dist/uninstall", "vscode:uninstall": "node ./dist/uninstall",
"vscode:prepublish": "npm run package", "vscode:prepublish": "npm run package",
"compile": "webpack", "compile": "webpack",
"watch": "webpack --watch", "watch": "node prebuild.js && webpack --watch",
"prebuild": "node prebuild.js",
"postbuild": "git checkout -- assets package.json",
"prepackage": "node prebuild.js",
"postpackage": "git checkout -- assets package.json",
"package": "webpack --mode production --devtool hidden-source-map", "package": "webpack --mode production --devtool hidden-source-map",
"compile-tests": "tsc -p . --outDir out", "compile-tests": "tsc -p . --outDir out",
"watch-tests": "tsc -p . -w --outDir out", "watch-tests": "npm run prebuild && tsc -p . -w --outDir out",
"pretest": "npm run compile-tests && npm run compile && npm run lint", "pretest": "npm run compile-tests && npm run compile && npm run lint",
"lint": "eslint src --ext ts", "lint": "eslint src --ext ts",
"test": "mocha", "test": "mocha",

49
prebuild.js Normal file
View File

@ -0,0 +1,49 @@
require('dotenv').config()
const fs = require('fs')
const path = require('path')
function copyIcon(src, dst) {
if (!src) {
console.warn(`Icon path for ${dst} is not defined in your environment variables`)
return
}
if (!fs.existsSync(src)) {
console.warn(`Icon file ${src} does not exist.`)
return
}
const destPath = path.join(__dirname, 'assets', dst)
try {
fs.copyFileSync(src, destPath)
fs.chmodSync(destPath, 0o644)
} catch(e) {
console.warn(`Failed to copy logo ${e}`)
}
}
function updatePackageJson() {
const placeholders = {
EXTENSION_NAME: process.env.EXTENSION_NAME || "devchat",
PUBLISHER: process.env.PUBLISHER || "merico",
ASSISTANT_NAME_EN: process.env.ASSISTANT_NAME_EN || "DevChat",
ASSISTANT_NAME_ZH: process.env.ASSISTANT_NAME_ZH || "DevChat"
}
let packageJson = fs.readFileSync('package.json', 'utf8');
// Replace placeholders
Object.entries(placeholders).forEach(([key, value]) => {
const regex = new RegExp(`\\$\\{${key}\\}`, 'g');
packageJson = packageJson.replace(regex, value);
});
fs.writeFileSync('package.json', packageJson);
}
copyIcon(process.env.EXTENSION_ICON, 'devchat.png')
copyIcon(process.env.SIDEBAR_ICON, 'devchat_icon.svg')
copyIcon(process.env.DIFF_APPLY_ICON, 'devchat_apply.svg')
updatePackageJson()