add "build" command
This commit is contained in:
@@ -8,7 +8,7 @@ There is also Github mirror of Comet if you would prefer that: https://github.co
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
### Installing a Package
|
### Installing a Package
|
||||||
To install a package type:
|
To install a rock type:
|
||||||
```
|
```
|
||||||
neb install packageName
|
neb install packageName
|
||||||
```
|
```
|
||||||
@@ -16,12 +16,13 @@ Or if you wish to install a particular version:
|
|||||||
```
|
```
|
||||||
neb install packageName@1.0.0
|
neb install packageName@1.0.0
|
||||||
```
|
```
|
||||||
(replace the number with the version number of the package you want to install)
|
(replace the number with the version number of the rock you want to install)
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
### 1.2.0
|
### 1.2.0
|
||||||
- Add support for modules written in Comet
|
- Add support for modules written in Comet
|
||||||
- Made it so that you don't have to build Comet to install the headers
|
- Made it so that you don't have to build Comet to install the headers
|
||||||
|
- Added the `neb build` command to make it easier to develop rocks
|
||||||
|
|
||||||
### 1.1.0
|
### 1.1.0
|
||||||
- Switched from getting the latest commit of packages to getting the latest release
|
- Switched from getting the latest commit of packages to getting the latest release
|
||||||
|
|||||||
33
neb/src/build.py
Normal file
33
neb/src/build.py
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
from .util import libs_dir, print_error_message
|
||||||
|
from .console import console
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import glob
|
||||||
|
import pathlib
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
def build(args):
|
||||||
|
comet_libs_dir = libs_dir()
|
||||||
|
|
||||||
|
folder_path = pathlib.Path(args.path).resolve()
|
||||||
|
folder_name = folder_path.name
|
||||||
|
|
||||||
|
out_path = os.path.join(comet_libs_dir, f"{folder_name}.cometlib")
|
||||||
|
|
||||||
|
c_files = glob.glob(f"{args.path}/*.c", recursive=True)
|
||||||
|
if len(c_files) == 0:
|
||||||
|
print_error_message(f"No C files were found in that directory! [d white]({folder_name})[/d white]")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
with console.status("Building", spinner="moon") as status:
|
||||||
|
try:
|
||||||
|
subprocess.run(
|
||||||
|
["gcc"] + c_files + ["-fPIC", "-shared", "-Wl,-undefined,symbol_lookup", "-o", out_path] + args.gcc_args,
|
||||||
|
check=True
|
||||||
|
)
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
print_error_message(f"Failed to install [b]{folder_name}[/]: build failed!")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
console.log(f"[b][:white_check_mark:] Installed [green]{folder_name}[/green]![/b]")
|
||||||
@@ -7,6 +7,7 @@ from .pull import pull
|
|||||||
from .list import list_packages
|
from .list import list_packages
|
||||||
from .uninstall import uninstall
|
from .uninstall import uninstall
|
||||||
from .search import search
|
from .search import search
|
||||||
|
from .build import build
|
||||||
|
|
||||||
|
|
||||||
def main() -> int:
|
def main() -> int:
|
||||||
@@ -31,6 +32,11 @@ def main() -> int:
|
|||||||
uninstall_cmd = sub_parsers.add_parser(name="uninstall", description="uninstall an installed rock(s)")
|
uninstall_cmd = sub_parsers.add_parser(name="uninstall", description="uninstall an installed rock(s)")
|
||||||
uninstall_cmd.add_argument("names", help="name of the rocks to uninstall", nargs="+")
|
uninstall_cmd.add_argument("names", help="name of the rocks to uninstall", nargs="+")
|
||||||
|
|
||||||
|
# build command
|
||||||
|
build_cmd = sub_parsers.add_parser(name="build", description="build a module")
|
||||||
|
build_cmd.add_argument("path", help="the path to build from")
|
||||||
|
build_cmd.add_argument("gcc_args", nargs=argparse.REMAINDER, help="args to give to gcc")
|
||||||
|
|
||||||
# search command
|
# search command
|
||||||
search_cmd = sub_parsers.add_parser(name="search", description="search for rocks")
|
search_cmd = sub_parsers.add_parser(name="search", description="search for rocks")
|
||||||
search_cmd.add_argument("query", help="search query")
|
search_cmd.add_argument("query", help="search query")
|
||||||
@@ -55,6 +61,8 @@ def main() -> int:
|
|||||||
uninstall(args)
|
uninstall(args)
|
||||||
case "search":
|
case "search":
|
||||||
search(args)
|
search(args)
|
||||||
|
case "build":
|
||||||
|
build(args)
|
||||||
|
|
||||||
# really feeling like a C programmer lmao
|
# really feeling like a C programmer lmao
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
Reference in New Issue
Block a user