From 9570c122cd95d20b46c194a1b9262f234b397b5c Mon Sep 17 00:00:00 2001 From: chiroptical Date: Sun, 9 Jun 2024 15:24:46 -0400 Subject: [PATCH] Fix project structuring --- gleam/gleam.toml | 2 +- gleam/src/cli.gleam | 33 ----------------- gleam/src/gilded_rose.gleam | 13 +++---- gleam/src/gilded_rose_item.gleam | 6 ---- .../src/{test_fixture.gleam => program.gleam} | 36 ++++++++++++++++++- gleam/test/gilded_rose_test.gleam | 8 +---- gleam/test/program_test.gleam | 5 +++ 7 files changed, 49 insertions(+), 54 deletions(-) delete mode 100644 gleam/src/cli.gleam delete mode 100644 gleam/src/gilded_rose_item.gleam rename gleam/src/{test_fixture.gleam => program.gleam} (58%) create mode 100644 gleam/test/program_test.gleam diff --git a/gleam/gleam.toml b/gleam/gleam.toml index cb85fc85..1fcc01b4 100644 --- a/gleam/gleam.toml +++ b/gleam/gleam.toml @@ -1,4 +1,4 @@ -name = "gilded_rose" +name = "program" version = "1.0.0" # Fill out these fields if you intend to generate HTML documentation or publish diff --git a/gleam/src/cli.gleam b/gleam/src/cli.gleam deleted file mode 100644 index cded99b3..00000000 --- a/gleam/src/cli.gleam +++ /dev/null @@ -1,33 +0,0 @@ -import argv -import gilded_rose_item.{type GildedRose} -import gleam/function -import gleam/io -import glint -import glint/flag -import test_fixture.{simulate} - -pub fn run_cli_app(modify_inventory: fn(GildedRose) -> GildedRose) { - let days_flag = "days" - - let number_of_days = - flag.int() - |> flag.default(2) - |> flag.description("Number of days") - - let simulate_inventory = fn() { - use input <- glint.command() - - let assert Ok(number_of_days) = - flag.get_int(from: input.flags, for: days_flag) - simulate(number_of_days, modify_inventory) - } - - let app = - glint.new() - |> glint.with_name("Gilded Rose") - |> glint.group_flag([], days_flag, number_of_days) - |> glint.add(at: [], do: simulate_inventory()) - - io.println("OMGHAI!") - glint.run_and_handle(app, argv.load().arguments, function.identity) -} diff --git a/gleam/src/gilded_rose.gleam b/gleam/src/gilded_rose.gleam index 444caab8..6a5c6e0e 100644 --- a/gleam/src/gilded_rose.gleam +++ b/gleam/src/gilded_rose.gleam @@ -1,7 +1,12 @@ -import cli -import gilded_rose_item.{type GildedRose, type Item, Item} import gleam/list +pub type GildedRose = + List(Item) + +pub type Item { + Item(name: String, sell_in: Int, quality: Int) +} + pub fn update_quality(inventory: GildedRose) -> GildedRose { let update_quality_item = fn(item: Item) { let new_quality = case @@ -102,7 +107,3 @@ pub fn update_quality(inventory: GildedRose) -> GildedRose { } list.map(inventory, update_quality_item) } - -pub fn main() { - cli.run_cli_app(update_quality) -} diff --git a/gleam/src/gilded_rose_item.gleam b/gleam/src/gilded_rose_item.gleam deleted file mode 100644 index 571a6d0c..00000000 --- a/gleam/src/gilded_rose_item.gleam +++ /dev/null @@ -1,6 +0,0 @@ -pub type GildedRose = - List(Item) - -pub type Item { - Item(name: String, sell_in: Int, quality: Int) -} diff --git a/gleam/src/test_fixture.gleam b/gleam/src/program.gleam similarity index 58% rename from gleam/src/test_fixture.gleam rename to gleam/src/program.gleam index 2be4d634..0d402d12 100644 --- a/gleam/src/test_fixture.gleam +++ b/gleam/src/program.gleam @@ -1,8 +1,42 @@ -import gilded_rose_item.{type GildedRose, type Item, Item} +import argv +import gilded_rose.{type GildedRose, type Item, Item, update_quality} +import gleam/function import gleam/int import gleam/io import gleam/list import gleam/string +import glint +import glint/flag + +pub fn main() { + run_cli_app(update_quality) +} + +pub fn run_cli_app(modify_inventory: fn(GildedRose) -> GildedRose) { + let days_flag = "days" + + let number_of_days = + flag.int() + |> flag.default(2) + |> flag.description("Number of days") + + let simulate_inventory = fn() { + use input <- glint.command() + + let assert Ok(number_of_days) = + flag.get_int(from: input.flags, for: days_flag) + simulate(number_of_days, modify_inventory) + } + + let app = + glint.new() + |> glint.with_name("Gilded Rose") + |> glint.group_flag([], days_flag, number_of_days) + |> glint.add(at: [], do: simulate_inventory()) + + io.println("OMGHAI!") + glint.run_and_handle(app, argv.load().arguments, function.identity) +} const test_fixture = [ Item("+5 Dexterity Vest", 10, 20), Item("Aged Brie", 2, 0), diff --git a/gleam/test/gilded_rose_test.gleam b/gleam/test/gilded_rose_test.gleam index c7cee257..42ac60ce 100644 --- a/gleam/test/gilded_rose_test.gleam +++ b/gleam/test/gilded_rose_test.gleam @@ -1,12 +1,6 @@ -import gilded_rose.{update_quality} -import gilded_rose_item.{Item} -import gleeunit +import gilded_rose.{Item, update_quality} import gleeunit/should -pub fn main() { - gleeunit.main() -} - pub fn update_quality_test() { let inventory = [Item("foo", 0, 0)] let assert [new_item] = update_quality(inventory) diff --git a/gleam/test/program_test.gleam b/gleam/test/program_test.gleam new file mode 100644 index 00000000..ecd12adf --- /dev/null +++ b/gleam/test/program_test.gleam @@ -0,0 +1,5 @@ +import gleeunit + +pub fn main() { + gleeunit.main() +}