this post was submitted on 28 Jul 2023
9 points (84.6% liked)

Powershell

201 readers
7 users here now

PowerShell (POSH) is a a task automation command-line shell and scripting language created by Microsoft. It became part of the FOSS community in 2016 and is now available across Windows, Linux, and macOS

Resources:


Rules:

Self-promotion rules:


founded 1 year ago
MODERATORS
 
top 7 comments
sorted by: hot top controversial new old
[–] [email protected] 4 points 1 year ago* (last edited 1 year ago) (1 children)

Probably this script:

#!/bin/bash

if [ -z "$1" ]
then
        echo "Please provide git repository url as an argument for this script."
        exit 1
fi
regex='(https?|ftp|file)://[-[:alnum:]\+&@#/%?=~_|!:,.;]*[-[:alnum:]\+&@#/%=~_|]'
if [[ $1 =~ $regex ]]
then
basename=$(basename $1)
reponame=${basename%.*}
curl -X 'POST' 'https://localgitea.com/api/v1/repos/migrate?access_token={Access Token Here}' \
  --insecure \
  -H "accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{  "clone_addr": "'"$1"'",  "issues": false,  "labels": false,  "lfs": false,  "mirror": true,  "mirror_interval": "96h0m0s",  "private": false, "repo_name": "'"$reponame"'", "pull_requests": true,  "releases": true, "repo_owner": "githubpublic",  "service": "git",  "wiki": true}'
else
        echo "Invalid URL"
        exit 1
fi

You can adjust it as needed and as for why I have --insecure flag, I have a direct network cable between my PC to the server, so encryption or HTTPS is not needed here. This is probably my favorite command, because I would write above as .sra.sh in home directory and then alias the .bashrc to make a sra command by adding alias sra=/home/{your user account}/.sra.sh in .bashrc and from there, anytime I have an interesting repository that I want to archive, I simply run sra {git url} and that's it. It also specify the mirror interval manually for 4 days interval rather than every 8 hours that would've needlessly spam the git server.

This is something I rely on everyday both as developer and system admin, I would maintain a different supply chain and prevent a supply chain attacks by generating my own package feeds/registry automatically from Gitea/Forgejo.

Edited to Add: I noticed this community is Powershell, here the powershell version of above:

param (
    [Parameter(Mandatory=$true)]
    [string]$gitRepoUrl
)

function Test-Url($url) {
    $regex = "(https?|ftp|file)://[-[:alnum:]\+&@#/%?=~_|!:,.;]*[-[:alnum:]\+&@#/%=~_|]"
    return $url -match $regex
}


$basename = Split-Path $gitRepoUrl -Leaf
$reponame = [System.IO.Path]::GetFileNameWithoutExtension($basename)

$headers = @{
    'accept' = 'application/json'
    'Content-Type' = 'application/json'
}

$body = @{
    'clone_addr' = $gitRepoUrl
    'issues' = $false
    'labels' = $false
    'lfs' = $false
    'mirror' = $true
    'mirror_interval' = '96h0m0s'
    'private' = $false
    'repo_name' = $reponame
    'pull_requests' = $true
    'releases' = $true
    'repo_owner' = 'githubpublic'
    'service' = 'git'
    'wiki' = $true
} | ConvertTo-Json

Invoke-RestMethod -Uri 'https://localgitea.com/api/v1/repos/migrate?access_token={Access Token Here}' -Method POST -Headers $headers -Body $body -SkipCertificateCheck

[–] [email protected] 2 points 1 year ago

Edited to Add: I noticed this community is Powershell, here the powershell version of above:

Nice! You are a person of many talents

[–] DrVader 2 points 1 year ago (1 children)

I've been a huge winget fanboy for a while now. I liked chocolatey prior to that, but it works so well with the os - which makes sense cuz it's from Microsoft.

[–] [email protected] 2 points 1 year ago (1 children)

I love WinGet but I just wish there was support for Windows Server, without having to do a bunch of hacks

[–] DrVader 2 points 1 year ago

That's a very good point. Must my dev work doesn't involve a Windows server except for interacting with AD, I forget winget has that limitation. Hopefully they add that feature soon!

[–] slazer2au 2 points 1 year ago (1 children)

The Cisco and Fortinet Ansible galaxy collections.

Documentation is top notch too.

[–] [email protected] 3 points 1 year ago

Documentation is top notch too.

Nothing will make me love a solution more than it being well documented. Sounds simple, but saves so much time.

load more comments
view more: next ›