From 6da444f992b93c13fce02dcb2f4aa402b5c9fbbc Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Sun, 19 May 2019 19:48:51 -0400 Subject: [PATCH 01/34] upgraded for Masonite 2.2 --- app/http/controllers/WelcomeController.py | 8 +++++--- app/http/middleware/LoadUserMiddleware.py | 5 +++-- requirements.txt | 2 +- routes/web.py | 2 +- tests/feature/test_feature_works.py | 12 ++++++++++-- tests/framework/test_file_locations.py | 10 +++++++--- tests/framework/test_imports.py | 1 + tests/unit/test_works.py | 8 ++++++-- 8 files changed, 34 insertions(+), 14 deletions(-) diff --git a/app/http/controllers/WelcomeController.py b/app/http/controllers/WelcomeController.py index ea926fe..e98e034 100644 --- a/app/http/controllers/WelcomeController.py +++ b/app/http/controllers/WelcomeController.py @@ -2,9 +2,11 @@ from masonite.view import View from masonite.request import Request +from masonite.controllers import Controller +from config import application -class WelcomeController: +class WelcomeController(Controller): """Controller For Welcoming The User.""" def show(self, view: View, request: Request): @@ -12,11 +14,11 @@ def show(self, view: View, request: Request): Arguments: view {masonite.view.View} -- The Masonite view class. - Application {config.application} -- The application config module. + request {masonite.request.Request} -- The Masonite request class. Returns: masonite.view.View -- The Masonite view class. """ return view.render('welcome', { - 'app': request.app().make('Application') + 'app': application }) diff --git a/app/http/middleware/LoadUserMiddleware.py b/app/http/middleware/LoadUserMiddleware.py index 4c415d0..4662f41 100644 --- a/app/http/middleware/LoadUserMiddleware.py +++ b/app/http/middleware/LoadUserMiddleware.py @@ -7,13 +7,14 @@ class LoadUserMiddleware: """Middleware class which loads the current user into the request.""" - def __init__(self, request: Request): + def __init__(self, request: Request, auth: Auth): """Inject Any Dependencies From The Service Container. Arguments: Request {masonite.request.Request} -- The Masonite request object. """ self.request = request + self.auth = auth def before(self): """Run This Middleware Before The Route Executes.""" @@ -30,4 +31,4 @@ def load_user(self): Arguments: request {masonite.request.Request} -- The Masonite request object. """ - self.request.set_user(Auth(self.request).user()) + self.request.set_user(self.auth.user()) diff --git a/requirements.txt b/requirements.txt index 3ec98ef..7421fd7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -masonite>=2.1.0,<2.2.0 \ No newline at end of file +https://github.com/MasoniteFramework/core/archive/develop.zip \ No newline at end of file diff --git a/routes/web.py b/routes/web.py index 48c90d4..2eb095a 100644 --- a/routes/web.py +++ b/routes/web.py @@ -3,5 +3,5 @@ from masonite.routes import Get, Post ROUTES = [ - Get().route('/', 'WelcomeController@show').name('welcome'), + Get('/', 'WelcomeController@show').name('welcome'), ] diff --git a/tests/feature/test_feature_works.py b/tests/feature/test_feature_works.py index c9a477c..406f415 100644 --- a/tests/feature/test_feature_works.py +++ b/tests/feature/test_feature_works.py @@ -1,2 +1,10 @@ -def test_feature(): - assert True +from masonite.testing import UnitTest + + +class TestFeature(UnitTest): + + def setUp(self): + pass + + def test_assert_true(self): + self.assertTrue(True) diff --git a/tests/framework/test_file_locations.py b/tests/framework/test_file_locations.py index 6b2768f..4a678f2 100644 --- a/tests/framework/test_file_locations.py +++ b/tests/framework/test_file_locations.py @@ -1,8 +1,12 @@ import os +from masonite.testing import UnitTest + from config import application -def test_env_file_exists(): - """ Test should be True if .env file is present """ - assert os.path.exists(os.path.join(application.BASE_DIRECTORY, '.env')), '.env file should exist' +class TestFramework(UnitTest): + + def test_env_file_exists(self): + """Test should be True if .env file is present.""" + assert os.path.exists(os.path.join(application.BASE_DIRECTORY, '.env')), '.env file should exist' diff --git a/tests/framework/test_imports.py b/tests/framework/test_imports.py index 2a32b86..bd7c074 100644 --- a/tests/framework/test_imports.py +++ b/tests/framework/test_imports.py @@ -1,3 +1,4 @@ + def test_masonite_import(): """ Application should be able to import Masonite modules """ try: diff --git a/tests/unit/test_works.py b/tests/unit/test_works.py index bbc0853..29cd645 100644 --- a/tests/unit/test_works.py +++ b/tests/unit/test_works.py @@ -1,2 +1,6 @@ -def test_unit(): - assert True +from masonite.testing import UnitTest + +class TestUnit(UnitTest): + + def test_example_assertion(self): + self.assertTrue(True) From 30b9f0c5c3de41935d17a55b0bd7ab5bb56e13cc Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Fri, 24 May 2019 16:15:55 -0400 Subject: [PATCH 02/34] better route --- routes/web.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/web.py b/routes/web.py index 48c90d4..2eb095a 100644 --- a/routes/web.py +++ b/routes/web.py @@ -3,5 +3,5 @@ from masonite.routes import Get, Post ROUTES = [ - Get().route('/', 'WelcomeController@show').name('welcome'), + Get('/', 'WelcomeController@show').name('welcome'), ] From ba688e49d2079d9272a4a3e411b1bb4cfd0396b3 Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Sun, 2 Jun 2019 12:50:24 -0400 Subject: [PATCH 03/34] fixed template --- app/http/controllers/WelcomeController.py | 4 +--- resources/templates/welcome.html | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/app/http/controllers/WelcomeController.py b/app/http/controllers/WelcomeController.py index e98e034..13ad21a 100644 --- a/app/http/controllers/WelcomeController.py +++ b/app/http/controllers/WelcomeController.py @@ -19,6 +19,4 @@ def show(self, view: View, request: Request): Returns: masonite.view.View -- The Masonite view class. """ - return view.render('welcome', { - 'app': application - }) + return view.render('welcome') diff --git a/resources/templates/welcome.html b/resources/templates/welcome.html index 371656f..94f56a2 100644 --- a/resources/templates/welcome.html +++ b/resources/templates/welcome.html @@ -6,7 +6,7 @@ - {{ app.NAME }} + {{ config('application.name', 'nothing') }} @@ -20,7 +20,7 @@
- {{ app.NAME }} + {{ config('application.name') }}
{% endblock %} \ No newline at end of file From 9aa98b5c06fe8857e6c40a03c3d0acc39c064a30 Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Sat, 8 Jun 2019 23:13:49 -0400 Subject: [PATCH 16/34] added appurl --- .env-example | 1 + 1 file changed, 1 insertion(+) diff --git a/.env-example b/.env-example index f563b6b..3b708e4 100644 --- a/.env-example +++ b/.env-example @@ -2,6 +2,7 @@ APP_NAME=Masonite 2.2 APP_ENV=local APP_DEBUG=True AUTH_DRIVER=cookie +APP_URL=http://localhost:8000 KEY=your-secret-key MAIL_DRIVER=terminal From a560d1d6adb0066d5200894f234ba50a1258af5d Mon Sep 17 00:00:00 2001 From: Vaibhav Mule Date: Tue, 11 Jun 2019 18:18:10 +0530 Subject: [PATCH 17/34] fix spaces --- config/database.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/config/database.py b/config/database.py index 9908bba..f90c2f0 100644 --- a/config/database.py +++ b/config/database.py @@ -1,6 +1,7 @@ -import logging """Database Settings.""" +import logging + from masonite import env from masonite.environment import LoadEnvironment from orator import DatabaseManager, Model @@ -53,7 +54,7 @@ logger = logging.getLogger('orator.connection.queries') -logger.setLevel(logging.DEBUG ) +logger.setLevel(logging.DEBUG) formatter = logging.Formatter( 'It took %(elapsed_time)sms to execute the query %(query)s' From e45133e7eafbc50a24e2f67dac3d37a19cce8816 Mon Sep 17 00:00:00 2001 From: Vaibhav Mule Date: Tue, 11 Jun 2019 18:57:27 +0530 Subject: [PATCH 18/34] remove unused import --- app/http/controllers/WelcomeController.py | 1 - 1 file changed, 1 deletion(-) diff --git a/app/http/controllers/WelcomeController.py b/app/http/controllers/WelcomeController.py index 13ad21a..1d47598 100644 --- a/app/http/controllers/WelcomeController.py +++ b/app/http/controllers/WelcomeController.py @@ -3,7 +3,6 @@ from masonite.view import View from masonite.request import Request from masonite.controllers import Controller -from config import application class WelcomeController(Controller): From 7b555267a7029d2592e45d49790f30d15f7a014c Mon Sep 17 00:00:00 2001 From: Vaibhav Mule Date: Tue, 11 Jun 2019 19:42:55 +0530 Subject: [PATCH 19/34] fix pep8 --- config/factories.py | 2 ++ config/middleware.py | 2 +- databases/seeds/user_table_seeder.py | 2 +- resources/__init__.py | 2 +- storage/static/__init__.py | 2 +- tests/unit/test_works.py | 1 + 6 files changed, 7 insertions(+), 4 deletions(-) diff --git a/config/factories.py b/config/factories.py index fdf6c46..95df754 100644 --- a/config/factories.py +++ b/config/factories.py @@ -3,6 +3,7 @@ factory = Factory() + def users_factory(faker): return { 'name': faker.name(), @@ -10,4 +11,5 @@ def users_factory(faker): 'password': '$2b$12$WMgb5Re1NqUr.uSRfQmPQeeGWudk/8/aNbVMpD1dR.Et83vfL8WAu', # == 'secret' } + factory.register(User, users_factory) diff --git a/config/middleware.py b/config/middleware.py index 07c574a..7de4c88 100644 --- a/config/middleware.py +++ b/config/middleware.py @@ -22,7 +22,7 @@ ] """Route Middleware -Specify a dictionary of middleware to be used on a per route basis here. The key will +Specify a dictionary of middleware to be used on a per route basis here. The key will be the alias to use on routes and the value can be any middleware class or a list of middleware (middleware stacks). """ diff --git a/databases/seeds/user_table_seeder.py b/databases/seeds/user_table_seeder.py index 2e5016b..40a7a56 100644 --- a/databases/seeds/user_table_seeder.py +++ b/databases/seeds/user_table_seeder.py @@ -1,6 +1,6 @@ """User Table Seeder. -You can run this seeder in order to generate users. +You can run this seeder in order to generate users. - Each time it is ran it will generate 50 random users. - All users have the password of 'secret'. diff --git a/resources/__init__.py b/resources/__init__.py index 929115e..ea18e76 100644 --- a/resources/__init__.py +++ b/resources/__init__.py @@ -1,5 +1,5 @@ """Resources directory. -This directory is responsible for storing any resource based files such as +This directory is responsible for storing any resource based files such as templates and SASS files """ diff --git a/storage/static/__init__.py b/storage/static/__init__.py index 6ccd860..9999d58 100644 --- a/storage/static/__init__.py +++ b/storage/static/__init__.py @@ -1,5 +1,5 @@ """Static file storage directory. -This directory is responsible for storing static assets such as +This directory is responsible for storing static assets such as CSS, JS, public assets etc. """ diff --git a/tests/unit/test_works.py b/tests/unit/test_works.py index 4121b1b..b7af096 100644 --- a/tests/unit/test_works.py +++ b/tests/unit/test_works.py @@ -1,5 +1,6 @@ from masonite.testing import TestCase + class TestUnit(TestCase): def test_example_assertion(self): From 9fc8496a14371160a3d5de8a52ae6aee1effab26 Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Fri, 14 Jun 2019 21:47:43 -0400 Subject: [PATCH 20/34] removed unused import --- app/http/controllers/WelcomeController.py | 1 - 1 file changed, 1 deletion(-) diff --git a/app/http/controllers/WelcomeController.py b/app/http/controllers/WelcomeController.py index 13ad21a..1d47598 100644 --- a/app/http/controllers/WelcomeController.py +++ b/app/http/controllers/WelcomeController.py @@ -3,7 +3,6 @@ from masonite.view import View from masonite.request import Request from masonite.controllers import Controller -from config import application class WelcomeController(Controller): From 608911e3a6344bc3bc0dad99b0a9373c304fff8c Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Fri, 14 Jun 2019 23:08:06 -0400 Subject: [PATCH 21/34] added default .env.testing file --- .env.testing | 2 ++ .gitignore | 1 + 2 files changed, 3 insertions(+) create mode 100644 .env.testing diff --git a/.env.testing b/.env.testing new file mode 100644 index 0000000..1ad83c1 --- /dev/null +++ b/.env.testing @@ -0,0 +1,2 @@ +DB_CONNECTION=sqlite +DB_LOG=True \ No newline at end of file diff --git a/.gitignore b/.gitignore index 57f525f..08bf7bb 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ venv .env.* .vscode .pytest_cache +!.env.testing From 363ddf2de925629e585d38a0de56c3eb23ca8977 Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Fri, 14 Jun 2019 23:44:44 -0400 Subject: [PATCH 22/34] bumped to 2.2 branch --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 7421fd7..8b9ef6d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -https://github.com/MasoniteFramework/core/archive/develop.zip \ No newline at end of file +https://github.com/MasoniteFramework/core/archive/2.2.zip \ No newline at end of file From 5068bc0cdcef34afaa0f1688b432bf6ae72369bb Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Sat, 15 Jun 2019 08:50:21 -0400 Subject: [PATCH 23/34] bumped versioon --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8b9ef6d..d6c3658 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ -https://github.com/MasoniteFramework/core/archive/2.2.zip \ No newline at end of file +masonite>=2.2,<2.3 \ No newline at end of file From 4d19f8f72527334a1f653e4ebc483ae280b8b505 Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Mon, 17 Jun 2019 08:09:37 -0400 Subject: [PATCH 24/34] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d118969..e474792 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ $ sudo apt-get install python3.6-dev libssl-dev ## Windows -With windows you will need to have the latest OpenSSL version. Install OpenSSL [32-bit](http://slproweb.com/download/Win32OpenSSL-1_1_0h.exe) or [64-bit](http://slproweb.com/download/Win64OpenSSL-1_1_0h.exe) +With windows you will need to have the latest OpenSSL version. Install [OpenSSL 32-bit or 64-bit](https://slproweb.com/products/Win32OpenSSL.html). ## Mac From 782ecf4e3fe2a5656054353a27d25ede401d211a Mon Sep 17 00:00:00 2001 From: Vaibhav Mule Date: Tue, 25 Jun 2019 23:03:18 +0530 Subject: [PATCH 25/34] Create FUNDING.yml --- .github/FUNDING.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..1645c99 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: masoniteproject +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL From 6d4cb167f234f019285c2f1e10d3e2fe0e820ae0 Mon Sep 17 00:00:00 2001 From: Vaibhav Mule Date: Tue, 25 Jun 2019 23:04:56 +0530 Subject: [PATCH 26/34] fix url --- .github/FUNDING.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 1645c99..f2312d3 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,7 +1,7 @@ # These are supported funding model platforms github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: masoniteproject +patreon: masonite open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel From 6586f5b0ee4f0587aacf028ce9892a0e93f7c7f7 Mon Sep 17 00:00:00 2001 From: Vaibhav Mule Date: Thu, 4 Jul 2019 01:03:06 +0530 Subject: [PATCH 27/34] Delete FUNDING.yml --- .github/FUNDING.yml | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index f2312d3..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: masonite -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: # Replace with a single custom sponsorship URL From 167723c90c33e6e1499e7d96d07b8aa089ab5984 Mon Sep 17 00:00:00 2001 From: Rene Moser Date: Mon, 5 Aug 2019 15:35:22 +0200 Subject: [PATCH 28/34] fix ImportError in craft helper file --- craft | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/craft b/craft index 4250c34..3f21f86 100644 --- a/craft +++ b/craft @@ -6,11 +6,11 @@ successfully import commands for you. """ from cleo import Application -from masonite import info +from masonite import __version__ from wsgi import container -application = Application('Masonite Version:', info.VERSION) +application = Application('Masonite Version:', __version__) for key, value in container.providers.items(): if isinstance(key, str) and key.endswith('Command'): From a3f024f775647372135d1a1d560a69582128c4e7 Mon Sep 17 00:00:00 2001 From: Rene Moser Date: Mon, 5 Aug 2019 16:40:41 +0200 Subject: [PATCH 29/34] adjust travis CI --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ab0cd07..6b4639e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,9 +5,8 @@ python: - "3.6" matrix: include: - - python: 3.7 + - python: "3.7" dist: xenial - sudo: true install: - pip install masonite-cli - craft install From 7260d6d9c968c4d422b16713cd2810511f9feaa0 Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Thu, 15 Aug 2019 00:03:09 -0400 Subject: [PATCH 30/34] Update application.py --- config/application.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/application.py b/config/application.py index 4531e3c..e02ae61 100644 --- a/config/application.py +++ b/config/application.py @@ -10,7 +10,7 @@ any other location as required by the application or its packages. """ -NAME = env('APP_NAME', 'Masonite 2.1') +NAME = env('APP_NAME', 'Masonite 2.2') """Application Debug Mode When your application is in debug mode, detailed error messages with From dd112f65e0ca7464da03973e30e87ba9be9a78c1 Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Sun, 25 Aug 2019 20:50:49 -0400 Subject: [PATCH 31/34] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e474792..62e9e67 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,8 @@ Masonite works hard to be fast and easy from install to deployment so developers Masonite strives to have extremely comprehensive documentation. All documentation can be [Found Here](https://docs.masoniteproject.com/v/v2.1/) and would be wise to go through the tutorials there. If you find any discrepencies or anything that doesn't make sense, be sure to comment directly on the documentation to start a discussion! +If you are a visual learner you can find tutorials here: [MasoniteCasts](https://casts.masonite.dev) + Also be sure to join the [Slack channel](http://slack.masoniteproject.com/)! From c5ea6d049b0aabe2f7e13929f2a4037c81fc9723 Mon Sep 17 00:00:00 2001 From: Carson Evans Date: Wed, 18 Sep 2019 21:16:27 -0400 Subject: [PATCH 32/34] Add shebang to craft script --- craft | 1 + 1 file changed, 1 insertion(+) mode change 100644 => 100755 craft diff --git a/craft b/craft old mode 100644 new mode 100755 index 4250c34..7630273 --- a/craft +++ b/craft @@ -1,3 +1,4 @@ +#!/usr/bin/env python """Craft Command. This module is really used for backup only if the masonite CLI cannot import this for you. From 3b40ad1f5dc639d8049736c85a491b7f85d6a06d Mon Sep 17 00:00:00 2001 From: Joseph Mancuso Date: Tue, 24 Sep 2019 07:05:54 -0400 Subject: [PATCH 33/34] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 62e9e67..a9a4a9f 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,9 @@

+ **NOTE: This repository is the general shell of the framework. This repository is responsible for managing the installation of all new applications. All core framework related code has been abstracted out into it's own PYPI package which can be found [in this GitHub Repo](https://github.com/masoniteframework/core).** + + ## About Masonite The modern and developer centric Python web framework that strives for an actual batteries included developer tool with a lot of out of the box functionality with an extremely extendable architecture. Masonite is perfect for beginner developers getting into their first web applications as well as experienced devs that need to utilize the full potential of Masonite to get their applications done. From 071d242ff56bc734cbd1a3b403898d1537f947d1 Mon Sep 17 00:00:00 2001 From: Junior Gantin Date: Thu, 10 Oct 2019 23:42:48 +0100 Subject: [PATCH 34/34] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a9a4a9f..6c062f0 100644 --- a/README.md +++ b/README.md @@ -156,7 +156,7 @@ You can easily create new applications with `craft`. To create a new application ``` $ pip install masonite-cli -$ craft new . +$ craft new project . ``` The `.` will tell craft to create the project in the current directory instead of a new directory.