Skip to content

zatarain/jarnik

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 

Repository files navigation

Jarník Build System

Overview

The idea is create a self-contained command line build system interface in order to perform common tasks in software development and deployment process through docker containers.

The name for this build system will be Jarník, inspired on Vojtěch Jarník (1897 - 1970). Janik was a czech mathematician who published (1930) an algorithm to find the Minimun Spaning Tree (MST) in a connected graph.

In order to avoid confusions with the terms packages, name space, modules, etcetera, we will call "legos" to the repositories.

Tenets

Short term

  • The build system must be runnable over any *NIX distribution including distributions supported by Windows Subsystem for Linux (WSL).
  • The build system will be documented keeping the *NIX syntax.
  • The build system should be independent of any specific shell, then we try to keep POSIX shell syntax as possible.
  • The build system won't never require any dependency to run persé.
  • Installation of the build system by only running the shell built
  • The developer will be able to create a new project folder
  • Importing legos from git sources like bitbucket/lattephp through public ssh key.
  • Build the “legos” needed to deploy in one environment.
  • Perform unit testing over the legos.
  • Clean the “legos” already created before.
  • Attach project legos to environments performing overrides in the environment.
  • Update project legos in attached environments.
  • Detach an environment to the project legos, undoing the overrides in order to return to the original environment state.
  • Provide a short way to release changes, that implies building, testing and attaching/updating and environment.
  • Remove legos from the project in safe way.
  • Post a Code Review with the latest and non-merged commits generating a pull request.
  • Provide a way to set the dependency graph to work.
  • List all the legos in the project.
  • Provide a way to check the code style.
  • Provide a way to sanitize the source code before build.
  • Provide a way to run a shell command over the legos.
  • Provide a way to remove the build system from the host.
  • Provide a way to upgrade the build system.
  • All subcommands must be accept parameter in *NIX CLI way and Windows CLI way, we mean prefixed with dash “-” and slash “/” respectively, when the parameter needs be explicitly named.
  • Have fun!

Long term

  • Remote development support.
  • Provide a friendly web user interface to build and merge dependency graphs.
  • Support for several bitbucket sources.
  • Support for several git sources, like github, gitfarm, etcetera.
  • Support for several version control systems like Subversion (svn) and Mercurial (hg).

TOTALLY out of scope

  • Specific support for MacOS X or any Apple OS, if the Jarnik works as it is, that is fine and enough, we won't implement any specific stuff for MacOS X development, for instance taking care of .DS_Store hidden directories.
  • Java build support. The only way to support Java will be for Android Applications and really carefully reviewed.

Expected Syntax

jarnik <command> [params]

Installation

  • Command: install
  • Description: Installs the latest version of Jarník Build System in the Operating System.
  • Syntax: jarnik install [path]
  • Parameters:
    • path Optional. Destination folder to install. By default, it will be /usr/bin. In that case, super user privileges may be required.
  • Examples:
sudo jarnik install
jarnik install ~/bin

Upgrade

  • Command: upgrade
  • Description: Upgrades Jarník Build System in the Operating System to the latest version available in the respository.
  • Syntax: jarnik upgrade
  • Parameters:
    • None, but super user privileges may be required.
  • Examples:
sudo jarnik upgrade
jarnik upgrade

Uninstallation

  • Command: uninstall
  • Description: Removes Jarník Build System from the Operating System.
  • Syntax: jarnik uninstall
  • Parameters:
    • None, but super user privileges may be required.
  • Examples:
sudo jarnik uninstall
jarnik uninstall

Help

  • Command: help
  • Description: Create a new project base structure.
  • Syntax: jarnik help [command]
  • Parameters:
    • command Optional. Specific command to view documentation. A help summary for all commands will be shown if is omitted.
  • Examples:
jarnik help
jarnik help new

Create a new project

  • Command: new
  • Description: Create a new project base structure.
  • Syntax: jarnik new [path/]name
  • Parameters:
    • path Optional. Path to create the new project folder. Current directory will be used by default.
    • name Required. Name of the project folder.
  • Examples:
jarnik new myproject
jarnik new mystuff/myproject

About

Jarník Build System

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages