bes-build/README.md

113 lines
2.7 KiB
Markdown

bes-build
=========
**bes-build** is a small bash bes application to build bash program.
the building process simply consist to append shell script files from your `src/` project directory
into a single `dist/project` executable file
since version **0.5** **bes-build** attempt to be a *dependency manager* like `composer` (for php projects) but in a more extra-light way
since version **0.7** **bes-build** is able to manage his own dependencies on self building process
### Install
```
wget https://raw.githubusercontent.com/meta-tech/bes-build/latest/dist/bes-build
bash ./bes-build -i
```
### Usage
```shell
# change directory to your project
cd /home/repo/meta-tech/bes
bes-build
# you can now execute program with :
./dist/bes
# to display help execute :
bes-build -h
```
### Requirements
using **bes-build** script require you to conform to these following rules :
* respect this directory structure :
```pre
project/
|
|--- bes.ini # project information and requirements (optional)
|
|--- dist/project # project build (auto generated by bes-build)
|
|--- src/
| |
| |--- file1.sh
| |--- file2.sh
| | ...
| |--- filen.sh
|
|--- vendor/ # project dependencies (auto generated by bes-build update)
```
* each `src/` shell file require a `shebang` on first line (**#!/bin/bash**)
* `src/main.sh` file is append to the end of the build file
* we strongly recommand you to use function and prefix function name
```shell
bes.install(){
...
}
```
### Dependency Manager
**note:** This functionnality is still in progress
to use **bes-build** like a dependency manager, you need a `bes.ini` file in your application root path
```ini
[require]
bes.echo = 1.4
```
then you can run the `update` command before building
```shell
bes-build update
```
**bes-build** call `git` on a `vendor` directory and clone the require lib
on next build, **bes-build** will append the dependencies to your dist file
### External dependencies
since version 0.6 you can now add external dependencies :
```ini
[require]
test.echo = https://gitea.meta-tech.academy/meta-tech/bes-echo:master
```
### Releasing bes lib
if you intend to release your lib as a bes dependency you must provide a bes.ini file as following :
(example is taken from bes-echo)
```
[project]
vendor = bes
name = echo
version = 1.4
license = "GNU GPL v3"
author = a-Sansara
type = library
homepage = "https://gitea.meta-tech.academy/meta-tech/bes-echo"
description = "bash bes display utility library"
keywords = "bash, bes"
[require]
bes.color = 1.4
```