Skip to content

Releases: Adwaith-Rajesh/buildme

target run update

09 Sep 06:25
aefa529
Compare
Choose a tag to compare

Targets now runs on empty depends when invoked
(@target(depends=[]))

What's Changed

Full Changelog: v0.3.0...v0.3.1

mtime update

03 Sep 18:00
b4561ef
Compare
Choose a tag to compare

targets now depend on the mtime of the files.
target can now mention the file depends on and the files its creates

more docs here

What's Changed

Full Changelog: v0.2.0...v0.3.0

v0.2.0

03 Sep 06:08
Compare
Choose a tag to compare
  • Now only function that are decorated with @target can be called from the CLI
  • targets can now depend on other targets

soooo.

#!/bin/env buildme
from argparse import Namespace  # for type hinting purposes only
from buildme import CommandRunner, target


cr = CommandRunner(
    shell=False,  # prevents invoking 'mystery' programs (default=False)
    print_cmd=True,  # prints the command that is currently being executed (default=True)
    print_cmd_sep=True,  # prints a separation line between the commands that are ran (default=True)
    exit_non_zero=True,  # exit the buildme execution if a command exits non zero (default=True)
)

# you can override the exit_non_zero using the
# method CommandRunner.set_exit_non_zero(val: bool)


@target(depends=['test'])
def hello(opts: Namespace, _):
    print(opts)
    code = cr.run('echo Hello World')
    print(f'{code=}')


@target()
def test(opts: Namespace, _):
    if getattr(opts, 'release', None) is not None and opts.release == '0':
        print('release is zero')
    print('This from test')


@target()
def foo(_, __):
    print('This is the foo target')


@target()
def bar(_, __):
    print('This is the bar target')


@target(depends=['test'])
def all(_, __): pass

What's Changed

New Contributors

Full Changelog: v0.1.0...v0.2.0

Initial Release

31 Aug 19:49
Compare
Choose a tag to compare

Have you ever wondered what happens if you combine build systems, stupidity and python well you get

BuildMe.

The most simplest, weirdest Build System (:billed_cap: it's just a command runner disguised as a build system) .
Here is a small excerpt from the README on how to use it.

  • Install buildme
pip3 install buildme
  • Create a buildme script

The shebang is IMPORTANT (This thingy -> #!/bin/env buildme)

#!/bin/env buildme
from argparse import Namespace  # for type hinting purposes only
from buildme import CommandRunner


cr = CommandRunner(
    shell=False,  # prevents invoking 'mystery' programs (default=False)
    print_cmd=True,  # prints the command that is currently being executed (default=True)
    print_cmd_sep=True,  # prints a separation line between the commands that are ran
    exit_non_zero=True,  # exit the buildme execution if a command exits non zero
)

# you can override the exit_no_zero using the
# method CommandRunner.set_exit_non_zero(vel: bool)


def hello(opts: Namespace):
    print(opts)
    code = cr.run('echo Hello World')
    print(f'{code=}')


def test(opts: Namespace):
    if opts.release == '0':
        print('release is zero')
    print('This from test')
  • Make it executable
chmod +x ./buildme

And then the fun stuff

execute the script

$ ./buildme hello test --release=0
Namespace(release='0')
================================================================================
[CMD]: echo Hello World
Hello World
================================================================================
code=0
release is zero
This from test