This repository has been archived on 2022-07-17. You can view files and clone it, but cannot push or open issues or pull requests.
arsenm-dev-site/public/index.min.8c5e6bee4f123cf4e419f9c92fb0ae638d0378a1c527c8d9da60244ac6676ae1a889ddeb67ff6329a913a6134e4967e011c84af5191b23f15c0bf22f0c452739.js

7 lines
65 KiB
JavaScript

var suggestions=document.getElementById('suggestions');var userinput=document.getElementById('userinput');document.addEventListener('keydown',inputFocus);function inputFocus(e){if(e.keyCode===191){e.preventDefault();userinput.focus();}
if(e.keyCode===27){userinput.blur();suggestions.classList.add('d-none');}}
document.addEventListener('click',function(event){var isClickInsideElement=suggestions.contains(event.target);if(!isClickInsideElement){suggestions.classList.add('d-none');}});document.addEventListener('keydown',suggestionFocus);function suggestionFocus(e){const focusableSuggestions=suggestions.querySelectorAll('a');const focusable=[...focusableSuggestions];const index=focusable.indexOf(document.activeElement);let nextIndex=0;if(e.keyCode===38){e.preventDefault();nextIndex=index>0?index-1:0;focusableSuggestions[nextIndex].focus();}
else if(e.keyCode===40){e.preventDefault();nextIndex=index+1<focusable.length?index+1:index;focusableSuggestions[nextIndex].focus();}}
(function(){var index=new FlexSearch({preset:'score',cache:true,doc:{id:'id',field:['title','description','content',],store:['href','title','description',],},});var docs=[{id:0,href:"/docs/advmake/",title:"AdvMake Docs",description:"Documentation for the AdvMake build system",content:""},{id:1,href:"/docs/advmake/build-files/",title:"Build Files",description:"Understanding AdvMake Build Files",content:"\u003cp\u003e\u003ca class=\"btn\" style=\"color: white; background-color: green;\" href=\"https://gitea.arsenm.dev/Arsen6331/advmake\"\u003e\n \u003cspan class=\"iconify\" data-icon=\"cib:gitea\"\u003e\u003c/span\u003e \n \u0026nbsp;AdvMake\n\u003c/a\u003e\n\n\u003ca class=\"btn\" style=\"color: white; background-color: OrangeRed;\" href=\"https://www.gitlab.com/moussaelianarsen/advmake\"\u003e\n \u003cspan class=\"iconify\" data-icon=\"fa-brands:gitlab\"\u003e\u003c/span\u003e\n \u0026nbsp;AdvMake\n\u003c/a\u003e\n\u003c/p\u003e\n\u003ch2 id=\"format\"\u003eFormat\u003c/h2\u003e\n\u003cp\u003eAdvMake uses \u003ca href=\"https://github.com/bazelbuild/starlark\"\u003eStarlark\u003c/a\u003e as the format for its build files.\nModules are also defined for both convenience and extra functionality.\u003c/p\u003e\n\u003cp\u003eStarlark is a Python-like language meant for configuration files.\u003c/p\u003e\n\u003ch2 id=\"configuration\"\u003eConfiguration\u003c/h2\u003e\n\u003cp\u003eBuild files are by default called \u003ccode\u003eAdvMakefile\u003c/code\u003e, but that can be set via \u003ccode\u003e-f\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eAn AdvMakefile example can be found at AdvMake\u0026rsquo;s repo as it uses AdvMake itself.\u003c/p\u003e\n\u003cp\u003eAdvMake runs functions exposed by starlark in the format \u003ccode\u003e\u0026lt;name\u0026gt;_\u0026lt;target\u0026gt;\u003c/code\u003e.\nTo set the default name and target, the global variables \u003ccode\u003edefaultName\u003c/code\u003e, and \u003ccode\u003edefaultTarget\u003c/code\u003e must be set.\nHere is an example from AdvMake\u0026rsquo;s AdvMakefile:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003edefaultName\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;advmake\u0026#34;\u003c/span\u003e\n\u003cspan class=\"n\"\u003edefaultTarget\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;build\u0026#34;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis will tell AdvMake to run the function \u003ccode\u003eadvmake_build()\u003c/code\u003e when run with no arguments.\u003c/p\u003e\n\u003cp\u003eIf AdvMake is run with one argument (such as \u003ccode\u003eadvmake install\u003c/code\u003e), it will use the default name with the specified target,\nso in that case, it would run \u003ccode\u003eadvmake_install()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf run with two arguments, AdvMake will use the first argument as the name and the second as the target.\nSo, running \u003ccode\u003eadvmake hello world\u003c/code\u003e would run the function \u003ccode\u003ehello_world()\u003c/code\u003e.\u003c/p\u003e\n\u003ch2 id=\"modules\"\u003eModules\u003c/h2\u003e\n\u003cp\u003eAs previously mentioned, AdvMake comes with modules. Those are as follows:\u003c/p\u003e\n\u003ch3 id=\"runtime\"\u003e\u003ccode\u003eruntime\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe runtime module exposes some of golang\u0026rsquo;s runtime methods and variables.\u003c/p\u003e\n\u003chr\u003e\n\u003ch4 id=\"runtimegoos\"\u003e\u003ccode\u003eruntime.GOOS\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eStores a string denoting the operating system being used.\u003c/p\u003e\n\u003ca class=\"btn\" style=\"color: white; background-color: #00ACD7;\" href=\"https://pkg.go.dev/runtime#GOOS\"\u003e\n \n \u003cspan class=\"iconify icon:cib:go\"\u003e\u003c/span\u003e\u0026nbsp;\n \n Godoc\n\u003c/a\u003e\n\n\u003chr\u003e\n\u003ch4 id=\"runtimegoarch\"\u003e\u003ccode\u003eruntime.GOARCH\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eStores a string denoting the CPU architecture being used.\u003c/p\u003e\n\u003ca class=\"btn\" style=\"color: white; background-color: #00ACD7;\" href=\"https://pkg.go.dev/runtime#GOARCH\"\u003e\n \n \u003cspan class=\"iconify icon:cib:go\"\u003e\u003c/span\u003e\u0026nbsp;\n \n Godoc\n\u003c/a\u003e\n\n\u003chr\u003e\n\u003ch4 id=\"runtimenumcpu\"\u003e\u003ccode\u003eruntime.NumCPU()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eGet the number of logical CPUs available to the current process\u003c/p\u003e\n\u003ca class=\"btn\" style=\"color: white; background-color: #00ACD7;\" href=\"https://pkg.go.dev/runtime#NumCPU\"\u003e\n \n \u003cspan class=\"iconify icon:cib:go\"\u003e\u003c/span\u003e\u0026nbsp;\n \n Godoc\n\u003c/a\u003e\n\n\u003chr\u003e\n\u003ch4 id=\"runtimegomaxprocs\"\u003e\u003ccode\u003eruntime.GOMAXPROCS()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003eruntime.GOMAXPROCS(n)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eGet or set the value of the GOMAXPROCS environment variable. This variable controls the maximum number of CPUs that can execute. This function will set GOMAXPROCS to n and then return the previous value. If \u003ccode\u003en\u0026lt;1\u003c/code\u003e, this function will not set the variable and will instead return the current setting\u003c/p\u003e\n\u003ca class=\"btn\" style=\"color: white; background-color: #00ACD7;\" href=\"https://pkg.go.dev/runtime#GOMAXPROCS\"\u003e\n \n \u003cspan class=\"iconify icon:cib:go\"\u003e\u003c/span\u003e\u0026nbsp;\n \n Godoc\n\u003c/a\u003e\n\n\u003chr\u003e\n\u003ch3 id=\"encoding\"\u003e\u003ccode\u003eencoding\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe strings module contains functions for encoding and decoding various formats. This module contains submodules for the various formats\u003c/p\u003e\n\u003cp\u003eAvailable submodules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eYaml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eToml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eHex\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch4 id=\"encodingsubmoduleload\"\u003e\u003ccode\u003eencoding.\u0026lt;Submodule\u0026gt;.Load()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eLoad a string formatted as the submodule format into a dictionary or string.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003ex\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eencoding\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eJson\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eLoad\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;{\u0026#34;encoding\u0026#34;: \u0026#34;json\u0026#34;}\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# x[\u0026#34;encoding\u0026#34;] == \u0026#34;json\u0026#34;\u003c/span\u003e\n\u003cspan class=\"n\"\u003ey\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eencoding\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eHex\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eLoad\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;546573740a\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# y == \u0026#34;Test\u0026#34;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch4 id=\"encodingsubmoduledump\"\u003e\u003ccode\u003eencoding.\u0026lt;Submodule\u0026gt;.Dump()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDump a string formatted as the submodule format from a dictionary or string\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003exDict\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;encoding\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;toml\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e}}\u003c/span\u003e\n\u003cspan class=\"n\"\u003ex\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eencoding\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToml\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eDump\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003exDict\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# x == \u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e#\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# [encoding]\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# type = \u0026#34;toml\u0026#34;\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e#\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# \u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\u003cspan class=\"n\"\u003ey\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eencoding\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eHex\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eDump\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Test\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# y = \u0026#34;546573740a\u0026#34;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"file\"\u003e\u003ccode\u003efile\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe file module contains functions for manipulation and checking of files\u003c/p\u003e\n\u003chr\u003e\n\u003ch4 id=\"fileexpand\"\u003e\u003ccode\u003efile.Expand()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003efile.Expand(file, mappings)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eExpand any instances of \u003ccode\u003e$VAR\u003c/code\u003e in a file according to provided mappings.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003efile.txt\u003c/code\u003e before:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003eI am running on $OS and architecture $arch\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCode:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"nb\"\u003efile\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eExpand\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;file.txt\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;OS\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eruntime\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eGOOS\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;arch\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eruntime\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eGOARCH\u003c/span\u003e\u003cspan class=\"p\"\u003e})\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003ccode\u003efile.txt\u003c/code\u003e after:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003eI am running on linux and architecture x86_64\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch4 id=\"fileexists\"\u003e\u003ccode\u003efile.Exists()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003efile.Exists(filepath)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eCheck whether a file exists\u003c/p\u003e\n\u003cp\u003eExample:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"nb\"\u003efile\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eExists\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/etc/fstab\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# True\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch4 id=\"filecontent\"\u003e\u003ccode\u003efile.Content()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003efile.Content(filepath)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eReturns contents of a file as a string\u003c/p\u003e\n\u003cp\u003eExample:\u003c/p\u003e\n\u003cp\u003efile.txt:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003eThis is a file\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCode:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"nb\"\u003efile\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eContent\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;file.txt\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# \u0026#34;This is a file\u0026#34;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"strings\"\u003e\u003ccode\u003estrings\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe strings module contains functions for the manipulation of strings\u003c/p\u003e\n\u003chr\u003e\n\u003ch4 id=\"stringsregex\"\u003e\u003ccode\u003estrings.Regex()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003estrings.Regex(string, pattern, regex)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eParse a string using a regular expression and return the result in the specified format.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003ex\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003estrings\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eRegex\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Hello, World\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;$2, $1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;(.+), (.+)\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \n\u003cspan class=\"c1\"\u003e# x == \u0026#34;World, Hello\u0026#34;\u003c/span\u003e\n\u003cspan class=\"n\"\u003ey\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003estrings\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eRegex\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Hello, World\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;$y, $x\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;(?P\u0026lt;x\u0026gt;.+), (?P\u0026lt;y\u0026gt;.+)\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# y == \u0026#34;World, Hello\u0026#34;\u003c/span\u003e\n\u003cspan class=\"n\"\u003ez\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003estrings\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eRegex\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Hello, World\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;$match, $2, $1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;(.+), (.+)\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \n\u003cspan class=\"c1\"\u003e# z == \u0026#34;Hello, World, World, Hello\u0026#34;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch4 id=\"stringshassuffix\"\u003e\u003ccode\u003estrings.HasSuffix()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003estrings.HasSuffix(string, suffix)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eCheck whether a string ends with a suffix.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003estrings\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eHasSuffix\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;doc.pdf\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;.pdf\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# True\u003c/span\u003e\n\u003cspan class=\"n\"\u003estrings\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eHasSuffix\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;doc.pdf\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;.md\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# False\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch4 id=\"stringshasprefix\"\u003e\u003ccode\u003estrings.HasPrefix()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003estrings.HasPrefix(string, prefix)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eCheck whether a string starts with a prefix.\u003c/p\u003e\n\u003cp\u003eExample:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003estrings\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eHasPrefix\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;doc.pdf\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;doc\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# True\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch4 id=\"stringstrimsuffix\"\u003e\u003ccode\u003estrings.TrimSuffix()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003estrings.HasSuffix(string, suffix)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eRemove suffix from string if it exists. If it does not exist, the string is returned unchanged.\u003c/p\u003e\n\u003cp\u003eExample:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003estrings\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eTrimSuffix\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;doc.pdf\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;.pdf\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# \u0026#34;doc\u0026#34;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch4 id=\"stringstrimprefix\"\u003e\u003ccode\u003estrings.TrimPrefix()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003estrings.TrimPrefix(string, prefix)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eRemove prefix from string if it exists. If it does not exist, the string is returned unchanged.\u003c/p\u003e\n\u003cp\u003eExample:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003estrings\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eTrimPrefix\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;doc.pdf\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;doc\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# \u0026#34;.pdf\u0026#34;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch4 id=\"stringstrimspace\"\u003e\u003ccode\u003estrings.TrimSpace()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003estrings.TrimSpace(string)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eTrim leading and trailing white space, as defined by Unicode\u003c/p\u003e\n\u003cp\u003eExample:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003estrings\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eTrimSpace\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34; Hi \u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# \u0026#34;Hi\u0026#34;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"input\"\u003e\u003ccode\u003einput\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe input module prompts the user for input\u003c/p\u003e\n\u003chr\u003e\n\u003ch4 id=\"inputprompt\"\u003e\u003ccode\u003einput.Prompt()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003einput.Prompt(prompt)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003ePrint prompt and wait for input, returning on newline\u003c/p\u003e\n\u003cp\u003eExample:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"nb\"\u003einput\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ePrompt\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Enter number: \u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch4 id=\"inputchoice\"\u003e\u003ccode\u003einput.Choice()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003einput.Choice(prompt, choices)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eAssign number to each choice and prompt user to choose one\u003c/p\u003e\n\u003cp\u003eExample:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"nb\"\u003einput\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eChoice\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Choose greeting\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Hi\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Hello\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Good morning\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e])\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe above example looks like this to the user:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e[1] \u0026#34;Hi\u0026#34;\n[2] \u0026#34;Hello\u0026#34;\n[3] \u0026#34;Good Morning\u0026#34;\nChoose greeting: \n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eWhen the user chooses a number, the function will return the associated string. So, if the user chooses 1, \u003ccode\u003e\u0026quot;Hi\u0026quot;\u003c/code\u003e will be returned.\u003c/p\u003e\n\u003chr\u003e\n\u003ch3 id=\"url\"\u003e\u003ccode\u003eurl\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe url module contains functions for the manipulation of URLs\u003c/p\u003e\n\u003chr\u003e\n\u003ch4 id=\"urlparse\"\u003e\u003ccode\u003eurl.Parse()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003eurl.Parse(urlString)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eParses a URL and returns its components\u003c/p\u003e\n\u003cp\u003eExample:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003eparsed\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eurl\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eParse\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;https://www.arsenm.dev/docs/advmake/build-files\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# parsed.Scheme == \u0026#34;https\u0026#34;\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# parsed.Host == \u0026#34;www.arsenm.dev\u0026#34;\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# parsed.Path == \u0026#34;/docs/advmake/build-files\u0026#34;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ca class=\"btn\" style=\"color: white; background-color: #00ACD7;\" href=\"https://pkg.go.dev/net/url#URL\"\u003e\n \n \u003cspan class=\"iconify icon:cib:go\"\u003e\u003c/span\u003e\u0026nbsp;\n \n Godoc\n\u003c/a\u003e\n\n\u003chr\u003e\n\u003ch3 id=\"shell\"\u003e\u003ccode\u003eshell\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe shell module contains functions for accessing and utilizing the shell.\u003c/p\u003e\n\u003chr\u003e\n\u003ch4 id=\"shellexec\"\u003e\u003ccode\u003eshell.Exec()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003eshell.Exec(command, output?, concurrent?)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eRuns a command or script using \u003ccode\u003esh -c\u003c/code\u003e, sending the output to \u003ccode\u003eSTDOUT\u003c/code\u003e and returning it unless set otherwise. It can also be concurrent.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cp\u003eCode:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003ex\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eshell\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eExec\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;date +\u003c/span\u003e\u003cspan class=\"si\"\u003e%r\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# \u0026#34;12:00:00 AM\u0026#34;\u003c/span\u003e\n\u003cspan class=\"n\"\u003ey\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eshell\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eExec\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;date +\u003c/span\u003e\u003cspan class=\"si\"\u003e%r\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eoutput\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;return\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# \u0026#34;12:00:00 AM\u0026#34;\u003c/span\u003e\n\u003cspan class=\"n\"\u003ez\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eshell\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eExec\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;date +\u003c/span\u003e\u003cspan class=\"si\"\u003e%r\u003c/span\u003e\u003cspan class=\"s2\"\u003e | base64\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eoutput\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;stdout\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# None\u003c/span\u003e\n\u003cspan class=\"n\"\u003eshell\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eExec\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u0026#34;\n\u003c/span\u003e\u003cspan class=\"s2\"\u003e\tsleep 1\n\u003c/span\u003e\u003cspan class=\"s2\"\u003e\tsleep 2\n\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003econcurrent\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"bp\"\u003eTrue\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# Sleeps for two seconds\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eSTDOUT:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003e12:00:00 AM\nMTI6MDA6MDAgQU0K\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch4 id=\"shellgetenv\"\u003e\u003ccode\u003eshell.Getenv()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003eshell.Getenv(key)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eReturns the value of an environment variable\u003c/p\u003e\n\u003cp\u003eExample:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003eshell\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eGetenv\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;TERM\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# \u0026#34;xterm\u0026#34;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ca class=\"btn\" style=\"color: white; background-color: #00ACD7;\" href=\"https://pkg.go.dev/os#Getenv\"\u003e\n \n \u003cspan class=\"iconify icon:cib:go\"\u003e\u003c/span\u003e\u0026nbsp;\n \n Godoc\n\u003c/a\u003e\n\n\u003chr\u003e\n\u003ch4 id=\"shellsetenv\"\u003e\u003ccode\u003eshell.Setenv()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003eshell.Setenv(key, value, onlyIfUnset?)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eSets the value of an environment variable. It can be configured not to set the value if it is already set\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003eshell\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eSetenv\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;X\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;x\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# $X = x\u003c/span\u003e\n\u003cspan class=\"n\"\u003eshell\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eSetenv\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;CC\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;gcc\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# if $CC unset, $CC = gcc\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch4 id=\"shelllookpath\"\u003e\u003ccode\u003eshell.LookPath()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003eshell.LookPath(command)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eReturns the path to the executable of the specified command. Returns \u003ccode\u003e-1\u003c/code\u003e if the command is not found in \u003ccode\u003ePATH\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003eshell\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eLookPath\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;sh\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# \u0026#34;/bin/sh\u0026#34;\u003c/span\u003e\n\u003cspan class=\"n\"\u003eshell\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eLookPath\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;nonExistentCommand\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# -1\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"net\"\u003e\u003ccode\u003enet\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe net module contains various network functions\u003c/p\u003e\n\u003chr\u003e\n\u003ch4 id=\"netdownload\"\u003e\u003ccode\u003enet.Download()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDownload a file from a URL, optionally specifying the filename. It will show progress if the \u003ccode\u003eContent-Length\u003c/code\u003e header is present.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003enet\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eDownload\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;https://minio.arsenm.dev/advmake/0.0.1/advmake-linux-x86_64\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003cspan class=\"n\"\u003enet\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eDownload\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;https://minio.arsenm.dev/advmake/0.0.1/advmake-linux-x86_64\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003efilename\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;advmake\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"log\"\u003e\u003ccode\u003elog\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe log module contains functions to log events at various levels\u003c/p\u003e\n\u003cp\u003eThe available levels are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eInfo\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDebug\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eWarn\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFatal\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch4 id=\"loglevel\"\u003e\u003ccode\u003elog.\u0026lt;Level\u0026gt;()\u003c/code\u003e\u003c/h4\u003e\n\u003cp\u003eDefinition: \u003ccode\u003elog.\u0026lt;Level\u0026gt;(message)\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eLogs a message at the specified level. The fatal level quits after logging the message.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003elog\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eInfo\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Test log\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003cspan class=\"n\"\u003elog\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eFatal\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Error\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch3 id=\"fmt\"\u003e\u003ccode\u003efmt\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe fmt module exposes all the text functions from the golang fmt package except for all the \u003ccode\u003eFprint\u003c/code\u003e and \u003ccode\u003eFscan\u003c/code\u003e functions.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"n\"\u003efmt\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eSprintf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;Print \u003c/span\u003e\u003cspan class=\"si\"\u003e%s\u003c/span\u003e\u003cspan class=\"s2\"\u003e string\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;formatted\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e# \u0026#34;Print formatted string\u0026#34;\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e"},{id:2,href:"/docs/pak/configuration/",title:"Configuration",description:"Configuring pak",content:"\u003cp\u003e\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://ci.appveyor.com/project/moussaelianarsen/pak\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://ci.appveyor.com/api/projects/status/e4yacqd78gkte8a0?svg=true\"/\u003e\u003c/a\u003e\n\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://minio.arsenm.dev/minio/pak\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://img.shields.io/static/v1.svg?label=download\u0026message=binary\u0026color=blue\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003ch3 id=\"config-file\"\u003eConfig file\u003c/h3\u003e\n\u003cp\u003ePak uses a custom config file at \u003ccode\u003e/etc/pak.cfg\u003c/code\u003e. For example, this is what the\napt config looks like:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-cfg\" data-lang=\"cfg\"\u003e\u003cspan class=\"c1\"\u003e# Write the name of the package manager in all lowercase below\u003c/span\u003e\n\u003cspan class=\"na\"\u003eapt\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# Write a comma separated list of commands from the manager below\u003c/span\u003e\n\u003cspan class=\"na\"\u003einstall,remove,update,upgrade,search,download\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# Write \u0026#34;yes\u0026#34; or \u0026#34;no\u0026#34; depending on whether you want to use root\u003c/span\u003e\n\u003cspan class=\"na\"\u003eyes\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# Write command to use for root\u003c/span\u003e\n\u003cspan class=\"na\"\u003esudo\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# Write a comma separated list of shortcuts below\u003c/span\u003e\n\u003cspan class=\"na\"\u003erm,inst\u003c/span\u003e\n\u003cspan class=\"c1\"\u003e# Write a comma separated list of shortcut mappings from the manager below\u003c/span\u003e\n\u003cspan class=\"na\"\u003eremove,install\u003c/span\u003e\n\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis file is read by pak to tell it what to do. The comments above each keyword\nexplain what it\u0026rsquo;s for.\u003c/p\u003e\n\u003cp\u003eHere is a list of all the fields and their uses:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eCommand to invoke the package manager.\u003c/li\u003e\n\u003cli\u003eComma-separated list of commands supported by the package manager.\u003c/li\u003e\n\u003cli\u003eWhether or not to invoke the root command.\u003c/li\u003e\n\u003cli\u003eCommand to use for root invocation (\u003ccode\u003esudo\u003c/code\u003e, \u003ccode\u003edoas\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eComma-separated list of shortcuts for pak to accept\u003c/li\u003e\n\u003cli\u003eComma-separated list of shortcut mappings (what each shortcut sends to the\npackage manager). These do not necessarily need to be in the commands list.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eOnce you have made the config, just place it at \u003ccode\u003e/etc/pak.cfg\u003c/code\u003e and pak will\nautomatically use it.\u003c/p\u003e\n"},{id:3,href:"/docs/",title:"Docs",description:null,content:""},{id:4,href:"/docs/opensend/gui/",title:"GUI",description:"Opensend fyne GUI",content:"\u003cp\u003e\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://ci.appveyor.com/project/moussaelianarsen/opensend\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://ci.appveyor.com/api/projects/status/wrv3bbuujw57578h?svg=true\"/\u003e\u003c/a\u003e\n\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://minio.arsenm.dev/minio/opensend\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://img.shields.io/static/v1.svg?label=download\u0026message=binary\u0026color=blue\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp\u003eThis page assumes you have already installed Opensend. If not, follow the installation\ninstructions on the installation page.\u003c/p\u003e\n\u003ca class=\"btn\" style=\"color: ; background-color: ;\" href=\"../installation\"\u003e\n \n Installation\n\u003c/a\u003e\n\n\u003ch3 id=\"gui-installation\"\u003eGUI Installation\u003c/h3\u003e\n\u003cp\u003eOpensend GUI has been written in golang using \u003ca href=\"https://fyne.io\"\u003efyne\u003c/a\u003e. Its source code can be found here:\u003c/p\u003e\n\u003ca class=\"btn\" style=\"color: white; background-color: green;\" href=\"https://gitea.arsenm.dev/opensend/opensend-gui\"\u003e\n \u003cspan class=\"iconify\" data-icon=\"cib:gitea\"\u003e\u003c/span\u003e \n \u0026nbsp;Opensend GUI\n\u003c/a\u003e\n\n\u003cp\u003eTo download Opensend GUI, run the following command\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003egit clone https://gitea.arsenm.dev/opensend/opensend-gui.git\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eTo build Opensend GUI, \u003ccode\u003ego\u003c/code\u003e must be installed. The process for that is explained in the installation instructions for Opensend. Once \u003ccode\u003ego\u003c/code\u003e is installed, run:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003ego build\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis may take a while as \u003ccode\u003ego\u003c/code\u003e downloads and compiles Opensend GUI and Fyne.\u003c/p\u003e\n\u003cp\u003eOnce the build is complete, there should be a file named \u003ccode\u003eopensend-gui\u003c/code\u003e in the directory. Run this file to open the GUI which should look like this:\u003c/p\u003e\n\u003cimg src=\"/opensend/gui_start.webp\" alt=\"Opensend GUI on start\"\u003e\n"},{id:5,href:"/docs/advmake/installation/",title:"Installation",description:"Installing AdvMake",content:"\u003cp\u003e\u003ca class=\"btn\" style=\"color: white; background-color: green;\" href=\"https://gitea.arsenm.dev/Arsen6331/advmake\"\u003e\n \u003cspan class=\"iconify\" data-icon=\"cib:gitea\"\u003e\u003c/span\u003e \n \u0026nbsp;AdvMake\n\u003c/a\u003e\n\n\u003ca class=\"btn\" style=\"color: white; background-color: OrangeRed;\" href=\"https://www.gitlab.com/moussaelianarsen/advmake\"\u003e\n \u003cspan class=\"iconify\" data-icon=\"fa-brands:gitlab\"\u003e\u003c/span\u003e\n \u0026nbsp;AdvMake\n\u003c/a\u003e\n\u003c/p\u003e\n\u003ch2 id=\"building-from-source\"\u003eBuilding from source\u003c/h2\u003e\n\u003ch3 id=\"downloading\"\u003eDownloading\u003c/h3\u003e\n\u003cp\u003eAdvMake is hosted on my Gitea instance. If that is down, it is also mirrored on Gitlab.\u003c/p\u003e\n\u003cp\u003eTo download AdvMake, you can either use the download button on Gitea or Gitlab, or\nyou can use the git CLI\u003c/p\u003e\n\u003cp\u003eTo clone AdvMake using the CLI, run one of the following commands:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003egit clone https://gitea.arsenm.dev/Arsen6331/advmake.git\nOR\ngit clone https://gitlab.com/moussaelianarsen/advmake.git\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"building\"\u003eBuilding\u003c/h3\u003e\n\u003cp\u003eAdvMake is written in Go. This means go must be installed on your computer. Most\nlinux distros call the package that provides it either \u003ccode\u003ego\u003c/code\u003e or \u003ccode\u003egolang\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOnce go is installed, you can check that it runs by running\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003ego version\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eTo compile AdvMake, run\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003ego build\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"installing\"\u003eInstalling\u003c/h3\u003e\n\u003cp\u003eTo install AdvMake, run:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003esudo install -Dm755 advmake /usr/bin\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eOnce the command completes, AdvMake should be ready and you can run the following to make sure it works:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003eadvmake -h\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e"},{id:6,href:"/docs/opensend/installation/",title:"Installation",description:"Installing opensend",content:"\u003cp\u003e\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://ci.appveyor.com/project/moussaelianarsen/opensend\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://ci.appveyor.com/api/projects/status/wrv3bbuujw57578h?svg=true\"/\u003e\u003c/a\u003e\n\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://minio.arsenm.dev/minio/opensend\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://img.shields.io/static/v1.svg?label=download\u0026message=binary\u0026color=blue\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003ch2 id=\"using-precompiled-binary\"\u003eUsing precompiled binary\u003c/h2\u003e\n\u003cp\u003eOpensend uses continuous integration to compile. You can find the binary by clicking the download binary badge above.\u003c/p\u003e\n\u003ch2 id=\"building-from-source\"\u003eBuilding from source\u003c/h2\u003e\n\u003ch3 id=\"downloading\"\u003eDownloading\u003c/h3\u003e\n\u003cp\u003eOpensend is hosted on Gitea.\u003c/p\u003e\n\u003cp\u003e\u003ca class=\"btn\" style=\"color: white; background-color: green;\" href=\"https://gitea.arsenm.dev/opensend/opensend\"\u003e\n \u003cspan class=\"iconify\" data-icon=\"cib:gitea\"\u003e\u003c/span\u003e \n \u0026nbsp;Opensend\n\u003c/a\u003e\n\n\u003ca class=\"btn\" style=\"color: white; background-color: OrangeRed;\" href=\"https://www.gitlab.com/moussaelianarsen/opensend\"\u003e\n \u003cspan class=\"iconify\" data-icon=\"fa-brands:gitlab\"\u003e\u003c/span\u003e\n \u0026nbsp;Opensend\n\u003c/a\u003e\n\u003c/p\u003e\n\u003cp\u003eTo download opensend, you can either use the download button on one of the above, or\nyou can use the git command\u003c/p\u003e\n\u003cp\u003eTo clone opensend using the command, run the following command:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003egit clone https://gitea.arsenm.dev/opensend/opensend.git\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eNow, you will want to \u003ccode\u003ecd\u003c/code\u003e into the root of this repo before completing the rest\nof these instructions\u003c/p\u003e\n\u003ch3 id=\"building\"\u003eBuilding\u003c/h3\u003e\n\u003cp\u003eSince Opensend is written in go, you will need go installed in order to compile it.\nMost linux distros call the package providing it either \u003ccode\u003ego\u003c/code\u003e or \u003ccode\u003egolang\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOnce go is installed, you can check that it runs by running\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003ego version\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eTo compile Opensend, run the following command:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003emake\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"installing\"\u003eInstalling\u003c/h3\u003e\n\u003cp\u003eTo install opensend, run one of the following commands:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003esudo make install \u003cspan class=\"c1\"\u003e# Linux\u003c/span\u003e\nsudo make install-macos \u003cspan class=\"c1\"\u003e# macOS\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eOnce this command completes, to test whether opensend was installed properly, run\nthis command:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003eopensend -h\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eYou should get the usage for opensend.\u003c/p\u003e\n"},{id:7,href:"/docs/pak/installation/",title:"Installation",description:"Installing pak",content:"\u003cp\u003e\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://ci.appveyor.com/project/moussaelianarsen/pak\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://ci.appveyor.com/api/projects/status/e4yacqd78gkte8a0?svg=true\"/\u003e\u003c/a\u003e\n\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://minio.arsenm.dev/minio/pak\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://img.shields.io/static/v1.svg?label=download\u0026message=binary\u0026color=blue\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003ch2 id=\"using-precompiled-binary\"\u003eUsing precompiled binary\u003c/h2\u003e\n\u003cp\u003ePak uses continuous integration to compile. You can find the binary by clicking the download badge above.\u003c/p\u003e\n\u003ch2 id=\"using-the-aur\"\u003eUsing the AUR\u003c/h2\u003e\n\u003cp\u003eIf you are running an arch-based linux distro, you can use the Arch User Repository\nto install pak. First, make sure the \u003ccode\u003eyay\u003c/code\u003e AUR helper is installed, then run the following:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003eyay -S pak\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"building-from-source\"\u003eBuilding from source\u003c/h2\u003e\n\u003ch3 id=\"downloading\"\u003eDownloading\u003c/h3\u003e\n\u003cp\u003ePak is hosted on my Gitea instance. If that is down, it is also mirrored on Gitlab.\u003c/p\u003e\n\u003cp\u003e\u003ca class=\"btn\" style=\"color: white; background-color: green;\" href=\"https://gitea.arsenm.dev/Arsen6331/pak\"\u003e\n \u003cspan class=\"iconify\" data-icon=\"cib:gitea\"\u003e\u003c/span\u003e \n \u0026nbsp;Pak\n\u003c/a\u003e\n\n\u003ca class=\"btn\" style=\"color: white; background-color: OrangeRed;\" href=\"https://www.gitlab.com/moussaelianarsen/pak\"\u003e\n \u003cspan class=\"iconify\" data-icon=\"fa-brands:gitlab\"\u003e\u003c/span\u003e\n \u0026nbsp;Pak\n\u003c/a\u003e\n\u003c/p\u003e\n\u003cp\u003eTo download pak, you can either use the download button on Gitea or Gitlab, or\nyou can use the git CLI\u003c/p\u003e\n\u003cp\u003eTo clone pak using the CLI, run one of the following commands:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003egit clone https://gitea.arsenm.dev/Arsen6331/pak\nOR\ngit clone https://gitlab.com/moussaelianarsen/pak\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"building\"\u003eBuilding\u003c/h3\u003e\n\u003cp\u003ePak is written in Go. This means go must be installed on your computer. Most\nlinux distros call the package that provides it either \u003ccode\u003ego\u003c/code\u003e or \u003ccode\u003egolang\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eOnce go is installed, you can check that it runs by running\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003ego version\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eTo compile pak, run\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003emake\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThen, you will need to figure out which package manager you have. Here is a list\nof package managers with ready to use configs:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eapt\u003c/li\u003e\n\u003cli\u003eaptitude\u003c/li\u003e\n\u003cli\u003ebrew\u003c/li\u003e\n\u003cli\u003eyay (with wrapper)\u003c/li\u003e\n\u003cli\u003epacman (with wrapper)\u003c/li\u003e\n\u003cli\u003ezypper\u003c/li\u003e\n\u003cli\u003esnap\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf your package manager is not in the list, you can make a config for it. Go to\nthe Configuration page for more information.\u003c/p\u003e\n\u003ch3 id=\"installing\"\u003eInstalling\u003c/h3\u003e\n\u003cp\u003eIf your package manager is in the list, use one of these:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eapt: \u003ccode\u003esudo make aptinstall\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eaptitude: \u003ccode\u003esudo make aptitude\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebrew: \u003ccode\u003esudo make brewinstall\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eyay: \u003ccode\u003esudo make yayinstall\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003epacman: \u003ccode\u003esudo make pacinstall\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ezypper: \u003ccode\u003esudo make zyppinstall\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003esnap: \u003ccode\u003esudo make snapinstall\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ecustom: \u003ccode\u003esudo make installbinonly\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOnce the command completes, unless you\u0026rsquo;re using a custom config, pak should be ready\nand you can run the following to make sure it works:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003epak\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eGo to the Configuration page for instructions on making a custom config, you \u003cstrong\u003emust\u003c/strong\u003e\nhave a config for pak to function.\u003c/p\u003e\n"},{id:8,href:"/docs/opensend/",title:"OpenSend Docs",description:"Documentation for the OpenSend file sharing program",content:""},{id:9,href:"/docs/pak/",title:"Pak Docs",description:"Documentation for the Pak package manager wrapper",content:""},{id:10,href:"/docs/opensend/usage/",title:"Usage",description:"Using opensend",content:"\u003cp\u003e\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://ci.appveyor.com/project/moussaelianarsen/opensend\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://ci.appveyor.com/api/projects/status/wrv3bbuujw57578h?svg=true\"/\u003e\u003c/a\u003e\n\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://minio.arsenm.dev/minio/opensend\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://img.shields.io/static/v1.svg?label=download\u0026message=binary\u0026color=blue\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp\u003eThis page assumes you have already installed Opensend. If not, follow the installation\ninstructions on the installation page.\u003c/p\u003e\n\u003ca class=\"btn\" style=\"color: ; background-color: ;\" href=\"../installation\"\u003e\n \n Installation\n\u003c/a\u003e\n\n\u003ch3 id=\"configuration\"\u003eConfiguration\u003c/h3\u003e\n\u003cp\u003eOpensend allows configuration by TOML and by command line flags. It looks at the following paths for configs in the specified order:\u003c/p\u003e\n\u003ch4 id=\"config-files\"\u003eConfig files\u003c/h4\u003e\n\u003col\u003e\n\u003cli\u003eConfig path from \u003ccode\u003e--config\u003c/code\u003e flag\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~/.config/opensend.toml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e/etc/opensend.toml\u003c/code\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch4 id=\"command-line-flags\"\u003eCommand line flags\u003c/h4\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-text\" data-lang=\"text\"\u003eUsage of opensend:\n -d string\n Data to send\n -dest-dir string\n Destination directory for files or dirs sent over opensend (default \u0026#34;/home/arsen/Downloads\u0026#34;)\n -r Receive data\n -s Send data\n -send-to string\n Use IP address of receiver instead of mDNS\n -skip-mdns\n Skip zeroconf service registration (use if mdns fails)\n -t string\n Type of data being sent\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe purpose of the mdns-skipping flags is to account for the iSH app in iOS, as the mdns resolver and registration fails on it.\u003c/p\u003e\n\u003ch3 id=\"algorithms-and-software-used\"\u003eAlgorithms and software used\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRSA for asymmetric encryption\u003c/li\u003e\n\u003cli\u003eAES for symmetric encryption\u003c/li\u003e\n\u003cli\u003eTar for archiving directories\u003c/li\u003e\n\u003cli\u003eZstandard for compression\u003c/li\u003e\n\u003cli\u003eBase91 for encoding\u003c/li\u003e\n\u003cli\u003eGob for serialization\u003c/li\u003e\n\u003cli\u003eJSON for serialization\u003c/li\u003e\n\u003cli\u003eTCP sockets for transfer\u003c/li\u003e\n\u003cli\u003eZeroconf/mDNS for device discovery\u003c/li\u003e\n\u003c/ul\u003e\n"},{id:11,href:"/docs/pak/usage/",title:"Usage",description:"Using pak",content:"\u003cp\u003e\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://ci.appveyor.com/project/moussaelianarsen/pak\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://ci.appveyor.com/api/projects/status/e4yacqd78gkte8a0?svg=true\"/\u003e\u003c/a\u003e\n\u003ca style=\"margin-left: 1px; margin-right: 1px; display: inline-block\" href=\"https://minio.arsenm.dev/minio/pak\"\u003e\u003cimg style=\"height: 18px; width: 100px;\" src=\"https://img.shields.io/static/v1.svg?label=download\u0026message=binary\u0026color=blue\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp\u003eUsing pak is simple, just run \u003ccode\u003epak\u003c/code\u003e and one of the commands from the config file.\nPak understands partial commands, so these commands will be identical:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003epak in \u0026lt;package\u0026gt;\nOR\npak inst \u0026lt;package\u0026gt;\nOR\npak install \u0026lt;package\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe lack of \u003ccode\u003esudo\u003c/code\u003e is intentional. Pak will not allow running from root by default\nas it already invokes root internally. To bypass this, simply give pak the \u003ccode\u003e-r\u003c/code\u003e flag.\u003c/p\u003e\n\u003cp\u003eUsing shortcuts in pak is just as simple as commands, just run \u003ccode\u003epak\u003c/code\u003e and a shortcut,\nlike this:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003epak rm \u0026lt;package\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e"},];index.add(docs);userinput.addEventListener('input',show_results,true);suggestions.addEventListener('click',accept_suggestion,true);function show_results(){var value=this.value;var results=index.search(value,5);var entry,childs=suggestions.childNodes;var i=0,len=results.length;suggestions.classList.remove('d-none');results.forEach(function(page){entry=document.createElement('div');entry.innerHTML='<a href><span></span><span></span></a>';a=entry.querySelector('a'),t=entry.querySelector('span:first-child'),d=entry.querySelector('span:nth-child(2)');a.href=page.href;t.textContent=page.title;d.textContent=page.description;console.log(page.description);suggestions.appendChild(entry);});while(childs.length>len){suggestions.removeChild(childs[i])}}
function accept_suggestion(){while(suggestions.lastChild){suggestions.removeChild(suggestions.lastChild);}
return false;}}());