Code Monkey home page Code Monkey logo

Comments (12)

hailwood avatar hailwood commented on June 22, 2024 4

You are correct @cfreear.
Thing is that before we were simply downloading and extracting a zip file which meant things were quite happy to just extract in place.

Now we're using composer create-project which due to it essentially being a git clone and then deleting the .git directory, doesn't work in a non-empty directory.

Realistically we could fix this by using create-project into a tmp directory, and then copying the files over, but I don't believe it's worth the additional complexity it would introduce.

from installer.

cfreear avatar cfreear commented on June 22, 2024 2

From this am I correct in assuming that while using laravel new . --force to create a new Laravel app in the current directory that may contain other files (.git, .idea etc.) used to work on previous versions of installer it was not a supported use case?

from installer.

driesvints avatar driesvints commented on June 22, 2024 1

Think 1. makes sense to me. Use the $this->error method instead of throwing an exception.

from installer.

SiestaCat avatar SiestaCat commented on June 22, 2024 1

I need to create new project and only .git directory is present. I think this is a bug because .git directory doesn't affects in any way.

from installer.

peter279k avatar peter279k commented on June 22, 2024

Just notice that I have the similar issue when using the laravel new --dev on current folder.

Steps To Reproduce:

  • All commands are run on Ubuntu 18.04 operating system. And the laravel/installer is installed globally.
  • Create directory app on my home directory.
  • Using cd $HOME/app to change directory.
  • On above directory, running laravel new --dev to try to create a new Laravel Application Project.

Expected

  • It should install or override the application project on above directory.

Actual

  • I get following error message:
 _                               _
| |                             | |
| |     __ _ _ __ __ ___   _____| |
| |    / _` | '__/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V /  __/ |
|______\__,_|_|  \__,_| \_/ \___|_|


In NewCommand.php line 153:

  Application already exists!


new [--dev] [--jet] [-f|--force] [--] [<name>]

When using the laravel new --dev --force command to run above steps again, it will get following error:

 _                               _
| |                             | |
| |     __ _ _ __ __ ___   _____| |
| |    / _` | '__/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V /  __/ |
|______\__,_|_|  \__,_| \_/ \___|_|

Creating a "laravel/laravel" project at "./"


  [InvalidArgumentException]
  Project directory "/home/directory/app" is not empty.

I think it should be good to add asking question about Application /home/directory/app is existed. Do you want to override them? interactively.

from installer.

driesvints avatar driesvints commented on June 22, 2024

Should be fixed I think

from installer.

hailwood avatar hailwood commented on June 22, 2024

@driesvints it's definitely not fixed in the latest release (v4.0.3) which was released after your comment, so I'd assume the fix would have been in there if it was truly fixed.

Edit:
After looking more into this, the issue is that Laravel uses --force to delete the named directory if it's not ".".
However if it is "." then it just skips that option. Unfortunately composer create-project has no way to say "do your thing even through this directory is not empty" so there's not a lot here that the installer can do to fix it.

It would I believe be worth throwing an error if the name "." and the --force flag are used together, and also updating the option description to explain what it's doing e.g. "Remove the project directory if it already exists",

I wouldn't have expected --force to delete the named directory - I would have expected whatever files were there to be kept (and possible overwritten of the installer wanted to place files with the same name). Possibly even renaming the option to "--delete" or similar would be appropriate.

from installer.

driesvints avatar driesvints commented on June 22, 2024

@hailwood can you send a pr?

from installer.

hailwood avatar hailwood commented on June 22, 2024

@driesvints I'm happy to, what would you like in the PR?

  1. Throw error if "." path and --force flag used together
  2. Update description of --force to "Remove the project directory if it already exists"
  3. Rename --force to --delete

from installer.

driesvints avatar driesvints commented on June 22, 2024

Not 100% sure about that.

from installer.

cfreear avatar cfreear commented on June 22, 2024

No worries, looks like it's a wontfix from composers side anyway. My typical workflow involves opening an empty folder in phpstorm (which creates an .idea folder) and using the built in terminal to run laravel new. I'll just have to remember to do it the other way round! 😅

from installer.

driesvints avatar driesvints commented on June 22, 2024

@hailwood agreed

from installer.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.