Skip to content
This repository has been archived by the owner on Jun 22, 2024. It is now read-only.

Commit

Permalink
Convert code to standard code-style and merge two actions files with …
Browse files Browse the repository at this point in the history
…1 CLI
  • Loading branch information
hyeongjun231 committed Oct 1, 2020
1 parent 46e5b6a commit 92e5353
Show file tree
Hide file tree
Showing 12 changed files with 132 additions and 194 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# copyFile
# copyAndDelete

This is a CLI built with [commander](https://www.npmjs.com/package/commander) that copies files to a specific directory path.
This is a CLI built with [commander](https://www.npmjs.com/package/commander). You can copy files to a specific directory path and delete the specified path and its sub-files/folders.

## Usage

Here is the output of running `node bin/cli.js -h` from the `copyFile` directory:
Here is the output of running `node bin/cli.js -h` from the `copyAndDelete` directory:

```bash
Usage: cli.js [file] [path]
Expand All @@ -28,12 +28,14 @@ Since this is a CLI, you'll probably want to get it available on your PATH. Ther

```bash
npm i -g . # this will install the current working directory as a global module. you will want to do npm uninstall -g . to uninstall it.
copyFile copy [file] [path] # run the CLI
copyAndDelete copy [file] [path] # run the CLI
copyAndDelete rimraf [path] # run the CLI
```

**Via symlink:**

```bash
npm link # this will create a symlink that makes the module act as a global module. npm unlink to remove this.
copyFile copy [file] [path] # run the CLI
copyAndDelete copy [file] [path] # run the CLI
copyAndDelete rimraf [file] # run the CLI
```
30 changes: 30 additions & 0 deletions cli/commander/copyAndDelete/bin/cli.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/env node
const { program } = require('commander')

const copyFile = require('../lib/copyFile')
const rimraf = require('../lib/rimraf')

program.version('0.0.1', '-v, --version').usage('[options]')

program
.command('copy <name> <directory>')
.usage('<name> <directory>')
.description('Copy file.')
.action((name, direcotry) => {
copyFile(name, direcotry)
})

program
.command('rimraf <path>')
.usage('<path>')
.description('Deletes the specified path and its sub-files/folders.')
.action((path) => {
rimraf(path)
})

program.command('*', { noHelp: true }).action(() => {
console.log('Command not found')
program.help()
})

program.parse(process.argv)
39 changes: 39 additions & 0 deletions cli/commander/copyAndDelete/lib/copyFile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
const path = require('path')
const fs = require('fs')

const exist = (dir) => {
try {
fs.accessSync(
dir,
fs.constants.F_OK | fs.constants.R_OK | fs.constants.W_OK
) // tests a user's permissions for the file or directory specified by path
return true // if dir exists, return true.
} catch (e) {
return false // if dir not exists, return false.
}
}

const mkdirp = (dir) => {
const dirname = path
.relative('.', path.normalize(dir))
.split(path.sep)
.filter((p) => !!p)
dirname.forEach((d, idx) => {
const pathBuilder = dirname.slice(0, idx + 1).join(path.sep)
if (!exist(pathBuilder)) {
fs.mkdirSync(pathBuilder) // make directory
}
})
}

const copyFile = (name, directory) => {
if (exist(name)) {
mkdirp(directory)
fs.copyFileSync(name, path.join(directory, name))
console.log(`${name} file is copied.`)
} else {
console.error('File does not exist.')
}
}

module.exports = copyFile
35 changes: 35 additions & 0 deletions cli/commander/copyAndDelete/lib/rimraf.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const fs = require('fs')
const path = require('path')

const exist = (dir) => {
try {
fs.accessSync(
dir,
fs.constants.F_OK | fs.constants.R_OK | fs.constants.W_OK
)
return true
} catch (e) {
return false
}
}

const rimraf = (p) => {
if (exist(p)) {
try {
const dir = fs.readdirSync(p)
console.log(dir)
dir.forEach((d) => {
rimraf(path.join(p, d))
})
fs.rmdirSync(p)
console.log(`Remove ${p} folder success`)
} catch (e) {
fs.unlinkSync(p)
console.log(`Remove ${p} file success`)
}
} else {
console.error('No such file or directory')
}
}

module.exports = rimraf
21 changes: 21 additions & 0 deletions cli/commander/copyAndDelete/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"name": "copy-and-delete",
"version": "1.0.0",
"description": "You can copy files to a specific directory path or delete specific files and directory.",
"main": "index.js",
"scripts": {
"lint": "standard",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"commander": "^6.1.0"
},
"bin": {
"copyAndDelete": "./bin/cli.js"
},
"devDependencies": {
"standard": "^14.3.4"
}
}
21 changes: 0 additions & 21 deletions cli/commander/copyFile/bin/cli.js

This file was deleted.

39 changes: 0 additions & 39 deletions cli/commander/copyFile/lib/copyFile.js

This file was deleted.

17 changes: 0 additions & 17 deletions cli/commander/copyFile/package.json

This file was deleted.

39 changes: 0 additions & 39 deletions cli/commander/removeFile/README.md

This file was deleted.

21 changes: 0 additions & 21 deletions cli/commander/removeFile/bin/cli.js

This file was deleted.

35 changes: 0 additions & 35 deletions cli/commander/removeFile/lib/rimraf.js

This file was deleted.

17 changes: 0 additions & 17 deletions cli/commander/removeFile/package.json

This file was deleted.

0 comments on commit 92e5353

Please sign in to comment.