PHP 7.4.33
Preview: nodetouch Size: 2.55 KB
/var/www/receipt-app-backend-bitkit.dk/httpdocs/node_modules/.bin/nodetouch
#!/usr/bin/env node
const touch = require("../index.js")

const usage = code => {
  console[code ? 'error' : 'log'](
    'usage:\n' +
    'touch [-acfm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ...'
  )
  process.exit(code)
}

const singleFlags = {
  a: 'atime',
  m: 'mtime',
  c: 'nocreate',
  f: 'force'
}

const singleOpts = {
  r: 'ref',
  t: 'time'
}

const files = []
const args = process.argv.slice(2)
const options = {}
for (let i = 0; i < args.length; i++) {
  const arg = args[i]
  if (!arg.match(/^-/)) {
    files.push(arg)
    continue
  }

  // expand shorthands
  if (arg.charAt(1) !== '-') {
    const expand = []
    for (let f = 1; f < arg.length; f++) {
      const fc = arg.charAt(f)
      const sf = singleFlags[fc]
      const so = singleOpts[fc]
      if (sf)
        expand.push('--' + sf)
      else if (so) {
        const soslice = arg.slice(f + 1)
        const soval = soslice.charAt(0) === '=' ? soslice : '=' + soslice
        expand.push('--' + so + soval)
        f = arg.length
      } else if (arg !== '-' + fc)
        expand.push('-' + fc)
    }
    if (expand.length) {
      args.splice.apply(args, [i, 1].concat(expand))
      i--
      continue
    }
  }

  const argsplit = arg.split('=')
  const key = argsplit.shift().replace(/^\-\-/, '')
  const val = argsplit.length ? argsplit.join('=') : null

  switch (key) {
    case 'time':
      const timestr = val || args[++i]
      // [-t [[CC]YY]MMDDhhmm[.SS]]
      const parsedtime = timestr.match(
        /^(([0-9]{2})?([0-9]{2}))?([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})(\.([0-9]{2}))?$/
      )
      if (!parsedtime) {
        console.error('touch: out of range or illegal ' +
                      'time specification: ' +
                      '[[CC]YY]MMDDhhmm[.SS]')
        process.exit(1)
      } else {
        const y = +parsedtime[1]
        const year = parsedtime[2] ? y
          : y <= 68 ? 2000 + y
          : 1900 + y

        const MM = +parsedtime[4] - 1
        const dd = +parsedtime[5]
        const hh = +parsedtime[6]
        const mm = +parsedtime[7]
        const ss = +parsedtime[8]

        options.time = new Date(Date.UTC(year, MM, dd, hh, mm, ss))
      }
      continue

    case 'ref':
      options.ref = val || args[++i]
      continue

    case 'mtime':
    case 'nocreate':
    case 'atime':
    case 'force':
      options[key] = true
      continue

    default:
      console.error('touch: illegal option -- ' + arg)
      usage(1)
  }
}

if (!files.length)
  usage()

process.exitCode = 0
Promise.all(files.map(f => touch(f, options)))
  .catch(er => process.exitCode = 1)

Directory Contents

Dirs: 0 × Files: 48
Name Size Perms Modified Actions
60 B lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
2.82 KB lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
528 B lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
4.25 KB lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
72 B lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
131 B lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
4.83 KB lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
7.56 KB lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
2.63 KB lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
12.35 KB lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
4.14 KB lrwxr-xr-x 2026-05-06 08:23:44
Edit Download
72 B lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
126 B lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
324 B lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
70 B lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
2.66 KB lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
3.74 KB lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
4.95 KB lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
3.51 KB lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
1.17 KB lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
985 B lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
985 B lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
436 B lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
2.55 KB lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
644 B lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
793 B lrwxr-xr-x 2026-05-06 08:23:44
Edit Download
363 B lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
38.15 KB lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
1.50 KB lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
1.83 KB lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
4.61 KB lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
2.84 KB lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
2.84 KB lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
2.00 KB lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
57 B lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
25.88 KB lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
215 B lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
211 B lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
221 B lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
227 B lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
363 B lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
45 B lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
50 B lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
23.89 KB lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
912 B lrwxr-xr-x 2026-05-06 08:23:46
Edit Download
45 B lrwxr-xr-x 2026-05-06 08:23:45
Edit Download
5.47 KB lrwxr-xr-x 2026-05-06 08:23:47
Edit Download
6.12 KB lrwxr-xr-x 2026-05-06 08:23:44
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).