mirror of
https://github.com/kellymichels/zscripts-token-savers
synced 2026-10-08 07:28:18 +00:00
Compare commits
11 Commits
v1.0.0.0.2
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 5406c85837 | |||
| 5bc77f2de1 | |||
| 57edc629c1 | |||
| 73dd27c4f1 | |||
| b26be3cd2a | |||
| 22a7387548 | |||
| 86938d0d80 | |||
| 90f43010c1 | |||
| 1c7d1d639b | |||
| c317b139d6 | |||
| d4cfa980ed |
14
.gitattributes
vendored
14
.gitattributes
vendored
@ -4,8 +4,18 @@
|
||||
*.ps1 text eol=crlf
|
||||
*.cmd text eol=crlf
|
||||
|
||||
# The checksum manifest must stay LF: `sha256sum -c` treats a trailing CR as
|
||||
# part of the filename and reports every entry as missing.
|
||||
# Every .txt here is either a generated twin or a manifest, and all of them
|
||||
# want LF. plaintext_twins.py writes LF and git stores LF, but without this
|
||||
# pin checkout applied core.autocrlf and handed the working tree CRLF - so
|
||||
# every regeneration rewrote the file to LF, `git status` reported a change,
|
||||
# and `git add` normalized it straight back to nothing (#88). Pinning the
|
||||
# checkout makes all three agree.
|
||||
*.txt text eol=lf
|
||||
|
||||
# Kept explicit even though *.txt already covers it: the checksum manifest
|
||||
# must stay LF because `sha256sum -c` treats a trailing CR as part of the
|
||||
# filename and reports every entry as missing. That is a broken verification,
|
||||
# not a cosmetic diff, and it should not depend on a glob above it.
|
||||
CHECKSUMS.txt text eol=lf
|
||||
releases/*.sha256 text eol=lf
|
||||
|
||||
|
||||
51
.github/workflows/rerun-timed-out.yml
vendored
Normal file
51
.github/workflows/rerun-timed-out.yml
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
# Re-runs a test run once when one of its jobs ran out of time
|
||||
# (evo.testsuites#25, part 2).
|
||||
#
|
||||
# A timeout usually means a stuck runner or a network stall rather than a
|
||||
# broken test, so the first one gets a second chance. A second timeout stays
|
||||
# red, so a real hang still reaches a person. A run cancelled by hand, or by a
|
||||
# newer push, is left alone: only a job whose own record says it "exceeded the
|
||||
# maximum execution time" counts.
|
||||
#
|
||||
# Costs nothing on an ordinary run. The job's `if` is false for every run that
|
||||
# ended any other way, and a job skipped by its `if` never starts a runner.
|
||||
name: re-run a timed-out test run
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: ["tests"]
|
||||
types: [completed]
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
checks: read
|
||||
|
||||
jobs:
|
||||
rerun:
|
||||
if: >-
|
||||
github.event.workflow_run.run_attempt == 1 &&
|
||||
(github.event.workflow_run.conclusion == 'cancelled' ||
|
||||
github.event.workflow_run.conclusion == 'timed_out')
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 2
|
||||
steps:
|
||||
- name: Re-run it if a job ran out of time
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
REPO: ${{ github.repository }}
|
||||
RUN: ${{ github.event.workflow_run.id }}
|
||||
run: |
|
||||
timed_out=""
|
||||
for job in $(gh api "repos/$REPO/actions/runs/$RUN/jobs" \
|
||||
--jq '.jobs[] | select(.conclusion == "cancelled" or .conclusion == "timed_out") | .id'); do
|
||||
if gh api "repos/$REPO/check-runs/$job/annotations" --jq '.[].message' \
|
||||
| grep -q "exceeded the maximum execution time"; then
|
||||
timed_out="$job"
|
||||
fi
|
||||
done
|
||||
if [ -n "$timed_out" ]; then
|
||||
echo "Job $timed_out ran out of time. Re-running run $RUN once."
|
||||
gh api -X POST "repos/$REPO/actions/runs/$RUN/rerun"
|
||||
else
|
||||
echo "Run $RUN was cancelled, but not by a timeout. Leaving it."
|
||||
fi
|
||||
16
CHANGELOG.md
16
CHANGELOG.md
@ -1,15 +1,27 @@
|
||||
<!--
|
||||
Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
Created by Kelly Michels · dev@evomedia.net
|
||||
Licensed under the MIT License. See LICENSE.
|
||||
-->
|
||||
|
||||
# Changelog
|
||||
|
||||
Notable changes to the Evomedia.net Token Savers.
|
||||
Notable changes to the evomedia.net Token Savers.
|
||||
|
||||
## Unreleased
|
||||
|
||||
## v1.0.0.0.28 - 2026-09-22
|
||||
|
||||
### Changed
|
||||
|
||||
- **`zec2` and `zec2online` comments now say what they mean without
|
||||
naming private detail.** The container-side version read is described
|
||||
by what it is - an endpoint that is not public on every project - rather
|
||||
than by a product's own wording, and `zec2` records why it needed its
|
||||
own ssh: the read referenced three variables the script never defined,
|
||||
and because it sits inside a try/catch the failure was silent and looked
|
||||
exactly like a service that could not be reached.
|
||||
|
||||
## v1.0.0.0.26 - 2026-09-14
|
||||
|
||||
### Fixed
|
||||
|
||||
@ -1,15 +1,29 @@
|
||||
Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
Created by Kelly Michels · dev@evomedia.net
|
||||
Licensed under the MIT License. See LICENSE.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Notable changes to the Evomedia.net Token Savers.
|
||||
Notable changes to the evomedia.net Token Savers.
|
||||
|
||||
Unreleased
|
||||
----------
|
||||
|
||||
v1.0.0.0.28 - 2026-09-22
|
||||
------------------------
|
||||
|
||||
Changed
|
||||
-------
|
||||
|
||||
- **zec2 and zec2online comments now say what they mean without
|
||||
naming private detail.** The container-side version read is described
|
||||
by what it is - an endpoint that is not public on every project - rather
|
||||
than by a product's own wording, and zec2 records why it needed its
|
||||
own ssh: the read referenced three variables the script never defined,
|
||||
and because it sits inside a try/catch the failure was silent and looked
|
||||
exactly like a service that could not be reached.
|
||||
|
||||
v1.0.0.0.26 - 2026-09-14
|
||||
------------------------
|
||||
|
||||
|
||||
@ -1,45 +1,45 @@
|
||||
b0e9c3e2e4fbefc5127a0aa903d336931d9cdda381065a6ccaf64250ec055907 setup_backup_schedule.ps1
|
||||
998b8b111ded7f6573ddcc45bcf3bfd024a6ca3528344e3d716a689fedc2ce75 token-count.ps1
|
||||
064e0912eec88392f1a6fb9916a0796758ee6156d4d6cdbe2b852edd3df65d32 zbackup.cmd
|
||||
a2efe4dba09f3ac30a26cff5a2f695e4780c6442932c374942cf4e59fb3f3480 zbackup.ps1
|
||||
2f76a554e32793fb436c199ef624d91766f913af3e5a2f603bca18ad7f7cd1ef zbackup_and_sync.ps1
|
||||
a405942174383a2f90a3f209757424c858dbc1507e2f5ee52fc7dcfe4a790a25 zbackup_ec2.cmd
|
||||
d6d504ad6966df9e81d0573c16bb971d674bb51e405f5daafa10eff7fc299d15 zbackup_ec2.ps1
|
||||
a10c685609a6bfac6922a72674bb6bd67dc3de9c2fb1d851bb9805f846b74533 zchecksums.cmd
|
||||
45269f6b1ee9d0b8902d52a7346df5edfc96a54f70d262b40692b179a7749bf9 zchecksums.ps1
|
||||
eb576879ac2844a76eb3cb8a37e9718ad4929a9c9af5dacf13ed9f069f1a4ff1 zdeploy.cmd
|
||||
8aae74d2da739ab323b4ea3969d5d4ae4583b0f18c22c8608b677a1affd96d06 zdeploy.ps1
|
||||
d68c18114a04bb0f1cdbe1ea9a8a93fca094883357f4e18f925e97166fd4b09c zec2.cmd
|
||||
d64f1d89c5725bd8fff959217fcc18f6aa8c7d5a150ecebc99098e5ea5f5a69e zec2.ps1
|
||||
d3e85e8d34978c2fd1eff037406c16ebe077f86e5bf4e01b77f28c6774b3298e zec2_rotatekeys.cmd
|
||||
e407ac26c235f031d704d957e6626eafc81e159f8b0d8fdcf369e5b752c9b783 zec2_rotatekeys.ps1
|
||||
645e129ad86d8ecd580de0045c89d497e585d695c43ba2646e12c9e33144f075 zec2online.cmd
|
||||
03bac6f7187adc382940a31d2ef9570a7d517fd7d014af268f853e37a92fa0e6 zec2online.ps1
|
||||
b758d0d912ba1e696d28f9dada490d881b6adc8238e55abdd1ec3a6ca1e3483b ZHelpers.ps1
|
||||
7ced7617f5de8683faa64259fb956005395bb61e8fb3f4f1cd6b82de57d2e89e zkill.cmd
|
||||
121fff2b9cea851a9223f51b511bc26c4977caa2cce1ceae9dfbc4a6a8c93f0f zkill.ps1
|
||||
a95a2a51ac4958fe9618d789217442e068bf0e66002ef5b3bf5b3bc1d55b3d02 ZKiller.ps1
|
||||
5adbe6ebbf269df534a49d3d569c33f74ad43d01eab10c79e427f98a03699b81 ZKillOnly.ps1
|
||||
82cff472d8c5dcd1618eab26e52d126919d04370f7f55593bda831bb1f9beac0 zmerge.ps1
|
||||
805c7adba1405f6a34ae23c790b97b6522fad35f909c68934428e709a1514166 zpull.cmd
|
||||
6e0c0197a884ec9797fc87cbd6e67562bacd2d1099b22787d1473d22f07b35f8 zpull.ps1
|
||||
f1c58dd171f6ac7ddcdfb7d609e6d0616af3b41279a0da6d77001d82194be6c1 zrelease.cmd
|
||||
87dccf32ef03ab22d06d8c56cfed444340bf278e1800ac06c7a282999f0f26ad zrelease.ps1
|
||||
a18be1e40c433c7e1671d74165e40824bb12cab4889901575ef6527bfa2d661c zrepair.cmd
|
||||
8bc13b0896885d985e7daee53d77d535e527fc3b4385d2c4f0384dbecf9bbdd0 zrepair.ps1
|
||||
5ef3996ab606c5a0ae6c7d894154a3d54514092c702cb4dddad333ca7de640ba zrestart.cmd
|
||||
0cd40ed7028fad7518ce47f843f184aa0b917c6c4d1fb33939955593e0196a22 zrestart.ps1
|
||||
4706be94f8495d527e751dbecc114b46274cb849daf89b6d5fe00a1c9716a2b5 zrestartd.cmd
|
||||
55c42438431c867c72f2748d167e7d2410cb5cc4b38c54b618e07da68c213aca zsetup.cmd
|
||||
08146c2043f0ed1151c2575ff661ebe7093ec288ae11428526d27401a09421cd zsetup.ps1
|
||||
bde8bd69490ea754932ef596f87496ce64060a6b4bd33044559c4cb5e90f4366 zsetup_mail.ps1
|
||||
f93a8e3d7bd3c195f57f715949746df077800346f856974cdad69eac99714b6f zstart.cmd
|
||||
49c07df581bbfdf0ff9f0ede79b84f4de8e3cbbfa5de324b91c7977dd810ce72 zstart.ps1
|
||||
8e53365e5f50123cd627d296f429969c1d123021bf7e5d95202b7c8d9f5264bc zstart_docker.cmd
|
||||
c3410db56913a2e3d40013530c3ac3e4efc3f7ab1d1c864b7d38838b36cab250 zstart_docker.ps1
|
||||
ee65f5a5c97756e7dfaf9e551483c419e05cbdbb838c3d0e7e6e0fbe2c283654 zstartd.cmd
|
||||
f995eeb87d45437b1ee07dc75ecce74a53eb0cd691264f7a6b5d08ac04d8e333 zstop.ps1
|
||||
30db8d77d86553657a42f8d97547f69f49d448776326a4b6e30290a9d586705e zsync.cmd
|
||||
4becea4bd1b990fee3d6032ce716662762d0b3cdaaef08233e81e775d909376f zsync.ps1
|
||||
07db3bc6120bc73645d4976daeea6f4b827eb99af9af599a444682d350c4e1d0 zversion.cmd
|
||||
d39cfa932d8b7d2b112924a5eba865582dc31a01699bb6d19b6b8ff2223865d9 zversion.ps1
|
||||
6e95736007b3906950d95a830705ac1118ebfc11836d2c717d6dd49cb3157966 setup_backup_schedule.ps1
|
||||
d6ab2ddb273a8ca870bd0673cffdd0907f16f4718367b4413a3e34bb1f1769c8 token-count.ps1
|
||||
30ccf43c371ae95cecd5b443d9214ac8ea71ec83be94bc15bcf359beefb8dee1 zbackup.cmd
|
||||
b3549b346c90a8ae5a05c4c91b7ac370f72467c4cb0d019edcd0ea80b994393e zbackup.ps1
|
||||
b6e5e15f8e2b128219c7b8b9db3e9b7804eee60fd6aed43f184210048e518f3c zbackup_and_sync.ps1
|
||||
b407ef5b298cd6fe94af492e9254b4447e34333d22f8c29d3e9d4d2881651cf3 zbackup_ec2.cmd
|
||||
55df5f2e19e81317b1e33b7b030b252fc4d6f49c0c77229d9e4e86affeb3b8ef zbackup_ec2.ps1
|
||||
64bc3148b09e422ffe4890339fade2354a31f2c7ba004f2728c29a0a39c32f08 zchecksums.cmd
|
||||
3e1c573e446238cae494d22d25376f278333dc25fdbc0a5abbdaa9349722b438 zchecksums.ps1
|
||||
049f8e79fc8c3d8d96ae8ccb1155d191e2dbf2753f4d4d73ceca00aa1ab0481b zdeploy.cmd
|
||||
d2ead96436507c8efedc3c72045e623137a1f844940c4ff57c9c7ebe67645511 zdeploy.ps1
|
||||
30918a9260cb6220d6e2140edcf319fc0fa1e75b7fe36d0efe68b0d10cdde241 zec2.cmd
|
||||
695ec87ea6518933ee64524d369f1d0d5128bf6e54db31f555a888bdddcb9326 zec2.ps1
|
||||
ce3209ed8eaab242286e76aeb11b1249239e2804e3de456a1609cc7caa780b43 zec2_rotatekeys.cmd
|
||||
f58277779b5c54814c29dda55ab567960e305fa9ef515b1206076be97f623093 zec2_rotatekeys.ps1
|
||||
30ed73711eeddb518e02eb5e1968b7cc1dad51f27ecf42155b515b097487c3f3 zec2online.cmd
|
||||
1e8814928910ff4f3da59478511feb75280ba2e12111840fb47d2c5504741f0f zec2online.ps1
|
||||
4ea81dc9e3cafc514b1e8224e633bf22bd88bfdc6e53545ff88a2a2d33715b4f ZHelpers.ps1
|
||||
d97f9b5c68526c3295796b3042ee86194721eacab56b0efa0f3fdf16c881b0ea zkill.cmd
|
||||
587de0b176788de917e713915ac468e44bf00cf9c9c7d6ea9b88aaec41ad6ea7 zkill.ps1
|
||||
66556f55688d1f31e890d2b36143d3d0e2f5fcdded562e3d0a9591c02e827cda ZKiller.ps1
|
||||
2c9e0fa5dabb1544b6600cb60e5f66e89c787f217db246553b830152ab976ec3 ZKillOnly.ps1
|
||||
479d01a4c962eb1dba2dbfee913c3704048f29581a0a06d068c0fb9145c3a51c zmerge.ps1
|
||||
dd1cfde33aec53fc0df4a34e45704a59bf48e094fcafcc0ec49e9d13aa442b6f zpull.cmd
|
||||
9e746ad18b92ee7344061847b38c870f280421cf55d31e36a72a1514772e53a2 zpull.ps1
|
||||
4a57e270fc75ae5419bd27cf01b7dd6d8965be8dd58e0c80af985cb7bf27bdc5 zrelease.cmd
|
||||
a6906e118f13442340cc4e0b14d7523d63e85d2bdb0eff8fd3a7c25567af8962 zrelease.ps1
|
||||
58e5b604cc260af7e644412094ff6e3bf799f80f9e52b9a83a044299f7704107 zrepair.cmd
|
||||
186f7b0fb72808466ece328ea1a4e3a97bb2d4bae9f204ff7055e8b7f009614b zrepair.ps1
|
||||
d97c9cf55b94c53dba49471d13f5c9870f2f50627ac5732ac4b60222da936244 zrestart.cmd
|
||||
32a8484d356c5f740d7a12f18bf0dd51a0c7da66010f6a6f553d976484315eef zrestart.ps1
|
||||
2ebf37f72323cac3963a4a95d1ae414fecf4da1e1e618147663c6cf94d1ece24 zrestartd.cmd
|
||||
0a15ad0d341a5efdcd4c14e22e91d4b45f2bf87d0c5608fcf985200f6797bab4 zsetup.cmd
|
||||
0d3042c5e44c3edf396005d0177f744c0c29536c25a50743e93a92156aa2a96c zsetup.ps1
|
||||
498ad7f8a7a56b332fede299e7172211ba360e76d9244c6c93f7cceae8a58619 zsetup_mail.ps1
|
||||
46b3782d9b05649bdb1bcbd2a007bf6abc889abee420ac2f6e75530fa45a4694 zstart.cmd
|
||||
4b50cadf761f285f4fe655b143e04ec6b3565646ee8fb1ed165c234a201802b7 zstart.ps1
|
||||
2d74dcca3d4f51a28c84fbef5cc134126b61dfcc8ffb35e2d72f9596bf685809 zstart_docker.cmd
|
||||
5016654d9ad68e11b85594be5e05318e19c5c6154174f734c43251970bc2086f zstart_docker.ps1
|
||||
1e1c5990e1dba41a165e797790f73cd33fcee5035eec65dd0d2610ea8b56a023 zstartd.cmd
|
||||
a894876ad9fa1bfac6cacfec2a837914debb773e05b975d9b3cdf56589dd8ed2 zstop.ps1
|
||||
2e165d35d9915099b98a14329c9eb2774b2bf2979c937bc3843d95b5b16400e7 zsync.cmd
|
||||
5d008cc252b978a9f873101139054988dff24562655bdfcd22e781aa5c14029a zsync.ps1
|
||||
d55020eeb926e7190d06cc3de3e4a0d0656e8c73e8a89032c06ffe29c0b661eb zversion.cmd
|
||||
25de4c34219edb98b583be639b798b27c353e978a81f0480d49ba9d965f70f0b zversion.ps1
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
Created by Kelly Michels · dev@evomedia.net
|
||||
Licensed under the MIT License. See LICENSE.
|
||||
-->
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
Created by Kelly Michels · dev@evomedia.net
|
||||
Licensed under the MIT License. See LICENSE.
|
||||
|
||||
|
||||
20
README.md
20
README.md
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
Created by Kelly Michels · dev@evomedia.net
|
||||
Licensed under the MIT License. See LICENSE.
|
||||
-->
|
||||
@ -411,6 +411,24 @@ Verification walks its channels in trust order — docker-network `viaProxy`, th
|
||||
|
||||
Each release is packaged as a zip in [`releases/`](releases/) — grab the latest `zscripts-v*.zip`, check it, unzip, done:
|
||||
|
||||
**Windows · PowerShell** — these commands are a PowerShell toolkit, so this is
|
||||
most people's path. `sha256sum` and `unzip` are not Windows commands:
|
||||
|
||||
```powershell
|
||||
$zip = "zscripts-v1.0.0.0.0.zip"
|
||||
(Get-FileHash $zip -Algorithm SHA256).Hash -eq (Get-Content "$zip.sha256").Split()[0] # True = good
|
||||
Expand-Archive $zip -DestinationPath zscripts
|
||||
cd zscripts
|
||||
.\zchecksums.cmd # verify the contents
|
||||
```
|
||||
|
||||
`Get-FileHash` prints the hash in **upper** case and the `.sha256` file holds it
|
||||
in lower — they look different side by side and are not. `-eq` on strings is
|
||||
case-insensitive in PowerShell, so the comparison above is right; trust the
|
||||
`True`, not your eyes.
|
||||
|
||||
**macOS · Linux · Git Bash · WSL**
|
||||
|
||||
```bash
|
||||
sha256sum -c zscripts-v1.0.0.0.0.zip.sha256 # verify the download
|
||||
unzip zscripts-v1.0.0.0.0.zip -d zscripts # extract
|
||||
|
||||
18
README.txt
18
README.txt
@ -1,4 +1,4 @@
|
||||
Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
Created by Kelly Michels · dev@evomedia.net
|
||||
Licensed under the MIT License. See LICENSE.
|
||||
|
||||
@ -384,6 +384,22 @@ Downloading without cloning
|
||||
|
||||
Each release is packaged as a zip in releases/ (releases/) — grab the latest zscripts-v*.zip, check it, unzip, done:
|
||||
|
||||
Windows · PowerShell — these commands are a PowerShell toolkit, so this is
|
||||
most people's path. sha256sum and unzip are not Windows commands:
|
||||
|
||||
$zip = "zscripts-v1.0.0.0.0.zip"
|
||||
(Get-FileHash $zip -Algorithm SHA256).Hash -eq (Get-Content "$zip.sha256").Split()[0] # True = good
|
||||
Expand-Archive $zip -DestinationPath zscripts
|
||||
cd zscripts
|
||||
.\zchecksums.cmd # verify the contents
|
||||
|
||||
Get-FileHash prints the hash in upper case and the .sha256 file holds it
|
||||
in lower — they look different side by side and are not. -eq on strings is
|
||||
case-insensitive in PowerShell, so the comparison above is right; trust the
|
||||
True, not your eyes.
|
||||
|
||||
macOS · Linux · Git Bash · WSL
|
||||
|
||||
sha256sum -c zscripts-v1.0.0.0.0.zip.sha256 # verify the download
|
||||
unzip zscripts-v1.0.0.0.0.zip -d zscripts # extract
|
||||
cd zscripts && sha256sum -c CHECKSUMS.txt # verify the contents
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
Created by Kelly Michels · dev@evomedia.net
|
||||
Licensed under the MIT License. See LICENSE.
|
||||
-->
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
Created by Kelly Michels · dev@evomedia.net
|
||||
Licensed under the MIT License. See LICENSE.
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# ZHelpers.ps1 — shared library dot-sourced by every z script. Not run directly.
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# ZKillOnly.ps1 — stop local dev server listeners for any project in zconfig.json.
|
||||
#
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# ZKiller.ps1 — kill then restart dev servers for any project in zconfig.json.
|
||||
#
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"version": "v1.0.0.0.26"
|
||||
"version": "v1.0.0.0.28"
|
||||
}
|
||||
|
||||
BIN
releases/zscripts-v1.0.0.0.27.zip
Normal file
BIN
releases/zscripts-v1.0.0.0.27.zip
Normal file
Binary file not shown.
1
releases/zscripts-v1.0.0.0.27.zip.sha256
Normal file
1
releases/zscripts-v1.0.0.0.27.zip.sha256
Normal file
@ -0,0 +1 @@
|
||||
f5b940344ffd832032b0c62e65e77f94bc2de294e690c9fd68362deb99d21e82 zscripts-v1.0.0.0.27.zip
|
||||
BIN
releases/zscripts-v1.0.0.0.28.zip
Normal file
BIN
releases/zscripts-v1.0.0.0.28.zip
Normal file
Binary file not shown.
1
releases/zscripts-v1.0.0.0.28.zip.sha256
Normal file
1
releases/zscripts-v1.0.0.0.28.zip.sha256
Normal file
@ -0,0 +1 @@
|
||||
5eca5198ba500bb0e1ceb1e5000cfb405d5fb5024fa500daa8f64f9c012c1291 zscripts-v1.0.0.0.28.zip
|
||||
@ -1,4 +1,4 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# setup_backup_schedule.ps1 — create a scheduled task for daily backups + OneDrive sync
|
||||
#
|
||||
|
||||
108
site/index.html
Normal file
108
site/index.html
Normal file
@ -0,0 +1,108 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>zscripts — one-word dev commands</title>
|
||||
<meta name="description" content="One-word commands for AI-assisted development. Routine start, deploy, and backup chores become scripts — saving tokens and keeping the AI's context window focused on real work.">
|
||||
<link rel="canonical" href="https://zscripts.evomedia.net/">
|
||||
|
||||
<!-- Open Graph — LinkedIn, Slack and the rest build link previews from
|
||||
these. The URLs must be absolute: a relative og:image is dropped by the
|
||||
strict crawlers and the card renders as bare text. -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://zscripts.evomedia.net/">
|
||||
<meta property="og:site_name" content="evomedia.net">
|
||||
<meta property="og:title" content="zscripts — one-word dev commands">
|
||||
<meta property="og:description" content="One-word commands for AI-assisted development. Routine start, deploy and backup chores become scripts, keeping the AI's context window on real work.">
|
||||
<meta property="og:image" content="https://zscripts.evomedia.net/og-card.png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="zscripts — one-word dev commands, over a terminal showing zdeploy, zbackup and zrestart.">
|
||||
|
||||
<!-- Twitter/X card, reusing the same image. -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="zscripts — one-word dev commands">
|
||||
<meta name="twitter:description" content="One-word commands for AI-assisted development. Routine start, deploy and backup chores become scripts, keeping the AI's context window on real work.">
|
||||
<meta name="twitter:image" content="https://zscripts.evomedia.net/og-card.png">
|
||||
<style>
|
||||
:root{
|
||||
--bg:#0d1117; --panel:#161b22; --border:#2a313c;
|
||||
--fg:#e6edf3; --muted:#9aa7b4; --accent:#4ea1ff; --accent2:#3fb950;
|
||||
--mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
|
||||
--sans:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html,body{margin:0;padding:0}
|
||||
body{background:var(--bg);color:var(--fg);font-family:var(--sans);line-height:1.55;
|
||||
-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
|
||||
.wrap{max-width:760px;margin:0 auto;padding:64px 24px 80px}
|
||||
.eyebrow{font-family:var(--mono);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
|
||||
h1{font-size:2.6rem;line-height:1.1;margin:.4rem 0 .2rem;font-weight:700}
|
||||
h1 .z{color:var(--accent)}
|
||||
.tag{font-size:1.2rem;color:var(--muted);margin:0 0 2rem}
|
||||
.lead{font-size:1.05rem;color:var(--fg);margin:0 0 2rem}
|
||||
.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px 22px;margin:0 0 18px}
|
||||
.card h2{font-size:.95rem;margin:0 0 12px;color:var(--muted);font-weight:600;letter-spacing:.02em;text-transform:uppercase}
|
||||
pre{margin:0;font-family:var(--mono);font-size:.92rem;overflow-x:auto;color:var(--fg)}
|
||||
pre .c{color:var(--muted)}
|
||||
pre .g{color:var(--accent2)}
|
||||
.cmds{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;font-size:.95rem}
|
||||
.cmds code{font-family:var(--mono);color:var(--accent);white-space:nowrap}
|
||||
.cmds span{color:var(--muted)}
|
||||
.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:6px}
|
||||
a.btn{display:inline-block;text-decoration:none;font-weight:600;font-size:.95rem;
|
||||
padding:11px 20px;border-radius:9px;border:1px solid var(--border)}
|
||||
a.primary{background:var(--accent);color:#04121f;border-color:var(--accent)}
|
||||
a.ghost{color:var(--fg)}
|
||||
a.primary:hover{filter:brightness(1.08)}
|
||||
a.ghost:hover{border-color:var(--accent);color:var(--accent)}
|
||||
footer{margin-top:44px;padding-top:20px;border-top:1px solid var(--border);color:var(--muted);font-size:.85rem}
|
||||
footer a{color:var(--muted)}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main class="wrap">
|
||||
<p class="eyebrow">evomedia.net · developer tools</p>
|
||||
<h1><span class="z">z</span>scripts</h1>
|
||||
<p class="tag">Short, one-word commands for multi-project development.</p>
|
||||
|
||||
<p class="lead">
|
||||
A small suite of PowerShell commands built for AI-assisted
|
||||
development. Routine start / deploy / backup chores become single
|
||||
words a coding agent can run without reasoning through them — which
|
||||
saves tokens, but the real win is keeping the AI's context window
|
||||
focused on the actual work instead of housekeeping.
|
||||
</p>
|
||||
|
||||
<div class="card">
|
||||
<h2>The idea</h2>
|
||||
<pre><span class="c"># every chore the agent doesn't narrate is context kept free</span>
|
||||
<span class="g">zstart</span> sp <span class="c"># launch a project's dev server</span>
|
||||
<span class="g">zdeploy</span> sp <span class="c"># package + ship it</span>
|
||||
<span class="g">zbackup</span> all <span class="c"># snapshot the databases</span></pre>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h2>What's in the box</h2>
|
||||
<div class="cmds">
|
||||
<code>zstart</code><span>run a project's dev server locally</span>
|
||||
<code>zdeploy</code><span>build and deploy to the server</span>
|
||||
<code>zbackup</code><span>back up project databases</span>
|
||||
<code>zrestart</code><span>restart a running dev server</span>
|
||||
<code>zkill</code><span>stop a dev server cleanly</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<a class="btn primary" href="https://github.com/evomedia-net/evo.zscripts">View on GitHub</a>
|
||||
<a class="btn ghost" href="https://github.com/evomedia-net/evo.zscripts#readme">Read the docs</a>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
An <a href="https://evomedia.net">evomedia.net</a> project ·
|
||||
open source, sanitized for public use.
|
||||
</footer>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
BIN
site/og-card.png
Normal file
BIN
site/og-card.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
7
site/robots.txt
Normal file
7
site/robots.txt
Normal file
@ -0,0 +1,7 @@
|
||||
# zscripts.evomedia.net — the public page for this toolkit.
|
||||
#
|
||||
# Deliberately the opposite of the candidate pages on this estate
|
||||
# (cardiff, opensesame, kelly, unify), which disallow everything. This one
|
||||
# is an open-source project page: being found is the point.
|
||||
User-agent: *
|
||||
Allow: /
|
||||
@ -1,4 +1,4 @@
|
||||
# Evomedia.net Token Savers - https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers - https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels - dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# Evomedia.net Token Savers - https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers - https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels - dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
|
||||
|
||||
90
tests/LinkPreview.Tests.ps1
Normal file
90
tests/LinkPreview.Tests.ps1
Normal file
@ -0,0 +1,90 @@
|
||||
# evomedia.net Token Savers - https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels - dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
|
||||
# LinkPreview.Tests.ps1 - the public page renders a card, not a bare URL.
|
||||
#
|
||||
# Invoke-Pester .\tests
|
||||
#
|
||||
# Pasting zscripts.evomedia.net into LinkedIn, Slack or a message builds a card
|
||||
# from the page's og:* tags. The page had a title and a description and nothing
|
||||
# else, so it pasted as a bare URL.
|
||||
#
|
||||
# None of that is visible from here. The page is correct, the site is up, and
|
||||
# the only symptom is a card somewhere else - which is why the rule is asserted
|
||||
# rather than remembered.
|
||||
#
|
||||
# The last test is the one that earned its place: the first draft of the card
|
||||
# showed `ztests`, which is not a command in this repo. A card is public copy,
|
||||
# and public copy must not advertise a script that does not exist.
|
||||
|
||||
BeforeAll {
|
||||
$script:RepoRoot = Split-Path -Parent $PSScriptRoot
|
||||
$script:Page = Join-Path $script:RepoRoot "site\index.html"
|
||||
$script:Card = Join-Path $script:RepoRoot "site\og-card.png"
|
||||
$script:Html = [IO.File]::ReadAllText($script:Page)
|
||||
|
||||
function Get-Meta {
|
||||
param([string]$Key)
|
||||
$pattern = '<meta (?:property|name)="' + [regex]::Escape($Key) + '" content="([^"]*)">'
|
||||
$m = [regex]::Match($script:Html, $pattern)
|
||||
if ($m.Success) { return $m.Groups[1].Value }
|
||||
return $null
|
||||
}
|
||||
}
|
||||
|
||||
Describe "zscripts.evomedia.net link preview" {
|
||||
|
||||
It "carries the tags a card is built from" {
|
||||
foreach ($key in @('og:type', 'og:url', 'og:title', 'og:description', 'og:image')) {
|
||||
Get-Meta $key | Should -Not -BeNullOrEmpty -Because "$key is what the card is made of"
|
||||
}
|
||||
# Without it X renders the small square variant instead of a card.
|
||||
Get-Meta 'twitter:card' | Should -Be 'summary_large_image'
|
||||
}
|
||||
|
||||
It "gives absolute URLs, which the strict crawlers require" {
|
||||
foreach ($key in @('og:url', 'og:image', 'twitter:image')) {
|
||||
Get-Meta $key | Should -Match '^https://'
|
||||
}
|
||||
}
|
||||
|
||||
It "points og:url at the same place as the canonical" {
|
||||
$canonical = [regex]::Match($script:Html, '<link rel="canonical" href="([^"]*)">')
|
||||
$canonical.Success | Should -BeTrue
|
||||
Get-Meta 'og:url' | Should -Be $canonical.Groups[1].Value
|
||||
}
|
||||
|
||||
It "publishes the card beside the page" {
|
||||
# site/ is copied to the server wholesale; a card outside it is a 404
|
||||
# and the preview falls back to text.
|
||||
Test-Path -LiteralPath $script:Card | Should -BeTrue
|
||||
}
|
||||
|
||||
It "serves a card that is the size the tags claim" {
|
||||
# PNG header: width and height are big-endian at offsets 16 and 20.
|
||||
$bytes = [IO.File]::ReadAllBytes($script:Card)[0..23]
|
||||
$width = [int]$bytes[16] * 16777216 + [int]$bytes[17] * 65536 + [int]$bytes[18] * 256 + [int]$bytes[19]
|
||||
$height = [int]$bytes[20] * 16777216 + [int]$bytes[21] * 65536 + [int]$bytes[22] * 256 + [int]$bytes[23]
|
||||
$width | Should -Be 1200
|
||||
$height | Should -Be 630
|
||||
Get-Meta 'og:image:width' | Should -Be '1200'
|
||||
Get-Meta 'og:image:height' | Should -Be '630'
|
||||
}
|
||||
|
||||
It "does not advertise a command this repo does not ship" {
|
||||
$alt = Get-Meta 'og:image:alt'
|
||||
$alt | Should -Not -BeNullOrEmpty
|
||||
|
||||
$named = [regex]::Matches($alt, '\bz[a-z_]+\b') | ForEach-Object { $_.Value } | Sort-Object -Unique
|
||||
$named.Count | Should -BeGreaterThan 0 -Because 'the alt text names the commands on the card'
|
||||
|
||||
foreach ($cmd in $named) {
|
||||
if ($cmd -eq 'zscripts') { continue } # the toolkit, not a command
|
||||
$exists = @('.ps1', '.cmd') | Where-Object {
|
||||
Test-Path -LiteralPath (Join-Path $script:RepoRoot "$cmd$_")
|
||||
}
|
||||
$exists | Should -Not -BeNullOrEmpty -Because "$cmd is on the card but is not in this repo"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# token-count.ps1 — measure script output volume to estimate AI agent token costs.
|
||||
#
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zbackup.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zbackup.ps1 — local backups: zip project sources (plus a Postgres dump when the
|
||||
# project's .env has a DATABASE_URL) into the backups folder.
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zbackup_and_sync.ps1 — run backups, then sync the backups folder offsite.
|
||||
#
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zbackup_ec2.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zbackup_ec2.ps1 — pull backups down from the server: a Postgres dump for projects
|
||||
# with a "db" config block, plus a zip of server-side data dirs (uploads/archive/dist).
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zchecksums.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zchecksums.ps1 - verify (or regenerate) SHA-256 checksums for the scripts.
|
||||
#
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zdeploy.ps1" %*
|
||||
|
||||
51
zdeploy.ps1
51
zdeploy.ps1
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zdeploy.ps1 — deploy any project defined in zconfig.json to the server.
|
||||
# Each project runs its own docker compose stack; the handler is picked by the
|
||||
@ -1176,8 +1176,8 @@ function Invoke-StaticDeploy {
|
||||
param([string]$Key, $Proj)
|
||||
|
||||
# Plain static sites - no build, no container of their own. The landing
|
||||
# container serves them straight off disk out of /srv/$host, so shipping
|
||||
# the files IS the deploy: there is nothing to restart afterwards.
|
||||
# container serves them straight off disk, one directory per host, so
|
||||
# shipping the files IS the deploy: there is nothing to restart afterwards.
|
||||
$root = Join-Path $Proj.localRoot $Proj.siteDir
|
||||
$remotePath = $Proj.remote.path
|
||||
|
||||
@ -1304,22 +1304,35 @@ function Invoke-ZTokensPublish {
|
||||
|
||||
# ── Dispatch ─────────────────────────────────────────────────────────────────
|
||||
|
||||
foreach ($key in $Projects) {
|
||||
# 'ztokens' matches the tool it runs (ztokens.cmd / ztokens.ps1). The old
|
||||
# singular 'ztoken' still works so existing habits and any script that
|
||||
# already calls it keep running.
|
||||
if ($key -in @('ztokens', 'ztoken')) { Invoke-ZTokensPublish; continue }
|
||||
$proj = Get-ZProject -Key $key
|
||||
Invoke-DeployGitPull -Proj $proj # no-op unless deploy.gitPull is set
|
||||
switch ([string]$proj.kind) {
|
||||
"python" { Invoke-PythonDeploy -Key $key -Proj $proj -ChangeNote $Note }
|
||||
"vite" { Invoke-ViteDeploy -Key $key -Proj $proj -ChangeNote $Note }
|
||||
"nextjs" { Invoke-NextDeploy -Key $key -Proj $proj -ChangeNote $Note }
|
||||
"edge" { Invoke-EdgeDeploy -Key $key -Proj $proj }
|
||||
"docker" { Invoke-DockerDeploy -Key $key -Proj $proj }
|
||||
"static" { Invoke-StaticDeploy -Key $key -Proj $proj }
|
||||
default { throw "No deploy handler for kind '$($proj.kind)' (project '$key'). Add an Invoke-<Kind>Deploy function in zdeploy.ps1." }
|
||||
# pip, uv and docker draw progress bars with box-drawing characters: "━" is
|
||||
# the bytes E2 94 81. PowerShell 5.1 decodes a native command's stdout - ssh's,
|
||||
# here - with [Console]::OutputEncoding, which on Windows is the OEM code page
|
||||
# (437 on this machine), where those three bytes read "Γöü". Forty per bar.
|
||||
# Decode the box's output as the UTF-8 it is for the duration of the deploy,
|
||||
# and put the console back in the finally so a deploy that throws does not
|
||||
# leave the session changed.
|
||||
$prevConsoleEncoding = [Console]::OutputEncoding
|
||||
[Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false)
|
||||
try {
|
||||
foreach ($key in $Projects) {
|
||||
# 'ztokens' matches the tool it runs (ztokens.cmd / ztokens.ps1). The old
|
||||
# singular 'ztoken' still works so existing habits and any script that
|
||||
# already calls it keep running.
|
||||
if ($key -in @('ztokens', 'ztoken')) { Invoke-ZTokensPublish; continue }
|
||||
$proj = Get-ZProject -Key $key
|
||||
Invoke-DeployGitPull -Proj $proj # no-op unless deploy.gitPull is set
|
||||
switch ([string]$proj.kind) {
|
||||
"python" { Invoke-PythonDeploy -Key $key -Proj $proj -ChangeNote $Note }
|
||||
"vite" { Invoke-ViteDeploy -Key $key -Proj $proj -ChangeNote $Note }
|
||||
"nextjs" { Invoke-NextDeploy -Key $key -Proj $proj -ChangeNote $Note }
|
||||
"edge" { Invoke-EdgeDeploy -Key $key -Proj $proj }
|
||||
"docker" { Invoke-DockerDeploy -Key $key -Proj $proj }
|
||||
"static" { Invoke-StaticDeploy -Key $key -Proj $proj }
|
||||
default { throw "No deploy handler for kind '$($proj.kind)' (project '$key'). Add an Invoke-<Kind>Deploy function in zdeploy.ps1." }
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
[Console]::OutputEncoding = $prevConsoleEncoding
|
||||
}
|
||||
# The timestamp goes through Stop-ZTracking as the FinalNote so it lands after
|
||||
# the tracking footer and before the trailing blank lines - the last thing on
|
||||
|
||||
2
zec2.cmd
2
zec2.cmd
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zec2.ps1" %*
|
||||
|
||||
18
zec2.ps1
18
zec2.ps1
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zec2.ps1 — quick reachability check (TCP + HTTP + live build version) for deployed projects.
|
||||
#
|
||||
@ -22,9 +22,11 @@ Start-ZTracking
|
||||
|
||||
$cfg = Get-ZConfig
|
||||
if (-not $HostName) { $HostName = $cfg.ec2.ip }
|
||||
# Needed by the container-side version read below; same names zec2online.ps1
|
||||
# uses. Without them that read throws inside its try/catch and falls through
|
||||
# silently, which looks identical to a service that cannot be reached.
|
||||
# Needed by the container-side version read below. zec2 had no ssh of its own
|
||||
# before that, so the read referenced three variables this script never
|
||||
# defined -- and because it sits inside a try/catch, the failure was silent:
|
||||
# it fell through to the HTTP call and reported nothing once that endpoint
|
||||
# stopped being public. Same names zec2online.ps1 uses.
|
||||
$PemKey = $cfg.ec2.pemKey
|
||||
$SshTarget = Get-Ec2Target
|
||||
|
||||
@ -103,9 +105,9 @@ function Show-Zec2LiveVersion {
|
||||
$r = Invoke-RestMethod -Uri "http://${HostName}/build-version.json" -Headers $headers -TimeoutSec 10 -ErrorAction Stop
|
||||
if ($r) { Write-Host " Live build: $(Get-LabelFromBuildJsonObj $r)" -ForegroundColor Gray }
|
||||
} else {
|
||||
# Container-side first where the project configures it: a build
|
||||
# stamp is not public on every site, and asking the proxy answers
|
||||
# from whichever vhost matches the Host header.
|
||||
# Container-side first where the project configures it: the
|
||||
# endpoint is not public on every project, and asking the edge
|
||||
# answers from whichever vhost matches the Host header.
|
||||
$execCmd = Get-ServerSideVersionCommand -Proj $Proj
|
||||
$label = $null
|
||||
if ($execCmd -and (Test-Path $PemKey)) {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zec2_rotatekeys.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zec2_rotatekeys.ps1 - rotate / reset secret keys in a project's SERVER-SIDE
|
||||
# .env, in place, without the values ever passing through this machine's shell
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zec2online.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zec2online.ps1 — deep health check: verify apps are live AND running the expected
|
||||
# build; auto-start downed stacks via docker compose and stream diagnostics.
|
||||
@ -86,9 +86,10 @@ function Get-RemoteVersionLabel {
|
||||
param($Proj)
|
||||
$headers = @{}
|
||||
if ($Proj.domain) { $headers['Host'] = $Proj.domain }
|
||||
# Container-side first where the project configures it. A build stamp is
|
||||
# not public on every site, and the proxy answers from whichever vhost
|
||||
# matches the Host header - which is how a check reads another service.
|
||||
# Container-side first where the project configures it. The endpoint is
|
||||
# not public on every project, and the edge answers from whichever vhost
|
||||
# matches the Host header -- which is how a check reads another
|
||||
# product's version.
|
||||
$execCmd = Get-ServerSideVersionCommand -Proj $Proj
|
||||
if ($execCmd -and (Test-Path $PemKey)) {
|
||||
try {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0ZKillOnly.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zkill.ps1 — alias for ZKillOnly.ps1 (kept so both names work). All args pass through.
|
||||
& (Join-Path $PSScriptRoot "ZKillOnly.ps1") @args
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zmerge.ps1 - merge the fleet's ready pull requests in one pass.
|
||||
#
|
||||
|
||||
@ -2,5 +2,5 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zpull.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zpull.ps1 - merge the fleet's ready PRs, then bring the local checkouts current.
|
||||
#
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zrelease.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zrelease.ps1 - package the current version as a downloadable zip.
|
||||
#
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zrepair.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zrepair.ps1 — audit and repair container/proxy routing on the server, then smoke test.
|
||||
#
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0ZKiller.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zrestart.ps1 — alias for ZKiller.ps1 (kept so both names work). All args pass through.
|
||||
& (Join-Path $PSScriptRoot "ZKiller.ps1") @args
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0ZKiller.ps1" -Detached %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zsetup.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zsetup.ps1 — prepare a project for local dev: create its Python venv and install
|
||||
# dependencies (python kind), or run `npm install` (vite/nextjs). Idempotent -
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zsetup_mail.ps1 — create admin@ and noreply@ mailboxes in a docker-mailserver
|
||||
# container on the server, and print the DNS records + SMTP/IMAP settings to use.
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0ZStart.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zstart.ps1 — start local dev servers for any project defined in zconfig.json.
|
||||
#
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zstart_docker.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zstart_docker.ps1 — bring up a local docker compose stack from <scriptsRoot>\docker\.
|
||||
#
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0ZStart.ps1" -Detached %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zstop.ps1 — stop docker compose stacks on the server without removing data or files.
|
||||
#
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zsync.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net Token Savers — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zsync.ps1 — copy new backup files offsite; or build + mirror a vite project's dist.
|
||||
#
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
REM Evomedia.net — https://github.com/evomedia-net/evo.zscripts
|
||||
REM Created by Kelly Michels · dev@evomedia.net
|
||||
REM Licensed under the MIT License. See LICENSE.
|
||||
REM Version: v1.0.0.0.26
|
||||
REM Version: v1.0.0.0.28
|
||||
|
||||
@echo off
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0zversion.ps1" %*
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# Evomedia.net — https://github.com/evomedia-net/evo.zscripts
|
||||
# evomedia.net — https://github.com/evomedia-net/evo.zscripts
|
||||
# Created by Kelly Michels · dev@evomedia.net
|
||||
# Licensed under the MIT License. See LICENSE.
|
||||
# Version: v1.0.0.0.26
|
||||
# Version: v1.0.0.0.28
|
||||
|
||||
# zversion.ps1 - manage the toolkit version.
|
||||
#
|
||||
|
||||
Loading…
Reference in New Issue
Block a user