33 */
44
55const fs = require ( 'fs-extra' ) ;
6+ const os = require ( 'os' ) ;
67const path = require ( 'path' ) ;
78const Utils = require ( './../../helpers/utils.js' ) ;
89const moment = require ( 'moment' ) ;
910const archiver = require ( 'archiver' ) ;
1011const tar = require ( 'tar' ) ;
12+ const trash = require ( 'trash' ) ;
1113
1214class Backup {
1315 /**
@@ -148,7 +150,7 @@ class Backup {
148150 * @param backupsDir
149151 * @returns {{status: boolean, backups: *} }
150152 */
151- static remove ( siteName , backupsNames , backupsDir ) {
153+ static async remove ( siteName , backupsNames , backupsDir ) {
152154 for ( let backupName of backupsNames ) {
153155 let backupFilePath = path . join ( backupsDir , siteName , backupName ) ;
154156
@@ -160,19 +162,31 @@ class Backup {
160162 }
161163
162164 try {
163- fs . unlinkSync ( backupFilePath ) ;
165+ if (
166+ os . platform ( ) !== 'darwin' ||
167+ (
168+ os . platform ( ) === 'darwin' &&
169+ parseInt ( os . release ( ) . split ( '.' ) [ 0 ] , 10 ) >= 16
170+ )
171+ ) {
172+ await ( async ( ) => {
173+ await trash ( backupFilePath ) ;
174+ } ) ( ) ;
175+ } else {
176+ fs . unlinkSync ( backupFilePath ) ;
177+ }
164178 } catch ( e ) {
165- return {
179+ return Promise . resolve ( {
166180 status : false ,
167181 backups : Backup . loadList ( siteName , backupsDir )
168- } ;
182+ } ) ;
169183 }
170184 }
171185
172- return {
186+ return Promise . resolve ( {
173187 status : true ,
174188 backups : Backup . loadList ( siteName , backupsDir )
175- } ;
189+ } ) ;
176190 }
177191
178192 /**
0 commit comments