Created frames table with migration
This commit is contained in:
84
app/Console/Commands/FrameImport.php
Normal file
84
app/Console/Commands/FrameImport.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Models\Frame;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
|
||||
class FrameImport extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'frame:import {frame} {index} {file} '.
|
||||
'{--cost=0 : Frame Cost }'.
|
||||
'{--mode=1 : Frame Emulation Mode }'.
|
||||
'{--replace : Replace existing frame}'.
|
||||
'{--type=i : Frame Type}'.
|
||||
'{--trim : Trim off header (first 40 chars)}';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Import frames into the database. The frames should be in binary format.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
if (! is_numeric($this->argument('frame')))
|
||||
throw new \Exception('Frame is not numeric: '.$this->argument('frame'));
|
||||
|
||||
if (strlen($this->argument('index')) != 1 OR ! preg_match('/^[a-z]$/',$this->argument('index')))
|
||||
throw new \Exception('Subframe failed validation');
|
||||
|
||||
if (! file_exists($this->argument('file')))
|
||||
throw new \Exception('File not found: '.$this->argument('file'));
|
||||
|
||||
$o = new Frame;
|
||||
if ($this->option('replace')) {
|
||||
try {
|
||||
$o = $o->where('frame',$this->argument('frame'))
|
||||
->where('index',$this->argument('index'))
|
||||
->firstOrFail();
|
||||
|
||||
} catch (ModelNotFoundException $e) {
|
||||
$this->error('Page not found to replace: '.$this->argument('frame').$this->argument('index'));
|
||||
die(1);
|
||||
}
|
||||
|
||||
} else {
|
||||
$o->frame = $this->argument('frame');
|
||||
$o->index = $this->argument('index');
|
||||
}
|
||||
|
||||
$o->content = ($this->option('trim'))
|
||||
? substr(file_get_contents($this->argument('file')),40)
|
||||
: file_get_contents($this->argument('file'));
|
||||
|
||||
$o->cost = $this->option('cost');
|
||||
$o->mode_id = $this->option('mode');
|
||||
$o->type = $this->option('type');
|
||||
|
||||
$o->save();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user