From 76dbcbdec7e8bfe8489dcab13884e0e7088071d8 Mon Sep 17 00:00:00 2001 From: Julia2063 Date: Thu, 6 Nov 2025 18:10:28 +0200 Subject: [PATCH 1/3] Solution --- .github/workflows/test.yml-template | 23 +++++++++++++++++++ dir/text1.txt | 1 + package-lock.json | 8 +++---- package.json | 2 +- src/app.js | 35 ++++++++++++++++++++++++++++- tests/next.txt | 3 +++ 6 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/test.yml-template create mode 100644 dir/text1.txt create mode 100644 tests/next.txt diff --git a/.github/workflows/test.yml-template b/.github/workflows/test.yml-template new file mode 100644 index 0000000..bb13dfc --- /dev/null +++ b/.github/workflows/test.yml-template @@ -0,0 +1,23 @@ +name: Test + +on: + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [20.x] + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - run: npm install + - run: npm test diff --git a/dir/text1.txt b/dir/text1.txt new file mode 100644 index 0000000..1d4f8dc --- /dev/null +++ b/dir/text1.txt @@ -0,0 +1 @@ +erfer \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2a93237..fac1014 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "devDependencies": { "@faker-js/faker": "^8.4.1", "@mate-academy/eslint-config": "latest", - "@mate-academy/scripts": "^1.8.6", + "@mate-academy/scripts": "^2.1.2", "eslint": "^8.57.0", "eslint-plugin-jest": "^28.6.0", "eslint-plugin-node": "^11.1.0", @@ -1484,9 +1484,9 @@ } }, "node_modules/@mate-academy/scripts": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@mate-academy/scripts/-/scripts-1.8.6.tgz", - "integrity": "sha512-b4om/whj4G9emyi84ORE3FRZzCRwRIesr8tJHXa8EvJdOaAPDpzcJ8A0sFfMsWH9NUOVmOwkBtOXDu5eZZ00Ig==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@mate-academy/scripts/-/scripts-2.1.2.tgz", + "integrity": "sha512-gUXFdqqOfYzF9R3RSx2pCa5GLdOkxB9bFbF+dpUpzucdgGAANqOGdqpmNnMj+e3xA9YHraUWq3xo9cwe5vD9pQ==", "dev": true, "dependencies": { "@octokit/rest": "^17.11.2", diff --git a/package.json b/package.json index f8c126f..f3cbb8b 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "devDependencies": { "@faker-js/faker": "^8.4.1", "@mate-academy/eslint-config": "latest", - "@mate-academy/scripts": "^1.8.6", + "@mate-academy/scripts": "^2.1.2", "eslint": "^8.57.0", "eslint-plugin-jest": "^28.6.0", "eslint-plugin-node": "^11.1.0", diff --git a/src/app.js b/src/app.js index 0d15e7b..85f5ffb 100644 --- a/src/app.js +++ b/src/app.js @@ -1 +1,34 @@ -// write code here +/* eslint-disable no-console */ + +const { rename } = require('fs/promises'); +const { statSync, existsSync } = require('fs'); +const path = require('path'); + +async function app() { + const args = process.argv.slice(2); + const [source, destination] = args; + + if (!source || !destination) { + console.error(`Two arguments was needed`); + + return; + } + + try { + const isDir = + existsSync(destination) && statSync(destination).isDirectory(); + + const finDest = isDir + ? path.join(destination, path.basename(source)) + : destination; + + await rename(source, finDest); + console.log(`${source} was moved to ${destination}`); + } catch (e) { + console.error(`The file could not be moved. Error: ${e}`); + } +} + +app(); + +module.exports = { app }; diff --git a/tests/next.txt b/tests/next.txt new file mode 100644 index 0000000..057b2df --- /dev/null +++ b/tests/next.txt @@ -0,0 +1,3 @@ +Vel odio sequi caput cernuus temperantia. Vulnus tabella callide acceptus teres xiphias. Arma desolo quam tubineus bos cupiditas pecco decor confugo. +Vomer caute cado audentia perspiciatis conicio vulticulus abundans atavus civis. Patior volo comedo vigilo cohaero cubo dolorem. Ipsa esse adhuc. +Accusator vesper nihil turba subito tredecim quibusdam curiositas. Dapifer textor aufero aliquam adamo casus deserunt charisma depereo decens. Accommodo viscus vigor adduco. \ No newline at end of file From 4b62adbd26f16656a99e4a466fa2ac3e9fdc60c5 Mon Sep 17 00:00:00 2001 From: Julia2063 Date: Thu, 6 Nov 2025 18:49:41 +0200 Subject: [PATCH 2/3] Solution attempt two --- src/app.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/app.js b/src/app.js index 85f5ffb..16bc887 100644 --- a/src/app.js +++ b/src/app.js @@ -14,13 +14,23 @@ async function app() { return; } + if (existsSync(source) && !statSync(source).isFile()) { + console.error(`I can move just files!`); + + return; + } + + const slicedDest = destination.endsWith('/') + ? destination.slice(0, -1) + : destination; + try { - const isDir = - existsSync(destination) && statSync(destination).isDirectory(); + const isDestDir = + existsSync(slicedDest) && statSync(slicedDest).isDirectory(); - const finDest = isDir - ? path.join(destination, path.basename(source)) - : destination; + const finDest = isDestDir + ? path.join(slicedDest, path.basename(source)) + : slicedDest; await rename(source, finDest); console.log(`${source} was moved to ${destination}`); From 86ad4ce8cb76f4dbab566a139500aaa8f362f742 Mon Sep 17 00:00:00 2001 From: Julia2063 Date: Thu, 6 Nov 2025 19:01:29 +0200 Subject: [PATCH 3/3] Solution attempt three --- src/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app.js b/src/app.js index 16bc887..127e5f6 100644 --- a/src/app.js +++ b/src/app.js @@ -15,7 +15,7 @@ async function app() { } if (existsSync(source) && !statSync(source).isFile()) { - console.error(`I can move just files!`); + console.error(`I can move just files! `); return; }