Add publish-to-ipfs.ps1

This commit is contained in:
Markus Fleschutz
2021-07-16 16:40:06 +02:00
parent e6d93b5c08
commit 47f084b2d4
4 changed files with 47 additions and 25 deletions

View File

@ -1,25 +0,0 @@
#!/bin/sh
# Syntax: ./ipfs-publish <dir-tree>
# Description: publishes the given directory tree to IPFS
# Author: Markus Fleschutz
# Source: github.com/fleschutz/PowerShell
# License: CC0
# NOTE: requires <ipfs> and <hashdeep>
DIR=$1
IPFS_HASHES="IPFS_hash_list.txt"
DF_HASHES="checksum_list.xml"
echo "Publishing folder $DIR to IPFS"
echo "(1/3) Removing Thumbs.db in subfolders ..."
nice find "$DIR" -name Thumbs.db -exec rm -rf {} \;
echo "(2/3) Adding $DIR to IPFS ..."
nice ipfs add -r "$DIR" > $IPFS_HASHES
echo "(3/3) Calculating digital forensics hashes to $DF_HASHES ..."
nice hashdeep -c md5,sha1,sha256 -r -d -l -j 1 "$DIR" > $DF_HASHES
echo "OK - to publish the content execute: ipfs name publish <HASH>"
exit 0

45
Scripts/publish-to-ipfs.ps1 Executable file
View File

@ -0,0 +1,45 @@
<#
.SYNOPSIS
publish-to-ipfs.ps1 [<file(s)/dir>] [<to-hash-list>]
.DESCRIPTION
Publishes the given files or directory to IPFS
.EXAMPLE
PS> .\publish-to-ipfs.ps1 C:\MyFile.txt
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz / License: CC0
#>
param([string]$Files = "", [string]$HashList = "IPFS_hashes.txt", [string]$DF_Hashes = "checksum_list.txt")
try {
& ipfs --version
if ($lastExitCode -ne "0") { throw "Can't execute 'ipfs' - make sure IPFS is installed and available" }
if ($Files -eq "") { $Files = read-host "Enter file(s) or directory tree to publish" }
$StopWatch = [system.diagnostics.stopwatch]::startNew()
$Files = (get-childItem "$Files")
[int]$Count = $Files.Count
foreach ($File in $Files) {
if (test-path "$File" -pathType container) {
"Adding directory tree $File to IPFS..."
ipfs add -r "$File" > $HashList
echo "Calculating digital forensics hashes to $DF_HASHES ..."
nice hashdeep -c md5,sha1,sha256 -r -d -l -j 1 "$File" > $DF_Hashes
} else {
"Adding file $File to IPFS..."
ipfs add "$File" > $HashList
}
}
[int]$Elapsed = $StopWatch.Elapsed.TotalSeconds
"✔️ published $Count files(s)/directory to IPFS in $Elapsed sec"
" NOTE: to publish it to IPNS execute: ipfs name publish <HASH>"
exit 0
} catch {
write-error "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
exit 1
}