allow multiple glob patterns

This commit is contained in:
Ell 2023-07-02 17:00:41 +02:00
parent be1321fa45
commit 9472407096
2 changed files with 40 additions and 37 deletions

View file

@ -10,7 +10,8 @@ steps:
server: https://cloud.ellpeck.de # the server to use server: https://cloud.ellpeck.de # the server to use
user: EllBot # the user user: EllBot # the user
token: access-token # the access token, or password if 2FA is disabled token: access-token # the access token, or password if 2FA is disabled
files: "**/*.md" # the file(s), uses glob pattern files: # the file(s), uses glob patterns
- "**/*.md"
dest: Uploads/CoolMarkdownFiles # the destination directory dest: Uploads/CoolMarkdownFiles # the destination directory
basedir: "." # optional, local base directory for files, defaults to . basedir: "." # optional, local base directory for files, defaults to .
chunksize: # optional, chunk size in bytes, defaults to 52428800 chunksize: # optional, chunk size in bytes, defaults to 52428800

View file

@ -28,42 +28,44 @@ upload();
async function upload() { async function upload() {
let basePath = `${serverEnv}/remote.php/dav`; let basePath = `${serverEnv}/remote.php/dav`;
const upload = new Upload(basePath, userEnv, userEnv, tokenEnv); const upload = new Upload(basePath, userEnv, userEnv, tokenEnv);
let files = await glob.glob(filesEnv, { cwd: baseDir }); for (let pattern of filesEnv.split(",")) {
if (!files.length) let files = await glob.glob(pattern, { cwd: baseDir });
console.log("No files to upload"); if (!files.length)
for (let file of files) { console.log("No files to upload");
let dest = `${destEnv}/${file}`; for (let file of files) {
if (!quiet) let dest = `${destEnv}/${file}`;
console.log(`Uploading ${file} to ${dest}`);
// we have to explicitly create any directories that don't exist yet
// (https://github.com/shiftpi/nextcloud-chunk-file-upload/issues/22)
let currDir = "";
for (let dir of dest.split("/").slice(0, -1)) {
currDir += `${dir}/`;
try {
await axios.request({
method: 'mkcol',
url: `${basePath}/files/${userEnv}/${currDir}`,
auth: {
username: userEnv,
password: tokenEnv
}
});
if (!quiet)
console.log(`Created directory ${currDir}`);
} catch (error) {
// this is fine since the directory likely already exists
}
}
// use lib to upload file
await upload.uploadFile(`${baseDir}/${file}`, dest, chunkSizeEnv).then(e => {
if (!quiet) if (!quiet)
console.log(`Uploaded ${file} to ${dest} (${e})`); console.log(`Uploading ${file} to ${dest}`);
}).catch(e => {
console.log(`Failed to upload file ${file} to ${dest} (${e}, error ${e.httpErrorCode}, ${e.httpErrorMessage})`); // we have to explicitly create any directories that don't exist yet
process.exit(1); // (https://github.com/shiftpi/nextcloud-chunk-file-upload/issues/22)
}); let currDir = "";
for (let dir of dest.split("/").slice(0, -1)) {
currDir += `${dir}/`;
try {
await axios.request({
method: 'mkcol',
url: `${basePath}/files/${userEnv}/${currDir}`,
auth: {
username: userEnv,
password: tokenEnv
}
});
if (!quiet)
console.log(`Created directory ${currDir}`);
} catch (error) {
// this is fine since the directory likely already exists
}
}
// use lib to upload file
await upload.uploadFile(`${baseDir}/${file}`, dest, chunkSizeEnv).then(e => {
if (!quiet)
console.log(`Uploaded ${file} to ${dest} (${e})`);
}).catch(e => {
console.log(`Failed to upload file ${file} to ${dest} (${e}, error ${e.httpErrorCode}, ${e.httpErrorMessage})`);
process.exit(1);
});
}
} }
} }