Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions fileToRead.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
What's up bro?
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
{
"name": "node-nodejs-basics",
"version": "1.0.0",
"description": "This repository is the part of nodejs-assignments https://github.com/AlreadyBored/nodejs-assignments",
"type": "module",
"description": "This repository is the part of nodejs-assignments https://github.com/AlreadyBored/nodejs-assignments",

"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node src/index.js -- --username=Lenochka"
},
"repository": {
"type": "git",
Expand Down
3 changes: 0 additions & 3 deletions src/cli/args.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/cli/env.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/cp/cp.js

This file was deleted.

12 changes: 0 additions & 12 deletions src/cp/files/script.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/fs/copy.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/fs/create.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/fs/delete.js

This file was deleted.

1 change: 0 additions & 1 deletion src/fs/files/dontLookAtMe.txt

This file was deleted.

7 changes: 0 additions & 7 deletions src/fs/files/fileToRead.txt

This file was deleted.

1 change: 0 additions & 1 deletion src/fs/files/fileToRemove.txt

This file was deleted.

1 change: 0 additions & 1 deletion src/fs/files/hello.txt

This file was deleted.

3 changes: 0 additions & 3 deletions src/fs/files/wrongFilename.txt

This file was deleted.

3 changes: 0 additions & 3 deletions src/fs/list.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/fs/read.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/fs/rename.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/hash/calcHash.js

This file was deleted.

1 change: 0 additions & 1 deletion src/hash/files/fileToCalculateHashFor.txt

This file was deleted.

20 changes: 20 additions & 0 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import * as readline from "readline";
import {inputSwitch} from "./input-switch/inputSwitch.js";
import os from "os";
process.chdir(os.homedir());
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let userNameArgv = process.argv.slice(3)[0];
let userName = userNameArgv.substring(userNameArgv.indexOf('=') + 1);
console.log(`Welcome to the File Manager, ${userName}`)

rl.on('line', (input) => {
inputSwitch(input, rl, userName)
});

rl.on('SIGINT', () => {
console.log(`Thank you for using File Manager, ${userName}`)
rl.close();
});
158 changes: 158 additions & 0 deletions src/input-switch/inputSwitch.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
import fs from 'fs/promises';
import {osOperations} from "../os-operations/osOperations.js";
import * as zlib from "zlib";
import {createWriteStream, createReadStream} from 'fs';
import {pipeline} from "stream";
import os from "os";

const possibleCommands = ['cd', 'cat', 'add', 'rn', 'cp', 'mv', 'rm', 'os', 'hash', 'compress', 'decompress']

export async function inputSwitch(inputData, rl, userName) {
let inputDataForSwitch = inputData;
possibleCommands.forEach(command => {
if (inputData.startsWith(command)) {
inputDataForSwitch = command
}
}
)
let sourcePath = inputData.split(' ')[1];
let targetPath = inputData.split(' ')[2];

switch (inputDataForSwitch) {
case '.exit':
console.log(`Thank you for using File Manager, ${userName}`)
rl.close();
break;
case 'up':
process.chdir('../');
break;
case 'pwd':
console.log(process.cwd())
break;
case 'cd':
process.chdir(sourcePath);
console.log(inputData)
console.log(sourcePath)
break;
case 'ls':
const readFilesInDir = async () => {
try {
const filesInDir = await fs.readdir(process.cwd())
console.log(filesInDir)
} catch (err) {
console.log('Operation failed')
}
};
await readFilesInDir();
break;
case 'cat':
const readFile = async () => {
try {
const fileContent = await fs.readFile(sourcePath, 'utf-8')
console.log(fileContent)
} catch (err) {
console.log('Operation failed: file does not exist')
}
};
await readFile();
break;
case 'add':
const createFile = async () => {
try {
await fs.writeFile('fileToWrite.txt', ' ')
} catch (err) {
console.log('Operation failed')
}
};
await createFile();
break;
case 'rn':
const renameFile = async () => {
try {
await fs.rename(sourcePath, targetPath)
} catch (err) {
console.log('Operation failed')
}
};
await renameFile();
break;
case 'cp':
const copyFile = async () => {
try {
await fs.copyFile(sourcePath, targetPath);
} catch (err) {
console.log('Operation failed')
}
};
await copyFile();
break;

case 'mv':
const moveFile = async () => {
try {
await fs.copyFile(sourcePath, targetPath);
await fs.rm(sourcePath);
} catch (err) {
console.log('Operation failed')
}
};
await moveFile();
break;
case 'rm':
const removeFile = async () => {
try {
await fs.rm(sourcePath);
} catch (err) {
console.log('Operation failed')
}
};
await removeFile();
break;
case 'os':
try {
osOperations(sourcePath);
} catch (err) {
console.log('Operation failed')
}
break;
case 'hash':
const {createHash} = await import('crypto');
try {
const calchash = async () => {
const hash = createHash('sha256');
const data = await fs.readFile(sourcePath, "utf8");
hash.update(Buffer.from(data));
return hash.copy().digest('hex')
}
console.log(await calchash());
} catch (err) {
console.log('Operation failed')
}
break;

case 'compress':
const sourceReadStrim = createReadStream(sourcePath);
const destinationWriteStream = createWriteStream(targetPath);
const brot = zlib.createBrotliCompress();
pipeline(sourceReadStrim, brot, destinationWriteStream, (err) => {
if (err) {
console.error('Operation failed:', err);
}
});
break;
case 'decompress':
const sourceReadStrimDec = createReadStream(sourcePath);
const destinationWriteStreamDec = createWriteStream(targetPath);
const brotDecompress = zlib.createBrotliDecompress();
pipeline(sourceReadStrimDec, brotDecompress, destinationWriteStreamDec, (err) => {
if (err) {
console.error('Operation failed:', err);
}
});
break;

default:
console.log(`Invalid input`)
}
if (inputData !== '.exit') console.log(`You are currently in ${process.cwd()}`)
}
31 changes: 0 additions & 31 deletions src/modules/cjsToEsm.cjs

This file was deleted.

5 changes: 0 additions & 5 deletions src/modules/files/a.json

This file was deleted.

5 changes: 0 additions & 5 deletions src/modules/files/b.json

This file was deleted.

1 change: 0 additions & 1 deletion src/modules/files/c.js

This file was deleted.

24 changes: 24 additions & 0 deletions src/os-operations/osOperations.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import * as os from "os";

export function osOperations(operation){
const operationCode = operation.slice(2)

switch (operationCode){
case 'EOL':
console.log(`Default system end of line is: ${os.EOL}`)
break;
case 'cpus':
console.log(`Overall amount of CPUS: ${os.cpus().length}`);
os.cpus().forEach((cpu, index)=>console.log(`${index+1} CPU model and clock rate is: ${cpu.model}`))
break;
case 'homedir':
console.log(`Home directory is: ${os.homedir()}`)
break;
case 'username':
console.log(`System username is: ${os.userInfo().username}`)
break;
case 'architecture':
console.log(`Operating system CPU architecture for which the Node.js binary was compiled: ${os.arch()}`)
break;
}
}
1 change: 0 additions & 1 deletion src/streams/files/fileToRead.txt

This file was deleted.

Empty file removed src/streams/files/fileToWrite.txt
Empty file.
3 changes: 0 additions & 3 deletions src/streams/read.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/streams/transform.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/streams/write.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/wt/main.js

This file was deleted.

6 changes: 0 additions & 6 deletions src/wt/worker.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/zip/compress.js

This file was deleted.

Loading