aboutsummaryrefslogtreecommitdiff
path: root/bin/ak-repositories
diff options
context:
space:
mode:
authorkaotisk <kaotisk@arching-kaos.org>2023-03-29 23:45:49 +0300
committerkaotisk <kaotisk@arching-kaos.org>2023-03-29 23:45:49 +0300
commit286b71a6ead8c7234cfbc0b8ece05c8239a4f32c (patch)
treef4662c1517fe14018d93c5503a72b8ba9da0c674 /bin/ak-repositories
parentb5394a6bd9f0b9fbd9bafc3e963dafbbc87f2ed2 (diff)
downloadarching-kaos-tools-286b71a6ead8c7234cfbc0b8ece05c8239a4f32c.tar.gz
arching-kaos-tools-286b71a6ead8c7234cfbc0b8ece05c8239a4f32c.tar.bz2
arching-kaos-tools-286b71a6ead8c7234cfbc0b8ece05c8239a4f32c.zip
Renamed everything
Diffstat (limited to 'bin/ak-repositories')
-rwxr-xr-xbin/ak-repositories168
1 files changed, 168 insertions, 0 deletions
diff --git a/bin/ak-repositories b/bin/ak-repositories
new file mode 100755
index 0000000..3cd415f
--- /dev/null
+++ b/bin/ak-repositories
@@ -0,0 +1,168 @@
+#!/bin/bash
+REPODIR="$HOME/projects"
+BAREDIR="$HOME/bare"
+REPOSTORE="$HOME/.arching-kaos/repostore"
+if [ ! -d $BAREDIR ]; then mkdir $BAREDIR; fi
+if [ ! -d $REPODIR ]; then echo "no $REPODIR" && exit; fi
+if [ ! -f $REPOSTORE ]; then touch $REPOSTORE; fi
+import(){
+ REPOS="$(ls -1 $REPODIR)"
+ for PROJECT in $REPOS
+ do
+ cd $BAREDIR
+ # Can be as well be
+ # git clone --bare $REPODIR/$PROJECT/.git
+ # or whatever form git let's you use
+ git clone --bare http://git.h.kaotisk-hund.com/$PROJECT/.git
+ if [ $? == 0 ]
+ then
+ cd $PROJECT.git
+ git repack -a
+ IPFS="$(ipfs add -Qr .)"
+ ipfs key gen "$PROJECT.git"
+ ipfs name publish --key="$PROJECT.git" /ipfs/$IPFS
+ cd $HOME/bare
+ else
+ echo "$PROJECT not a git repo"
+ fi
+ done
+}
+
+update(){
+ if [ ! -z $1 ]
+ then
+ USING="$1"
+ REPO="$REPODIR/$1/.git"
+ BARE="$BAREDIR/$1.git"
+ BARENAME="$1.git"
+ if [ -d $BARE ]
+ then
+ cd $BARE
+ git pull
+ git repack -a
+ IPFS="$(ipfs add -Qr .)"
+ ipfs name publish --key="$BARENAME" /ipfs/$IPFS
+ echo "DONE"
+ else
+ echo "NO BARE TO UPDATE"
+ echo "updating all..."
+ fi
+ else
+ BARES="$(ls -1 $BAREDIR)"
+ cd $BAREDIR
+ for PROJECT in $BARES
+ do
+ cd "$PROJECT"
+ git pull
+ git repack -a
+ IPFS="$(ipfs add -Qr .)"
+ ipfs name publish --key="$PROJECT" /ipfs/$IPFS
+ cd $BAREDIR
+ done
+ fi
+}
+
+append-if-needed(){
+ under="$1"
+ file="$HOME/.arching-kaos/repos"
+ lines="$(cat $file)"
+ found="no"
+ for line in $lines
+ do
+ if [ $found == "yes" ]
+ then
+ echo "found $found"
+ break
+ else
+ if [ "$line" == "$under" ]
+ then
+ found="yes"
+ echo "found $found"
+ break
+ fi
+ fi
+ done
+ if [ $found == "no" ]
+ then
+ echo $under > $file
+ fi
+}
+
+
+add(){
+ PROJECT="$1"
+ PROJECTDIR="$REPODIR/$PROJECT"
+ BAREGITDIR="$BAREDIR/$PROJECT.git"
+ if [ -d $PROJECTDIR ]
+ then
+ cd $HOME/bare
+ git clone --bare $PROJECTDIR/.git
+ if [ $? == 0 ]
+ then
+ cd $BAREGITDIR
+ git repack -a
+ IPFS="$(ipfs add -Qr .)"
+ try=ipfs key gen "$PROJECT.git"
+ if [ $? == 0 ]
+ then
+ ipfs name publish --key="$PROJECT.git" /ipfs/$IPFS
+ cat > data <<EOF
+{
+ "project":"$PROJECT.git",
+ "ipns":"$try"
+}
+EOF
+ pack_z_block "repos/add" data
+ echo "Done"
+ fi
+ fi
+ else
+ echo "$PROJECT not a git repo"
+ fi
+}
+
+index(){
+ ipfs key list -l | grep -e '\.git'
+}
+set-as-profile(){
+ IPFS=$(ipfs add -q $REPOSTORE)
+ if [ $? == 0 ]
+ then
+ profile set repositories $IPFS
+ else
+ echo error
+ fi
+}
+
+publish(){
+ if [ ! -z $1 ]
+ then
+ echo "Filtering for $1..."
+ index | grep "$1" > $REPOSTORE
+ set-as-profile
+ else
+ echo "Publishing all..."
+ index > $REPOSTORE
+ set-as-profile
+ fi
+}
+
+usage(){
+ echo "TODO"
+ echo "index | add | publish | update"
+ exit
+}
+
+if [ ! -z $1 ]
+then
+ case $1 in
+ help) usage; exit;;
+ index) index; exit;;
+ add) add "$2"; exit;;
+ publish) publish "$2"; exit;;
+ update) update "$2"; exit;;
+ *) echo "No command $1";usage; exit;;
+ esac
+else
+ usage
+fi