Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vascocosta/bargo
BASIC build system and package manager.
https://github.com/vascocosta/bargo
agon agon-console8 agon-light agonlight agonlight2 basic basic-programming build build-system build-tool console8 ez80 package-manager programming toolchain z80
Last synced: about 1 month ago
JSON representation
BASIC build system and package manager.
- Host: GitHub
- URL: https://github.com/vascocosta/bargo
- Owner: vascocosta
- License: mit
- Created: 2024-04-04T20:41:10.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-04-18T11:37:16.000Z (8 months ago)
- Last Synced: 2024-04-24T04:38:51.656Z (8 months ago)
- Topics: agon, agon-console8, agon-light, agonlight, agonlight2, basic, basic-programming, build, build-system, build-tool, console8, ez80, package-manager, programming, toolchain, z80
- Language: Rust
- Homepage:
- Size: 35.2 KB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Bargo
BASIC build system and package manager.
Bargo is a tool to make it simpler to program in the BASIC programming language. Early versions of BASIC, like for instance BBC BASIC up to version 4 required the user to include line numbers and didn't allow the code to be split into different files, one for each dependency/module. Bargo abstracts these and other limitations from the programmer, allowing to code without using line numbers and spliting the code into multiple files, one per dependency/module.
## Features
* Automatic line numbering
* Customisable line numbering
* Customisable newline chars
* Dependency/module management
* Project cleaning
* Project creation
* Project build
* Project tracking with Git## Build
To build `bargo` you need the `Rust toolchain` as well as these `dependencies`:
* serde = "1.0.197"
* toml = "0.8.12"Follow these steps to fetch and compile the source of `bargo` and its `dependencies`:
```
git clone https://github.com/vascocosta/bargo.git
cd bargo
cargo build --release
```## Install
Simply copy `bargo/target/release/bargo` to a folder in your path (ex: `$HOME/bin`).
## Usage example
Bargo allows you to create a project template for your BASIC program, so that editing your code is simpler.
Follow the steps below to create a new project template, cd into the project, edit some files with your favourite editor (replace $editor with your favourite editor) and finally build it.
```bash
bargo new age
cd age
$editor Bargo.toml
$editor src/main.bas
$editor src/utils.bas
bargo build
```1. Create a new project called `age`.
2. Change the current folder to your project folder called `age`.
3. Edit `Bargo.toml`, which is the configuration file of your project.
4. Edit `src/main.bas` which by convention is where you define your main program.
5. Edit `src/utils.bas` which is a dependency/module used by your main program.
6. Build your project.The final step builds your project by merging `src/main.bas` with all the dependencies/modules your project uses into a single file called `age.bas` at the root of your project folder and automatically numbering the lines for you.
In this simple example there's only `src/utils.bas`, but you could use any number of dependencies/modules. For each dependency/module you should create a bas file with the name of that dependency/module inside `src` and add the name to the `[dependencies]` section of `Bargo.toml`, plus its version. For now the version isn't important, but it will be used in the future. For example, if you were to add another dependency/module called `math`, you would need to create `src/math.bas` with math related procedures/functions and then add `math = "0.1.0"` to `Bargo.toml` under the `[dependencies]` section.
Below you can see a listing of all the files used in this example, plus the final source code of `age.bas` that is generated for you.
### Bargo.toml
Your BASIC project is configured by editing `age/Bargo.toml`:
```toml
[package]
name = "age"
carriage_return = true
numbering = 10
version = "0.1.0"[dependencies]
utils = ""
```### src/main.bas
Your main source file is created by editing `age/src/main.bas`:
```basic
PROC_INIT_SCREEN
PRINT "Hello!"
PRINT "What is the current year?"
INPUT CURRENT_YEAR%
PRINT "What year were you born in?"
INPUT BIRTH_YEAR%
AGE% = FN_CALCULATE_AGE%(CURRENT_YEAR%, BIRTH_YEAR%)
PRINT "You are " + STR$(AGE%) + " years old."
END
```### src/utils.bas
Your utils dependency is created by editing `age/src/utils.bas`:
```basic
DEF PROC_INIT_SCREEN
MODE 3
CLS
ENDPROC
:
DEF FN_CALCULATE_AGE%(CURRENT_YEAR%, BIRTH_YEAR%)
= CURRENT_YEAR% - BIRTH_YEAR%
ENDDEF
```### age.bas
Your final source code `age.bas` is generated by `bargo build`:
```basic
10 PROC_INIT_SCREEN
20 PRINT "Hello!"
30 PRINT
40 PRINT "What is the current year?"
50 INPUT CURRENT_YEAR%
60 PRINT "What year were you born in?"
70 INPUT BIRTH_YEAR%
80 AGE% = FN_CALCULATE_AGE%(CURRENT_YEAR%, BIRTH_YEAR%)
90 PRINT "You are " + STR$(AGE%) + " years old."
100 END
110 :
120 REM ============================================================================
130 REM IMPORT UTILS.BAS
140 REM ============================================================================
150 :
160 DEF PROC_INIT_SCREEN
170 MODE 3
180 CLS
190 ENDPROC
200 :
210 DEF FN_CALCULATE_AGE%(CURRENT_YEAR%, BIRTH_YEAR%)
220 = CURRENT_YEAR% - BIRTH_YEAR%
230 ENDDEF
```