source: frontend/node_modules/fs-extra/lib/move/move-sync.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 1.5 KB
Line 
1'use strict'
2
3const fs = require('graceful-fs')
4const path = require('path')
5const copySync = require('../copy').copySync
6const removeSync = require('../remove').removeSync
7const mkdirpSync = require('../mkdirs').mkdirpSync
8const stat = require('../util/stat')
9
10function moveSync (src, dest, opts) {
11 opts = opts || {}
12 const overwrite = opts.overwrite || opts.clobber || false
13
14 const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)
15 stat.checkParentPathsSync(src, srcStat, dest, 'move')
16 if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))
17 return doRename(src, dest, overwrite, isChangingCase)
18}
19
20function isParentRoot (dest) {
21 const parent = path.dirname(dest)
22 const parsedPath = path.parse(parent)
23 return parsedPath.root === parent
24}
25
26function doRename (src, dest, overwrite, isChangingCase) {
27 if (isChangingCase) return rename(src, dest, overwrite)
28 if (overwrite) {
29 removeSync(dest)
30 return rename(src, dest, overwrite)
31 }
32 if (fs.existsSync(dest)) throw new Error('dest already exists.')
33 return rename(src, dest, overwrite)
34}
35
36function rename (src, dest, overwrite) {
37 try {
38 fs.renameSync(src, dest)
39 } catch (err) {
40 if (err.code !== 'EXDEV') throw err
41 return moveAcrossDevice(src, dest, overwrite)
42 }
43}
44
45function moveAcrossDevice (src, dest, overwrite) {
46 const opts = {
47 overwrite,
48 errorOnExist: true
49 }
50 copySync(src, dest, opts)
51 return removeSync(src)
52}
53
54module.exports = moveSync
Note: See TracBrowser for help on using the repository browser.