From 207db67b683b07c01abad928eb2e5006a47f50cc Mon Sep 17 00:00:00 2001 From: Jon Lewis Date: Tue, 27 Dec 2016 14:54:06 -0600 Subject: [PATCH] Started work on v2a rewrite --- errors.md | 22 --- header.sh | 42 ------ install.sh | 57 -------- sns.sh | 7 +- sns.xcodeproj/project.pbxproj | 132 ------------------ .../contents.xcworkspacedata | 7 - .../UserInterfaceState.xcuserstate | Bin 15437 -> 0 bytes .../WorkspaceSettings.xcsettings | 10 -- src/bash-completion/sns | 96 ------------- src/includes/create.sns.sh | 35 ----- src/includes/delete.sns.sh | 18 --- src/includes/edit.sns.sh | 51 ------- src/includes/help.sns.sh | 14 -- src/includes/init_store.sns.sh | 39 ------ src/includes/libencryption.sns.sh | 15 -- src/includes/list.sns.sh | 4 - src/includes/p_header.sh | 3 - src/includes/print.sns.sh | 12 -- src/includes/verify_store.sns.sh | 11 -- src/main/stage1.sns.sh | 24 ---- src/main/stage2.sns.sh | 48 ------- src/main/stage3.sns.sh | 30 ---- 22 files changed, 5 insertions(+), 672 deletions(-) delete mode 100644 errors.md delete mode 100644 header.sh delete mode 100755 install.sh delete mode 100644 sns.xcodeproj/project.pbxproj delete mode 100644 sns.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 sns.xcodeproj/project.xcworkspace/xcuserdata/xilmwa.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 sns.xcodeproj/project.xcworkspace/xcuserdata/xilmwa.xcuserdatad/WorkspaceSettings.xcsettings delete mode 100644 src/bash-completion/sns delete mode 100644 src/includes/create.sns.sh delete mode 100644 src/includes/delete.sns.sh delete mode 100644 src/includes/edit.sns.sh delete mode 100644 src/includes/help.sns.sh delete mode 100644 src/includes/init_store.sns.sh delete mode 100644 src/includes/libencryption.sns.sh delete mode 100644 src/includes/list.sns.sh delete mode 100644 src/includes/p_header.sh delete mode 100644 src/includes/print.sns.sh delete mode 100644 src/includes/verify_store.sns.sh delete mode 100644 src/main/stage1.sns.sh delete mode 100644 src/main/stage2.sns.sh delete mode 100644 src/main/stage3.sns.sh diff --git a/errors.md b/errors.md deleted file mode 100644 index 9e13a94..0000000 --- a/errors.md +++ /dev/null @@ -1,22 +0,0 @@ -# Simple Note System, version 2 -## Error Code Reference - -### General Codes -| Name | Code | Meaning | -|--------------|------|---------------------------------------| -| ERR_NO_STORE | 5 | the SNS store needs to be initialized | -| ERR_NO_ARGS | 10 | No arguments were specified | -| ERR_NO_OP | 20 | No operation was specified | -| ERR_NO_NOTE | 30 | A required argument was not provided | - -### Encryption-related codes -|Name | Code | Meaning | -|------------|------|-------------------------------------------------------| -| ERR_NO_GPG | 100 | Encryption is enabled, but GPG is not installed | -| ERR_NO_KEY | 110 | Encryption is enabled, but no recipient was specified | - -### Creation-related codes -|Name | Code | Meaning | -|-----------------|------|-----------------------------------| -| ERR_NOTE_EXiSTS | 200 | The specified note already exists | -| ERR_NOTE_NO_READ| 205 | The specified note cannot be read | diff --git a/header.sh b/header.sh deleted file mode 100644 index 5a27ea1..0000000 --- a/header.sh +++ /dev/null @@ -1,42 +0,0 @@ -PROD_STR="Simple Note System" -VER_STR="v2.0a9" -YEAR=2016 - -cat << EOF -#!/bin/bash -# Simple Note System -# Copyright (C) 2016, Jon Lewis -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -# Prevent freak accidents involving the root directory -if [ -z "\$HOME" ]; then HOME=/home/"\$(whoami)"; fi - -# Store files and locations -readonly PROD_STR="$PROD_STR" -readonly VER_STR="$VER_STR" -readonly ROOT_DIR="\$HOME"/.config/sns -readonly NOTES_DIR="\$ROOT_DIR"/notes -readonly TMP_DIR="\$ROOT_DIR"/tmp -readonly CONFIG_FILE="\$ROOT_DIR/sns.conf" - -#Color codes for error reporting -readonly RED_COLOR='\033[1;31m' -readonly RESET_COLOR='\033[0m' - -#Print the program header to stdout -printf "%s\n" "\$PROD_STR" -printf "%s\n" "------------------" -EOF diff --git a/install.sh b/install.sh deleted file mode 100755 index 68485f2..0000000 --- a/install.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# Simple Note System - Install Script -# Copyright (C) 2016, Jon Lewis -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -if [ "$1" == "--uninstall" ]; then - rm /bin/sns - rm /usr/share/bash-completion/completions/sns - exit -fi - -mkdir build - -S=build/sns.sh - -bash header.sh > "$S" -echo -e "\n# Section: Functions" >> "$S" -cat ./src/includes/init_store.sns.sh >> "$S" -cat ./src/includes/verify_store.sns.sh >> "$S" -cat ./src/includes/help.sns.sh >> "$S" -cat ./src/includes/p_header.sh >> "$S" -cat ./src/includes/libencryption.sns.sh >> "$S" -cat ./src/includes/create.sns.sh >> "$S" -cat ./src/includes/delete.sns.sh >> "$S" -cat ./src/includes/edit.sns.sh >> "$S" -cat ./src/includes/print.sns.sh >> "$S" -cat ./src/includes/list.sns.sh >> "$S" -printf "%s\n" "# End Section: Functions" >> "$S" -cat ./src/main/stage1.sns.sh >> "$S" -cat ./src/main/stage2.sns.sh >> "$S" -cat ./src/main/stage3.sns.sh >> "$S" - -chmod u+x "$S" -# Install SNS -if [ ! -r "/bin/sns" ] || [ grep "Simple Note System" < "/bin/sns" ]; - sudo cp "$S" > "/bin/sns" -fi -# Install Bash completion -if [ ! -r "/usr/share/bash-completion/completions/sns" ]\ - || [ grep "Simple Note System" < "/usr/share/bash-completion/completions/sns" ]; then - sudo cp "src/bash-completion/sns" >\ - "/usr/share/bash-completion/completions/sns" -fi -exit diff --git a/sns.sh b/sns.sh index 1bbdf8c..fda8edb 100755 --- a/sns.sh +++ b/sns.sh @@ -1,6 +1,6 @@ #!/bin/bash XL_PRODUCT="Simple Note System" -XL_VER="v2.1" +XL_VER="v2a" #Environment SNS_STORE="$HOME/.local/sns" @@ -26,7 +26,6 @@ function sns_checkDeps(){ } function sns_initStore(){ mkdir -p "$SNS_STORE" - mkdir -p "$SNS_STORE/notes" echo "$1" > "$SNS_KEYFILE" } function sns_printHelp(){ @@ -50,6 +49,10 @@ function sns_gitPassthrough(){ } # Entry Point printf "%s\n%s\n" "$XL_PRODUCT" "$XL_VER" +if [ -d "$SNS_STORE" ] && [ "$1" != "-i" ]; then + printf "%s\n" "Please run \`sns -i\` to initialize sns." + exit +fi while getopts ":ihc:e:p:d:git:" OPT; do case "$OPT" in *) diff --git a/sns.xcodeproj/project.pbxproj b/sns.xcodeproj/project.pbxproj deleted file mode 100644 index 0c77465..0000000 --- a/sns.xcodeproj/project.pbxproj +++ /dev/null @@ -1,132 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXFileReference section */ - 5D22D6A21AFC4F5A0036DC52 /* create.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create.sns.sh; sourceTree = ""; }; - 5D22D6A31AFC4F5A0036DC52 /* delete.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = delete.sns.sh; sourceTree = ""; }; - 5D22D6A41AFC4F5A0036DC52 /* edit.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = edit.sns.sh; sourceTree = ""; }; - 5D22D6A51AFC4F5A0036DC52 /* help.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = help.sns.sh; sourceTree = ""; }; - 5D22D6A71AFC4F5A0036DC52 /* list.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = list.sns.sh; sourceTree = ""; }; - 5D22D6A81AFC4F5A0036DC52 /* p_header.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = p_header.sh; sourceTree = ""; }; - 5D22D6A91AFC4F5A0036DC52 /* pause.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = pause.sns.sh; sourceTree = ""; }; - 5D22D6AA1AFC4F5A0036DC52 /* print.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = print.sns.sh; sourceTree = ""; }; - 5D22D6AB1AFC4F5A0036DC52 /* init_store.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = init_store.sns.sh; sourceTree = ""; }; - 5D22D6AD1AFC4F5A0036DC52 /* stage1.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = stage1.sns.sh; sourceTree = ""; }; - 5D22D6AE1AFC4F5A0036DC52 /* stage2.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = stage2.sns.sh; sourceTree = ""; }; - 5D22D6AF1AFC4F5A0036DC52 /* stage3.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = stage3.sns.sh; sourceTree = ""; }; - 5D22D6B01AFC5B100036DC52 /* libencryption.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = libencryption.sns.sh; sourceTree = ""; }; - 5D75D24F1C5F13DF001E7B33 /* verify_store.sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = verify_store.sns.sh; sourceTree = ""; }; - 5D7E611F1AB74D33001D49B9 /* build.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = ""; }; - 5D7E91FB1B27FB620030B30D /* header.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = header.sh; sourceTree = ""; }; - 5DE839831AB9DACE006CB4F6 /* sns.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = sns.sh; sourceTree = ""; }; - 5DE839881ABA04DD006CB4F6 /* errors.ref */ = {isa = PBXFileReference; lastKnownFileType = text; path = errors.ref; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXGroup section */ - 5D22D6A01AFC4F5A0036DC52 /* src */ = { - isa = PBXGroup; - children = ( - 5D22D6A11AFC4F5A0036DC52 /* includes */, - 5D22D6AC1AFC4F5A0036DC52 /* main */, - ); - path = src; - sourceTree = ""; - }; - 5D22D6A11AFC4F5A0036DC52 /* includes */ = { - isa = PBXGroup; - children = ( - 5D22D6A21AFC4F5A0036DC52 /* create.sns.sh */, - 5D22D6A31AFC4F5A0036DC52 /* delete.sns.sh */, - 5D22D6A41AFC4F5A0036DC52 /* edit.sns.sh */, - 5D22D6A51AFC4F5A0036DC52 /* help.sns.sh */, - 5D22D6A71AFC4F5A0036DC52 /* list.sns.sh */, - 5D22D6A81AFC4F5A0036DC52 /* p_header.sh */, - 5D22D6A91AFC4F5A0036DC52 /* pause.sns.sh */, - 5D22D6AA1AFC4F5A0036DC52 /* print.sns.sh */, - 5D22D6AB1AFC4F5A0036DC52 /* init_store.sns.sh */, - 5D22D6B01AFC5B100036DC52 /* libencryption.sns.sh */, - 5D75D24F1C5F13DF001E7B33 /* verify_store.sns.sh */, - ); - path = includes; - sourceTree = ""; - }; - 5D22D6AC1AFC4F5A0036DC52 /* main */ = { - isa = PBXGroup; - children = ( - 5D22D6AD1AFC4F5A0036DC52 /* stage1.sns.sh */, - 5D22D6AE1AFC4F5A0036DC52 /* stage2.sns.sh */, - 5D22D6AF1AFC4F5A0036DC52 /* stage3.sns.sh */, - ); - path = main; - sourceTree = ""; - }; - 5D7E61181AB74D11001D49B9 = { - isa = PBXGroup; - children = ( - 5D22D6A01AFC4F5A0036DC52 /* src */, - 5DE839881ABA04DD006CB4F6 /* errors.ref */, - 5DE839831AB9DACE006CB4F6 /* sns.sh */, - 5D7E611F1AB74D33001D49B9 /* build.sh */, - 5D7E91FB1B27FB620030B30D /* header.sh */, - ); - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXProject section */ - 5D7E61191AB74D11001D49B9 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0700; - }; - buildConfigurationList = 5D7E611C1AB74D11001D49B9 /* Build configuration list for PBXProject "sns" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 5D7E61181AB74D11001D49B9; - projectDirPath = ""; - projectRoot = ""; - targets = ( - ); - }; -/* End PBXProject section */ - -/* Begin XCBuildConfiguration section */ - 5D7E611D1AB74D11001D49B9 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ENABLE_TESTABILITY = YES; - ONLY_ACTIVE_ARCH = YES; - }; - name = Debug; - }; - 5D7E611E1AB74D11001D49B9 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 5D7E611C1AB74D11001D49B9 /* Build configuration list for PBXProject "sns" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5D7E611D1AB74D11001D49B9 /* Debug */, - 5D7E611E1AB74D11001D49B9 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 5D7E61191AB74D11001D49B9 /* Project object */; -} diff --git a/sns.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/sns.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index dccdea5..0000000 --- a/sns.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/sns.xcodeproj/project.xcworkspace/xcuserdata/xilmwa.xcuserdatad/UserInterfaceState.xcuserstate b/sns.xcodeproj/project.xcworkspace/xcuserdata/xilmwa.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index df0db656877e336bd9f922a0891aabdacbe362db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15437 zcmc(G349a9`}fT3Ztpgmq)nUjO7Gl9?{Y{BEjQ)p0p$v58%iK;N|HhgEzY8X9EvC) zq9`pO0)l`CA}S~%Dxx5VB8vPJ6;VJD1@Ct@+l1C%eP8|H`~SlSn(WMcpJ$$V?%7s1 zI_z$b$#eohfB*$(z<>Z|0yA-3>MWbfZFe?|OLbOHx7B#uRjF22%``iCT%PK2Hc9|o zu2ASZU;-iO0Wv71?$0LumL;)o&cO;V=S|xDG-O03WJZ~&59*6OXb;+l4x%^FyXYkP7@b9*pfAw{ z^cDIJT}9ucYZRg=il!JUfC{7{sTfL5#Zw7XGL=GQP%27C=_xanN##;`RBx&eRY(<4 zCDbr#IMqsFilgqL7Ep_+CDbzNK57NEl6r_*Lp@48My;ndP)|^sscqDDY8Ul1wVQgL zdXajGdWCwGdYw8%9j4x@a}hBTrnnx+{# zfDWXkbR-=`%jje}g-)f@XfvHjXVKYoAzeiGrw7m@=~47(dJH|8w$M{(D_u`F&`!FM zZl&AkdGzh{5_&0p4}CAahJKiSgkDQ;rnk^r=_l#u={@ud^j`W9{RaIeeUd&!zfXTa zpQk^kzo5UQzo)O!KQNF%48_n4%ZM2XBV{6)C`QIaGbv0elg6YonM@Xw&EznBnIfh? zGmsg?jATYJqnR;GSw(6?lf!Ww1cML|3c`R0NXC|y8D`j8+~dj5PD`pxt#Mf0?hX(R zA~3>K2Vj91)A$sww6Li;CUbHB?4n$KW|lcepIwkWKwp%foukjqE9#$J+&?!nr@&-k zBZm~1jCHzZxErlCwqj>ZQ@yRh<0C8s2_StFhz2o04iq33#DRFs-~b$mgK#ho!J(T# zB2W_gu^_*K} zY%*mPa(-W`TG93`DXpV;=F>Kg6#geB?EFTtegk%Zlm1kbW~eiL)?{i zx4qgyb`*1S%v#;Q+fek}x!ES2GB>YHr<`lfHj&TyW>Z_+d)`wufy{OgOJo)C9>@kc zAQ$9~7Y?+6h-#eh(dH)SUgUCFTRO;u{BfmaBfVbKcS5~DF-YGGdV@ZoFSrf#1BIXn z^aleli^W)ir8p8tVHu9bF`GdNIiW#dFc<=cl260I2rMV3q``~uefTZ%=>$HBt0$4| zl+@ZiPFIo3X0@;^`Cc~7IlI(4%U)+Ck1edM$n7T1-rC?1Cc1}PTbxZE3#;cv;nSsV za<1^$9d=I(4_QVcg{RVPn=N4baRqYS&b}K&vCVC-Yv=)i=T5-4+uXduk!1tz4%;ZJ zXW9he>u_te&2LRrpoSOOcrXD>1e3sIU;$Hr6;xvdj>T~}9w*>Lti(w;c{8X5Hm}eI z0XvuuW)KBW!M(jg)8MK2c8qx?AMfz)zuaXb>L4Q&1+k29*4iv(L`=0-S1m7Ao>5_l zm|dk16@~9*P1W^e_V_LfSt(gjY@2Fra(Ieu)lGGRe3YG!M)Awt9%2P!Y>h6Pn|!c( zNR%b!Blb?Ov$?uTny2l1&Lf=w&7cL$AAmodG^`pI$MLi z$t^I(TcNGlBaFl}y6p8!>FyMGX5ZUC#nLtqVf z7^|=j8?hNj90!kr#|Zc9h>3QLze%sc%L!H!JJn7iMptJu8{7?UgL|6bH8z6BEo>ZN z;ik9HLdThYja()xO=i7O%u!(1)%jd99R*V^5<+0b>2=n!gI2-3+U}1}=5)18RG#V@1M3arp zc1QhetFhQN%jR%4@*&9B=yH0~MI+g*k253g>9bzCoOEs-=NR|PVwk}XR0qAeE>cL>FwY& z?$Zv=;J&!p!lnrxqBBVRmE-aOd;baK>#5{#JJZ%1_t2acmy6xY+8*icnYqb$cL+9tH;WFzzG6RUT#Tt@mJbN{Cqd3 zQ|e8xvPz+^2 zvH?n<6h^`*T#85HQF!zQ7!6}U8dTshxQxWa3jQQwMhOwZhh6S-0wg*8(@K zs+wyyXJ_e@CX#xQR12oT^ogZqeqCtkfN3DVOZs;c3{8r*D8Yuoi5AQ}GNulf;`gTs>~MZE9y`7)893KYj71 zKjQ@-!Y5W$W9)U)ypw%o>Y%ueFFJ46 zg4o(X<~qOUfEdmv&JJ?e)ei5#Zk{(W31t4A^Vx)3Shx@_?tpj0Mc9K|aI0_AOW`sg z>45jZdvOz<)dBB=%kga7j4LM*n49L!=Qx$+JhvmPbq#h;Q?1P}?36;T8SsC6n5*H# z-7p`4Yw;XB7gyetc}k(jyM#m^-kdt%`pJHM@fIuVp|@P|L2iVb_hP9_)a-_|-cx*AAb?^Z##B+RaPpdAJAPffwAA z(u;6kw;k<=ui!iJU1Uc@%>+YADYQ@VZplaVb@*ntHE+Sgcp<)<_iG}us%tKtQaEvc zx3x#%d;ViRju+!<;RsLh%)Jjkz)SGGH<>#F&vqm92|S0F;(KuAsFXt7{bW9e7ydN$ zBAL1jSEdv;tn0?XWq1{&uZLIQx9~f>9N&*0SP#F4*WeF$1zw4t_KMKwKK&IK$-TR| z82^BwztvMSZ6GOt|9Xl)$^9Esd@}wOF(Ca3_#6Bk{(%632q6m5colvSuf`AIHTYrt z2wwXH3P6Ei5DF$fau7&Gf%s9pgDBBX@=rqydI!H7H8~SMmwv{1mWwMiDW@|Z)Vn8U8BL#{@aim!wY?;J5 zKc{Z|7=8-3zelDephTpsB9X!EEg0~+u_eVr%14gr>$Pf>j8cfM`|VnQT2CIQdixN< z_s*k4=}1EoGn9c;NR2!2dc0vh(jpzw-ZrbI^K*o zu>tsT{6uA03n`E52|2#HB)z3_Qn`AUA4mOAHlbCBiclU|ICh%dW9x4MEQL1V@@e&d$>9VVjmDrdLaH29ph`5B2&T+F$41U^>OhCJ&P~4an@uT9_ZmA8hp~7Y z-cCw)Ls4U+!zOIGVhAryfs^rQLZ@^)(D=>(k0znXq{8*H=U0tR16hwOXbR8ZUr!+v zyQoy>x~kc}*3WxhEv!MYco%-kr)hO~-6)^7*ij=$e;iFmGmrz-qXy)}&){eAb9gs? z9`AV^%|tHb25G2?G+bW5ui^tFdcVQ9T7-UONpmCVs@Q71;gRoE@LiwI6mkqn;RP4% zGZLXM!#5tu7&$3l&Ll)0QW%sp@VNl-ZM?1fZLAxS{gJ{NWSVW8!&>my(YJR ztP{<*)!PvVB<%>}z3pf|e$f{{gk+=0%_I4yEzVLs^7yfVcID12lgM@yP zqjbsGNE?`BZ04M{HXo@Dw878vM*JGC^bI_Lw)h#`iVylDG}?}KkO8nAo7&M%{QAv- zXV7!}z-Fv(N4xQ%n*%SP7x{s8Sl#Yr&=>5{e)OuJ_yPRpP2#VkL*3E>^cH%XKzNfU zbOaynjI!t`T)Z9~L+_#E_-*_ye$O9i(J6GgYxqPTqBHmieuqC2zRT%9dA>iEQrKA7 zHKL+(=(BE%&!f-rQGASKT4bq^LkR1Z;BM`4l_1;NEzU;q_Dg;HTuI2A#OD3%ga5>hgMj6cEu!JpyJ@t623{58HrPWfit zLq&UQoU^ysX3Ferv~@*}^CF+SMdYj=kdwT~pIX?wssE@oHqB-w*D0h{@5*Mn7wo)+ z&HiU#LT9lnlGcm#g@w)iXGqmeq{sUwu1sF63l?_ZKf~g?e?H%3Bt4179>hnwilnT) zXkqjJ8Me*kB2^nHj;D6rbuTa4Hx{<^pP_Z*l-zLJr?yz!@h4;Qxs{wB^>DN+Ne!NglqgYb9l)DV1?H}b#RP!QT&)Cj5;q(8;Vs8VVq zHHsQdjiJhjIaW}W)L3d9RYi@bCQuWpNz`P@LQSEpR5ewDzsEn|>-Z=93;vCm=^q?~ z9HcnNa4?XA!5j?bU^oXw929d<%E2fOMsrZk!C0P<34$daAsf!1>-FrCK{uQ;q(~I@vt*L#ZrAI?wn|%=G~;_OBLp^erfV4GAqCn}s+n3x9Xj!xmP1$^33%hus1hhrQa? zP~&Q8&9dQ9yB{;UA6xJAkLl)!!_K*!xe2HTlwd_jH9xAOmd$3%TYT>@#;6%HnF zFcFt?P>HMg>mJL@`sx|Nb&om6+%|4*wmFx-kLav`s2`}G2_E$$b)C9F{lvj!4yJH0 zm4j&;s9&gG3Fhw{Oy^(*kE!z3KYzMv`X9Tx8r%2!J8f@|k%%VP9Shf4jMRU zt`J_NMy~xZ60G%fUPzE??lVD&(|nmlrNOH;dPU?98rk#q^LK;fB(~ z2pq`|dvUNg57(!2!&xVW{UFHC#H*E=Z>#Uu>&{ zBm1wptETIEgqud&2^`5%`*Uyr4_DmD-I~|d)CpRjpUEF@rrCQ7=hK#%^sFB7X4B0C zk7UdPIXH;N8!X_B+WYnEO92ZwTS7!NmGfSdG1 z(7IinMww}DBUiAd0`C>9kH2N~iXH)1(yIvIY7Ulia3l{ns&l`U&+QRTBR4mj-)_FS zD}RsD>j_+sMow>_HxkHA92~J{kIpQ zpQfK7V9#-|l7nM;uyF!^<6qvzF7?VU%jDJNyl&d^BK=B_aIew_1P3&pgA;f-;(&Ok zR`nfi{zQPwD)6~7`Yrn19#M|c#|Tr$IXH=flX(=2fI@D4F$C&@4gOd{C^DStto-b+H;Imnk59Y9^1#=U^)b=XEf>nBE-39K5Sr zh0PQS=|bE8x7v&;5h&dLZ>Ca0hQbVHhLNr=GlU^dkK^F{4rVw*;>R5vyc1Ve%(mBh zrd3X}@vkVP6fW}igF#B+g8kl4otDRxGh_c6!+Y~aF7#}*!V5q)*D+=iGr7XsUB!_6 zri2_Mli!cX0lh#!(vPVi-InR3A<|0Tt-pi3UB8%GO5ID|t=~<(L*A0VNK&WE)VJgv z`D?^M-XQPA2h*W+I4z>ZzEGaS!Or0huO=##Oz~UVGb|{nM2H*%=^s604g9W zU|>K~z}*242CNU*5pW>jV8Ee(Hvz0VKFkv42y=%uh0P9Y z3BzIY!|n`Q5O#OiGhuIsoe#Sd_HEeJuxsHkoDG+RM~2J7W5N~Tap4K!`fy{oIXo*o zCp<5_AiQ^Y-|(T~mEkkP?+R}Z-xq#3{6FEB!>@<`6#h&2Z{dGL1Vw~IghfO|uo037 zeMEUgb;RO`2O`!+JR0#t#LkG9BMwA-5b!P1TzpxTk$|_kkt7Y}9ku|fu*gouSY$4m9EoMisHnx$S z!!Bg+WAA5Iu&dbBY&*N2-NTIe61~JI86X)Y87&zjDVJC!wUVh4yJUu>UcyNhOO{ENOCFG{lypco zNj6KiN_I$gNuH5BC)qD~Q*ugjM)I-b6UlkW7m^E-i;`cZj8r0xl157v(l}{?G()PB z8l)y^rnH~5SUONTSUN&FQaV~%CM}mvl1`U8r8A{&X|r^Wv{gD!x=^}8`ml7Z^f76> z^a<$}>66m!(jC&*q+dpcMCv1ZMGlJ`5jiq)bYxj%MdaAXs>lhEj>v|{#zV}Mwg~=jhtV|-4%VK5mvP4;uOfBmp8z37etCh`^-7Z@wTO?Z|yGOQ6wp_MawpI4L zY`^S)?4azB?5OMm*~hYrvLB*hG!@N62S&5enrL%$adbuW#AsWzBf2TNIeJcXYxMHy zHPP+Sk4HZheK`8P=*uxwOn8heCMHG^lM<5_lOB^5Qy9}frZ{F`%;1=zF~ei3VkX2) zim}94V`^e-F?BKXV(y7~EapJWRk>K6AWxE~$kXL2xklbcK14oTUMe3gFOyfutK?JV zGvxJhr`#i-C2y9`kP3~8sZw`TydVbS#iyA zbK+X#=EdQ-`EkqQmd8C1w=(XdxUb^Aj=L0hB|bNPKzvF3p!gy2cf{Wpe}DXn_*L;o z;y;Z4DE@5xxdeGadV(rJlb}mzN|>K;XTpMnyAuv198GvH;Y7lz#Eiu3#N5RE#9oPu z67Nr3nfPGhLy3tY031%ar#kS1MO4A67o9Y*%hjZc=VhZd2}1 zKCOICxkve;a-Z^5E~)sfneIy3dj)IF(tQ(sEmpB9o9ohDCbJN?>7pE^xzc+n(`q}ia(=Vl8Nxz!WH)CkV@Ql)o z(HW0qY|hx4u`Odq#&s2~3Qz^9LRBTIF{%lwNh*uVs;W^rR8EykA6keKaMSQq2TSt!Aobnr6Djp=r`IYvyX&$a`1wHA^%rG;1|m zG*4@u)$G>n(d^Z{ra7c}OY^qoUClAghnmkc-)Mf)A}y^A&<1Hkv{J21E7!(q6SPXL zTAQiutsSf#tu515Xvb=+wAEUhcA9p&wqEPhHf!f=muOdO+qLVp8?~FXo3*>N&uX97 zzMy?cyHERu_L%lV?U&kbwO6&*v_EQZ=%9|)1?qxzVY&!iv@S`f)#dAobOUrHxbB{2=yvJ$>JI1*>psx^ zNB5cTbKRG^uXI;+Kj?1ge%Ae_`$He37wZ-J482KDeosuFtIyXL>5KJ)^h5N+^`-i; z`YHN){VaX6evZCXKTp3Oat*(Vx|y z(|@M_Tz^@A!+;DTLySRTh%+P@lm@jyXD}MfhHOKwp`T%}p~5iPFvU=9s5MMAI1MgC zlVP@Dj-l0Xm*HN+gN6-;ZH66&rwz{;_849@95lRPc*}6a@UG#aQEW^!4l<51RvD{} zPGhrijs^rh*V=_k{#ra#QI zInW$p4l_&4a&xj-YtA?KH5Zx(m - - - - HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges - - SnapshotAutomaticallyBeforeSignificantChanges - - - diff --git a/src/bash-completion/sns b/src/bash-completion/sns deleted file mode 100644 index 1d49269..0000000 --- a/src/bash-completion/sns +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash -# Simple Note System, bash completion file -# ======================================== -# Copyright (C) 2016, Jon Lewis -# Simple Note System is licensed under the GPLv2. Please see LICENSE for more -# information. -# -# **Notice** -# This file was adapted from pass, the standard unix password manager under the -# terms of the GPLv2 license. Pass may be found at https://passwordstore.org. -# -# The original file bore the following copyright notice: -# -# Copyright (C) 2012 - 2014 Jason A. Donenfeld and -# Brian Mattern . All Rights Reserved. -# This file is licensed under the GPLv2+. Please see COPYING for more information. - -_sns_complete_entries () { - prefix="${SNS_STORE_DIR:-$HOME/.config/sns/notes/}" - suffix=".note" - autoexpand=${1:-0} - - local IFS=$'\n' - local items=($(compgen -f $prefix$cur)) - for item in "${items[@]}"; do - [[ $item =~ /\.[^/]*$ ]] && continue - - # if there is a unique match, and it is a directory with one entry - # autocomplete the subentry as well (recursively) - if [[ ${#items[@]} -eq 1 && $autoexpand -eq 1 ]]; then - while [[ -d $item ]]; do - local subitems=($(compgen -f "$item/")) - local filtereditems=( ) - for item2 in "${subitems[@]}"; do - [[ $item2 =~ /\.[^/]*$ ]] && continue - filtereditems+=( "$item2" ) - done - if [[ ${#filtereditems[@]} -eq 1 ]]; then - item="${filtereditems[0]}" - else - break - fi - done - fi - - # append / to directories - [[ -d $item ]] && item="$item/" - - item="${item%$suffix}" - item="${item%.gpg}" - COMPREPLY+=("${item#$prefix}") - done -} - -_sns_complete_folders () { - prefix="${SNS_STORE_DIR:-$HOME/.config/sns/notes/}" - - local IFS=$'\n' - local items=($(compgen -d $prefix$cur)) - for item in "${items[@]}"; do - [[ $item == $prefix.* ]] && continue - COMPREPLY+=("${item#$prefix}/") - done -} - -_sns_complete_keys () { - local IFS=$'\n' - # Extract names and email addresses from gpg --list-keys - local keys="$(gpg2 --list-secret-keys --with-colons | cut -d : -f 10 | sort -u | sed '/^$/d')" - COMPREPLY+=($(compgen -W "${keys}" -- ${cur})) -} - -_sns() -{ - COMPREPLY=() - local cur="${COMP_WORDS[COMP_CWORD]}" - local commands="--create --delete --edit --help --print --list --init" - if [[ $COMP_CWORD -gt 1 ]]; then - local lastarg="${COMP_WORDS[$COMP_CWORD-1]}" - case "${COMP_WORDS[1]}" in - --list|-l) - _sns_complete_folders - ;; - --edit|-e|--print|-p|--delete|-d) - _sns_complete_entries - ;; - *) - ;; - esac - else - COMPREPLY+=($(compgen -W "${commands}" -- ${cur})) - - fi -} - -complete -o filenames -o nospace -F _sns sns diff --git a/src/includes/create.sns.sh b/src/includes/create.sns.sh deleted file mode 100644 index 6b1f04e..0000000 --- a/src/includes/create.sns.sh +++ /dev/null @@ -1,35 +0,0 @@ -function create(){ - # Depends : p_header - # Requires: $NOTE, $NOTE_DIR, - # Optional: $ENCRYPTION, $SESSION_ID, $TMP_DIR encrypt - # Given a valid setup, create writes the standard note header as specified - # by p_header, to $NOTE. - - # Refuse to overwrite a note - if [ -e "$NOTES_DIR/$NOTE" ]; then - >&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\ - "Note already exists"\ - "Hint: use -e to edit the note." - exit 200 - fi - - # If the note's notebook/section does not exist, - # create the appropriate folders. - mkdir -p "$NOTES_DIR"/"$(dirname "$NOTE")" - - # Write the standard note header - if [ "$ENCRYPTION" == "TRUE" ]; then - TMP_NOTE="$TMP_DIR"/"$SESSION_ID" - p_header > "$TMP_NOTE" - encrypt - else - p_header > "$NOTES_DIR/$NOTE" - fi - # Make sure the note exists, and inform the user of the result. - if [ -e "$NOTES_DIR/$NOTE" ]; then - printf " - %s\n" "Created note: ${NOTE%.*}" - else - >&2 printf " $RED_COLOR!$RESET_COLOR %s\n"\ - "Something went wrong, and the note was not created." - fi -} diff --git a/src/includes/delete.sns.sh b/src/includes/delete.sns.sh deleted file mode 100644 index f8aa791..0000000 --- a/src/includes/delete.sns.sh +++ /dev/null @@ -1,18 +0,0 @@ -function delete(){ - # Requires: $NOTE, $NOTE_DIR - # Given a valid $NOTE, delete removes $NOTE from sns. - - if [ -e "$NOTES_DIR/$NOTE" ]; then - rm "$NOTES_DIR/$NOTE" - printf " - %s\n" "Deleted note: ${NOTE%.*}." - #Cleanup empty notebooks/sections] - find "$NOTES_DIR" -mindepth 1 -type d | tac |\ - while read -r DIR ; do - if [ ! "$(ls -A $DIR)" ]; then - rmdir "$DIR" - fi - done - else - >&2 printf " $RED_COLOR!$RESET_COLOR %s\n" "Note ${NOTE%.*} does not exist." - fi -} diff --git a/src/includes/edit.sns.sh b/src/includes/edit.sns.sh deleted file mode 100644 index 79ebc47..0000000 --- a/src/includes/edit.sns.sh +++ /dev/null @@ -1,51 +0,0 @@ -function edit(){ -# Requires: $EDITOR, $NOTE -# Optional: $ENCRYPTION, $TMP_DIR, $SESSION_ID, decrypt, encrypt - -# Verify an editor was specified -if [ -z "$EDITOR" ]; then - >&2 printf " $RED_COLOR!$RESET_COLOR %s\n"\ - "No editor specified in environment." - exit -# Verify the note exists -elif [ ! -r "$NOTES_DIR/$NOTE" ]; then - >&2 printf " $RED_COLOR!$RESET_COLOR %s\n"\ - "Note cannot be opened for editing." - exit 40; -fi - -# If encryption is enabled, decrypt $NOTE to a temp file, otherwise -# operate on the note directly. -if [ "$ENCRYPTION" == "TRUE" ]; then - cp "$NOTES_DIR/$NOTE" "$NOTES_DIR/$NOTE.bk" #Insurance - TMP_NOTE="$TMP_DIR/$SESSION_ID" - decrypt > "$TMP_NOTE" -else - TMP_NOTE="$NOTES_DIR/$NOTE"; -fi - -# Write an ammendment header -if [ -z "$CREATE" ]; then - printf "\n%s\n" "edit - $(date "$DATE_FMT")" >> "$TMP_NOTE" - printf "%s\n" "===================================" >> "$TMP_NOTE" -fi - -# Call the editor -printf " - %s\n" "editing ${NOTE%.*}" -"$EDITOR" "$TMP_NOTE" - -# If the file was previously decrypted, encrypt it back -if [ "$ENCRYPTION" == "TRUE" ]; then - echo "reencrypting" - rm "$NOTES_DIR/$NOTE" - encrypt; - rm "$TMP_NOTE" - if [ ! -r "$NOTES_DIR/$NOTE" ]; then - >&2 printf " $RED_COLOR!$RESET_COLOR %s\n" "error: note was not saved." - cp "$NOTES_DIR/$NOTE.bk" "$NOTES_DIR/$NOTE" - else - rm "$NOTES_DIR/$NOTE.bk"; - fi -fi - -} diff --git a/src/includes/help.sns.sh b/src/includes/help.sns.sh deleted file mode 100644 index 8f26e97..0000000 --- a/src/includes/help.sns.sh +++ /dev/null @@ -1,14 +0,0 @@ -function help { - printf "\n%s" "usage: sns [-cedp] NAME NOTEBOOK SECTION" - printf "\n%s" " sns [-l] NOTEBOOK" - printf "\n%s" " sns [-hi ]" - - printf "\n%s" " -c | --create : Create note" - printf "\n%s" " -d | --delete : Delete note" - printf "\n%s" " -e | --edit : Open note for editing" - printf "\n%s" " -h | --help : Display this message" - printf "\n%s" " -p | --print : Print note to console" - printf "\n%s" " -l | --list : List all notes in NOTEBOOK" - printf "\n%s" " -i | --init : Write default config and initalize SNS store" - printf "\n" -} diff --git a/src/includes/init_store.sns.sh b/src/includes/init_store.sns.sh deleted file mode 100644 index b3095de..0000000 --- a/src/includes/init_store.sns.sh +++ /dev/null @@ -1,39 +0,0 @@ -function init_store { - -if [ ! -d "$ROOT_DIR" ]; then mkdir -p "$ROOT_DIR"; WILL_INIT="TRUE"; fi -if [ ! -d "$TMP_DIR" ]; then mkdir -p "$TMP_DIR" ; WILL_INIT="TRUE"; fi - - -cat > "$CONFIG_FILE" << EOF -# This file contains directives for the Simple Note System. - -EXT=note # File extension to use (for listing notes) - -#EDITOR= # Preferred Editor: - # If you would like to specify a different editor for - # sns to use, you may do so here, otherwise, sns will - # use the editor specified in the environment. - -DATE_FMT="+%D %T" # Date Format: - # If you would like to modify the date format, you may - # specify one appropriate to the \`date\` command. - -ENCRYPTION="FALSE" # Main Encryption Toggle: - # WARNING: ANY PREVIOUSLY UNENCRYPTED NOTES WILL BE LOST - # Change this to TRUE to enable encryption. - -PUBKEY="" # Public Key - # Encryption is done using GPG. You must enter your - # public key's identifier here. -EOF - -chmod 600 "$CONFIG_FILE" - -printf " - %s\n" "Rewrote Default Configuration" - -if [ "$WILL_INIT" == "TRUE" ]; then - printf " - %s\n" "Environment initialized in $ROOT_DIR" -else - printf " - %s\n" "Store already initialized." -fi -} diff --git a/src/includes/libencryption.sns.sh b/src/includes/libencryption.sns.sh deleted file mode 100644 index 2906341..0000000 --- a/src/includes/libencryption.sns.sh +++ /dev/null @@ -1,15 +0,0 @@ -function encrypt(){ -# This function, given a recipient, $PUBKEY; a file to encrypt, $TMP_NOTE; and an -# output file, $NOTE, will encrypt $TMP_NOTE to $NOTE against $PUBKEY's private -# GPG key. - - gpg -r "$PUBKEY" -o "$NOTES_DIR/$NOTE" -e "$TMP_NOTE" - -} - -function decrypt(){ -# This function, given a file to decrypt, will attempt to decrypt the file -# against the specified recipient's private key, and print the result to -# stdout. - gpg -d "$NOTES_DIR/$NOTE" -} diff --git a/src/includes/list.sns.sh b/src/includes/list.sns.sh deleted file mode 100644 index 5a39dec..0000000 --- a/src/includes/list.sns.sh +++ /dev/null @@ -1,4 +0,0 @@ -function list(){ - # This function, given a folder, $NOTE, will list the contents of $NOTE. - ls "$NOTES_DIR/${NOTE%.*}" -} diff --git a/src/includes/p_header.sh b/src/includes/p_header.sh deleted file mode 100644 index 6fc43d6..0000000 --- a/src/includes/p_header.sh +++ /dev/null @@ -1,3 +0,0 @@ -function p_header(){ - printf "# %s\n## %s\n" "$(basename ${NOTE%.*})" "$(date "$DATE_FMT")" -} diff --git a/src/includes/print.sns.sh b/src/includes/print.sns.sh deleted file mode 100644 index 7b6d2eb..0000000 --- a/src/includes/print.sns.sh +++ /dev/null @@ -1,12 +0,0 @@ -function print(){ -# Given an existing file, $NOTE, print prints the contents of $NOTE to stdout. - -if [ -r "$NOTE" ]; then - if [ "$ENCRYPTION" == "TRUE" ]; then decrypt #to stdout - else cat "$NOTE"; fi -else - >&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\ - "Note cannot be found." - exit 205 #ERR_NOTE_NO_READ -fi -} diff --git a/src/includes/verify_store.sns.sh b/src/includes/verify_store.sns.sh deleted file mode 100644 index ef0e9f6..0000000 --- a/src/includes/verify_store.sns.sh +++ /dev/null @@ -1,11 +0,0 @@ -function verify_store { - - ETC_DIR=$(dirname "$CONFIG_FILE") - - STORE_DIRS=("$ROOT_DIR" "$NOTES_DIR" "$TMP_DIR" "$ETC_DIR") - for DIR in "${STORE_DIRS[@]}"; do - if [ ! -d "$DIR" ]; then - mkdir -p "$DIR" - fi - done -} diff --git a/src/main/stage1.sns.sh b/src/main/stage1.sns.sh deleted file mode 100644 index 1ddfc3c..0000000 --- a/src/main/stage1.sns.sh +++ /dev/null @@ -1,24 +0,0 @@ -#============================================================================== -# Stage 1: Read Configuration / Verify Integrity -#============================================================================== - -if [ -r "$CONFIG_FILE" ]; then - source "$CONFIG_FILE" - verify_store -elif [ $1 != "-i" ]; then - >&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\ - "Configuration not found. Please run sns -i." - exit 5 #ERR_NO_STORE -fi - -if [ "$ENCRYPTION" == "TRUE" ]; then - if [ ! -r "$(which gpg)" ]; then - >&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\ - "Encryption was specified, but GPG is not installed." - exit 100 - elif [ -z "$PUBKEY" ]; then - >&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\ - "No GPG recipient was provided in $CONFIG_FILE. " - exit 110 - fi -fi diff --git a/src/main/stage2.sns.sh b/src/main/stage2.sns.sh deleted file mode 100644 index 4423feb..0000000 --- a/src/main/stage2.sns.sh +++ /dev/null @@ -1,48 +0,0 @@ -#============================================================================== -# Stage 2: Argument Parsing -#============================================================================== -NOTE="" -if [ -z "$1" ]; then help; exit 20 -else - for ARG in "$@"; do - case "$ARG" in - -c|--create) - CREATE="TRUE" - OP="TRUE" - ;; - -d|--delete) - DELETE="TRUE" - OP="TRUE" - ;; - -e|--edit) - EDIT="TRUE" - OP="TRUE" - ;; - -ce|-ec) - CREATE="TRUE" - EDIT="TRUE" - OP="TRUE" - ;; - -l|--list) - LIST="TRUE" - OP="TRUE" - ;; - -p|--print) - PRINT="TRUE" - OP="TRUE" - ;; - -h|--help) - help - exit 0 - ;; - -i|--init-store) - init_store - exit 0 - ;; - *) - NOTE="$ARG" - break; - ;; - esac - done -fi diff --git a/src/main/stage3.sns.sh b/src/main/stage3.sns.sh deleted file mode 100644 index b090f4b..0000000 --- a/src/main/stage3.sns.sh +++ /dev/null @@ -1,30 +0,0 @@ -#============================================================================== -# Section: Actions / Stage 3 -#============================================================================== -# Default behavior -# If no operation was specified, print help and exit on ERR_NO_OP - if [ "$OP" != "TRUE" ]; then - help; exit 20 - fi -# All options not requiring a note to be specified have been dealt -# with; if one isn't specified, exit on ERR_NO_NOTE. -if [ -z "$NOTE" ]; then - printf " $RED_COLOR!$RESET_COLOR %s\n" "No note specified." - exit 30 -fi - -if [ "$ENCRYPTION" == "TRUE" ]; then - SESSION_ID="$RANDOM" #SESSION_ID later becomes the temporary filename - readonly NOTE="$NOTE.gpg.$EXT" -else - readonly NOTE="$NOTE.$EXT" -fi - -if [ "$LIST" == "TRUE" ]; then list ; exit 0; fi -if [ "$PRINT" == "TRUE" ]; then print ; exit 0; fi -if [ "$DELETE" == "TRUE" ]; then delete; exit 0; fi -if [ "$CREATE" == "TRUE" ]; then create; fi -if [ "$EDIT" == "TRUE" ]; then edit ; fi -#============================================================================== -# End Section: Actions / Stage 3 -#==============================================================================