mirror of
				https://github.com/SamKirkland/FTP-Deploy-Action.git
				synced 2025-10-31 09:14:00 +00:00 
			
		
		
		
	v4.3.5
This commit is contained in:
		
							parent
							
								
									c15ea8f529
								
							
						
					
					
						commit
						8e83cea867
					
				
							
								
								
									
										2
									
								
								.github/workflows/ftp.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/ftp.yml
									
									
									
									
										vendored
									
									
								
							| @ -10,7 +10,7 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: 🚚 Get latest code | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
| 
 | ||||
|       - name: 📂 Sync files | ||||
|         uses: ./ | ||||
|  | ||||
							
								
								
									
										2
									
								
								.github/workflows/ftps.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/ftps.yml
									
									
									
									
										vendored
									
									
								
							| @ -10,7 +10,7 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: 🚚 Get latest code | ||||
|         uses: actions/checkout@v3 | ||||
|         uses: actions/checkout@v4 | ||||
| 
 | ||||
|       - name: 📂 Sync files | ||||
|         uses: ./ | ||||
|  | ||||
							
								
								
									
										20
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								README.md
									
									
									
									
									
								
							| @ -20,10 +20,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: 🚚 Get latest code | ||||
|       uses: actions/checkout@v3 | ||||
|       uses: actions/checkout@v4 | ||||
|      | ||||
|     - name: 📂 Sync files | ||||
|       uses: SamKirkland/FTP-Deploy-Action@v4.3.4 | ||||
|       uses: SamKirkland/FTP-Deploy-Action@v4.3.5 | ||||
|       with: | ||||
|         server: ftp.samkirkland.com | ||||
|         username: myFtpUserName | ||||
| @ -86,7 +86,7 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: 🚚 Get latest code | ||||
|       uses: actions/checkout@v3 | ||||
|       uses: actions/checkout@v4 | ||||
| 
 | ||||
|     - name: Use Node.js 16 | ||||
|       uses: actions/setup-node@v2 | ||||
| @ -99,7 +99,7 @@ jobs: | ||||
|         npm run build | ||||
|      | ||||
|     - name: 📂 Sync files | ||||
|       uses: SamKirkland/FTP-Deploy-Action@v4.3.4 | ||||
|       uses: SamKirkland/FTP-Deploy-Action@v4.3.5 | ||||
|       with: | ||||
|         server: ftp.samkirkland.com | ||||
|         username: myFtpUserName | ||||
| @ -116,10 +116,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: 🚚 Get latest code | ||||
|       uses: actions/checkout@v3 | ||||
|       uses: actions/checkout@v4 | ||||
| 
 | ||||
|     - name: 📂 Sync files | ||||
|       uses: SamKirkland/FTP-Deploy-Action@v4.3.4 | ||||
|       uses: SamKirkland/FTP-Deploy-Action@v4.3.5 | ||||
|       with: | ||||
|         server: ftp.samkirkland.com | ||||
|         username: myFtpUserName | ||||
| @ -139,10 +139,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: 🚚 Get latest code | ||||
|       uses: actions/checkout@v3 | ||||
|       uses: actions/checkout@v4 | ||||
| 
 | ||||
|     - name: 📂 Sync files | ||||
|       uses: SamKirkland/FTP-Deploy-Action@v4.3.4 | ||||
|       uses: SamKirkland/FTP-Deploy-Action@v4.3.5 | ||||
|       with: | ||||
|         server: ftp.samkirkland.com | ||||
|         username: myFtpUserName | ||||
| @ -161,10 +161,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: 🚚 Get latest code | ||||
|       uses: actions/checkout@v3 | ||||
|       uses: actions/checkout@v4 | ||||
| 
 | ||||
|     - name: 📂 Sync files | ||||
|       uses: SamKirkland/FTP-Deploy-Action@v4.3.4 | ||||
|       uses: SamKirkland/FTP-Deploy-Action@v4.3.5 | ||||
|       with: | ||||
|         server: ftp.samkirkland.com | ||||
|         username: myFtpUserName | ||||
|  | ||||
| @ -45,7 +45,7 @@ inputs: | ||||
|     required: false | ||||
|     description: "Timeout in milliseconds for FTP operations" | ||||
| runs: | ||||
|   using: "node16" | ||||
|   using: "node20" | ||||
|   main: "dist/index.js" | ||||
| branding: | ||||
|   icon: "upload-cloud" | ||||
|  | ||||
							
								
								
									
										56
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										56
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @ -4122,8 +4122,8 @@ const fsStat = (0, util_1.promisify)(fs_1.stat); | ||||
| const fsOpen = (0, util_1.promisify)(fs_1.open); | ||||
| const fsClose = (0, util_1.promisify)(fs_1.close); | ||||
| const fsUnlink = (0, util_1.promisify)(fs_1.unlink); | ||||
| const LIST_COMMANDS_DEFAULT = ["LIST -a", "LIST"]; | ||||
| const LIST_COMMANDS_MLSD = ["MLSD", "LIST -a", "LIST"]; | ||||
| const LIST_COMMANDS_DEFAULT = () => ["LIST -a", "LIST"]; | ||||
| const LIST_COMMANDS_MLSD = () => ["MLSD", "LIST -a", "LIST"]; | ||||
| /** | ||||
|  * High-level API to interact with an FTP server. | ||||
|  */ | ||||
| @ -4134,7 +4134,7 @@ class Client { | ||||
|      * @param timeout  Timeout in milliseconds, use 0 for no timeout. Optional, default is 30 seconds. | ||||
|      */ | ||||
|     constructor(timeout = 30000) { | ||||
|         this.availableListCommands = LIST_COMMANDS_DEFAULT; | ||||
|         this.availableListCommands = LIST_COMMANDS_DEFAULT(); | ||||
|         this.ftp = new FtpContext_1.FTPContext(timeout); | ||||
|         this.prepareTransfer = this._enterFirstCompatibleMode([transfer_1.enterPassiveModeIPv6, transfer_1.enterPassiveModeIPv4]); | ||||
|         this.parseList = parseList_1.parseList; | ||||
| @ -4284,10 +4284,10 @@ class Client { | ||||
|         // Use MLSD directory listing if possible. See https://tools.ietf.org/html/rfc3659#section-7.8:
 | ||||
|         // "The presence of the MLST feature indicates that both MLST and MLSD are supported."
 | ||||
|         const supportsMLSD = features.has("MLST"); | ||||
|         this.availableListCommands = supportsMLSD ? LIST_COMMANDS_MLSD : LIST_COMMANDS_DEFAULT; | ||||
|         this.availableListCommands = supportsMLSD ? LIST_COMMANDS_MLSD() : LIST_COMMANDS_DEFAULT(); | ||||
|         await this.send("TYPE I"); // Binary mode
 | ||||
|         await this.sendIgnoringError("STRU F"); // Use file structure
 | ||||
|         await this.sendIgnoringError("OPTS UTF8 ON"); // Some servers expect UTF-8 to be enabled explicitly
 | ||||
|         await this.sendIgnoringError("OPTS UTF8 ON"); // Some servers expect UTF-8 to be enabled explicitly and setting before login might not have worked.
 | ||||
|         if (supportsMLSD) { | ||||
|             await this.sendIgnoringError("OPTS MLST type;size;modify;unique;unix.mode;unix.owner;unix.group;unix.ownername;unix.groupname;"); // Make sure MLSD listings include all we can parse
 | ||||
|         } | ||||
| @ -4322,6 +4322,9 @@ class Client { | ||||
|             secureOptions.host = (_b = secureOptions.host) !== null && _b !== void 0 ? _b : options.host; | ||||
|             await this.useTLS(secureOptions); | ||||
|         } | ||||
|         // Set UTF-8 on before login in case there are non-ascii characters in user or password.
 | ||||
|         // Note that this might not work before login depending on server.
 | ||||
|         await this.sendIgnoringError("OPTS UTF8 ON"); | ||||
|         await this.login(options.user, options.password); | ||||
|         await this.useDefaultSettings(); | ||||
|         return welcome; | ||||
| @ -4419,7 +4422,10 @@ class Client { | ||||
|      */ | ||||
|     async remove(path, ignoreErrorCodes = false) { | ||||
|         const validPath = await this.protectWhitespace(path); | ||||
|         return this.send(`DELE ${validPath}`, ignoreErrorCodes); | ||||
|         if (ignoreErrorCodes) { | ||||
|             return this.sendIgnoringError(`DELE ${validPath}`); | ||||
|         } | ||||
|         return this.send(`DELE ${validPath}`); | ||||
|     } | ||||
|     /** | ||||
|      * Report transfer progress for any upload or download to a given handler. | ||||
| @ -4628,10 +4634,13 @@ class Client { | ||||
|     async removeDir(remoteDirPath) { | ||||
|         return this._exitAtCurrentDirectory(async () => { | ||||
|             await this.cd(remoteDirPath); | ||||
|             // Get the absolute path of the target because remoteDirPath might be a relative path, even `../` is possible.
 | ||||
|             const absoluteDirPath = await this.pwd(); | ||||
|             await this.clearWorkingDir(); | ||||
|             if (remoteDirPath !== "/") { | ||||
|             const dirIsRoot = absoluteDirPath === "/"; | ||||
|             if (!dirIsRoot) { | ||||
|                 await this.cdup(); | ||||
|                 await this.removeEmptyDir(remoteDirPath); | ||||
|                 await this.removeEmptyDir(absoluteDirPath); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
| @ -4878,7 +4887,7 @@ var FileType; | ||||
|     FileType[FileType["File"] = 1] = "File"; | ||||
|     FileType[FileType["Directory"] = 2] = "Directory"; | ||||
|     FileType[FileType["SymbolicLink"] = 3] = "SymbolicLink"; | ||||
| })(FileType = exports.FileType || (exports.FileType = {})); | ||||
| })(FileType || (exports.FileType = FileType = {})); | ||||
| /** | ||||
|  * Describes a file, directory or symbolic link. | ||||
|  */ | ||||
| @ -4985,6 +4994,9 @@ class FTPError extends Error { | ||||
|     } | ||||
| } | ||||
| exports.FTPError = FTPError; | ||||
| function doNothing() { | ||||
|     /** Do nothing */ | ||||
| } | ||||
| /** | ||||
|  * FTPContext holds the control and data sockets of an FTP connection and provides a | ||||
|  * simplified way to interact with an FTP server, handle responses, errors and timeouts. | ||||
| @ -5037,9 +5049,8 @@ class FTPContext { | ||||
|             return; | ||||
|         } | ||||
|         this._closingError = err; | ||||
|         this.send("QUIT"); // Don't wait for an answer
 | ||||
|         // Close the sockets but don't fully reset this context to preserve `this._closingError`.
 | ||||
|         this._closeSocket(this._socket); | ||||
|         this._closeControlSocket(); | ||||
|         this._closeSocket(this._dataSocket); | ||||
|         // Give the user's task a chance to react, maybe cleanup resources.
 | ||||
|         this._passToHandler(err); | ||||
| @ -5080,7 +5091,7 @@ class FTPContext { | ||||
|                 this._removeSocketListeners(this.socket); | ||||
|             } | ||||
|             else { | ||||
|                 this._closeSocket(this.socket); | ||||
|                 this._closeControlSocket(); | ||||
|             } | ||||
|         } | ||||
|         if (socket) { | ||||
| @ -5289,16 +5300,23 @@ class FTPContext { | ||||
|         }); | ||||
|     } | ||||
|     /** | ||||
|      * Close a socket. | ||||
|      * Close the control socket. Sends QUIT, then FIN, and ignores any response or error. | ||||
|      */ | ||||
|     _closeControlSocket() { | ||||
|         this._removeSocketListeners(this._socket); | ||||
|         this._socket.on("error", doNothing); | ||||
|         this.send("QUIT"); | ||||
|         this._closeSocket(this._socket); | ||||
|     } | ||||
|     /** | ||||
|      * Close a socket, ignores any error. | ||||
|      * @protected | ||||
|      */ | ||||
|     _closeSocket(socket) { | ||||
|         if (socket) { | ||||
|             this._removeSocketListeners(socket); | ||||
|             socket.on("error", () => { }); | ||||
|             socket.on("timeout", () => socket.destroy()); | ||||
|             socket.setTimeout(this.timeout); | ||||
|             socket.end(); | ||||
|             socket.on("error", doNothing); | ||||
|             socket.destroy(); | ||||
|         } | ||||
|     } | ||||
|     /** | ||||
| @ -5790,8 +5808,8 @@ function parseSize(value, info) { | ||||
|  * Parsers for MLSD facts. | ||||
|  */ | ||||
| const factHandlersByName = { | ||||
|     "size": parseSize, | ||||
|     "sizd": parseSize, | ||||
|     "size": parseSize, // File size
 | ||||
|     "sizd": parseSize, // Directory size
 | ||||
|     "unique": (value, info) => { | ||||
|         info.uniqueID = value; | ||||
|     }, | ||||
|  | ||||
| @ -25,7 +25,7 @@ Most features have been carried forward and improved upon. However, some feature | ||||
| ### How to upgrade | ||||
| 
 | ||||
| 1. Remove `with: fetch-depth: 2`. It is no longer needed and removing it will _slightly_ speed up deployments. | ||||
| 2. Change the version to `v4.X.X`, for example `SamKirkland/FTP-Deploy-Action@v4.3.4` (please check the [README](https://github.com/SamKirkland/FTP-Deploy-Action/blob/master/README.md) or the [releases page](https://github.com/SamKirkland/FTP-Deploy-Action/releases/latest) for the latest version). | ||||
| 2. Change the version to `v4.X.X`, for example `SamKirkland/FTP-Deploy-Action@v4.3.5` (please check the [README](https://github.com/SamKirkland/FTP-Deploy-Action/blob/master/README.md) or the [releases page](https://github.com/SamKirkland/FTP-Deploy-Action/releases/latest) for the latest version). | ||||
| 3. If you have a `.git-ftp-include` file you should delete it. Version 4 tracks files differently and no longer needs this config file. | ||||
| 4. If you have a `.git-ftp-ignore` file, you should transfer the options to the new `exclude` argument. **Note:** version 4 excludes any `.git*` and `node_modules/` files / folders by default. | ||||
| 5. Update your arguments to reflect the following changes: | ||||
|  | ||||
							
								
								
									
										36
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										36
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1,23 +1,23 @@ | ||||
| { | ||||
|   "name": "ftp-deploy-action", | ||||
|   "version": "4.3.4", | ||||
|   "version": "4.3.5", | ||||
|   "lockfileVersion": 3, | ||||
|   "requires": true, | ||||
|   "packages": { | ||||
|     "": { | ||||
|       "name": "ftp-deploy-action", | ||||
|       "version": "4.3.4", | ||||
|       "version": "4.3.5", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@actions/core": "^1.9.1", | ||||
|         "@samkirkland/ftp-deploy": "^1.2.3", | ||||
|         "@samkirkland/ftp-deploy": "^1.2.4", | ||||
|         "@types/jest": "^29.4.1", | ||||
|         "jest": "^29.5.0", | ||||
|         "ts-jest": "^29.0.5", | ||||
|         "ts-node-dev": "^2.0.0" | ||||
|       }, | ||||
|       "devDependencies": { | ||||
|         "@types/node": "^14.0.27", | ||||
|         "@types/node": "^20.11.24", | ||||
|         "@typescript-eslint/eslint-plugin": "^5.33.1", | ||||
|         "@typescript-eslint/parser": "^5.33.1", | ||||
|         "@vercel/ncc": "^0.34.0", | ||||
| @ -1097,11 +1097,11 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@samkirkland/ftp-deploy": { | ||||
|       "version": "1.2.3", | ||||
|       "resolved": "https://registry.npmjs.org/@samkirkland/ftp-deploy/-/ftp-deploy-1.2.3.tgz", | ||||
|       "integrity": "sha512-7DZEnyNlg78FdJ86Lm2BgBccI31mrMUnUxDt+Le/j0DCQpOA4Wl0u+jH2Mt6i6xOYtrVADX/LUeiZ8x+Epr/UA==", | ||||
|       "version": "1.2.4", | ||||
|       "resolved": "https://registry.npmjs.org/@samkirkland/ftp-deploy/-/ftp-deploy-1.2.4.tgz", | ||||
|       "integrity": "sha512-MF5BoP1mQS3HBdx2pTMX/sIxSt9S4IgdL6ttrcGpUWC9U/IIPcUnyVEQiiBQJePLXpHI93dT9b8VDoS+cUknNg==", | ||||
|       "dependencies": { | ||||
|         "basic-ftp": "^5.0.2", | ||||
|         "basic-ftp": "^5.0.5", | ||||
|         "lodash": "^4.17.21", | ||||
|         "multimatch": "^5.0.0", | ||||
|         "pretty-bytes": "^5.6.0", | ||||
| @ -1241,9 +1241,12 @@ | ||||
|       "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" | ||||
|     }, | ||||
|     "node_modules/@types/node": { | ||||
|       "version": "14.18.25", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.25.tgz", | ||||
|       "integrity": "sha512-9pLfceRSrKIsv/MISN6RoFWTIzka36Uk2Uuf5a8cHyDYhEgl5Hm5dXoe621KULeBjt+cFsY18mILsWWtJeG80w==" | ||||
|       "version": "20.11.24", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", | ||||
|       "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", | ||||
|       "dependencies": { | ||||
|         "undici-types": "~5.26.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@types/prettier": { | ||||
|       "version": "2.7.2", | ||||
| @ -1722,9 +1725,9 @@ | ||||
|       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" | ||||
|     }, | ||||
|     "node_modules/basic-ftp": { | ||||
|       "version": "5.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.2.tgz", | ||||
|       "integrity": "sha512-NgkBwqp7rkhIUBaxLwL601lvUuBUvShJocrLYdiyTsH1WeP/wofMdooZ4p6hz+4hqiU59PBOj0EkaqELwFJLuQ==", | ||||
|       "version": "5.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", | ||||
|       "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", | ||||
|       "engines": { | ||||
|         "node": ">=10.0.0" | ||||
|       } | ||||
| @ -4729,6 +4732,11 @@ | ||||
|         "node": ">=4.2.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/undici-types": { | ||||
|       "version": "5.26.5", | ||||
|       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", | ||||
|       "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" | ||||
|     }, | ||||
|     "node_modules/update-browserslist-db": { | ||||
|       "version": "1.0.10", | ||||
|       "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "ftp-deploy-action", | ||||
|   "version": "4.3.4", | ||||
|   "version": "4.3.5", | ||||
|   "private": true, | ||||
|   "description": "Automate deploying websites and more with this GitHub action", | ||||
|   "main": "dist/index.js", | ||||
| @ -23,14 +23,14 @@ | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "@actions/core": "^1.9.1", | ||||
|     "@samkirkland/ftp-deploy": "^1.2.3", | ||||
|     "@samkirkland/ftp-deploy": "^1.2.4", | ||||
|     "@types/jest": "^29.4.1", | ||||
|     "jest": "^29.5.0", | ||||
|     "ts-jest": "^29.0.5", | ||||
|     "ts-node-dev": "^2.0.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/node": "^14.0.27", | ||||
|     "@types/node": "^20.11.24", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.33.1", | ||||
|     "@typescript-eslint/parser": "^5.33.1", | ||||
|     "@vercel/ncc": "^0.34.0", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user