halfzebra / create-elm-app

🍃 Create Elm apps with zero configuration
MIT License
1.68k stars 147 forks source link

create-elm-app fails on attempt to copy read-only tempalte folder #598

Open ony opened 3 years ago

ony commented 3 years ago

Is this a bug report?

Yes

Environment

  1. nix shell 'nixpkgs#'nodejs --command node -v: v14.17.0
  2. nix shell 'nixpkgs#'nodejs --command npm -v: 6.14.13
  3. npm ls create-elm-app -g (if you haven’t ejected): N/A (use NixOS installation)

Then, specify:

  1. Operating system: NixOS 21.05.20210622.20d353f
  2. Browser and version (if relevant):

Steps to Reproduce

  1. nix shell 'nixpkgs#'{nodejs,elmPackages.create-elm-app} --command create-elm-app xyz
    
    Creating xyz project...

Error: EACCES: permission denied, copyfile '/nix/store/4wh8s09zfibsdpzjksy6zdzi53nklviv-node_create-elm-app-5.22.0/lib/node_modules/create-elm-app/template/README.md' -> '/tmp/xyz/README.md' at Object.copyFileSync (fs.js:2059:3) at copyFile (/nix/store/4wh8s09zfibsdpzjksy6zdzi53nklviv-node_create-elm-app-5.22.0/lib/node_modules/create-elm-app/node_modules/fs-extra/lib/copy-sync/copy-sync.js:68:8) at onFile (/nix/store/4wh8s09zfibsdpzjksy6zdzi53nklviv-node_create-elm-app-5.22.0/lib/node_modules/create-elm-app/node_modules/fs-extra/lib/copy-sync/copy-sync.js:52:41) at getStats (/nix/store/4wh8s09zfibsdpzjksy6zdzi53nklviv-node_create-elm-app-5.22.0/lib/node_modules/create-elm-app/node_modules/fs-extra/lib/copy-sync/copy-sync.js:47:39) at startCopy (/nix/store/4wh8s09zfibsdpzjksy6zdzi53nklviv-node_create-elm-app-5.22.0/lib/node_modules/create-elm-app/node_modules/fs-extra/lib/copy-sync/copy-sync.js:37:10) at copyDirItem (/nix/store/4wh8s09zfibsdpzjksy6zdzi53nklviv-node_create-elm-app-5.22.0/lib/node_modules/create-elm-app/node_modules/fs-extra/lib/copy-sync/copy-sync.js:134:10) at /nix/store/4wh8s09zfibsdpzjksy6zdzi53nklviv-node_create-elm-app-5.22.0/lib/node_modules/create-elm-app/node_modules/fs-extra/lib/copy-sync/copy-sync.js:127:39 at Array.forEach () at copyDir (/nix/store/4wh8s09zfibsdpzjksy6zdzi53nklviv-node_create-elm-app-5.22.0/lib/node_modules/create-elm-app/node_modules/fs-extra/lib/copy-sync/copy-sync.js:127:23) at mkDirAndCopy (/nix/store/4wh8s09zfibsdpzjksy6zdzi53nklviv-node_create-elm-app-5.22.0/lib/node_modules/create-elm-app/node_modules/fs-extra/lib/copy-sync/copy-sync.js:123:10) { errno: -13, syscall: 'copyfile', code: 'EACCES', path: '/nix/store/4wh8s09zfibsdpzjksy6zdzi53nklviv-node_create-elm-app-5.22.0/lib/node_modules/create-elm-app/template/README.md', dest: '/tmp/xyz/README.md' }


### Expected Behavior

<!--
  How did you expect the tool to behave?
  It’s fine if you’re not sure your understanding is correct.
  Just write down what you thought would happen.
-->

Folder with name `xyz` will be created with stub content for new project.

### Actual Behavior

<!--
  Did something go wrong?
  Is something broken, or not behaving as you expected?
  Please attach screenshots if possible! They are extremely helpful for diagnosing issues.
-->

*Empty* folder with read-only permissions created only.

```sh
ls -lnd xyz
dr-xr-xr-x 2 1000 1000 4096 Aug 22 22:12 xyz

(notic first octet dr-x instead of drwx)

Note that permissions of original template folder in NixOS store also read-only

dr-xr-xr-x 1 0 0 80 Jan  1  1970 /nix/store/4wh8s09zfibsdpzjksy6zdzi53nklviv-node_create-elm-app-5.22.0/lib/node_modules/create-elm-app/template/

Reproducible Demo

N/A (issue with project creation :wink: : )


This seems to an issue jprichardson/node-fs-extra#629 which was closed in Feb 2020 , but create-elm-app still uses fs-extra 6.0.1 from May 2018, apparently.

https://github.com/halfzebra/create-elm-app/blob/1a4e2ef9b2133b3ed8cb053101644bb8bc4bcd31/package.json#L44