|
1 | 1 | const fs = require('fs'); |
| 2 | +const pathLib = require('path'); |
2 | 3 | const tar = require("tar"); |
| 4 | +const ignore = require("ignore"); |
3 | 5 | const { promisify } = require('util'); |
4 | 6 | const libClient = require('../client.js'); |
| 7 | +const { getAllFiles } = require('../utils.js'); |
5 | 8 | const { Command } = require('commander'); |
6 | 9 | const { sdkForProject, sdkForConsole } = require('../sdks') |
7 | 10 | const { parse, actionRunner, parseInteger, parseBool, commandDescriptions, success, log } = require('../parser') |
@@ -37,13 +40,27 @@ const {{ service.name | caseLower }}{{ method.name | caseUcfirst }} = async ({ { |
37 | 40 | if (!fs.lstatSync(folderPath).isDirectory()) |
38 | 41 | throw new Error('The path is not a directory.'); |
39 | 42 |
|
| 43 | + const ignorer = ignore(); |
| 44 | + |
| 45 | + const func = localConfig.getFunction(functionId); |
| 46 | + |
| 47 | + if(func.ignore) { |
| 48 | + ignorer.add(func.ignore); |
| 49 | + log('Ignoring files using configuration from appwrite.json'); |
| 50 | + } else if(fs.existsSync(pathLib.join({{ parameter.name | caseCamel | escapeKeyword }}, '.gitignore'))) { |
| 51 | + ignorer.add(fs.readFileSync(pathLib.join({{ parameter.name | caseCamel | escapeKeyword }}, '.gitignore')).toString()); |
| 52 | + log('Ignoring files in .gitignore'); |
| 53 | + } |
| 54 | + |
| 55 | + const files = getAllFiles({{ parameter.name | caseCamel | escapeKeyword }}).map((file) => pathLib.relative({{ parameter.name | caseCamel | escapeKeyword }}, file)).filter((file) => !ignorer.ignores(file)); |
| 56 | + |
40 | 57 | await tar |
41 | 58 | .create({ |
42 | 59 | gzip: true, |
43 | 60 | sync: true, |
44 | 61 | cwd: folderPath, |
45 | 62 | file: 'code.tar.gz' |
46 | | - }, ['./']) |
| 63 | + }, files); |
47 | 64 | let archivePath = fs.realpathSync('code.tar.gz') |
48 | 65 | if (typeof archivePath !== 'undefined') { |
49 | 66 | payload['{{ parameter.name }}'] = archivePath; |
|
0 commit comments