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

Freegle / Iznik / 15405

19 May 2026 04:44PM UTC coverage: 69.555% (-3.4%) from 72.97%
15405

push

circleci

edwh
fix(fastlane): correct File.exist? path for modtools Google Play key

Fastlane's CWD is the fastlane/ directory, so File.exist? must use a
bare filename — not 'fastlane/modtools-google-play-api-key.json' which
resolves to fastlane/fastlane/... and is always missing.
Matches the pattern used by the working Freegle beta lane.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

10030 of 13466 branches covered (74.48%)

Branch coverage included in aggregate %.

106846 of 154568 relevant lines covered (69.13%)

34.65 hits per line

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

87.5
/iznik-batch/app/Console/Commands/Integrations/SyncWhatJobsCommand.php
1
<?php
2

3
namespace App\Console\Commands\Integrations;
4

5
use App\Services\WhatJobsService;
6
use Illuminate\Console\Command;
7
use Illuminate\Support\Facades\Cache;
8
use Illuminate\Support\Facades\Log;
9

10
class SyncWhatJobsCommand extends Command
11
{
12
    protected $signature = 'integrations:sync-whatjobs
13
                            {--dry-run : Parse feeds and count jobs without writing to database}';
14

15
    protected $description = 'Sync WhatJobs job listings from XML feeds into the jobs table';
16

17
    public function handle(WhatJobsService $service): int
2✔
18
    {
19
        $dryRun = (bool) $this->option('dry-run');
2✔
20

21
        // The WhatJobs XML feed currently parses ~180k jobs into memory
22
        // before insertJobs() flushes them in chunks (parseFeed builds the
23
        // full $jobs[] array and returns it). At PHP's default 512M, this
24
        // tips into a FatalError as soon as the second (clickcast) feed is
25
        // merged in. Raise the ceiling here so the run completes; the
26
        // longer-term fix is to convert parseFeed to a generator and stream
27
        // straight into insertJobs (TODO tracked in the service).
28
        ini_set('memory_limit', '1536M');
2✔
29

30
        $lock = Cache::lock('sync-whatjobs', 3600);
2✔
31
        if (!$lock->get()) {
2✔
32
            $this->warn('Another integrations:sync-whatjobs is already running, skipping.');
×
33
            return self::SUCCESS;
×
34
        }
35

36
        try {
37
            if ($dryRun) {
2✔
38
                $this->info('[DRY RUN] Parsing WhatJobs feeds — no database changes will be made.');
1✔
39
            }
40

41
            Log::info('WhatJobs sync starting', ['dry_run' => $dryRun]);
2✔
42

43
            $result = $service->sync($dryRun);
2✔
44

45
            $prefix = $dryRun ? '[DRY RUN] Would insert' : 'Inserted';
2✔
46
            $this->info("$prefix {$result['inserted']} of {$result['total']} parsed jobs.");
2✔
47

48
            Log::info('WhatJobs sync command complete', $result);
2✔
49
        } finally {
50
            $lock->release();
2✔
51
        }
52

53
        return self::SUCCESS;
2✔
54
    }
55
}
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

© 2026 Coveralls, Inc