Menambahkan Fitur Command Line Pada Project ASP.NET Core

By Rizky Kurniawan - August 3, 2024 ~3 mins read

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:

Hasilnya

Referensi

Kamu bisa lihat dokumentasi resmi untuk package RuangDeveloper.AspNetCore.Command melalui link berikut: https://www.nuget.org/packages/RuangDeveloper.AspNetCore.Command/

Bagikan:

Ingin Berdiskusi?

Yuk bergabung di Grup Telegram Ruang Developer atau mulai diskusi melalui GitHub. See You!

Dapatkan contoh source code project backend, frontend, atau fullstack untuk kamu amati, tiru, dan modifikasi sesuka hati. Klik untuk melihat detail!
comments powered by Disqus

Berlangganan Gratis

Kamu akan menerima email update dari Ruang Developer

Beri Dukungan

Beri dukungan, dapatkan full source code project web untuk bahan referensi, tiru, dan modifikasi.
Lightbox