extensions-repo/inst-configs-repo/kylin-ide/config/os_classify_script-0.0.2.js

220 lines
6.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const os = require('os');
const fs = require('fs');
var os_arch; //arch x86_64
var os_org; //Kylin
var os_type; // Desktop Server
var os_release;// eg:2203
var kylin_release_id;
var os_version_id; // V10
var os_sp;//sp
var os_custom; //hwe
var pretty_name;
var milestone;
var dist_id;
var pretty_name;
var os_info;
const kyinfoPath = '/etc/.kyinfo';
const osReleasePath = '/etc/os-release';
//检查系统架构
function getArch() {
const arch = os.arch();
let res = '';
switch (arch) {
case 'x64':
case 'x86':
case "x86_64": res = 'x86'; break;
case 'arm':
case 'arm64':
case 'aarch64': res = 'arm'; break;
case 'loongarch': res = 'loongarch'; break;
default: res = arch;
}
return res;
}
function getoskey() {
if (os_arch == 'x86' && os_org == 'kylin' && os_type == 'desktop' && os_release.includes('2403') && os_version_id == 'v10') {
return "x86_kylin_desktop_v10_2403";
}
if (os_arch == 'x86' && os_org == 'kylin' && os_type == 'desktop' && os_release.includes('2203') && os_version_id == 'v10') {
return "x86_kylin_desktop_v10_2203";
}
if (os_arch == 'x86' && os_org == 'kylin' && os_type == 'desktop' && os_release.includes('2303') && os_version_id == 'v10') {
return "x86_kylin_desktop_v10_2303";
}
if (os_arch == 'arm' && os_org == 'kylin' && os_type == 'desktop' && os_release.includes('2203') && os_version_id == 'v10') {
return "arm_kylin_desktop_v10_2203";
}
if (os_arch == 'arm' && os_org == 'kylin' && os_type == 'desktop' && os_release.includes('2303')&& os_version_id == 'v10') {
return "arm_kylin_desktop_v10_2303";
}
if (os_arch == 'arm' && os_org == 'kylin' && os_type == 'desktop' && os_release.includes('2403')&& os_version_id == 'v10') {
return "arm_kylin_desktop_v10_2403";
}
return "undefined"
}
function getFileData() {
//1、架构
//2、是否是麒麟系统
//3、是桌面系统还是服务器系统
//4、是否是V10
//5、是否带sp是sp几
//6、小版本号
//7、定制版字符
os_arch = getArch();
/*分类型进行处理
1.存在.kyinfo的系统 取值dist_id 中 架构之前的信息
2.不在.kyinfo的系统但是存在os-release 的kylin系统
3.不是kylin的系统但是存在os-release
*/
let data;
let releasedata;
if (fs.existsSync(kyinfoPath) && fs.existsSync(osReleasePath)) {
os_org = "kylin";
try {
let version_id;
data = fs.readFileSync(kyinfoPath, 'utf8');
releasedata = fs.readFileSync(osReleasePath, 'utf8');
// 使用 split 方法将文件内容分割成行数组
const lines = data.split('\n');
// 遍历行数组 获取系统架构
lines.forEach((line) => {
line=line.replace(/ /g, "");
if (line.startsWith("milestone=")) {
milestone = line.slice(10).toLocaleLowerCase();
} else if (line.startsWith("dist_id=")) {
dist_id = line.slice(8).toLocaleLowerCase();
}
});//end lines
const releasedatalines = releasedata.split('\n');
releasedatalines.forEach((line) => {
if (line.startsWith("PRETTY_NAME=")) {
pretty_name = line.slice(12).toLocaleLowerCase().replace(/"/g, '');
} else if (line.startsWith("VERSION_ID=")) {
version_id = line.slice(11).toLocaleLowerCase().replace(/"/g, '');
}
if(line.startsWith("KYLIN_RELEASE_ID=")){
kylin_release_id=line.slice(17).toLocaleLowerCase().replace(/"/g, '');
}
});
if (version_id) {
os_version_id = version_id;
}
os_type = dist_id.includes('desktop') ? "desktop" : "server";
if (milestone.indexOf('release')!==-1) {
os_release = milestone.slice(milestone.indexOf('release') + 8);
}else{
os_release=kylin_release_id;
}
if (dist_id.includes('edu')) {
os_custom = 'edu';
} else {
os_custom = 'gen';
}
if (dist_id.includes('hwe')) {
os_custom += 'hwe';
}
if (dist_id.includes('gfb')) {
os_custom += 'gfb'
}
} catch (err) {
os_info = "";
console.log(err);
}
} else
if (fs.existsSync(osReleasePath)) {
try {
let version_id;
releasedata = fs.readFileSync(osReleasePath, 'utf8');
const releasedatalines = releasedata.split('\n');
releasedatalines.forEach((line) => {
if (line.startsWith("PRETTY_NAME=")) {
pretty_name = line.slice(12).toLocaleLowerCase().replace(/"/g, '');
pretty_name=pretty_name.replace(/ /g, "_")
} else if (line.startsWith("VERSION_ID=")) {
version_id = line.slice(11).toLocaleLowerCase().replace(/"/g, '');
} else if (line.startsWith("ID=")) {
os_org = line.slice(3).toLocaleLowerCase().replace(/"/g, '');
} else if (line.startsWith("VERSION_CODENAME=")) {
os_custom = line.slice(17).toLocaleLowerCase().replace(/"/g, '');
}else if(line.startsWith('NAME=')){
os_org=line.slice(5).toLocaleLowerCase().replace(/"/g, '')
}
});
if (version_id) {
os_version_id = version_id;
}
if (pretty_name.includes('openkylin'))
os_type = "desktop";
} catch (err) {
os_info = "";
}
}
}
function getosinfo(){
os_info = getoskey();
return os_info;
}
function showosinfo() {
let osData = '';
if (fs.existsSync(kyinfoPath)) {
if (os_arch) { osData += os_arch; }
if(os_release=="2403"){
let indexR=dist_id.indexOf("release");
let info=dist_id.substring(0,indexR);
osData+="_" + info;
}
else if (milestone) {
if (os_org) { osData += "_" + os_org; }
osData += "_" + milestone; }
osData = osData.replace(/^_+|_+$/g, '');
osData = osData.replace("-release-", "-");
osData = osData.replace(/-/g, "_");
return osData;
}
else {
//架构
if (os_arch) {osData += os_arch;}
//组织
if (os_org) {osData += "_" + os_org;}
//操作系统类型
if (os_type) {osData += "_" + os_type;}
if (pretty_name) {osData += "_" + pretty_name;}
if(os_custom){ osData += "_" + os_custom; }
osData = osData.replace(/^_+|_+$/g, '');
return osData;
}
}
function getsupportlist(){
let strArry=["X86 银河麒麟操作系统 桌面版 V10 2203",
"X86 银河麒麟操作系统 桌面版 V10 2303",
"X86 银河麒麟操作系统 桌面版 V10 2403",
"ARM 银河麒麟操作系统 桌面版 V10 2203",
"ARM 银河麒麟操作系统 桌面版 V10 2303",
"ARM 银河麒麟操作系统 桌面版 V10 2403"
];
return strArry;
}
function getoscontent(){
return [getosinfo(),showosinfo(),getsupportlist()]
}
getFileData();
console.log(getoscontent());
module.exports = {
getosinfo ,
showosinfo,
getsupportlist,
getoscontent
}