Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions config/feeds.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,19 @@
*/
'background' => (bool) env('FEED_SCHEDULE_RUN_BACKGROUND', true),
],

/**
* Console display options.
*/
'console' => [
/**
* Enables a progress bar when generating feeds in the console.
*
* When set to true, the feed:generate command will display a
* progress bar showing the execution progress.
*
* Default is false.
*/
'progress_bar' => (bool) env('FEED_CONSOLE_PROGRESS_BAR_ENABLED', false),
],
];
20 changes: 10 additions & 10 deletions docs/snippets/advanced-directive-array.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@
<array_directive>

<user>
<name>Hanna Kertzmann</name>
<avatar>https://via.placeholder.com/640x480.png/006633?text=voluptatem</avatar>
<avatar>https://via.placeholder.com/640x480.png/00cc33?text=neque</avatar>
<images name="inventore cumque perspiciatis">https://via.placeholder.com/640x480.png/00bbee?text=nisi</images>
<images name="consequuntur distinctio deserunt">https://via.placeholder.com/640x480.png/00ccbb?text=quia</images>
<name>Kayley Hermann</name>
<avatar>https://via.placeholder.com/640x480.png/00aa77?text=eos</avatar>
<avatar>https://via.placeholder.com/640x480.png/00ff66?text=voluptatem</avatar>
<images name="itaque repudiandae quod">https://via.placeholder.com/640x480.png/00ee33?text=qui</images>
<images name="nemo quasi et">https://via.placeholder.com/640x480.png/005555?text=aut</images>
</user>
<user>
<name>Maximus Russel</name>
<avatar>https://via.placeholder.com/640x480.png/000088?text=sint</avatar>
<avatar>https://via.placeholder.com/640x480.png/00cc44?text=natus</avatar>
<images name="nam qui nihil">https://via.placeholder.com/640x480.png/007788?text=vel</images>
<images name="voluptas aut et">https://via.placeholder.com/640x480.png/00aaff?text=excepturi</images>
<name>Dr. Alek Stamm PhD</name>
<avatar>https://via.placeholder.com/640x480.png/0077dd?text=necessitatibus</avatar>
<avatar>https://via.placeholder.com/640x480.png/00ee00?text=nulla</avatar>
<images name="rerum voluptas est">https://via.placeholder.com/640x480.png/003377?text=id</images>
<images name="velit qui perspiciatis">https://via.placeholder.com/640x480.png/0022bb?text=necessitatibus</images>
</user>

</array_directive>
10 changes: 5 additions & 5 deletions docs/snippets/advanced-directive-attributes.xml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<attributes_directive>

<company since="1980"/>
<company since="1979"/>
<url>https://example.com</url>

<user>
<name>Oral Little</name>
<contact email="greenfelder.marlin@example.org" phone="555-000-1"/>
<name>Lila Jones</name>
<contact email="lavada04@example.org" phone="555-000-1"/>
</user>
<user>
<name>Immanuel Hintz</name>
<contact email="estel.prohaska@example.net" phone="555-000-2"/>
<name>Denis Hane</name>
<contact email="gibson.maynard@example.com" phone="555-000-2"/>
</user>

</attributes_directive>
8 changes: 4 additions & 4 deletions docs/snippets/advanced-directive-cdata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
<cdata_directive>

<user>
<name><![CDATA[<h1>Lizzie Kris PhD</h1>]]></name>
<email>gorczany.chance@example.com</email>
<name><![CDATA[<h1>Jazmyne Carroll</h1>]]></name>
<email>qcrona@example.org</email>
</user>
<user>
<name><![CDATA[<h1>Mr. Christ Keeling</h1>]]></name>
<email>haylee.schaefer@example.net</email>
<name><![CDATA[<h1>Prof. Aida Gusikowski</h1>]]></name>
<email>will.amber@example.org</email>
</user>

</cdata_directive>
8 changes: 4 additions & 4 deletions docs/snippets/advanced-directive-mixed.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
<mixed_directive>

<user>
<name>Fleta Emmerich</name>
<name>Jana Purdy</name>
<some>
<first>Foo</first>
<second>kristoffer86@example.com</second>
<second>greenfelder.karley@example.net</second>
</some>
</user>
<user>
<name>Jordi Dicki</name>
<name>Brandt Bernhard</name>
<some>
<first>Foo</first>
<second>dwaters@example.net</second>
<second>king.orlando@example.com</second>
</some>
</user>

Expand Down
8 changes: 4 additions & 4 deletions docs/snippets/advanced-directive-value.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
<value_directive>

<user>
<name>Llewellyn Bednar</name>
<contact type="email">caterina67@example.com</contact>
<name>Elvie Lowe I</name>
<contact type="email">zwalker@example.org</contact>
</user>
<user>
<name>Dr. Janick Nolan</name>
<contact type="email">grussel@example.org</contact>
<name>Trenton Lindgren DDS</name>
<contact type="email">josefa42@example.com</contact>
</user>

</value_directive>
8 changes: 4 additions & 4 deletions docs/snippets/advanced-element-attribute.xml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<attribute>

<user created_at="2025-09-05 00:52:26">
<user created_at="2025-09-05 01:30:20">
<id>1</id>
<name>Dedrick Maggio</name>
<name>Jarrett Stark</name>
</user>
<user created_at="2025-09-05 00:52:26">
<user created_at="2025-09-05 01:30:20">
<id>2</id>
<name>Miss Eugenia Streich IV</name>
<name>Nathan Shields</name>
</user>

</attribute>
4 changes: 2 additions & 2 deletions docs/snippets/advanced-element-header-footer.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@

<user>
<id>1</id>
<name>Marilou Dooley</name>
<name>Miss Myrtice Durgan Jr.</name>
</user>
<user>
<id>2</id>
<name>Mireya Larson II</name>
<name>Wayne Padberg</name>
</user>

</header_footer>
Expand Down
4 changes: 2 additions & 2 deletions docs/snippets/advanced-element-info-before-false.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@

<user>
<id>1</id>
<name>Van Gaylord Jr.</name>
<name>Earnest Bashirian Jr.</name>
</user>
<user>
<id>2</id>
<name>Mr. Jerome Cartwright</name>
<name>Noemi Altenwerth III</name>
</user>

</info_method>
4 changes: 2 additions & 2 deletions docs/snippets/advanced-element-info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@

<user>
<id>1</id>
<name>Mr. Darwin Abshire</name>
<name>Jaden Boehm</name>
</user>
<user>
<id>2</id>
<name>Eric Collins</name>
<name>Adelbert Kihn</name>
</user>

</info_method>
4 changes: 2 additions & 2 deletions docs/snippets/advanced-element-root.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@

<user>
<id>1</id>
<name>Colt Jenkins IV</name>
<name>Frances Treutel</name>
</user>
<user>
<id>2</id>
<name>Mr. Jesse Bradtke</name>
<name>Mr. Brad Kirlin DDS</name>
</user>

</foo>
48 changes: 24 additions & 24 deletions docs/snippets/receipt-instagram-feed.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,46 +6,46 @@

<item>
<g:id>1</g:id>
<g:title><![CDATA[quia quasi soluta harum]]></g:title>
<g:description><![CDATA[Quia vel ut dolorum aut. Reiciendis est asperiores tenetur et. Facere impedit necessitatibus dolorum voluptatibus occaecati et.]]></g:description>
<g:link>https://example.com/products/aliquid-aliquam-odit-id-in-ea-veritatis-fuga-voluptas</g:link>
<g:image_link>https://via.placeholder.com/640x480.png/004400?text=quos</g:image_link>
<g:additional_image_link>https://via.placeholder.com/640x480.png/009988?text=aut</g:additional_image_link>
<g:additional_image_link>https://via.placeholder.com/640x480.png/000077?text=enim</g:additional_image_link>
<g:brand>consequatur</g:brand>
<g:title><![CDATA[amet dolor iusto rerum]]></g:title>
<g:description><![CDATA[Qui aliquid ut vel est debitis. Eius debitis laborum temporibus corrupti commodi et. Praesentium vero eos qui voluptatibus. Suscipit ut id eius esse voluptatem rerum.]]></g:description>
<g:link>https://example.com/products/sint-dolor-omnis-doloribus-aut-numquam-aliquid-perspiciatis-doloribus</g:link>
<g:image_link>https://via.placeholder.com/640x480.png/00bbaa?text=quo</g:image_link>
<g:additional_image_link>https://via.placeholder.com/640x480.png/009988?text=nostrum</g:additional_image_link>
<g:additional_image_link>https://via.placeholder.com/640x480.png/0066dd?text=rerum</g:additional_image_link>
<g:brand>et</g:brand>
<g:condition>new</g:condition>
<g:availability>in stock</g:availability>
<g:price>168</g:price>
<g:sale_price>168</g:sale_price>
<g:price>719</g:price>
<g:sale_price>719</g:sale_price>
<g:item_group_id>12345</g:item_group_id>
<g:status>active</g:status>
<g:color><![CDATA[Sienna]]></g:color>
<g:size>21</g:size>
<g:color><![CDATA[FloralWhite]]></g:color>
<g:size>24</g:size>
<g:age_group>adult</g:age_group>
<g:material><![CDATA[eum]]></g:material>
<g:material><![CDATA[dolorum]]></g:material>
<g:pattern><![CDATA[regular]]></g:pattern>
<g:google_product_category>1000</g:google_product_category>
<g:fb_product_category>2000</g:fb_product_category>
</item>
<item>
<g:id>2</g:id>
<g:title><![CDATA[magni quo sunt vitae]]></g:title>
<g:description><![CDATA[Veritatis dolor aut alias ut autem. Quo molestiae in veritatis veniam ipsam omnis. Nesciunt enim dignissimos nam et incidunt atque non aut. Aliquam asperiores aperiam ut eveniet illum.]]></g:description>
<g:link>https://example.com/products/dolorum-perferendis-hic-officia-cumque-aperiam-sed</g:link>
<g:image_link>https://via.placeholder.com/640x480.png/003366?text=accusantium</g:image_link>
<g:additional_image_link>https://via.placeholder.com/640x480.png/0066ee?text=eum</g:additional_image_link>
<g:additional_image_link>https://via.placeholder.com/640x480.png/00bbaa?text=autem</g:additional_image_link>
<g:brand>quae</g:brand>
<g:title><![CDATA[eaque laudantium eveniet dolores]]></g:title>
<g:description><![CDATA[In temporibus debitis consequatur unde laudantium consectetur id. Cupiditate provident debitis nulla accusantium minima et minus. Dicta unde quis odio odio perspiciatis exercitationem in.]]></g:description>
<g:link>https://example.com/products/qui-et-veritatis-molestias-non-voluptatem</g:link>
<g:image_link>https://via.placeholder.com/640x480.png/00cc33?text=distinctio</g:image_link>
<g:additional_image_link>https://via.placeholder.com/640x480.png/00aa33?text=omnis</g:additional_image_link>
<g:additional_image_link>https://via.placeholder.com/640x480.png/0033ee?text=voluptatem</g:additional_image_link>
<g:brand>corporis</g:brand>
<g:condition>new</g:condition>
<g:availability>in stock</g:availability>
<g:price>531</g:price>
<g:sale_price>531</g:sale_price>
<g:price>183</g:price>
<g:sale_price>183</g:sale_price>
<g:item_group_id>12345</g:item_group_id>
<g:status>active</g:status>
<g:color><![CDATA[SaddleBrown]]></g:color>
<g:size>49</g:size>
<g:color><![CDATA[Purple]]></g:color>
<g:size>21</g:size>
<g:age_group>adult</g:age_group>
<g:material><![CDATA[sed]]></g:material>
<g:material><![CDATA[unde]]></g:material>
<g:pattern><![CDATA[regular]]></g:pattern>
<g:google_product_category>1000</g:google_product_category>
<g:fb_product_category>2000</g:fb_product_category>
Expand Down
4 changes: 2 additions & 2 deletions docs/snippets/receipt-sitemap-feed.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">

<url>
<loc>https://example.com/products/repudiandae-porro-consequatur-sunt</loc>
<loc>https://example.com/products/quo-et-ut-eum-labore-libero-est-asperiores</loc>
<lastmod>2025-09-04T04:08:12+00:00</lastmod>
<priority>0.9</priority>
</url>
<url>
<loc>https://example.com/products/enim-doloribus-distinctio-explicabo</loc>
<loc>https://example.com/products/nemo-aperiam-vel-sit-eos-et-eos</loc>
<lastmod>2025-09-04T04:08:12+00:00</lastmod>
<priority>0.9</priority>
</url>
Expand Down
46 changes: 23 additions & 23 deletions docs/snippets/receipt-yandex-feed.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,35 +17,35 @@
<offers>

<offer id="1" available="true" type="vendor.model">
<url>https://example.com/products/molestiae-amet-amet-dolor-iste</url>
<barcode>GD-!F-9F</barcode>
<name>reprehenderit accusantium molestiae minus</name>
<description>Libero autem dolorem labore voluptatibus. Minima laborum eveniet autem aut expedita veniam voluptate. Autem fuga distinctio accusantium consectetur.</description>
<url>https://example.com/products/iure-ad-nisi-odit-fugiat-non-aut-exercitationem</url>
<barcode>GD-^V#W`</barcode>
<name>nemo quisquam voluptate praesentium</name>
<description>Ut rerum libero nobis. A quis corrupti assumenda laudantium aut similique. Iste magnam dolor non saepe dolores non aut. Accusamus et natus rerum provident.</description>
<delivery>true</delivery>
<price>574</price>
<price>980</price>
<currencyId>RUR</currencyId>
<vendor>voluptatem</vendor>
<picture>https://via.placeholder.com/640x480.png/00cc33?text=quis</picture>
<picture>https://via.placeholder.com/640x480.png/00cc99?text=illum</picture>
<picture>https://via.placeholder.com/640x480.png/00ee33?text=rem</picture>
<param name="Артикул">GD-!F-9F</param>
<param name="Код цвета">7</param>
<param name="Пол">female</param>
<vendor>aut</vendor>
<picture>https://via.placeholder.com/640x480.png/000055?text=laborum</picture>
<picture>https://via.placeholder.com/640x480.png/002200?text=eligendi</picture>
<picture>https://via.placeholder.com/640x480.png/00eecc?text=quaerat</picture>
<param name="Артикул">GD-^V#W`</param>
<param name="Код цвета">8</param>
<param name="Пол">male</param>
</offer>
<offer id="2" available="true" type="vendor.model">
<url>https://example.com/products/officia-dolores-porro-asperiores-inventore</url>
<barcode>GD-)M%K*</barcode>
<name>quae unde delectus incidunt</name>
<description>Modi ut quae quia aspernatur autem. Odio deserunt eos asperiores sed quaerat. Harum et laborum sit quia est et voluptatem ea.</description>
<url>https://example.com/products/sed-et-non-non</url>
<barcode>GD-P]H/Z</barcode>
<name>enim ut voluptatum natus</name>
<description>Omnis ut non iusto qui repudiandae sint fuga modi. Consequatur ipsum quibusdam labore. Culpa qui asperiores sint similique.</description>
<delivery>true</delivery>
<price>695</price>
<price>595</price>
<currencyId>RUR</currencyId>
<vendor>et</vendor>
<picture>https://via.placeholder.com/640x480.png/00ee44?text=nostrum</picture>
<picture>https://via.placeholder.com/640x480.png/0066ee?text=rerum</picture>
<picture>https://via.placeholder.com/640x480.png/003399?text=nulla</picture>
<param name="Артикул">GD-)M%K*</param>
<param name="Код цвета">1</param>
<vendor>sint</vendor>
<picture>https://via.placeholder.com/640x480.png/00ddcc?text=fuga</picture>
<picture>https://via.placeholder.com/640x480.png/00bb66?text=quia</picture>
<picture>https://via.placeholder.com/640x480.png/00bbaa?text=doloribus</picture>
<param name="Артикул">GD-P]H/Z</param>
<param name="Код цвета">6</param>
<param name="Пол">male</param>
</offer>

Expand Down
24 changes: 21 additions & 3 deletions src/Commands/FeedGenerateCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use Symfony\Component\Console\Input\InputArgument;

use function app;
use function config;
use function is_numeric;

#[AsCommand('feed:generate', 'Generate XML feeds')]
Expand All @@ -29,12 +30,24 @@ public function handle(GeneratorService $generator, FeedQuery $query): void
continue;
}

$this->components->info($feed);

$generator->feed(app($feed), $this->output);
$this->hasProgressBar()
? $this->performWithProgressBar($generator, $feed)
: $this->performWithoutProgressBar($generator, $feed);
}
}

protected function performWithProgressBar(GeneratorService $generator, string $feed): void
{
$this->components->info($feed);

$generator->feed(app($feed), $this->output);
}

protected function performWithoutProgressBar(GeneratorService $generator, string $feed): void
{
$this->components->task($feed, fn () => $generator->feed(app($feed)));
}

protected function feedable(FeedQuery $feeds): array
{
if (! $id = $this->argument('feed')) {
Expand Down Expand Up @@ -63,6 +76,11 @@ protected function messageYellow(string $message): string
return $this->yellow($message);
}

protected function hasProgressBar(): bool
{
return config()?->boolean('feeds.console.progress_bar');
}

protected function getArguments(): array
{
return [
Expand Down
Loading