zx

A tool for writing better scripts by Google - zx. I usually choose to write a Python or Deno script instead of a shell script for more convenience. I found this tool is so great, helping to write the script quickly. It would help if you tried it too.

Refer to the Git repo here for the detailed document: https://github.com/google/zx

Some examples

backup-github.mjs

#!/usr/bin/env zx

let username = await question('What is your GitHub username? ')
let token = await question('Do you have GitHub token in env? ', {
  choices: Object.keys(process.env),
})

let headers = {}
if (process.env[token]) {
  headers = {
    Authorization: `token ${process.env[token]}`,
  }
}
let res = await fetch(`https://api.github.com/users/${username}/repos`, {
  headers,
})
let data = await res.json()
let urls = data.map((x) => x.git_url)

await $`mkdir -p backups`
cd('./backups')

await Promise.all(urls.map((url) => $`git clone ${url}`))
zx ./backup-github.mjs

External files

zx https://gist.githubusercontent.com/duyet/04fe68cc1ce7c82360354a90824a5edd/raw/6e4dbcd74688fd492cbbb1f746e501f77c3f93d0/wttr.mjs

ProductivityData EngineeringBashLinux