• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eliashaeussler / cache-warmup / 8011103897

22 Feb 2024 09:17PM UTC coverage: 76.466% (-21.2%) from 97.674%
8011103897

Pull #333

github

web-flow
Merge ca3e396ce into 0442a6074
Pull Request #333: [FEATURE] Introduce Config API

44 of 355 new or added lines in 15 files covered. (12.39%)

6 existing lines in 1 file now uncovered.

1095 of 1432 relevant lines covered (76.47%)

6.73 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Config/Adapter/ConsoleInputConfigAdapter.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of the Composer package "eliashaeussler/cache-warmup".
7
 *
8
 * Copyright (C) 2020-2024 Elias Häußler <elias@haeussler.dev>
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation, either version 3 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22
 */
23

24
namespace EliasHaeussler\CacheWarmup\Config\Adapter;
25

26
use EliasHaeussler\CacheWarmup\Config;
27
use EliasHaeussler\CacheWarmup\Crawler;
28
use Symfony\Component\Console;
29

30
/**
31
 * ConsoleInputConfigAdapter.
32
 *
33
 * @author Elias Häußler <elias@haeussler.dev>
34
 * @license GPL-3.0-or-later
35
 */
36
final class ConsoleInputConfigAdapter implements ConfigAdapter
37
{
38
    private readonly Crawler\CrawlerFactory $crawlerFactory;
39

NEW
40
    public function __construct(
×
41
        private readonly Console\Input\InputInterface $input,
42
    ) {
NEW
43
        $this->crawlerFactory = new Crawler\CrawlerFactory();
×
44
    }
45

NEW
46
    public function get(): Config\CacheWarmupConfig
×
47
    {
NEW
48
        $config = new Config\CacheWarmupConfig();
×
49

50
        /** @var list<string> $sitemaps */
NEW
51
        $sitemaps = $this->input->getArgument('sitemaps');
×
52
        /** @var list<string> $urls */
NEW
53
        $urls = $this->input->getOption('urls');
×
54
        /** @var list<string> $excludePatterns */
NEW
55
        $excludePatterns = $this->input->getOption('exclude');
×
56

NEW
57
        foreach ($sitemaps as $sitemap) {
×
NEW
58
            $config->addSitemap($sitemap);
×
59
        }
60

NEW
61
        foreach ($urls as $url) {
×
NEW
62
            $config->addUrl($url);
×
63
        }
64

NEW
65
        foreach ($excludePatterns as $excludePattern) {
×
NEW
66
            $config->addExcludePattern($excludePattern);
×
67
        }
68

NEW
69
        $config->setLimit((int) $this->input->getOption('limit'));
×
70

NEW
71
        if ($this->input->getOption('progress')) {
×
NEW
72
            $config->enableProgressBar();
×
73
        } else {
NEW
74
            $config->disableProgressBar();
×
75
        }
76

NEW
77
        if (null !== $this->input->getOption('crawler')) {
×
NEW
78
            $config->setCrawler($this->input->getOption('crawler'));
×
79
        }
80

NEW
81
        if (null !== $this->input->getOption('crawler-options')) {
×
NEW
82
            $config->setCrawlerOptions(
×
NEW
83
                $this->crawlerFactory->parseCrawlerOptions(
×
NEW
84
                    $this->input->getOption('crawler-options'),
×
NEW
85
                ),
×
NEW
86
            );
×
87
        }
88

NEW
89
        if (null !== $this->input->getOption('strategy')) {
×
NEW
90
            $config->setStrategy($this->input->getOption('strategy'));
×
91
        }
92

NEW
93
        if ($this->input->getOption('allow-failures')) {
×
NEW
94
            $config->allowFailures();
×
95
        } else {
NEW
96
            $config->disallowFailures();
×
97
        }
98

NEW
99
        if ($this->input->getOption('stop-on-failure')) {
×
NEW
100
            $config->stopOnFailure();
×
101
        } else {
NEW
102
            $config->dontStopOnFailure();
×
103
        }
104

NEW
105
        $config->setFormat($this->input->getOption('format'));
×
106

NEW
107
        if (null !== $this->input->getOption('log-file')) {
×
NEW
108
            $config->setLogFile($this->input->getOption('log-file'));
×
109
        }
110

NEW
111
        $config->setLogLevel($this->input->getOption('log-level'));
×
NEW
112
        $config->repeatAfter((int) $this->input->getOption('repeat-after'));
×
113

NEW
114
        return $config;
×
115
    }
116
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc