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