Skip to main content

Python-based build system.

Project description

dan

Do Anything Now

dan is a build system inspired from GNU make, cmake, meson, ... but only in python.

It is mostly designed to be easy to use, it comes with its vscode extension available on the marketplace.

It also provide a packaging system called dan.io, that will fetch and build 3rd party libraries.

Install

dan is available on pip:

pip install dan-build

Features

Generators

Generators are python functions that generates an output:

from dan import generator

@generator(output='hello.txt', dependencies=['source.jinja'])
def hello(self):
    env = jinja2.Environment(loader=jinja2.FileSystemLoader(self.source_path))
    template = env.get_template('source.jinja')
    print(template.render({'data': 'hello'}), file=open(self.output, 'w'))

They can be async:

@generator(output='hello-cpy.txt', dependencies=[hello])
async def hello_cpy(self):
    assert hello.up_to_date
    async with aiofiles.open(hello.output, 'r') as src:
        async with aiofiles.open(self.output, 'w') as dst:
            await dst.write(await src.read())

C/CXX

Libraries/Executables

from dan.cxx import Library, Executable
class MyLib(Library):
    name = 'my-lib'
    sources = ['src/my-lib.cpp']
    public_includes = ['include']

class MyExe(Executable):
    name = 'my-exe'
    sources = ['src/main.cpp']
    dependencies = [MyLib]

Packages

dan.io is the main (default) package source repository (custom repositories are supported by editting ~/.dan/repositories.json), documentation comming soon.

class MyExe(Executable):
    name = 'my-exe'
    sources = ['src/main.cpp']
    dependencies = ['boost:headers@dan.io >= 1.82']

dan cli usage

dan is the main executable to build your project, it can build, test, list targets/test, ...

dan --help
Usage: dan [OPTIONS] COMMAND [ARGS]...

Options:
  --version           Show the version and exit.
  -q, --quiet         Dont print informations (errors only)
  -v, --verbose       Pring debug informations
  -j, --jobs INTEGER  Maximum jobs
  --help              Show this message and exit.

Commands:
  build            Build targets
  clean            Clean generated stuff
  code             VS-Code specific commands
  configure        Configure dan project
  install          Install targets
  ls               Inspect stuff
  run              Run executable(s)
  scan-toolchains  Scan system toolchains
  test             Run tests
  uninstall        Uninstall previous installation

Toolchain scan

dan scan-toolchains [-s <env-script>]

Configuration

dan configure [-B <build_path>] [-S <source_path>] [-t <toolchain>] [-s <setting>=<value>] [-o <option>=<value>]

Build

dan build [-B <build_path>] [-v] [--for-install] [TARGETS]...

Install

Install targets marked with install = True property to the install.destination setting.

dan install [-B <build_path>] [TARGETS]... [user|dev]

Settings:

  • install.destination: The install destination (default: /usr/local).
  • install.runtime_prefix: Executables installation prefix (default: bin).
  • install.libraries_prefix: Libraries installation prefix (default: lib).
  • install.includes_prefix: Includes installation prefix (default: include).
  • install.data_prefix: Data files installation prefix (default: share).
  • install.project_prefix: !!! NOT USED YET !!! Project prefix (default: None).

dan-io cli usage

dan-io is a secondary utility to interract with package management system.

$ dan-io --help 
Usage: dan-io [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  ls      Inspect stuff
  search  Search for NAME in repositories
$ dan-io ls --help
Usage: dan-io ls [OPTIONS] COMMAND [ARGS]...

  Inspect stuff

Options:
  --help  Show this message and exit.

Commands:
  libraries     List available libraries
  repositories  List available repositories
  versions      Get LIBRARY's available versions

Auto completion

bash and zsh completions are currently supported:

  • bash:

    for script in ~/.local/etc/bash_completion.d/*.sh; do
        source ${script}
    done
    
  • ksh:

    for script in ~/.local/etc/ksh_completion.d/*.sh; do
        source ${script}
    done
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dan-build-0.2.3.tar.gz (66.9 kB view details)

Uploaded Source

Built Distribution

dan_build-0.2.3-py3-none-any.whl (81.8 kB view details)

Uploaded Python 3

File details

Details for the file dan-build-0.2.3.tar.gz.

File metadata

  • Download URL: dan-build-0.2.3.tar.gz
  • Upload date:
  • Size: 66.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for dan-build-0.2.3.tar.gz
Algorithm Hash digest
SHA256 2cdf1df46d84e9167202b1cd42001b00c87cdd257ad6849c720a1cd63e325f39
MD5 f8dd60faf838bd763d27d4da9a5ddb8a
BLAKE2b-256 97aa1702abbbe9134f061cc717c27cf546bef5853b867cfd4aebc93af13debff

See more details on using hashes here.

File details

Details for the file dan_build-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: dan_build-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 81.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for dan_build-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 94463fd329d6b11071c5b2e1f6c64cc116963a9f3537e52823bdf10e48ee957b
MD5 4aa1da727e3d0cae0437c5cca384f4f1
BLAKE2b-256 f4af15c642b912cc6e23ee10b3b58a72ba90ac2311a37e30512b0070d9b05514

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page