parent
6cd9ff8083
commit
eb0bcaf535
14
.drone.yml
14
.drone.yml
@ -19,7 +19,7 @@ pipeline:
|
||||
- apt-get update -q
|
||||
- apt-get install -qy -t xenial g++-5
|
||||
- apt-get install -qy cmake pkg-config
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev asciidoc
|
||||
- rm -rf build && mkdir -p build && cd build
|
||||
- cmake -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
- make VERBOSE=1
|
||||
@ -37,7 +37,7 @@ pipeline:
|
||||
- rm /etc/apt/apt.conf.d/docker-clean
|
||||
- apt-get update -q
|
||||
- apt-get install -qy g++-6 cmake pkg-config
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev asciidoc
|
||||
- apt-get install -qy dpkg-dev d-shlibs rpm file wget
|
||||
- rm -rf build && mkdir -p build && cd build
|
||||
- cmake -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
@ -66,7 +66,7 @@ pipeline:
|
||||
- apt-get update -q
|
||||
- apt-get install -qy -t xenial g++-7
|
||||
- apt-get install -qy cmake pkg-config
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev asciidoc
|
||||
- rm -rf build && mkdir -p build && cd build
|
||||
- cmake -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
- make VERBOSE=1
|
||||
@ -93,7 +93,7 @@ pipeline:
|
||||
- apt-get update -q
|
||||
- apt-get install -qy -t xenial g++-8
|
||||
- apt-get install -qy cmake pkg-config
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev asciidoc
|
||||
- rm -rf build && mkdir -p build && cd build
|
||||
- cmake -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
- make VERBOSE=1
|
||||
@ -113,7 +113,7 @@ pipeline:
|
||||
- rm /etc/apt/apt.conf.d/docker-clean
|
||||
- apt-get update -q
|
||||
- apt-get install -qy clang cmake pkg-config
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev asciidoc
|
||||
- rm -rf build && mkdir -p build && cd build
|
||||
- cmake -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
- make VERBOSE=1
|
||||
@ -136,7 +136,7 @@ pipeline:
|
||||
- apt-get update -q
|
||||
- apt-get install -qy -t stretch-backports clang-5.0
|
||||
- apt-get install -qy cmake pkg-config
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev asciidoc
|
||||
- rm -rf build && mkdir -p build && cd build
|
||||
- cmake -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
- make VERBOSE=1
|
||||
@ -159,7 +159,7 @@ pipeline:
|
||||
- apt-get update -q
|
||||
- apt-get install -qy -t stretch-backports clang-6.0
|
||||
- apt-get install -qy cmake pkg-config
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev
|
||||
- apt-get install -qy libconfig++-dev libxdg-basedir-dev asciidoc
|
||||
- rm -rf build && mkdir -p build && cd build
|
||||
- cmake -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
- make VERBOSE=1
|
||||
|
@ -14,7 +14,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
set(CMAKE_CXX_FLAGS_DEBUG
|
||||
"${CMAKE_CXX_FLAGS_DEBUG} -Wall -pedantic -Wextra -g -Og -fno-omit-frame-pointer")
|
||||
"${CMAKE_CXX_FLAGS_DEBUG} -Wpedantic -Wall -Wextra -g -Og -fno-omit-frame-pointer")
|
||||
|
||||
include_directories(${PROJECT_BINARY_DIR})
|
||||
include_directories(${LIBXDG_BASEDIR_INCLUDE_DIRS})
|
||||
@ -36,3 +36,13 @@ target_link_libraries(${CMAKE_PROJECT_NAME}
|
||||
"-lstdc++fs")
|
||||
install(TARGETS ${CMAKE_PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
install(FILES README.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||
|
||||
add_custom_command(OUTPUT "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.1"
|
||||
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}"
|
||||
DEPENDS "${CMAKE_SOURCE_DIR}/${CMAKE_PROJECT_NAME}.1.adoc"
|
||||
COMMAND ${CMAKE_SOURCE_DIR}/build_manpage.sh
|
||||
ARGS ${PROJECT_VERSION})
|
||||
add_custom_target(run ALL
|
||||
DEPENDS "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.1")
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.1
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
||||
|
35
README.md
35
README.md
@ -7,40 +7,7 @@ newer than the source file, the compilation is skipped.
|
||||
|
||||
## Usage
|
||||
|
||||
Use `#!/usr/bin/env compilescript` as shebang and write the compiler arguments
|
||||
in the second line with the prefix: `//compilescript:`.
|
||||
|
||||
You can delete old cache files with `--cleanup`.
|
||||
|
||||
### Example
|
||||
|
||||
```C++
|
||||
#!/usr/bin/env compilescript
|
||||
//compilescript: -Wall -pedantic -Wextra
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using std::cout;
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
cout << "Hello world!\n";
|
||||
cout << argv[1] << '\n';
|
||||
}
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The configuration file is in `${XDG_CONFIG_HOME}/compilescript.cfg`. It will be
|
||||
generated on first run.
|
||||
|
||||
### Example config
|
||||
|
||||
```CFG
|
||||
compiler = "g++";
|
||||
clean_after_hours = 720;
|
||||
cache_dir = "/home/user/.cache/compilescript";
|
||||
```
|
||||
Have a look at the [manpage](https://schlomp.space/tastytea/compilescript/src/branch/master/compilescript.1.adoc).
|
||||
|
||||
## Install
|
||||
|
||||
|
12
build_manpage.sh
Executable file
12
build_manpage.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
name="compilescript"
|
||||
|
||||
if [ -n "${1}" ]; then
|
||||
dir="$(dirname ${0})"
|
||||
cp -vf "${dir}/${name}.1.adoc" .
|
||||
sed -Ei "s/(Revision: +)[0-9]+\.[0-9]\.[0-9]/\1${1}/" "${name}.1.adoc"
|
||||
a2x --doctype manpage --format manpage --no-xmllint "${name}.1.adoc"
|
||||
else
|
||||
echo "usage: ${0} VERSION" >&2
|
||||
fi
|
79
compilescript.1.adoc
Normal file
79
compilescript.1.adoc
Normal file
@ -0,0 +1,79 @@
|
||||
= compilescript(1)
|
||||
:Author: tastytea
|
||||
:Email: tastytea@tastytea.de
|
||||
:Date: 2019-01-25
|
||||
:Revision: 0.0.0
|
||||
:man source: compilescript
|
||||
:man version: {revision}
|
||||
:man manual: General Commands Manual
|
||||
|
||||
== NAME
|
||||
|
||||
compilescript - allows you to execute files from compiled languages as scripts.
|
||||
|
||||
== SYNOPSIS
|
||||
|
||||
*compilescript* [_file_|_--cleanup_] [_arguments_]
|
||||
|
||||
== DESCRIPTION
|
||||
|
||||
compilescript allows you to execute files from compiled languages as scripts.
|
||||
By default it uses g++.
|
||||
|
||||
It compiles the source file, stores the binary in
|
||||
`${XDG_CACHE_HOME}/compilescript/` and executes it. If the binary in cache is
|
||||
newer than the source file, the compilation is skipped.
|
||||
|
||||
Use `#!/usr/bin/env compilescript` as shebang and write the compiler arguments
|
||||
in the second line with the prefix: `//compilescript:`.
|
||||
|
||||
The configuration file is in `${XDG_CONFIG_HOME}/compilescript.cfg`. It will be
|
||||
generated on first run.
|
||||
|
||||
== OPTIONS
|
||||
|
||||
[format="csv",frame="none",grid="none",cols="2"]
|
||||
|======
|
||||
*--cleanup*,Delete old cache files.
|
||||
|======
|
||||
|
||||
== EXAMPLE
|
||||
|
||||
=== Example script
|
||||
|
||||
[source,cpp]
|
||||
----
|
||||
#!/usr/bin/env compilescript
|
||||
//compilescript: -Wall -pedantic -Wextra
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using std::cout;
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
cout << "Hello world!\n";
|
||||
cout << argv[1] << '\n';
|
||||
}
|
||||
----
|
||||
|
||||
=== Example config
|
||||
|
||||
[source,conf]
|
||||
----
|
||||
compiler = "g++";
|
||||
clean_after_hours = 720;
|
||||
cache_dir = "/home/user/.cache/compilescript";
|
||||
----
|
||||
|
||||
== FILES
|
||||
|
||||
* Configuration file: `${XDG_CONFIG_HOME}/compilescript.cfg`
|
||||
* Cache: `${XDG_CACHE_HOME}/compilescript/`
|
||||
|
||||
`${XDG_CONFIG_HOME}` is usually `~/.config` and `${XDG_DATA_HOME}` is usually
|
||||
`~/.cache`
|
||||
|
||||
== REPORTING BUGS
|
||||
|
||||
Bugtracker: https://schlomp.space/tastytea/compilescript/issues
|
Reference in New Issue
Block a user