Closed NicoHood closed 2 years ago
Fixed documentation: https://github.com/NicoHood/gpgit/commit/fa3c0517490f554f1fb5bad56c7adf67e6765a20
Still working on some code that checks expiration
@WoLpH Do you know if there is an easy way to use gdate as default?
This is how we do it with getopt, I am wondering if a) my code is correct for gdate b) it can be simplified, similar to the getopt version
# BSD getopt works completely different from gnu-getopt,
# so check if have an alternative getopt install.
if [[ -x /usr/local/opt/gnu-getopt/bin/getopt ]]; then
export PATH="/usr/local/opt/gnu-getopt/bin/:${PATH}"
fi
# Use gnu date on mac
if command -v gdate &> /dev/null; then
alias date="gdate"
fi
The code for gdate appears to be correct, that would work on my system at least.
With regards to a simpler solution, I believe there is one but it might depend on how you have gdate
installed. In my case I have the coreutils
package installed through brew
which provides a directory with symlinks to the g-versions.
In that case, this would work:
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
And the binary is /usr/local/opt/coreutils/libexec/gnubin/gdate
then?
No, it's date
and it's symliked to gdate
. Let me clarify :)
# ls -l /usr/local/opt/coreutils/libexec/gnubin | awk '{printf "%s -> %s\n", $9, $11}'
->
[ -> ../../bin/g[
b2sum -> ../../bin/gb2sum
base32 -> ../../bin/gbase32
base64 -> ../../bin/gbase64
basename -> ../../bin/gbasename
basenc -> ../../bin/gbasenc
cat -> ../../bin/gcat
chcon -> ../../bin/gchcon
chgrp -> ../../bin/gchgrp
chmod -> ../../bin/gchmod
chown -> ../../bin/gchown
chroot -> ../../bin/gchroot
cksum -> ../../bin/gcksum
comm -> ../../bin/gcomm
cp -> ../../bin/gcp
csplit -> ../../bin/gcsplit
cut -> ../../bin/gcut
date -> ../../bin/gdate
dd -> ../../bin/gdd
df -> ../../bin/gdf
dir -> ../../bin/gdir
dircolors -> ../../bin/gdircolors
dirname -> ../../bin/gdirname
du -> ../../bin/gdu
echo -> ../../bin/gecho
env -> ../../bin/genv
expand -> ../../bin/gexpand
expr -> ../../bin/gexpr
factor -> ../../bin/gfactor
false -> ../../bin/gfalse
fmt -> ../../bin/gfmt
fold -> ../../bin/gfold
groups -> ../../bin/ggroups
head -> ../../bin/ghead
hostid -> ../../bin/ghostid
id -> ../../bin/gid
install -> ../../bin/ginstall
join -> ../../bin/gjoin
kill -> ../../bin/gkill
link -> ../../bin/glink
ln -> ../../bin/gln
logname -> ../../bin/glogname
ls -> ../../bin/gls
md5sum -> ../../bin/gmd5sum
mkdir -> ../../bin/gmkdir
mkfifo -> ../../bin/gmkfifo
mknod -> ../../bin/gmknod
mktemp -> ../../bin/gmktemp
mv -> ../../bin/gmv
nice -> ../../bin/gnice
nl -> ../../bin/gnl
nohup -> ../../bin/gnohup
nproc -> ../../bin/gnproc
numfmt -> ../../bin/gnumfmt
od -> ../../bin/god
paste -> ../../bin/gpaste
pathchk -> ../../bin/gpathchk
pinky -> ../../bin/gpinky
pr -> ../../bin/gpr
printenv -> ../../bin/gprintenv
printf -> ../../bin/gprintf
ptx -> ../../bin/gptx
pwd -> ../../bin/gpwd
readlink -> ../../bin/greadlink
realpath -> ../../bin/grealpath
rm -> ../../bin/grm
rmdir -> ../../bin/grmdir
runcon -> ../../bin/gruncon
seq -> ../../bin/gseq
sha1sum -> ../../bin/gsha1sum
sha224sum -> ../../bin/gsha224sum
sha256sum -> ../../bin/gsha256sum
sha384sum -> ../../bin/gsha384sum
sha512sum -> ../../bin/gsha512sum
shred -> ../../bin/gshred
shuf -> ../../bin/gshuf
sleep -> ../../bin/gsleep
sort -> ../../bin/gsort
split -> ../../bin/gsplit
stat -> ../../bin/gstat
stdbuf -> ../../bin/gstdbuf
stty -> ../../bin/gstty
sum -> ../../bin/gsum
sync -> ../../bin/gsync
tac -> ../../bin/gtac
tail -> ../../bin/gtail
tee -> ../../bin/gtee
test -> ../../bin/gtest
timeout -> ../../bin/gtimeout
touch -> ../../bin/gtouch
tr -> ../../bin/gtr
true -> ../../bin/gtrue
truncate -> ../../bin/gtruncate
tsort -> ../../bin/gtsort
tty -> ../../bin/gtty
uname -> ../../bin/guname
unexpand -> ../../bin/gunexpand
uniq -> ../../bin/guniq
unlink -> ../../bin/gunlink
uptime -> ../../bin/guptime
users -> ../../bin/gusers
vdir -> ../../bin/gvdir
wc -> ../../bin/gwc
who -> ../../bin/gwho
whoami -> ../../bin/gwhoami
yes -> ../../bin/gyes
# ls /usr/local/opt/coreutils/bin
b2sum gbase64 gchmod gcsplit gdircolors gexpr ghead glink gmkfifo gnohup gpinky greadlink gsha1sum gshuf gstty gtest gtsort guptime gyes ptx sha384sum timeout
base32 gbasename gchown gcut gdirname gfactor ghostid gln gmknod gnproc gpr grealpath gsha224sum gsleep gsum gtimeout gtty gusers hostid realpath sha512sum truncate
chcon gbasenc gchroot gdate gdu gfalse gid glogname gmktemp gnumfmt gprintenv grm gsha256sum gsort gsync gtouch guname gvdir md5sum runcon shred
'g[' gcat gcksum gdd gecho gfmt ginstall gls gmv god gprintf grmdir gsha384sum gsplit gtac gtr gunexpand gwc nproc sha1sum shuf
gb2sum gchcon gcomm gdf genv gfold gjoin gmd5sum gnice gpaste gptx gruncon gsha512sum gstat gtail gtrue guniq gwho numfmt sha224sum stdbuf
gbase32 gchgrp gcp gdir gexpand ggroups gkill gmkdir gnl gpathchk gpwd gseq gshred gstdbuf gtee gtruncate gunlink gwhoami pinky sha256sum tac
# ls /bin
'[' bash cat chmod cp csh dash date dd df echo ed expr hostname kill ksh launchctl link ln ls mkdir mv pax ps pwd rm rmdir sh sleep stty sync tcsh test unlink wait4path zsh
# ls /sbin
apfs_hfs_convert dmesg fibreconfig fsck_cs fsck_msdos fstyp_hfs fstyp_udf kextload md5 mount_9p mount_apfs mount_devfs mount_ftp mount_nfs mount_tmpfs mpioutil newfs_hfs nfsd pfctl quotacheck rtsol
apfs_unlockfv dynamic_pager fsck fsck_exfat fsck_udf fstyp_msdos halt kextunload mknod mount_acfs mount_cd9660 mount_exfat mount_hfs mount_ntfs mount_udf newfs_apfs newfs_msdos nfsiod ping reboot shutdown
disklabel emond fsck_apfs fsck_hfs fstyp fstyp_ntfs ifconfig launchd mount mount_afp mount_cddafs mount_fdesc mount_msdos mount_smbfs mount_webdav newfs_exfat newfs_udf nologin ping6 route umount
# ls /usr/bin
2to3- bzegrep db_codegen fixproc infocmp lastcomm mdutil pcap-config psed shlock texi2dvi wait
2to3-2.7 bzfgrep db_deadlock flex infokey lastwords memory_pressure pcsctest psm showmount texi2pdf wall
AssetCacheLocatorUtil bzgrep db_dump flex++ infotocap latency mesg perl pstopdf sigdist.d texindex wc
AssetCacheManagerUtil bzip2 db_hotbackup fmt install layerutil mg perl5.18 pstruct sips textutil wdutil
AssetCacheTetheratorUtil bzip2recover db_load fold install-info ld mib2c perl5.30 ptar size tfmtodit what
BuildStrings bzless db_printlog fontrestore install_name_tool ldapadd mib2c-update perlbug ptar5.18 slogin tftp whatis
CpMac bzmore db_recover footprint instmodsh ldapcompare mig perlbug5.18 ptar5.30 smbutil thermal whereis
DeRez c++ db_stat format-sql instmodsh5.18 ldapdelete mkbom perlbug5.30 ptardiff smtpd.py tic which
GetFileInfo c++filt db_upgrade format-sql5.18 instmodsh5.30 ldapexop mkdep perldoc ptardiff5.18 smtpd2.7.py tidy who
IOAccelMemory c2ph db_verify from instruments ldapmodify mkfifo perldoc5.18 ptardiff5.30 snfsdefrag tidy_changelog whoami
IOMFB_FDR_Loader c89 dbicadmin fs_usage iofile.d ldapmodrdn mklocale perldoc5.30 ptargrep snmp-bridge-mib tidy_changelog5.30 whois
MergePef c99 dbicadmin5.18 funzip iofileb.d ldappasswd mktemp perlivp ptargrep5.18 snmpbulkget tiff2icns wish
MvMac caffeinate dbicadmin5.30 fuser iopattern ldapsearch mmroff perlivp5.18 ptargrep5.30 snmpbulkwalk tiffutil wish8.5
ResMerger cal dbilogstrip fwkdp iopending ldapurl mnthome perlivp5.30 pwhich snmpconf time write
Rez calendar dbilogstrip5.18 fwkpfv iosnoop ldapwhoami moo-outdated perlthanks pwhich5.18 snmpdelta timer_analyser.d wsgen
RezDet cancel dbilogstrip5.30 g++ iotop leaks moo-outdated5.18 perlthanks5.18 pwpolicy snmpdf timerfires wsimport
RezWack cap_mkdb dbiprof gatherheaderdoc ip2cc leave moose-outdated perlthanks5.30 pydoc snmpget timesyncanalyse xar
SafeEjectGPU captoinfo dbiprof5.18 gcc ip2cc5.18 less moose-outdated5.18 pfbtops pydoc2.7 snmpgetnext tkcon xargs
SetFile cc dbiprof5.30 gcore ip2cc5.30 lessecho moose-outdated5.30 pgrep python snmpinform tkmib xattr
SplitForks cd dbiproxy gcov ipcount lex more phar python-config snmpnetstat tkpp xattr-2.7
UnRezWack certtool dbiproxy5.18 gdiffmk ipcount5.18 libnetcfg mp2bug phar.phar python2 snmpset tkpp5.30 xcode-select
a2p checknr dbiproxy5.30 gem ipcount5.30 libnetcfg5.18 msgs php python2.7 snmpstatus tmdiagnose xcodebuild
aa chflags dc gen_bridge_metadata ipcrm libnetcfg5.30 nano php-config python2.7-config snmptable tmutil xcrun
actool chfn debinhex.pl gencat ipcs libtool native2ascii phpize python3 snmptest tnameserv xcscontrol
addftinfo chgrp debinhex5.18.pl genstrings ippeveprinter lipo nbdst pic pythonw snmptranslate toe xcsdiagnose
afclip chpass debinhex5.30.pl getconf ippfind lkbib nc pico pythonw2.7 snmptrap top xed
afconvert chsh defaults getopt ipptool lldb ncal piconv qlmanage snmpusm tops xgettext.pl
afhash cksum delv getopts iprofiler llvm-g++ ncctl piconv5.18 quota snmpvacm topsyscall xgettext5.18.pl
afida clang demandoc git iptab llvm-gcc ncdestroy piconv5.30 rails snmpwalk topsysproc xgettext5.30.pl
afinfo clang++ desdp git-receive-pack iptab5.18 loads.d ncinit pidpersec.d rake sntp touch xip
afktool clear diagnose-fu git-shell iptab5.30 locale nclist pip3 ranlib soelim tput xjc
afmtodit cmp diff git-upload-archive irb localedef ncurses5.4-config pkgbuild rdoc sort tr xml2-config
afplay cmpdylib diff3 git-upload-pack jar locate neqn pkill read sourcekit-lsp trace xml2man
afscexpand codesign diffstat gm4 jarsigner lockstat net-server pl readlink spfd traptoemail xmlcatalog
agentxtrap codesign_allocate dig gnumake java log net-server5.18 pl2pm rebase spfd5.18 treereg xmllint
agvtool col dirname gperf javac logger net-server5.30 pl2pm5.18 redo_prebinding spfd5.30 treereg5.18 xpath
alias colcrt dispqlen.d grep javadoc login net-snmp-cert pl2pm5.30 refer spfquery treereg5.30 xpath5.18
app-sso colldef ditto grn javah logname net-snmp-config plockstat renice spfquery5.18 trimforce xpath5.30
applesingle colrm dmc grodvi javap look net-snmp-create-v3-user pluginkit reset spfquery5.30 troff xslt-config
appletviewer column dns-sd groff javapackager lookbib nettop plutil resolveLinks splain true xsltproc
apply comm drutil groffer javaws lorder newaliases pmset rev splain5.18 trustcachectl xsubpp
apropos command dscacheutil grog jcmd lp newgrp pod2html ri splain5.30 tset xsubpp5.18
apt compress dscl grolbp jconsole lpoptions newproc.d pod2html5.18 rmic split tsort xsubpp5.30
ar compression_tool dserr grolj4 jcontrol lpq nfsstat pod2html5.30 rmid sqlite3 tty xxd
arch config_data dsexport grops jdb lpr nice pod2latex rmiregistry ssh type yaa
as config_data5.30 dsimport grotty jdeps lprm nl pod2man rpcgen ssh-add ul yacc
asa corelist dsmemberutil groups jhat lpstat nm pod2man5.18 rs ssh-agent ulimit yamlpp-events
assetutil corelist5.18 dsymutil gunzip jhsdb lsappinfo nmedit pod2man5.30 rsync ssh-copy-id umask yamlpp-events5.30
at corelist5.30 dtruss gzcat jimage lsbom nohup pod2readme ruby ssh-keygen unalias yamlpp-highlight
atos cpan du gzexe jinfo lskq notifyutil pod2readme5.18 rview ssh-keyscan uname yamlpp-highlight5.30
atq cpan2dist dwarfdump gzip jjs lsm nroff pod2readme5.30 rvim stapler uncompress yamlpp-load
atrm cpan5.18 easy_install h2ph jlink lsmp nscurl pod2text rwbypid.d stat unexpand yamlpp-load-dump
atsutil cpan5.30 easy_install-2.7 h2ph5.18 jmap lsvfs nslookup pod2text5.18 rwbytype.d stringdups unifdef yamlpp-load-dump5.30
automator cpanp egrep h2ph5.30 jmc lwp-download nsupdate pod2text5.30 rwsnoop strings unifdefall yamlpp-load5.30
auval cpanp-run-perl enc2xs h2xs jobs lwp-download5.18 objdump pod2usage s2p strip uniq yamlpp-parse-emit
auvaltool cpio enc2xs5.18 h2xs5.18 join lwp-download5.30 ocspcheck pod2usage5.18 safaridriver stty.pl units yamlpp-parse-emit5.30
avbdiagnose cpp enc2xs5.30 h2xs5.30 jot lwp-dump od pod2usage5.30 sample stty5.18.pl unpack200 yapp
avbutil cpu_profiler.d encguess hash jpackage lwp-dump5.18 odutil podchecker sampleproc su unvis yapp5.30
avconvert cpuctl encode_keychange hdid jps lwp-dump5.30 open podchecker5.18 sandbox-exec sudo unzip yes
avmediainfo cpuwalk.d env hdiutil jrunscript lwp-mirror opendiff podchecker5.30 say sum unzipsfx zcat
avmetareadwrite crc32 eqn hdxml2manxml jsadebugd lwp-mirror5.18 opensnoop podselect sc_usage sw_vers update_dyld_shared_cache zcmp
awk crc325.18 erb head jshell lwp-mirror5.30 openssl podselect5.18 scandeps.pl swcutil update_dyld_shared_cache_root_mode zdiff
banner crc325.30 errinfo headerdoc2html json_pp lwp-request orbd podselect5.30 scandeps5.18.pl swift update_mcdp29xx zegrep
base64 creatbyproc.d ex heap json_pp5.18 lwp-request5.18 osacompile policytool scandeps5.30.pl swiftc uptime zfgrep
basename crlrefresh execsnoop hexdump json_pp5.30 lwp-request5.30 osadecompile post-grohtml schemagen symbols usbcfwflasher zforce
bashbug crontab expand hidutil json_xs m4 osalang power_report.sh scp symbolscache users zgrep
batch csdiagnose expect hiutil json_xs5.30 macbinary osascript powermetrics screen syscallbypid.d uttype zip
bc csgather extcheck host jstack macerror otool pp script syscallbyproc.d uucp zipcloak
bg csplit eyapp hostinfo jstat macerror5.18 pack200 pp5.30 sdef syscallbysysc.d uudecode zipdetails
biff csreq eyapp5.18 hotspot.d jstatd macerror5.30 package-stash-conflicts ppdc sdiff sysdiagnose uuencode zipdetails5.18
binhex csrutil eyapp5.30 hpftodit jvisualvm machine package-stash-conflicts5.18 ppdhtml sdp syslog uuidgen zipdetails5.30
binhex.pl ctags false hpmdiagnose kcc mail package-stash-conflicts5.30 ppdi sdx systemextensionsctl uulog zipgrep
binhex5.18.pl ctf_insert fc htmltree kdestroy mailq pagesize ppdmerge security tab2space uuname zipinfo
binhex5.30.pl cu fddist htmltree5.18 kextutil mailx pagestuff ppdpo sed tabs uupick zipnote
bioutil cups-config fdesetup htmltree5.30 keytool make par.pl pr seeksize.d tail uustat zipsplit
bison cupstestppd fg ibtool kgetcred makeinfo par5.30.pl pre-grohtml segedit tailspin uuto zless
bitesize.d curl fgrep iconutil kill.d malloc_history parl priclass.d seq talk uux zmore
bputil curl-config file iconv killall man parl5.30 pridist.d serialver tar vi znew
brctl cut filebyproc.d ictool kinit mandoc parldyn printenv servertool taskinfo view zprint
bsdtar cvaffinity fileproviderctl id klist mandoc_soelim parldyn5.30 printf setregion tbl vim
bspatch cvcp filtercalltree idle kmutil manpath passwd procsystime setuids.d tbtdiagnose vimdiff
bundle cvmkdir find idle2.7 kpasswd mcxquery paste productbuild sfltool tccutil vimtutor
bundler cvmkfile find2perl idlj krb5-config mcxrefresh patch productsign sftp tclsh vis
bunzip2 dappprof findrule imptrace kswitch mddiagnose pathchk profiles shar tclsh8.5 vm_stat
bzcat dapptrace findrule5.18 indent ktrace mdfind pathopens.d prove shasum tee vmmap
bzcmp db_archive findrule5.30 indxbib lam mdimport pbcopy prove5.18 shasum5.18 test-yaml vtool
bzdiff db_checkpoint finger info last mdls pbpaste prove5.30 shasum5.30 test-yaml5.30 w
# ls /usr/sbin
BootCacheControl aslmanager chown cvdbset dnctl graphicssession iostat logresolve networksetup postdrop racoon scutil slappasswd sysadminctl universalaccessd xartutil
DevToolsSecurity asr chroot cvfsck dot_clean gssd ipconfig lpadmin newsyslog postfix rarpd securityd slapschema sysctl unsetpassword xsanctl
DirectoryService audit ckksctl cvfsdb dsconfigad hdik kadmin lpc nfs4mapid postkick repairHomePermissions sendmail slaptest syslogd usernoted xscertadmin
KernelEventAgent auditd coreaudiod cvfsid dsconfigldap htcacheclean kadmin.local lpinfo nlcontrol postlock repquota serverinfo smbd system_profiler uuchk zdump
PasswordService auditreduce createhomedir cvgather dseditgroup htdbm kcditto lpmove notifyd postlog rotatelogs setkey smbdiagnose systemkeychain uucico zic
WirelessRadioManagerd authserver cron cvlabel dsenableroot htdigest kdcsetup lsof nvram postmap rpc.lockd setquota sndiskmove systemsetup uuconv
ab automount cupsaccept cvmkfs dtrace htpasswd kextcache mDNSResponder ocspd postmulti rpc.statd sharing snmpd systemsoundserverd uusched
ac avbdeviced cupsctl cvupdatefs edquota httpd kextfind mDNSResponderHelper otctl postqueue rpcbind skywalkctl snmptrapd systemstats uuxqt
accton bless cupsd cvversions envvars httpd-wrapper kextlibs mkextunpack pdisk postsuper rpcinfo slapacl snquota taskpolicy vifs
amt bluetoothaudiod cupsdisable dbmmanage envvars-std httxt2dbm kextstat mkfile periodic pppd rtadvd slapadd softwareupdate tcpdump vipw
apachectl bluetoothd cupsenable ddns-confgen fcgistarter iRATBW.mlmodelc klist_cdhashes mkpassdb php-fpm praudit rtsold slapauth spctl tpctl visudo
applecamerad bnepd cupsfilter dev_mkdb fdisk installer krbservicesetup mtree pkgutil purge sa slapcat spindump traceroute vpnd
appleh13camerad cfprefsd cupsreject disktool filecoordinationd ioalloccount ktutil ndp postalias pwd_mkdb sc_auth slapconfig spray traceroute6 vsdbutil
appsleepd chat cvadmin diskutil firmwarepasswd ioclasscount languagesetup netbiosd postcat quotaoff screencapture slapdn sshd tsig-keygen weakpass_edit
arp checkgid cvdb distnoted gpt ioreg localemanager netstat postconf quotaon scselect slapindex sso_util uasysdiagnose wfsctl
Anything in /bin
, /sbin
, /usr/bin
and /usr/sbin
should be stock. User installed applications should always end up in /usr/local
It would also be nice, if GPGit could warn, if a key expires within the next 3 Month.