Fix project structuring

This commit is contained in:
chiroptical 2024-06-09 15:24:46 -04:00
parent 9f9971ebac
commit 9570c122cd
7 changed files with 49 additions and 54 deletions

View File

@ -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

View File

@ -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)
}

View File

@ -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)
}

View File

@ -1,6 +0,0 @@
pub type GildedRose =
List(Item)
pub type Item {
Item(name: String, sell_in: Int, quality: Int)
}

View File

@ -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),

View File

@ -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)

View File

@ -0,0 +1,5 @@
import gleeunit
pub fn main() {
gleeunit.main()
}