https://github.com/teejay69/version
Software Release Builder
https://github.com/teejay69/version
backup building building-automation compiling cpp release-automation
Last synced: 3 months ago
JSON representation
Software Release Builder
- Host: GitHub
- URL: https://github.com/teejay69/version
- Owner: TeeJay69
- License: other
- Created: 2024-04-16T00:45:47.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-22T12:51:06.000Z (10 months ago)
- Last Synced: 2025-01-21T10:13:30.870Z (9 months ago)
- Topics: backup, building, building-automation, compiling, cpp, release-automation
- Language: C++
- Homepage:
- Size: 2.53 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: ReadME.md
- Changelog: changelog.md
Awesome Lists containing this project
README
# Version
**A simple yet powerful C++ command-line tool for compiling, running, and releasing your projects.**
Originally called **versiontool**, this project has evolved into a robust utility that I regularly use to manage my builds and project releases.
## Table of Contents
1. [Features](#features)
2. [Requirements](#requirements)
3. [Installation](#installation)
4. [Usage](#usage)
- [General Help](#general-help)
- [Compile](#compile)
- [Run](#run)
- [Release](#release)
- [Config](#config)
5. [Configuration (.versiontool)](#configuration-versiontool)
6. [Contributing](#contributing)
7. [License](#license)
## Features
- **Compile and Run**: Easily compile your source code and execute it with optional arguments.
- **Release Management**: Create a new version release folder along with an optional installer package if an Inno Setup (ISS.iss) file is present.
- **Configuration File**: Store file paths, compile commands, aliases, and more in a dedicated `.versiontool` file.
- **Smart Execution**: Automatically detect output file names from common compiler flags (like `-o` or `/out:`).
- **Alias Support**: Generate `.bat` alias scripts, making it simpler to call your executable with arguments.
- **Colorful Console Output** (Windows): Uses Windows API to enable virtual terminal colors.
## Requirements
- **Operating System**: Primarily tested on Windows (uses Windows-specific headers and commands).
- **Compiler**: A C++17 (or later) compiler.
- **Inno Setup** (optional): Only required if you want to build an installer via `release` and you have an `ISS.iss` file.
- **CMake or Visual Studio project** (optional): This tool is compiled in any environment supporting standard C++17 or later.> **Note**: The application depends on Windows console commands (like `cmd /c`, `taskkill`, etc.) and certain Windows APIs (like `GetModuleFileNameW`). It may require additional modifications to work on other platforms.
## Installation
1. **Clone this Repository**
```bash
git clone https://github.com/your-username/version.git
cd version
```2. **Build the Executable**
- Using a **Visual Studio** project: Import the files into your project and build in Release mode.
- Using **CMake** (example):
```bash
mkdir build && cd build
cmake ..
cmake --build . --config Release
```
- Or simply compile from the command line (Windows example):
```bash
cl /std:c++17 /EHsc main.cpp /Fe:version.exe
```3. **Place the Executable in Your PATH** (optional)
- Copy the generated `version.exe` to a folder that’s in your system `PATH`, or
- Update your `PATH` environment variable to include the folder where `version.exe` is located.
## Usage
Below are the essential commands and options. After building, use `version [command] [options]`.
### General Help
```bash
version --help
```
Displays usage instructions, available commands, and options.### Compile
```bash
version compile [--run/-r] [--args/-a "command args"] [COMMAND]
```
- **`version compile`** uses the compile command specified in **`.versiontool`** by default.
- **`--run` / `-r`** immediately runs the compiled program.
- **`--args` / `-a`** passes arguments to the program when running.
- **`COMMAND`** if provided, overrides the default compile command in `.versiontool`.### Run
```bash
version run [PATH_TO_EXE] [ARGS]
```
- Runs an executable.
- If no path is specified, it attempts to run the output from the compile command defined in **`.versiontool`**.### Release
```bash
version release [VERSION_NAME]
```
- Creates a new version directory under `Versions/`.
- Compiles the project, copies the compiled binaries and any files/directories listed in **`.versiontool`** to the newly created version folder.
- If an `ISS.iss` file is present, it updates the version in that file, attempts to build an installer, and copies the resulting `-Setup.exe` to the new version folder.### Config
```bash
version config
```
- Displays the contents of your `.versiontool` config file.```bash
version config --raw
```
- Opens **`.versiontool`** in your default text editor (attempts VS Code, Vim, and Notepad, in that order).
## Configuration (.versiontool)
This tool relies on a config file named **`.versiontool`** in the same directory as the executable or in your project’s root folder. It typically contains sections:
1. **Files and directories included in version:**
List every file or directory to copy to the release folder.
```
Files and directories included in version:
[file or folder path 1]
[file or folder path 2]
----------
```
2. **Compile command:**
A single line specifying how to compile your project.
```
Compile command:
cl /std:c++17 /EHsc main.cpp /Fe:MyProgram.exe
----------
```
3. **Alias:**
Each alias line creates a corresponding `.bat` file in the release folder pointing to your compiled exe.
```
Alias:
myprogram
another_alias
----------
```> **Note**: If `.versiontool` does not exist, the tool will prompt you to create one.
## Contributing
Contributions, bug reports, and feature requests are welcome!
1. **Fork** the repository
2. **Create** a new branch for your feature/fix
3. **Commit** your changes and submit a **Pull Request**If you find a bug or have a suggestion, feel free to open an issue with details and steps to reproduce.
## License
see [License](Copyright-Disclaimer.md)