30 Commits

Author SHA1 Message Date
f89e0639dc build: update composer and npm 2021-05-02 11:20:07 -03:00
a5a2990518 chore: Add phpstan and phpinsights 2021-04-28 13:40:38 -03:00
de91c4ef9f chore: add helper scripts
- Deploy (merge into production, push, composer install and npm install)
- start_vagrant (just start vagrant and browser)
- ssh_homestead (a simple ssh into homestead)
2021-04-21 08:09:53 -03:00
56bbef2a04 chore: add script to update Composer and NPM 2021-04-21 07:22:44 -03:00
967db67ce3 chore: Update npm 2021-04-21 07:22:24 -03:00
f3d41e71d3 chore: update composer packages 2021-04-20 12:03:45 -03:00
26eab2646d chore: update npm ssri to 6.0.2 2021-04-20 09:57:04 -03:00
a18d4ba808 Updating NPM packages 2021-02-23 20:06:56 -03:00
1acc2b66f7 Update to Laravel 8.* 2021-02-23 20:00:23 -03:00
bc5f8feaac Update Laravel to 7.x 2021-02-19 20:27:28 -03:00
47c68c8860 Update Laravel to version 6.* 2021-02-17 20:02:27 -03:00
bd8927d408 Fix "@production" message appearing on screen
It was just for the privacy respect statistics script not appearing on
test phase.
2021-02-16 20:13:12 -03:00
d441c82890 Update Laravel to 5.8.* 2021-02-16 20:03:05 -03:00
54abd983aa Update js libraries 2021-02-14 23:20:43 -03:00
5d7aee7778 Showing tracker only in production 2020-08-22 20:01:58 -03:00
b767265200 Update NPM and compile assets 2020-08-22 14:14:46 -03:00
2ed6065901 Including the Tracking number directly 2020-08-22 14:10:59 -03:00
0b3f6d4837 Including my OWA Tracker 2020-08-22 11:44:03 -03:00
6339a23b02 Composer update 2020-08-22 01:26:20 -03:00
dc0c4e679b NPM Update 2020-08-22 01:26:08 -03:00
bb849dba4b npm updated 2020-04-05 12:19:23 -03:00
437e847cdd Updating npm and composer 2019-12-03 00:02:43 -03:00
vagrant
f31228843f Updating libraries 2019-07-18 22:56:17 +00:00
28520edee9 Merge branch 'master' of github.com:brunofontes/shareit 2019-07-18 19:46:11 -03:00
74eb254297 Including home.blade -> hasFocus test 2019-05-31 11:42:18 -03:00
2f16d4dc60 Composer update 2019-05-31 11:42:00 -03:00
130e47b198 Create test.php 2019-02-26 20:18:22 -03:00
6be295e25b Bug Fixing - forgot to add the use App\FlashMessage on AlertController 2018-10-21 13:13:09 -03:00
00c382e1cc Avoiding issues and refactoring code
I made the code more passive, avoiding issued at taking, returning,
storing alerts or removing alerts from an item.

Now they all check if it is with you before returning/deleting
alert etc. I am not sure if all cases are covered, but they are
better than before. I had one only issued on this on that time,
but I prefer to prioritize safety/security.

I took the opportunitie to move some code from Controllers to
the model itself, as they were changing with the DB.
2018-10-21 13:09:06 -03:00
2bc2792a24 Bug Fixed: avoiding item waiting_user across take/return
It happend once: a user asked to be added to the waiting
list at the same time other user was returning the item.

So the user ended up waiting for the user he was already
using.
2018-10-21 11:57:23 -03:00
32 changed files with 691479 additions and 7107 deletions

7
.gitignore vendored
View File

@@ -5,14 +5,7 @@
/vendor /vendor
/.idea /.idea
/.vscode /.vscode
/.vagrant
Homestead.json
Homestead.yaml
npm-debug.log npm-debug.log
yarn-error.log yarn-error.log
.env .env
.phpunit.result.cache .phpunit.result.cache
mergeAndDeploy.sh
start_vagrant.sh
stop_vagrant.sh
ssh_homestead.sh

View File

@@ -3,6 +3,7 @@
namespace App\Exceptions; namespace App\Exceptions;
use Exception; use Exception;
Use Throwable;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler class Handler extends ExceptionHandler
@@ -32,7 +33,7 @@ class Handler extends ExceptionHandler
* @param \Exception $exception * @param \Exception $exception
* @return void * @return void
*/ */
public function report(Exception $exception) public function report(Throwable $exception)
{ {
parent::report($exception); parent::report($exception);
} }
@@ -44,7 +45,7 @@ class Handler extends ExceptionHandler
* @param \Exception $exception * @param \Exception $exception
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function render($request, Exception $exception) public function render($request, Throwable $exception)
{ {
return parent::render($request, $exception); return parent::render($request, $exception);
} }

View File

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use Auth; use Auth;
use Mail; use Mail;
use \App\User; use \App\User;
use App\FlashMessage;
use \App\Mail\UserWaiting; use \App\Mail\UserWaiting;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -22,9 +23,19 @@ class AlertController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$item = User::loggedIn()->items()->find(request('item')); $item = User::loggedIn()->items()->find(request('item'));
$item->waiting_user_id = Auth::id(); if (!$item->used_by) {
$item->timestamps = false; session()->flash(
$item->save(); FlashMessage::PRIMARY,
__('Oh! This item has just being returned. Take it before anyone else!')
);
return redirect('home');
}
if ($item->used_by == Auth::id()) {
return redirect('home');
}
$item->storeAlert();
$loggedUser = Auth::user()->name; $loggedUser = Auth::user()->name;
$userWithItem = User::find($item->used_by); $userWithItem = User::find($item->used_by);
@@ -38,10 +49,12 @@ class AlertController extends Controller
public function delete(Request $request) public function delete(Request $request)
{ {
$item = User::loggedIn()->items()->find(request('item')); $item = User::loggedIn()->items()->find(request('item'));
$item->waiting_user_id = null;
$item->timestamps = false;
$item->save();
if ($item->waiting_user_id != Auth::id()) {
return redirect('home');
}
$item->removeAlert();
return redirect('home'); return redirect('home');
} }
} }

View File

@@ -8,6 +8,7 @@ use App\Item;
use App\User; use App\User;
use App\Events\ReturnItem; use App\Events\ReturnItem;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use PhpParser\Node\Stmt\TryCatch;
/** /**
* Responsible to Take and Return an Item. * Responsible to Take and Return an Item.
@@ -24,13 +25,15 @@ class TakeController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$item = User::loggedIn()->items()->find(request('item')); $item = User::loggedIn()->items()->find(request('item'));
if ($item->used_by) {
try {
$item->takeItem();
} catch (\Exception $e) {
return back()->withErrors( return back()->withErrors(
Lang::getFromJson("This item is already taken") Lang::getFromJson('This item is already taken')
); );
} }
$item->used_by = Auth::id();
$item->save();
return redirect('home'); return redirect('home');
} }
@@ -45,8 +48,17 @@ class TakeController extends Controller
public function delete(Request $request) public function delete(Request $request)
{ {
$item = User::loggedIn()->items()->find(request('item')); $item = User::loggedIn()->items()->find(request('item'));
try {
$item->returnItem();
} catch (\Exception $e) {
return back()->withErrors(
Lang::getFromJson("You cannot return an item that is not with you")
);
}
event(new ReturnItem($item)); event(new ReturnItem($item));
$item->returnItem();
return redirect('home'); return redirect('home');
} }
} }

View File

@@ -2,7 +2,10 @@
namespace App; namespace App;
use Auth;
use Lang;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Exception;
class Item extends Model class Item extends Model
{ {
@@ -36,7 +39,23 @@ class Item extends Model
*/ */
public static function fromAuthUser() public static function fromAuthUser()
{ {
return (new static)->where('user_id', \Auth::id()); return (new static)->where('user_id', Auth::id());
}
/**
* Take a specified item
*
* @return void
*/
public function takeItem()
{
if (isset($this->used_by)) {
throw new Exception("Trying to take an Item that is in use", 1);
}
$this->used_by = Auth::id();
$this->waiting_user_id = null;
$this->save();
} }
/** /**
@@ -46,8 +65,35 @@ class Item extends Model
*/ */
public function returnItem() public function returnItem()
{ {
if ($this->used_by != Auth::id()) {
throw new Exception("Trying to return an empty Item or from other user", 1);
}
$this->used_by = null; $this->used_by = null;
$this->save();
}
/**
* Store a waiting user to the item
*
* @return void
*/
public function storeAlert()
{
$this->waiting_user_id = Auth::id();
$this->timestamps = false;
$this->save();
}
/**
* Remove a waiting user to the item
*
* @return void
*/
public function removeAlert()
{
$this->waiting_user_id = null; $this->waiting_user_id = null;
$this->timestamps = false;
$this->save(); $this->save();
} }
} }

View File

@@ -31,6 +31,6 @@ class Welcome extends Mailable
*/ */
public function build() public function build()
{ {
return $this->subject(Lang::getFromJson('Welcome'))->markdown('emails.welcome'); return $this->subject(Lang::get('Welcome'))->markdown('emails.welcome');
} }
} }

2
check.sh Normal file
View File

@@ -0,0 +1,2 @@
./vendor/bin/phpstan analyse --memory-limit=2G
php artisan insights

View File

@@ -5,18 +5,23 @@
"license": "MIT", "license": "MIT",
"type": "project", "type": "project",
"require": { "require": {
"php": "^7.1.3", "php": "^7.3.0",
"fideloper/proxy": "^4.0", "fideloper/proxy": "^4.0",
"laravel/framework": "5.7.*", "laravel/framework": "^8.0",
"laravel/tinker": "^1.0" "laravel/helpers": "^1.4",
"laravel/tinker": "^2.0",
"laravel/ui": "^3.0"
}, },
"require-dev": { "require-dev": {
"beyondcode/laravel-dump-server": "^1.0", "beyondcode/laravel-dump-server": "^1.0",
"filp/whoops": "^2.0", "filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4", "fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0", "mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0", "nunomaduro/collision": "^5.0",
"phpunit/phpunit": "^7.0" "nunomaduro/larastan": "^0.7.4",
"nunomaduro/phpinsights": "^1.14",
"phpstan/phpstan": "^0.12.85",
"phpunit/phpunit": "^9.0"
}, },
"autoload": { "autoload": {
"classmap": [ "classmap": [

6952
composer.lock generated

File diff suppressed because it is too large Load Diff

113
config/insights.php Normal file
View File

@@ -0,0 +1,113 @@
<?php
declare(strict_types=1);
use NunoMaduro\PhpInsights\Domain\Insights\ForbiddenDefineFunctions;
use NunoMaduro\PhpInsights\Domain\Insights\ForbiddenFinalClasses;
use NunoMaduro\PhpInsights\Domain\Insights\ForbiddenNormalClasses;
use NunoMaduro\PhpInsights\Domain\Insights\ForbiddenPrivateMethods;
use NunoMaduro\PhpInsights\Domain\Insights\ForbiddenTraits;
use NunoMaduro\PhpInsights\Domain\Metrics\Architecture\Classes;
use SlevomatCodingStandard\Sniffs\Commenting\UselessFunctionDocCommentSniff;
use SlevomatCodingStandard\Sniffs\Namespaces\AlphabeticallySortedUsesSniff;
use SlevomatCodingStandard\Sniffs\TypeHints\DeclareStrictTypesSniff;
use SlevomatCodingStandard\Sniffs\TypeHints\DisallowMixedTypeHintSniff;
use SlevomatCodingStandard\Sniffs\TypeHints\ParameterTypeHintSniff;
use SlevomatCodingStandard\Sniffs\TypeHints\PropertyTypeHintSniff;
use SlevomatCodingStandard\Sniffs\TypeHints\ReturnTypeHintSniff;
return [
/*
|--------------------------------------------------------------------------
| Default Preset
|--------------------------------------------------------------------------
|
| This option controls the default preset that will be used by PHP Insights
| to make your code reliable, simple, and clean. However, you can always
| adjust the `Metrics` and `Insights` below in this configuration file.
|
| Supported: "default", "laravel", "symfony", "magento2", "drupal"
|
*/
'preset' => 'laravel',
/*
|--------------------------------------------------------------------------
| IDE
|--------------------------------------------------------------------------
|
| This options allow to add hyperlinks in your terminal to quickly open
| files in your favorite IDE while browsing your PhpInsights report.
|
| Supported: "textmate", "macvim", "emacs", "sublime", "phpstorm",
| "atom", "vscode".
|
| If you have another IDE that is not in this list but which provide an
| url-handler, you could fill this config with a pattern like this:
|
| myide://open?url=file://%f&line=%l
|
*/
'ide' => null,
/*
|--------------------------------------------------------------------------
| Configuration
|--------------------------------------------------------------------------
|
| Here you may adjust all the various `Insights` that will be used by PHP
| Insights. You can either add, remove or configure `Insights`. Keep in
| mind that all added `Insights` must belong to a specific `Metric`.
|
*/
'exclude' => [
// 'path/to/directory-or-file'
],
'add' => [
Classes::class => [
ForbiddenFinalClasses::class,
],
],
'remove' => [
AlphabeticallySortedUsesSniff::class,
DeclareStrictTypesSniff::class,
DisallowMixedTypeHintSniff::class,
ForbiddenDefineFunctions::class,
ForbiddenNormalClasses::class,
ForbiddenTraits::class,
ParameterTypeHintSniff::class,
PropertyTypeHintSniff::class,
ReturnTypeHintSniff::class,
UselessFunctionDocCommentSniff::class,
],
'config' => [
ForbiddenPrivateMethods::class => [
'title' => 'The usage of private methods is not idiomatic in Laravel.',
],
],
/*
|--------------------------------------------------------------------------
| Requirements
|--------------------------------------------------------------------------
|
| Here you may define a level you want to reach per `Insights` category.
| When a score is lower than the minimum level defined, then an error
| code will be returned. This is optional and individually defined.
|
*/
'requirements' => [
// 'min-quality' => 0,
// 'min-complexity' => 0,
// 'min-architecture' => 0,
// 'min-style' => 0,
// 'disable-security-check' => false,
],
];

View File

@@ -164,7 +164,7 @@ return [
| |
*/ */
'secure' => env('SESSION_SECURE_COOKIE', false), 'secure' => env('SESSION_SECURE_COOKIE', null),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

View File

@@ -1,5 +1,7 @@
<?php <?php
namespace Database\Seeders;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder class DatabaseSeeder extends Seeder

2
deploy.sh Normal file
View File

@@ -0,0 +1,2 @@
#!/bin/sh
git checkout production && git merge master && git checkout - && git push origin production && ssh -A contabo -t "cd /var/www/shareit.brunofontes.net; git fetch --all; git checkout --force production; git pull origin production --force; ~/composer.phar install -n --optimize-autoloader --no-dev; npm install"

9534
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -10,13 +10,17 @@
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
}, },
"devDependencies": { "devDependencies": {
"axios": "^0.18", "axios": "^0.21",
"bootstrap": "^4.0.0", "bootstrap": "^4.6.0",
"cross-env": "^5.1", "cross-env": "^5.2.1",
"jquery": "^3.2", "jquery": "^3.5.1",
"laravel-mix": "^2.0", "laravel-mix": "^6.0.18",
"lodash": "^4.17.5", "lodash": "^4.17.21",
"popper.js": "^1.12", "popper.js": "^1.16.1",
"vue": "^2.5.7" "resolve-url-loader": "^3.1.3",
"sass": "^1.32.12",
"sass-loader": "^8.0.2",
"vue": "^2.6.12",
"vue-template-compiler": "^2.6.12"
} }
} }

17
phpstan.neon Normal file
View File

@@ -0,0 +1,17 @@
includes:
- ./vendor/nunomaduro/larastan/extension.neon
parameters:
paths:
- app
# The level 8 is the highest level
level: 5
ignoreErrors:
- '#Unsafe usage of new static#'
excludePaths:
- ./*/*/FileToBeExcluded.php
checkMissingIterableValueType: false

14
public/css/app.css vendored

File diff suppressed because one or more lines are too long

3
public/js/app.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,77 @@
/*!
* Bootstrap v4.5.2 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
/*!
* Determine if an object is a Buffer
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
/*!
* Sizzle CSS Selector Engine v2.3.5
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Released under the MIT license
* https://js.foundation/
*
* Date: 2020-03-14
*/
/*!
* Vue.js v2.6.12
* (c) 2014-2020 Evan You
* Released under the MIT License.
*/
/*!
* jQuery JavaScript Library v3.5.1
* https://jquery.com/
*
* Includes Sizzle.js
* https://sizzlejs.com/
*
* Copyright JS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2020-05-04T22:49Z
*/
/**
* @license
* Lodash <https://lodash.com/>
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
/**!
* @fileOverview Kickass library to create and place poppers near their reference elements.
* @version 1.16.1
* @license
* Copyright (c) 2016 Federico Zivolo and contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/

4
public/mix-manifest.json Normal file
View File

@@ -0,0 +1,4 @@
{
"/js/app.js": "/js/app.js",
"/css/app.css": "/css/app.css"
}

View File

@@ -0,0 +1,15 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
'failed' => 'These credentials do not match our records.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
];

View File

@@ -32,7 +32,7 @@
":itemname is available!": ":itemname está disponível!", ":itemname is available!": ":itemname está disponível!",
"Hi, :username,": "Olá, :username,", "Hi, :username,": "Olá, :username,",
"Good news: :itemname is available!": "Uma boa notícia: :itemname está disponível!", "Good news: :itemname is available!": "Boa notícia: :itemname está disponível!",
"The item <em>:itemname (:productname)</em> is now available on **Share&nbsp;It**.": "O item <em>:itemname (:productname)</em> já está disponível no **Share&nbsp;It**.", "The item <em>:itemname (:productname)</em> is now available on **Share&nbsp;It**.": "O item <em>:itemname (:productname)</em> já está disponível no **Share&nbsp;It**.",
"**Take It** before anyone else at the website:": "Entre no nosso site para usar o item antes de todo mundo.", "**Take It** before anyone else at the website:": "Entre no nosso site para usar o item antes de todo mundo.",
@@ -46,5 +46,7 @@
"The item doesn't exist.": "O item não existe.", "The item doesn't exist.": "O item não existe.",
"The product doesn't exist or doesn't belongs to you.": "O produto não existe ou não é seu.", "The product doesn't exist or doesn't belongs to you.": "O produto não existe ou não é seu.",
"This item is already taken": "Esse item já está sendo usado" "This item is already taken": "Esse item já está sendo usado.",
"You cannot return an item that is not with you": "Você não pode devolver um item que não está com você.",
"Oh! This item has just being returned. Take it before anyone else!": "Opa! Esse item acabou de ser devolvido. Aproveite!"
} }

View File

@@ -14,8 +14,10 @@
</div> </div>
@endif @endif
<form class="d-inline" method="POST" action="{{ route('verification.resend') }}">
@csrf
{{ __('Before proceeding, please check your email for a verification link.') }} {{ __('Before proceeding, please check your email for a verification link.') }}
{{ __('If you did not receive the email') }}, <a href="{{ route('verification.resend') }}">{{ __('click here to request another') }}</a>. {{ __('If you did not receive the email') }}, <button type="submit" class="btn btn-link p-0 m-0 align-baseline">{{ __('click here to request another') }}</button>.
</div> </div>
</div> </div>
</div> </div>

View File

@@ -3,9 +3,13 @@
@section('content') @section('content')
<script type="text/javascript"> <script type="text/javascript">
setInterval(function() { setInterval(
window.location.reload(true); function() {
}, 2*60000); //NOTE: period is passed in milliseconds if (!document.hasFocus() ) {
window.location.reload(true);
}
},
2*60000); //NOTE: period is passed in milliseconds
</script> </script>
<div class="container"> <div class="container">

View File

@@ -16,4 +16,5 @@
</div> </div>
<!-- Copyright --> <!-- Copyright -->
</div> </div>
</footer> </footer>
@include('layouts.tracker')

View File

@@ -0,0 +1,3 @@
<script type="text/javascript">
var owa_baseUrl='https://brunofontes.net/owa/';var owa_cmds=owa_cmds||[];owa_cmds.push(['setSiteId','15a38975230dfe7528d647a1419be7f7']);owa_cmds.push(['trackPageView']);owa_cmds.push(['trackClicks']);owa_cmds.push(['trackDomStream']);(function(){var _owa=document.createElement('script');_owa.type='text/javascript';_owa.async=true;owa_baseUrl=('https:'==document.location.protocol?window.owa_baseSecUrl||owa_baseUrl.replace(/http:/,'https:'):owa_baseUrl);_owa.src=owa_baseUrl+'modules/base/js/owa.tracker-combined-min.js';var _owa_s=document.getElementsByTagName('script')[0];_owa_s.parentNode.insertBefore(_owa,_owa_s)}());
</script>

View File

@@ -114,5 +114,6 @@
</div> </div>
</div> </div>
</div> </div>
@include('layouts.tracker')
</body> </body>
</html> </html>

1
ssh_homestead.sh Normal file
View File

@@ -0,0 +1 @@
ssh homestead -t "cd code/Bruno\ Fontes/shareit; bash --login"

4
start_vagrant.sh Normal file
View File

@@ -0,0 +1,4 @@
#!/bin/zsh
builtin cd ~/development/laravelHomestead && /usr/bin/vagrant up && builtin cd -
~/Apps/firefox/firefox-bin http://shareit.test
~/Apps/firefox/firefox-bin https://mailtrap.io/inboxes/455614/messages

675749
tags Normal file

File diff suppressed because it is too large Load Diff

1
updateCompserNPM.sh Normal file
View File

@@ -0,0 +1 @@
ssh homestead -t 'cd code/Bruno\ Fontes/shareit; echo; echo -n "Press enter to update Composer..."; read; composer update; echo; echo -n "Press enter to update NPM..."; read; npm update; echo; echo -n "Press enter to exit..."; read'

5923
yarn.lock

File diff suppressed because it is too large Load Diff