UNPKG

hudada-cli

Version:

专为程序员准备的本地文档搜索,快捷开发工具

3 lines (2 loc) 3.54 kB
#!/usr/bin/env node import o,{networkInterfaces as l}from"os";import e from"chalk";import{exec as n}from"child_process";import{promisify as t}from"util";import s,{dirname as r}from"path";import{fileURLToPath as c}from"url";const a=t(n);async function g(){try{console.log(e.cyan("\n系统信息:")),console.log(e.yellow("\n基本信息:")),console.log(e.gray("操作系统: "),o.type(),o.release()),console.log(e.gray("计算机名: "),o.hostname()),console.log(e.gray("系统架构: "),o.arch()),console.log(e.gray("系统平台: "),o.platform()),console.log(e.gray("用户目录: "),o.homedir()),console.log(e.gray("系统运行时间:"),function(o){const l=Math.floor(o/86400),e=Math.floor(o%86400/3600),n=Math.floor(o%3600/60),t=[];return l>0&&t.push(`${l}天`),e>0&&t.push(`${e}小时`),n>0&&t.push(`${n}分钟`),t.join(" ")}(o.uptime())),function(){const l=o.cpus();console.log(e.yellow("\nCPU信息:")),console.log(e.gray("处理器: "),l[0].model),console.log(e.gray("核心数: "),l.length),console.log(e.gray("主频: "),`${(l[0].speed/1e3).toFixed(2)} GHz`);const n=l.reduce(((o,l)=>{const e=Object.values(l.times).reduce(((o,l)=>o+l)),n=l.times.idle;return{total:o.total+e,idle:o.idle+n}}),{total:0,idle:0}),t=(100*(1-n.idle/n.total)).toFixed(1);console.log(e.gray("CPU使用率: "),`${t}%`)}(),function(){const l=o.totalmem(),n=o.freemem(),t=l-n,s=(t/l*100).toFixed(1);console.log(e.yellow("\n内存信息:")),console.log(e.gray("总内存: "),i(l)),console.log(e.gray("已用内存: "),i(t)),console.log(e.gray("可用内存: "),i(n)),console.log(e.gray("内存使用率: "),`${s}%`);const r=30,c=Math.floor(t/l*r),a="█".repeat(c)+"░".repeat(r-c);console.log(e.gray("使用情况: "),a)}(),await async function(){console.log(e.yellow("\n磁盘信息:"));const l=c(import.meta.url),n=r(l);let t=s.resolve(n,"../../","public");try{let l="";l="win32"===o.platform()?t+"/wmic logicaldisk get size,freespace,caption":"df -h";const{stdout:n}=await a(l);if("win32"===o.platform()){const o=n.trim().split("\n").slice(1);for(const l of o){const[o,n,t]=l.trim().split(/\s+/);if(o&&n&&t){const l=parseInt(t)-parseInt(n),s=(l/parseInt(t)*100).toFixed(1);console.log(e.gray(`${o}盘:`)),console.log(e.gray(" 总大小: "),i(parseInt(t))),console.log(e.gray(" 已用空间: "),i(l)),console.log(e.gray(" 可用空间: "),i(parseInt(n))),console.log(e.gray(" 使用率: "),`${s}%`),console.log()}}}else{const o=n.trim().split("\n").slice(1);for(const l of o){const[o,n,t,s,r,c]=l.trim().split(/\s+/);console.log(e.gray(`${c}:`)),console.log(e.gray(" 文件系统: "),o),console.log(e.gray(" 总大小: "),n),console.log(e.gray(" 已用空间: "),t),console.log(e.gray(" 可用空间: "),s),console.log(e.gray(" 使用率: "),r),console.log()}}}catch(o){console.error(e.red("获取磁盘信息失败"))}}(),function(){console.log(e.yellow("\n网络信息:"));const o=l();for(const l of Object.keys(o)){const n=o[l];if(n)for(const o of n)o.internal||(console.log(e.gray("接口名称: "),l),console.log(e.gray("IP地址: "),o.address),console.log(e.gray("MAC地址: "),o.mac),console.log(e.gray("子网掩码: "),o.netmask),console.log(e.gray("协议族: "),o.family),console.log())}}()}catch(o){console.error(e.red("获取系统信息失败:"),o)}}function i(o){if(0===o)return"0 B";const l=Math.floor(Math.log(o)/Math.log(1024));return`${(o/Math.pow(1024,l)).toFixed(2)} ${["B","KB","MB","GB","TB"][l]}`}export{g as getSystemInfo};