ruangdeveloper.com - Halo semuanya! Selamat datang di Ruang Developer Blog. Setelah seru membahas tentang AI pada postingan sebelumnya, kali ini kita coba untuk pindah ke topik yang berbeda. Kita akan membahas bagaimana cara menambahkan fitur command line pada project ASP.NET Core.
Basa-basi
Tahukah Kamu? ASP.NET Core adalah salah satu framework populer yang dikembangkan oleh Microsoft untuk membangun aplikasi berbasis web. Apakah Kamu pernah menggunakan framework ini? Jika ya, mungkin Kamu pernah mengalami kesulitan untuk menjalankan sebuah perintah melalui terminal untuk melakukan aksi tertentu di aplikasi Kamu. Salah satu aksi yang biasanya ingin dilakukan adalah berinteraksi dengan database, seperti mengisi data (seeding), menghapus atau merubah suatu data tertentu. Masalahanya adalah ASP.NET Core tidak memiliki fitur untuk menjalankan perintah spesifik yang kita buat khusus untuk aplikasi kita. Untuk mengatasi hal itu, saya mencoba untuk membuat NugGet Package yang akan memungkinkan Kamu untuk membuat perintah terminal spesifik sesuai kebutuhan aplikasi kamu. Yuk, lanjut….
Bagaimana Caranya?
Mudah sekali Ges! Yuk, ikuti langkah-langkah berikut!
Install
Pertama, kita perlu install packagenya terlebih dahulu dengan menjalankan perintah berikut:
dotnet add package RuangDeveloper.AspNetCore.Command --version 1.0.1
Note: saat tulisan ini dibuat, versi terbaru yang tersedia adalah 1.0.1
Buat Command Class
Pada project Kamu, cobalah untuk membuat folder bernama “Commands” kemudian buat sebuah file di dalamnya berisi class yang mengimplementasikan interface ICommand
. Contohmya seperti berikut:
using System;
using System.Threading.Tasks;
using RuangDeveloper.AspNetCore.Command;
public class SayHello : ICommand
{
public string Name => "hello";
public string Description => "Say hello command";
public async Task ExecuteAsync(string[] args)
{
// Misalnya ada proses yang lama (query ke database)
await Task.Delay(1000);
Console.WriteLine("Hello, world! (Async)");
}
public void Execute(string[] args)
{
Console.WriteLine("Hello, world! (Sync)");
}
}
Pada contoh di atas, kita membuat sebuah class berama SayHello yang berisi atribut Name
dan Description
serta method ExecuteAsync
dan Execute
.
- Atribut
Name
digunakan untuk mengidentifikasi command yang akan kita jalankan di terminal. - Atribut
Description
menjelaskan apa fungsi dari command tersebut. (Saat tulisan ini dibuat, atribute ini tidak dijelaskan pada dokumentasi project ini karena kelalaian :D, akan diperbaiki pada rilis berikutnya). - Method
ExecuteAsync
digunakan untuk menjalankan perintah perintah yang bersifat asynchronous. - Method
Execute
digunakan untuk menjalankan perintah yang bersifat synchronous.
Penggunaan ExecuteAsync
dan Execute
adalah opsional. Kamu tidak perlu menggunakan keduanya. Jika kamu menggunakan method ExecuteAsync
, kamu bisa mengosongkan method Execute
, begitu pun sebaliknya.
Registrasikan Command Class
Setelah membuat command, kita perlu meregistrasikan package dan command yang kita buat ke dalam service collection aplikasi kita. Silahkan buka file Program.cs
dan tambahkan kode berikut.
builder.Services.AddCommands(configure =>
{
configure.AddCommand<SayHello>();
});
Modifikasi Cara Aplikasi Dijalankan
Secara default, pada file Program.cs
aplikasi kita biasanya dijalankan dengan method .Run()
. Agar bisa menjalankan command yang kita buat, kita perlu menggantinya dengan method .RunWithCommands()
. Contohnya seperti berikut:
// Ganti app.Run(); menjadi
app.RunWithCommands(args);
Menjalankan Command Class
Kit bisa menjalankan command class yang kita buat dengan perintah seperti berikut:
dotnet run command --command hello
Option --command
digunakan untuk menentukan command apa yang akan kita jalankan, dalam hal ini adalah command class kita yang memiliki atribut Name
bernilai “hello”.
Berikut hasilnya:
Referensi
Kamu bisa lihat dokumentasi resmi untuk package RuangDeveloper.AspNetCore.Command melalui link berikut: https://www.nuget.org/packages/RuangDeveloper.AspNetCore.Command/