Language Server ใหม่ systemd-lsp นำฟีเจอร์การแก้ไขสมัยใหม่มาสู่ Unit Files

ทีมชุมชน BigGo
Language Server ใหม่ systemd-lsp นำฟีเจอร์การแก้ไขสมัยใหม่มาสู่ Unit Files

Language Server ใหม่ที่เรียกว่า systemd-lsp ได้เกิดขึ้นเพื่อแก้ไขปัญหาที่มีมานานเกี่ยวกับการแก้ไข systemd unit files สร้างด้วย Rust เครื่องมือนี้นำฟีเจอร์การพัฒนาสมัยใหม่อย่าง syntax highlighting การตรวจจับข้อผิดพลาด และ autocompletion มาสู่กระบวนการที่เคยต้องทำด้วยมือและมักเกิดข้อผิดพลาดได้ง่าย

โปรเจกต์นี้เป็นส่วนหนึ่งของการเคลื่อนไหวที่กว้างขึ้นเพื่อให้เครื่องมือที่ดีกว่าสำหรับไฟล์การกำหนดค่าที่ขาดการสนับสนุนการแก้ไขที่ครบครัน นักพัฒนาหลายคนต้องดิ้นรนกับรูปแบบ INI-style ของ systemd มานาน ซึ่งต้องจำ directive ต่างๆ และ syntax ที่ถูกต้องมากมาย

คุณสมบัติหลัก:

  • การวิเคราะห์ไวยากรณ์และการแยกวิเคราะห์โครงสร้างไฟล์ unit ของ systemd
  • การวินิจฉัยแบบเรียลไทม์พร้อมการตรวจจับข้อผิดพลาดและการตรวจสอบความถูกต้อง
  • การเติมข้อความอัตโนมัติแบบตระหนักบริบทสำหรับส่วนต่างๆ และคำสั่ง
  • เอกสารประกอบแบบบูรณาการพร้อมข้อมูลแสดงเมื่อเลื่อนเมาส์
  • ความสามารถในการจัดรูปแบบโค้ด
  • รองรับการทำงานข้ามแพลตฟอร์ม ( Linux , macOS , Windows )

ประสบการณ์การพัฒนาที่ดีขึ้น

Language Server นี้ให้การสนับสนุนการแก้ไขอย่างครอบคลุม รวมถึงการตรวจจับข้อผิดพลาดแบบเรียลไทม์ autocompletion ที่เข้าใจบริบท และเอกสารประกอบที่รวมเข้าด้วยกัน เมื่อนักพัฒนาเลื่อนเมาส์ไปที่ directive ต่างๆ พวกเขาสามารถเข้าถึงหน้าคู่มือที่มีอยู่ในตัวโดยไม่ต้องออกจาก editor เครื่องมือนี้ยังมีความสามารถในการจัดรูปแบบโค้ดเพื่อรักษาโครงสร้าง unit file ให้สม่ำเสมอ

ฟีเจอร์ที่มีประโยชน์เป็นพิเศษคือระบบ diagnostic ซึ่งตรวจสอบ section และ directive พร้อมให้คำเตือนสำหรับการกำหนดค่าที่ไม่เป็นไปตามแบบแผน สิ่งนี้ช่วยป้องกันข้อผิดพลาดทั่วไปที่อาจทำให้ service ล้มเหลวระหว่างการ deployment

สถาปัตยกรรมข้ามแพลตฟอร์มและการรวมเข้าด้วยกัน

นักพัฒนาออกแบบ systemd-lsp เป็น binary เดียวที่มีเอกสารฝังอยู่ในตัว ทำให้ไม่ต้องพึ่งพา dependency ภายนอก วิธีการนี้ทำให้เครื่องมือทำงานได้อย่างสม่ำเสมอบนระบบ Linux, macOS และ Windows Language Server นี้ปฏิบัติตามมาตรฐาน LSP ทำให้เข้ากันได้กับ editor ยอดนิยมอย่าง Neovim, VS Code และ Emacs

ความคิดเห็นจากชุมชนเป็นไปในทางบวก โดยผู้ใช้แสดงความกระตือรือร้นที่ได้มีเครื่องมือสมัยใหม่มาใช้กับการกำหนดค่า systemd โปรเจกต์นี้แก้ไขปัญหาที่แท้จริงสำหรับผู้ดูแลระบบและนักพัฒนาที่ทำงานกับ service definition เป็นประจำ

การรวมเข้ากับ Editor:

  • รองรับมาตรฐาน LSP (ใช้งานได้กับ editor ทุกตัวที่รองรับ LSP)
  • มีการกำหนดค่าสำหรับ Neovim ให้กับไฟล์ *.service
  • เข้ากันได้กับ VS Code , Emacs และ editor อื่นๆ ที่รองรับ LSP
  • สามารถรันด้วยตนเองได้สำหรับการ debugging

การถกเถียงเกี่ยวกับรูปแบบการกำหนดค่า

โปรเจกต์นี้ได้จุดประกายการอพิปรายที่น่าสนใจเกี่ยวกับการเลือกใช้รูปแบบการกำหนดค่าแบบ INI-style ของ systemd สมาชิกชุมชนบางคนตั้งคำถามว่าทำไม systemd ไม่ใช้รูปแบบที่มีโครงสร้างมากกว่าอย่าง JSON หรือ XML ซึ่งสามารถใช้ประโยชน์จากเครื่องมือตรวจสอบ schema ที่มีอยู่แล้ว

อย่างไรก็ตาม คนอื่นๆ ปกป้องการเลือกใช้รูปแบบ INI โดยชี้ให้เห็นถึงลักษณะที่เป็นมิตรกับมนุษย์และการใช้งานอย่างแพร่หลายในไฟล์การกำหนดค่า Linux รูปแบบนี้อนุญาตให้ใส่ comment และหลีกเลี่ยงความยาวเหยียดของ XML หรือปัญหาความซับซ้อนที่บางครั้งเห็นได้ในการกำหนดค่า YAML

การพัฒนาในอนาคต

โปรเจกต์ systemd-lsp ยินดีรับการมีส่วนร่วมและมุ่งหวังให้มีการรวมเข้ากับ editor อย่างกว้างขวางมากขึ้น ผู้ใช้ได้แนะนำให้เพิ่มการสนับสนุนสำหรับ custom unit ที่สร้างโดยเครื่องมืออย่าง Podman ซึ่งบ่งชี้ถึงศักยภาพในการขยายฟังก์ชันการทำงาน นักพัฒนาหวังว่าจะสามารถรวมเครื่องมือนี้เข้ากับ package manager อย่าง Mason ในที่สุดเพื่อให้การติดตั้งง่ายขึ้น

Language Server นี้แสดงถึงโซลูชันที่ใช้งานได้จริงในการปรับปรุงประสบการณ์การกำหนดค่า systemd โดยนำเครื่องมือการพัฒนาสมัยใหม่มาสู่งานการดูแลระบบที่สำคัญ

อ้างอิง: systemd-lsp