Add Git to PHP docker, may not need them, reinstall packages with the new container.

This commit is contained in:
Dave Smith-Hayes 2025-08-06 22:09:42 -04:00
parent ec8bb01dc8
commit 72bb5ae3b3
7 changed files with 400 additions and 502 deletions

View File

@ -21,7 +21,7 @@
"cycle/annotated": "^4.3",
"cycle/schema-builder": "^2.11",
"cycle/entity-behavior": "^1.4",
"formr/formr": "^1.5"
"nette/forms": "^3.2"
},
"require-dev": {
"phpunit/phpunit": "^11.1",

592
app/composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +0,0 @@
<?php
namespace Slovocast\Service\Api;
/**
* The Form Service allows one to create a virtual form, send it to the view,
* and then handle the subsequent request. Any active form in a session will
* can be parsed and handled in the next request.
*/
interface FormServiceInterface
{
public function build($entity);
public function validate($data);
public function handle($request);
}

View File

@ -1,61 +0,0 @@
<?php
namespace Slovocast\Service\Forms;
use DOMDocument;
use DOMElement;
/**
* The Form class is a virutal represenation of a Form.
*/
class Form
{
public readonly DOMDocument $form;
public function __construct(
public readonly string $name,
public readonly string $method,
public readonly string $action
) { }
public function output(): string
{
$doc = new DOMDocument();
$doc->normalize();
return $doc->saveHTML($this->form);
}
/**
* Helper method for adding an element to the Form.
*
* @param string $type The type of element to add
* @param array<string, mixed> $properties Proprties for the element
* @return DOMElement
*/
protected function addElement(string $type, array $properties = []): DOMElement
{
$elem = new DOMElement($type);
if (!empty($properties)) {
foreach ($properties as $attr => $value) {
$elem->setAttribute($attr, $value);
}
}
return $elem;
}
/**
* @param string $name
* @param array<string, mixed> $properties
* @return satic
*/
public function addInput(string $name, array $properties = []): static
{
$input = $this->addElement('input', [
'name' => $name,
...$properties
]);
return $this;
}
}

View File

@ -7,7 +7,8 @@ RUN apt-get update && \
zip \
libzip-dev \
libpng-dev \
libxml2-dev
libxml2-dev \
git
RUN docker-php-ext-install pdo \
pdo_mysql \

View File

@ -1,168 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?><!-- generator="podbean/5.5" -->
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"
xmlns:spotify="http://www.spotify.com/ns/rss"
xmlns:media="http://search.yahoo.com/mrss/">
<channel>
<title>Kevys Country Breakfast</title>
<atom:link href="https://feed.podbean.com/kevyscountrybreakfast/feed.xml" rel="self" type="application/rss+xml"/>
<link>https://kevyscountrybreakfast.podbean.com</link>
<description>Beers, buds, and the great game of baseball.</description>
<pubDate>Tue, 12 May 2020 21:30:08 -0300</pubDate>
<generator>https://podbean.com/?v=5.5</generator>
<language>en</language>
<spotify:countryOfOrigin>ca</spotify:countryOfOrigin>
<copyright>Copyright 2019 All rights reserved.</copyright>
<category>Comedy</category>
<ttl>1440</ttl>
<itunes:type>episodic</itunes:type>
<itunes:subtitle>Kevys Country Breakfast</itunes:subtitle>
<itunes:summary>Beers, buds, and the great game of baseball.</itunes:summary>
<itunes:author>Kevys Country Breakfast</itunes:author>
<itunes:category text="Comedy" />
<itunes:owner>
<itunes:name>Kevys Country Breakfast</itunes:name>
<itunes:email>kevyscountrybreakfast@gmail.com</itunes:email>
</itunes:owner>
<itunes:block>No</itunes:block>
<itunes:explicit>yes</itunes:explicit>
<itunes:image href="https://pbcdn1.podbean.com/imglogo/image-logo/4943691/kcb-banner.jpg" />
<image>
<url>https://pbcdn1.podbean.com/imglogo/image-logo/4943691/kcb-banner.jpg</url>
<title>Kevys Country Breakfast</title>
<link>https://kevyscountrybreakfast.podbean.com</link>
<width>144</width>
<height>144</height>
</image>
<item>
<title>Episode #5: Sarasota Sizzle</title>
<itunes:title>Episode #5: Sarasota Sizzle</itunes:title>
<link>https://kevyscountrybreakfast.podbean.com/e/episode-5-sarasota-sizzle/</link>
<comments>https://kevyscountrybreakfast.podbean.com/e/episode-5-sarasota-sizzle/#comments</comments>
<pubDate>Tue, 12 May 2020 21:30:08 -0300</pubDate>
<guid isPermaLink="false">kevyscountrybreakfast.podbean.com/d7b42df5-ecf9-593a-803f-40d3a054cc6f</guid>
<description>
<![CDATA[<p>Ah, the sounds of spring. Birds chirping, dogs grilling, and the triumphant return of Kevys Country Breakfast. Join us for an all access guided tour as the Princes of Pod prepare to reclaim their crown of audio royalty. Plus, Taiwanese Baseball and Daves perverted palate.</p>]]>
</description>
<content:encoded>
<![CDATA[<p>Ah, the sounds of spring. Birds chirping, dogs grilling, and the triumphant return of Kevys Country Breakfast. Join us for an all access guided tour as the Princes of Pod prepare to reclaim their crown of audio royalty. Plus, Taiwanese Baseball and Daves perverted palate.</p>]]>
</content:encoded>
<enclosure url="https://mcdn.podbean.com/mf/web/sby3om/kcb-episode-5-demo-cut-14.mp3" length="49453453" type="audio/mpeg"/>
<itunes:subtitle>Ah, the sounds of spring. Birds chirping, dogs grilling, and the triumphant return of Kevys Country Breakfast. Join us for an all access guided tour as the Princes of Pod prepare to reclaim their crown of audio royalty. Plus, Taiwanese Baseball and Dave...</itunes:subtitle>
<itunes:summary>Ah, the sounds of spring. Birds chirping, dogs grilling, and the triumphant return of Kevys Country Breakfast. Join us for an all access guided tour as the Princes of Pod prepare to reclaim their crown of audio royalty. Plus, Taiwanese Baseball and Daves perverted palate.</itunes:summary>
<itunes:author>Kevys Country Breakfast</itunes:author>
<itunes:explicit>yes</itunes:explicit>
<itunes:block>No</itunes:block>
<itunes:duration>41:12</itunes:duration>
<itunes:episode>5</itunes:episode>
<itunes:episodeType>full</itunes:episodeType>
<itunes:image href="https://pbcdn1.podbean.com/imglogo/image-logo/4943691/kcb-banner.jpg" />
</item>
<item>
<title>Episode #4: Oh Barry, Where Art Thou?</title>
<itunes:title>Episode #4: Oh Barry, Where Art Thou?</itunes:title>
<link>https://kevyscountrybreakfast.podbean.com/e/episode-4-oh-barry-where-art-thou/</link>
<comments>https://kevyscountrybreakfast.podbean.com/e/episode-4-oh-barry-where-art-thou/#comments</comments>
<pubDate>Mon, 02 Dec 2019 01:11:45 -0400</pubDate>
<guid isPermaLink="false">kevyscountrybreakfast.podbean.com/episode-4-oh-barry-where-art-thou-e2f4f20555f98f80b74ba4fb01f99ac2</guid>
<description><![CDATA[<p>The crack of the eggs, the smell of the bacon, run downstairs its time for breakfast!</p>
<p>In this season finale the boys are confronted by a podcast rival, Dave is consoled after a recent tragedy, and a must-have crockpot enchilada repice that will make everyone at your holiday office potluck think you're jolly old St. Nick himself!</p>
<p>Plus, we enter the hot corner on uniforms, the Astros scandal, and our biggest baseball regrets.</p>]]></description>
<content:encoded><![CDATA[<p>The crack of the eggs, the smell of the bacon, run downstairs its time for breakfast!</p>
<p>In this season finale the boys are confronted by a podcast rival, Dave is consoled after a recent tragedy, and a must-have crockpot enchilada repice that will make everyone at your holiday office potluck think you're jolly old St. Nick himself!</p>
<p>Plus, we enter the hot corner on uniforms, the Astros scandal, and our biggest baseball regrets.</p>]]></content:encoded>
<enclosure url="https://mcdn.podbean.com/mf/web/jvxfu7/kcb-ep4-final-cut1.mp3" length="65412910" type="audio/mpeg"/>
<itunes:subtitle>The crack of the eggs, the smell of the bacon, run downstairs its time for breakfast!
In this season finale the boys are confronted by a podcast rival, Dave is consoled after a recent tragedy, and a must-have crockpot enchilada repice that will make eve...</itunes:subtitle>
<itunes:summary>The crack of the eggs, the smell of the bacon, run downstairs its time for breakfast!
In this season finale the boys are confronted by a podcast rival, Dave is consoled after a recent tragedy, and a must-have crockpot enchilada repice that will make everyone at your holiday office potluck think you're jolly old St. Nick himself!
Plus, we enter the hot corner on uniforms, the Astros scandal, and our biggest baseball regrets.</itunes:summary>
<itunes:author>Kevys Country Breakfast</itunes:author>
<itunes:explicit>yes</itunes:explicit>
<itunes:block>No</itunes:block>
<itunes:duration>46:18</itunes:duration>
<itunes:episode>4</itunes:episode>
<itunes:episodeType>full</itunes:episodeType>
<itunes:image href="https://pbcdn1.podbean.com/imglogo/ep-logo/pbblog4943691/kcb-banner.jpg" /> </item>
<item>
<title>Episode #3: Zippy Intentions</title>
<itunes:title>Episode #3: Zippy Intentions</itunes:title>
<link>https://kevyscountrybreakfast.podbean.com/e/episode-3-zippy-intentions/</link>
<comments>https://kevyscountrybreakfast.podbean.com/e/episode-3-zippy-intentions/#comments</comments>
<pubDate>Fri, 30 Aug 2019 18:33:39 -0300</pubDate>
<guid isPermaLink="false">kevyscountrybreakfast.podbean.com/episode-3-zippy-intentions-53b4518adce1a36b3d1981ab4ed41fef</guid>
<description><![CDATA[<p>At long last breakfast is served. A harrowing tale of betrayal, anger and ultimately forgiveness. Plus interleague, position players pitching, and other assorted chatter to gobble down your gullet.</p>]]></description>
<content:encoded><![CDATA[<p>At long last breakfast is served. A harrowing tale of betrayal, anger and ultimately forgiveness. Plus interleague, position players pitching, and other assorted chatter to gobble down your gullet.</p>]]></content:encoded>
<enclosure url="https://mcdn.podbean.com/mf/web/3tjbgj/kcb-ep3-rev2.mp3" length="52446675" type="audio/mpeg"/>
<itunes:subtitle>At long last breakfast is served. A harrowing tale of betrayal, anger and ultimately forgiveness. Plus interleague, position players pitching, and other assorted chatter to gobble down your gullet.</itunes:subtitle>
<itunes:summary>At long last breakfast is served. A harrowing tale of betrayal, anger and ultimately forgiveness. Plus interleague, position players pitching, and other assorted chatter to gobble down your gullet.</itunes:summary>
<itunes:author>Kevys Country Breakfast</itunes:author>
<itunes:explicit>yes</itunes:explicit>
<itunes:block>No</itunes:block>
<itunes:duration>36:25</itunes:duration>
<itunes:episode>3</itunes:episode>
<itunes:episodeType>full</itunes:episodeType>
<itunes:image href="https://pbcdn1.podbean.com/imglogo/image-logo/4943691/kcb-banner.jpg" /> </item>
<item>
<title>Episode #2: Time + Tragedy = Baseball</title>
<itunes:title>Episode #2: Time + Tragedy = Baseball</itunes:title>
<link>https://kevyscountrybreakfast.podbean.com/e/episode-2-time-tragedy-baseball/</link>
<comments>https://kevyscountrybreakfast.podbean.com/e/episode-2-time-tragedy-baseball/#comments</comments>
<pubDate>Thu, 27 Jun 2019 01:39:11 -0300</pubDate>
<guid isPermaLink="false">kevyscountrybreakfast.podbean.com/episode-2-time-tragedy-baseball-cf59e2e2c293b03fb4e1aab8d3349755</guid>
<description><![CDATA[<p>The boys are back, soaking in their new found fame. Also, uniform chatter and how to avoid being a wiener at the ballpark.</p>]]></description>
<content:encoded><![CDATA[<p>The boys are back, soaking in their new found fame. Also, uniform chatter and how to avoid being a wiener at the ballpark.</p>]]></content:encoded>
<enclosure url="https://mcdn.podbean.com/mf/web/c4a24f/kcb-final-episode2.mp3" length="34213029" type="audio/mpeg"/>
<itunes:subtitle>The boys are back, soaking in their new found fame. Also, uniform chatter and how to avoid being a wiener at the ballpark.</itunes:subtitle>
<itunes:summary>The boys are back, soaking in their new found fame. Also, uniform chatter and how to avoid being a wiener at the ballpark.</itunes:summary>
<itunes:author>Kevys Country Breakfast</itunes:author>
<itunes:explicit>yes</itunes:explicit>
<itunes:block>No</itunes:block>
<itunes:duration>46:23</itunes:duration>
<itunes:episode>2</itunes:episode>
<itunes:episodeType>full</itunes:episodeType>
<itunes:image href="https://pbcdn1.podbean.com/imglogo/image-logo/4943691/kcb-banner.jpg" /> </item>
<item>
<title>Episode #1: The Road to Podcast Cooperstown</title>
<itunes:title>Episode #1: The Road to Podcast Cooperstown</itunes:title>
<link>https://kevyscountrybreakfast.podbean.com/e/episode-1-1556497838/</link>
<comments>https://kevyscountrybreakfast.podbean.com/e/episode-1-1556497838/#comments</comments>
<pubDate>Sun, 28 Apr 2019 20:30:38 -0300</pubDate>
<guid isPermaLink="false">kevyscountrybreakfast.podbean.com/episode-1-1556497838-39169e505fea053c84adff5390276ade</guid>
<description><![CDATA[<p>Babe Ruths first at bat, Johnny Carsons first monologue, Enrique Iglesias first EP, and our first episode. What do these all have in common? Greatness. </p>
<p>Welcome abroad as we set sail on a one way ticket to podcast perfection. Welcome to Kevys Country Breakfast.</p>]]></description>
<content:encoded><![CDATA[<p>Babe Ruths first at bat, Johnny Carsons first monologue, Enrique Iglesias first EP, and our first episode. What do these all have in common? Greatness. </p>
<p>Welcome abroad as we set sail on a one way ticket to podcast perfection. Welcome to Kevys Country Breakfast.</p>]]></content:encoded>
<enclosure url="https://mcdn.podbean.com/mf/web/5jve36/kcb-episode1-rev3.mp3" length="65279999" type="audio/mpeg"/>
<itunes:subtitle>Babe Ruths first at bat, Johnny Carsons first monologue, Enrique Iglesias first EP, and our first episode. What do these all have in common? Greatness.
Welcome abroad as we set sail on a one way ticket to podcast perfection. Welcome to Kevys Country...</itunes:subtitle>
<itunes:summary>Babe Ruths first at bat, Johnny Carsons first monologue, Enrique Iglesias first EP, and our first episode. What do these all have in common? Greatness.
Welcome abroad as we set sail on a one way ticket to podcast perfection. Welcome to Kevys Country Breakfast.</itunes:summary>
<itunes:author>Kevys Country Breakfast</itunes:author>
<itunes:explicit>yes</itunes:explicit>
<itunes:block>No</itunes:block>
<itunes:duration>27:11</itunes:duration>
<itunes:episode>1</itunes:episode>
<itunes:episodeType>full</itunes:episodeType>
<itunes:image href="https://pbcdn1.podbean.com/imglogo/ep-logo/pbblog4943691/58733006_2968520773159862_7380393495602659328_n.jpg" /> </item>
</channel>
</rss>

View File

@ -1,61 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<rss version="2.0"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="http://feeds.soundcloud.com/users/soundcloud:users:332662771/sounds.rss"
rel="self"
type="application/rss+xml" />
<atom:link href="http://feeds.soundcloud.com/users/soundcloud:users:332662771/sounds.rss?before=344055767"
rel="next"
type="application/rss+xml" />
<!-- Show Meta -->
<title>MR. REWATCH - A Mr Robot Podcast</title>
<link>http://mrrewatch.com</link>
<description>The Mr. Robot recap podcast brought to you by a stand-up comedian and a depressive hacker.</description>
<image>
<url>http://i1.sndcdn.com/avatars-000337007387-jfo9kx-original.jpg</url>
<title>MR. REWATCH - A Mr Robot Podcast</title>
<link>http://mrrewatch.com</link>
</image>
<language>en</language>
<copyright>All rights reserved</copyright>
<!-- Build meta -->
<pubDate>Fri, 27 Dec 2019 02:25:11 +0000</pubDate>
<lastBuildDate>Fri, 27 Dec 2019 02:25:11 +0000</lastBuildDate>
<ttl>60</ttl>
<webMaster>feeds@soundcloud.com (SoundCloud Feeds)</webMaster>
<!-- iTunes Fields -->
<itunes:subtitle>The Mr. Robot recap podcast brought to you by a s…</itunes:subtitle>
<itunes:owner>
<itunes:name>MR. REWATCH - A Mr Robot Podcast</itunes:name>
<itunes:email>erinn.white@gmail.com</itunes:email>
</itunes:owner>
<itunes:author>MR. REWATCH - A Mr Robot Podcast</itunes:author>
<itunes:explicit>no</itunes:explicit>
<itunes:image href="http://i1.sndcdn.com/avatars-000337007387-jfo9kx-original.jpg"/>
<itunes:category text="TV &amp; Film"/>
<!-- Episodes -->
<item>
<guid isPermaLink="false">tag:soundcloud,2010:tracks/734397709</guid>
<title>413 Hello, Elliot</title>
<pubDate>Sat, 28 Dec 2019 05:01:52 +0000</pubDate>
<link>https://soundcloud.com/mrrewatch/mrrewatch-s04e13-final</link>
<itunes:duration>00:39:40</itunes:duration>
<itunes:author>MR. REWATCH - A Mr Robot Podcast</itunes:author>
<itunes:explicit>no</itunes:explicit>
<itunes:summary>All (well, almost all) is revealed in the second part of the series finale.</itunes:summary>
<itunes:subtitle>All (well, almost all) is revealed in the second …</itunes:subtitle>
<description>All (well, almost all) is revealed in the second part of the series finale.</description>
<enclosure type="audio/mpeg"
url="http://feeds.soundcloud.com/stream/734397709-mrrewatch-mrrewatch-s04e13-final.mp3"
length="57121017" />
<itunes:image href="http://i1.sndcdn.com/avatars-000337007387-jfo9kx-original.jpg"/>
</item>
</channel>
</rss>