Initial commit

This commit is contained in:
2025-08-25 20:24:02 +10:00
commit f898fd0609
2 changed files with 99 additions and 0 deletions

20
README.md Normal file
View File

@@ -0,0 +1,20 @@
# dig
Dig is a simple package manager for Ground. At this point in time it is quite basic.
## Installation
You'll need to manually install Ground, and the "request", "file", and "exec" libraries yourself. This will be automated in future.
Once that is done, you can install the dig package manager wherever you need it.
## Usage
`digpkg install pkgname`: Installs the package specified to /usr/lib/ground. Requires root permissions.
`digpkg help`: Shows help.
## Package list
Go to https://ground.chookspace.com/pkgs to see the list. If you've made a Ground library and would like it packaged, please send me an email (max at chookspace dot com).

79
digpkg Executable file
View File

@@ -0,0 +1,79 @@
#!/usr/bin/env ground
# dig package manager
# this is a simple package manager for the Ground programming language
extern "request"
extern "file"
extern "exec"
set &rootURL "https://ground.chookspace.com/pkgs/"
getlistsize *args &size
greater $size 0 &cond
if $cond %checkArgs
stdlnout "Dig package manager"
stdlnout "Type 'dig install pkgname' to install a package or 'dig help' for more information"
end 1
@checkArgs
getlistat *args 0 &instruction
equal $instruction "install" &cond
if $cond %install
equal $instruction "help" &cond
if $cond %help
@install
greater $size 1 &cond
if $cond %installcontinue
stdlnout "Usage: dig install pkgname"
end 1
@installcontinue
# Download the package
getlistat *args 1 &pkgname
stdout "Downloading "
stdlnout $pkgname
add $pkgname ".tar" &pkgfile
add $rootURL $pkgfile &url
add "/tmp/" $pkgfile &tmpstorage
pusharg $url
pusharg $tmpstorage
call !saveContents &status
if $status %downloadSuccess
stdlnout "Download not successful"
end 1
@downloadSuccess
# Extract using tar on the system
stdout "Extrating "
stdlnout $pkgname
add "tar -xf " $tmpstorage &cmd
add $cmd " -C /usr/lib/ground" &cmd
pusharg $cmd
call !exec &status
equal 0 $status &cond
if $cond %extractSuccess
stdlnout "Extraction not successful"
end 1
@extractSuccess
# Report success to the user
stdlnout "Success!"
end 0
@help
stdlnout ""
end 0