1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-18 00:53:10 +01:00

Use self-updater package, initial commit

This commit is contained in:
Holger Lösken 2016-08-18 21:52:59 +02:00 committed by Holger Lösken
parent 6f6a475633
commit d2d64d2a63
12 changed files with 305 additions and 8 deletions

View File

@ -52,5 +52,10 @@ class Kernel extends ConsoleKernel
->sendOutputTo($logFile) ->sendOutputTo($logFile)
->daily(); ->daily();
} }
$schedule
->command('updater:check-for-update --prefixVersionWith=v')
->sendOutputTo($logFile)
->daily();
} }
} }

View File

@ -0,0 +1,63 @@
<?php
namespace App\Http\Controllers;
use Codedge\Updater\UpdaterManager;
use App\Http\Requests;
use Redirect;
class SelfUpdateController extends BaseController
{
/**
* @var UpdaterManager
*/
protected $updater;
/**
* SelfUpdateController constructor.
*
* @param UpdaterManager $updater
*/
public function __construct(UpdaterManager $updater)
{
$this->updater = $updater;
}
/**
* Show default update page
*
* @return mixed
*/
public function index()
{
$versionInstalled = $this->updater->source()->getVersionInstalled('v');
$updateAvailable = $this->updater->source()->isNewVersionAvailable($versionInstalled);
return view(
'vendor.self-update.self-update',
[
'versionInstalled' => $versionInstalled,
'versionAvailable' => $this->updater->source()->getVersionAvailable(),
'updateAvailable' => $updateAvailable
]
);
}
/**
* Run the actual update
*
* @return \Illuminate\Http\RedirectResponse
*/
public function update()
{
$this->updater->source()->update();
return Redirect::to('/');
}
public function download()
{
$this->updater->source()->fetch();
}
}

View File

@ -265,6 +265,9 @@ Route::group([
Route::post('bank_accounts/bulk', 'BankAccountController@bulk'); Route::post('bank_accounts/bulk', 'BankAccountController@bulk');
Route::post('bank_accounts/validate', 'BankAccountController@validateAccount'); Route::post('bank_accounts/validate', 'BankAccountController@validateAccount');
Route::post('bank_accounts/import_expenses/{bank_id}', 'BankAccountController@importExpenses'); Route::post('bank_accounts/import_expenses/{bank_id}', 'BankAccountController@importExpenses');
Route::get('self-update', 'SelfUpdateController@index');
Route::post('self-update', 'SelfUpdateController@update');
Route::get('self-update/download', 'SelfUpdateController@download');
}); });
// Route groups for API // Route groups for API

View File

@ -159,6 +159,11 @@ class EventServiceProvider extends ServiceProvider {
'App\Events\TaskWasUpdated' => [ 'App\Events\TaskWasUpdated' => [
'App\Listeners\ActivityListener@updatedTask', 'App\Listeners\ActivityListener@updatedTask',
], ],
// Update events
\Codedge\Updater\Events\UpdateAvailable::class => [
\Codedge\Updater\Listeners\SendUpdateAvailableNotification::class
],
]; ];
/** /**

View File

@ -81,7 +81,8 @@
"barryvdh/laravel-ide-helper": "~2.2", "barryvdh/laravel-ide-helper": "~2.2",
"barryvdh/laravel-debugbar": "~2.2", "barryvdh/laravel-debugbar": "~2.2",
"fzaninotto/faker": "^1.5", "fzaninotto/faker": "^1.5",
"jaybizzle/laravel-crawler-detect": "1.*" "jaybizzle/laravel-crawler-detect": "1.*",
"codedge/laravel-selfupdater": "5.x-dev"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "~4.0", "phpunit/phpunit": "~4.0",

72
composer.lock generated
View File

@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"hash": "58fb4c4de809dbd2c62e2701e4c31b12", "hash": "09fda381adad88df20782277ade92809",
"content-hash": "308faa59f58a34174062714c7c9c5c48", "content-hash": "77223af5b09a5e08bf323379fe8e3f24",
"packages": [ "packages": [
{ {
"name": "agmscode/omnipay-agms", "name": "agmscode/omnipay-agms",
@ -1023,6 +1023,62 @@
], ],
"time": "2015-01-08 10:05:58" "time": "2015-01-08 10:05:58"
}, },
{
"name": "codedge/laravel-selfupdater",
"version": "5.x-dev",
"source": {
"type": "git",
"url": "https://github.com/codedge/laravel-selfupdater.git",
"reference": "bc1272686ecaf11dd140400a072c1c98b845e44d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/codedge/laravel-selfupdater/zipball/bc1272686ecaf11dd140400a072c1c98b845e44d",
"reference": "bc1272686ecaf11dd140400a072c1c98b845e44d",
"shasum": ""
},
"require": {
"ext-zip": "*",
"guzzlehttp/guzzle": "6.*",
"illuminate/support": "5.*",
"php": ">=5.5"
},
"require-dev": {
"mockery/mockery": "^0.9.5",
"orchestra/testbench": "3.2.*",
"phpunit/phpunit": "^4.8"
},
"type": "library",
"autoload": {
"psr-4": {
"Codedge\\Updater\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Holger Lösken",
"email": "holger.loesken@codedge.de",
"homepage": "http://codedge.de",
"role": "Developer"
}
],
"description": "Providing an auto-updating functionality for your self-hosted Laravel application.",
"keywords": [
"auto update",
"auto-update",
"laravel",
"laravel application",
"self update",
"self-hosted laravel application",
"self-update",
"update"
],
"time": "2016-08-19 12:47:15"
},
{ {
"name": "collizo4sky/omnipay-wepay", "name": "collizo4sky/omnipay-wepay",
"version": "dev-additional-calls", "version": "dev-additional-calls",
@ -2121,8 +2177,13 @@
"url": "https://github.com/gatepay/FedACHdir.git", "url": "https://github.com/gatepay/FedACHdir.git",
"reference": "origin/master" "reference": "origin/master"
}, },
"type": "library", "dist": {
"time": "2016-06-03 12:00:26" "type": "zip",
"url": "https://github.com/gatepay/FedACHdir/archive/master.zip",
"reference": "origin/master",
"shasum": null
},
"type": "library"
}, },
{ {
"name": "google/apiclient", "name": "google/apiclient",
@ -10537,7 +10598,8 @@
"jlapp/swaggervel": 20, "jlapp/swaggervel": 20,
"omnipay/braintree": 20, "omnipay/braintree": 20,
"gatepay/fedachdir": 20, "gatepay/fedachdir": 20,
"collizo4sky/omnipay-wepay": 20 "collizo4sky/omnipay-wepay": 20,
"codedge/laravel-selfupdater": 20
}, },
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,

View File

@ -155,6 +155,7 @@ return [
'Maatwebsite\Excel\ExcelServiceProvider', 'Maatwebsite\Excel\ExcelServiceProvider',
Websight\GcsProvider\CloudStorageServiceProvider::class, Websight\GcsProvider\CloudStorageServiceProvider::class,
'Jaybizzle\LaravelCrawlerDetect\LaravelCrawlerDetectServiceProvider', 'Jaybizzle\LaravelCrawlerDetect\LaravelCrawlerDetectServiceProvider',
Codedge\Updater\UpdaterServiceProvider::class,
/* /*
* Application Service Providers... * Application Service Providers...
@ -257,7 +258,7 @@ return [
'Excel' => 'Maatwebsite\Excel\Facades\Excel', 'Excel' => 'Maatwebsite\Excel\Facades\Excel',
'PushNotification' => 'Davibennun\LaravelPushNotification\Facades\PushNotification', 'PushNotification' => 'Davibennun\LaravelPushNotification\Facades\PushNotification',
'Crawler' => 'Jaybizzle\LaravelCrawlerDetect\Facades\LaravelCrawlerDetect', 'Crawler' => 'Jaybizzle\LaravelCrawlerDetect\Facades\LaravelCrawlerDetect',
'Updater' => Codedge\Updater\UpdaterFacade::class,
], ],
]; ];

73
config/self-update.php Normal file
View File

@ -0,0 +1,73 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Default source repository type
|--------------------------------------------------------------------------
|
| The default source repository type you want to pull your updates from.
|
*/
'default' => env('SELF_UPDATER_SOURCE', 'github'),
/*
|--------------------------------------------------------------------------
| Version installed
|--------------------------------------------------------------------------
|
| Set this to the version of your software installed on your system.
|
*/
'version_installed' => env('SELF_UPDATER_VERSION_INSTALLED', '2.6.9'),
/*
|--------------------------------------------------------------------------
| Repository types
|--------------------------------------------------------------------------
|
| A repository can be of different types, which can be specified here.
| Current options:
| - github
|
*/
'repository_types' => [
'github' => [
'type' => 'github',
'repository_vendor' => env('SELF_UPDATER_REPO_VENDOR', 'invoiceninja'),
'repository_name' => env('SELF_UPDATER_REPO_NAME', 'invoiceninja'),
'repository_url' => '',
'download_path' => env('SELF_UPDATER_DOWNLOAD_PATH', '/tmp'),
],
],
/*
|--------------------------------------------------------------------------
| Event Logging
|--------------------------------------------------------------------------
|
| Configure if fired events should be logged
|
*/
'log_events' => env('SELF_UPDATER_LOG_EVENTS', false),
/*
|--------------------------------------------------------------------------
| Mail To Settings
|--------------------------------------------------------------------------
|
| Configure if fired events should be logged
|
*/
'mail_to' => [
'address' => env('SELF_UPDATER_MAILTO_ADDRESS', ''),
'name' => env('SELF_UPDATER_MAILTO_NAME', ''),
],
];

View File

@ -2075,7 +2075,16 @@ $LANG = array(
'include_item_taxes_inline' => 'Include <b>line item taxes in line total</b>', 'include_item_taxes_inline' => 'Include <b>line item taxes in line total</b>',
'created_quotes' => 'Successfully created :count quotes(s)', 'created_quotes' => 'Successfully created :count quotes(s)',
'warning' => 'Warning',
'self-update' => 'Update Invoice Ninja',
'update_invoiceninja_title' => 'Update Invoice Ninja',
'update_invoiceninja_warning' => 'Before start upgrading Invoice Ninja create a backup of your database and files!',
'update_invoiceninja_available' => 'A new version of Invoice Ninja is available.',
'update_invoiceninja_unavailable' => 'No new version of Invoice Ninja available.',
'update_invoiceninja_decide_update_download' => 'You can decide to update directly to :version or to just download the new relase and update later.',
'update_invoiceninja_update_start' => 'Update now',
'update_invoiceninja_download_start' => 'Download :version',
); );
return $LANG; return $LANG;

View File

@ -469,6 +469,18 @@
</div> </div>
@if (Utils::isAdmin())
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
@section('self-updater')
<a href="{{ URL::to('self-update') }}" class="dropdown-toggle">
<span class="glyphicon glyphicon-cloud-download" title="{{ trans('texts.update_invoiceninja_title') }}"></span>
</a>
@show
</li>
</ul>
@endif
<ul class="nav navbar-nav navbar-right navbar-settings"> <ul class="nav navbar-nav navbar-right navbar-settings">
<li class="dropdown"> <li class="dropdown">
@if (Utils::isAdmin()) @if (Utils::isAdmin())

View File

@ -0,0 +1,5 @@
Hello!
The new version {{ $newVersion }} is available.
Kind regards

View File

@ -0,0 +1,58 @@
@extends('header')
@section('content')
<div class="panel panel-default">
<div class="panel-body">
<div class="row">
<div class="col-lg-12">
<div class="alert alert-warning" role="alert">
<strong>
{{ trans('texts.warning') }}:
</strong>
{{ trans('texts.update_invoiceninja_warning') }}
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
@if(!$updateAvailable)
{{ trans('texts.update_invoiceninja_unavailable') }}
@else
<strong>
{{ trans('texts.update_invoiceninja_available') }}
</strong>
<br/>
{{ trans('texts.update_invoiceninja_decide_update_download', ['version' => $versionAvailable]) }}
@endif
</div>
</div>
@if($updateAvailable)
<div class="row">
<div class="col-lg-12">
<br/>
<form name="download-update-form" action="{{ url('self-update') }}" method="post">
{{ csrf_field() }}
<input type="hidden" name="action" id="update-action" value="update"/>
<div class="form-group">
<button type="submit" class="btn btn-primary" id="do-updade">
{{ trans('texts.update_invoiceninja_update_start') }}
</button>
<button type="submit" class="btn btn-default" id="download-update">
{{ trans('texts.update_invoiceninja_download_start', ['version' => $versionAvailable]) }}
</button>
</div>
</form>
</div>
</div>
@endif
</div>
</div>
<script type="text/javascript">
$('#download-update').click(function (){
$('#update-action').val('download');
});
$('#do-update').click(function (){
$('#update-action').val('update');
});
</script>
@endsection