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..127e5f6 100644 --- a/src/app.js +++ b/src/app.js @@ -1 +1,44 @@ -// 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; + } + + 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 isDestDir = + existsSync(slicedDest) && statSync(slicedDest).isDirectory(); + + const finDest = isDestDir + ? path.join(slicedDest, path.basename(source)) + : slicedDest; + + 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