Coder Social home page Coder Social logo

rlpowell / sm Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sm/sm

1.0 2.0 0.0 5.07 MB

S{cripting,ystem,tack} Management (SM) Framework (Core)

Home Page: http://bdsm.beginrescueend.com/

License: Other

Shell 2.96% Perl 96.77% Ruby 0.26%

sm's Introduction

S{cripting,ystem,tack} Management (SM) Framework (Core)

SM is a system scripting and DSL & management framework for managing software, systems and stacks!

Goal

SM delivers an extensible scripting framework providing a very robust DSL. A primary tenet of SM is that it must handle as much pain as possible, so you don't have to! With SM's DSL modules, you can quickly create your own high-quality extensions, and expose their commands through SM's flexible command line interface (CLI).

Architecture

SM itself is a scripting framework that enables very rich DSL sets known as modules. SM lets you use the DSL to painlessly write powerful 'extensions', which are essentially named sets of scripts (directories!). With SM, you'll find you can install and manage a multitude of extensions - and even entire sets of extensions - providing unprecedented levels of control and automation productivity that are unleashed by the creative abilities of SM's energetic community of extension authors :)

Creating Extensions

There are only a few requirements when creating your own SM extensions. The extension must live in a dedicated directory. Within this directory are (at least) the subdirectory bin/, containing at least one executable file called 'help'.

Additionally, in the root of the extension directory you must include a text file called VERSION, with a version number that follows semantic versioning convention (http://semver.org/); that is, in the format of X.Y.Z, where X,Y and Z are positive integers.

An extension must also have a README file, in which you should explain your extension's primary purpose, and any special considerations to be kept in mind when using it.

The contents of the bin directory can be any executable file. This means, for example, that C-compiled binaries, Ruby Scripts, python, lua, etc... may all be used according to your requirements and preferences.

Of course, the extensions I write are generally in bash; but you can bring your own implements of choice to the SM party ;)

Additionally, if you write your extensions in bash, a nice DSL is automatically loaded for you. You can read more about the DSL in the online documentation.

~Wayne

Wayne E. Seguin

Contributing

Development repositories are found on the SM GitHub organization page: https://github.com/sm/ In the spirit of free software, everyone is encouraged to help improve this project.

Ways that you may contribute to the project are by:

  • using the latest development and release versions
  • reporting bugs in #beginrescueend on irc.freenode.net
  • suggesting new features in #beginrescueend on irc.freenode.net
  • writing or editing documentation, which is greatly appreciated
  • translating documentation to a new language, I speek tech and poor engrish
  • writing extensions
  • writing code (no patch is too small: fix typos, add comments, clean up inconsistent whitespace)
  • performing code reviews and assisting with refactoring
  • resolving issues
  • reviewing patches
  • donating, xoxo!

License

All SM Core scripts and extensions themselves are are licensed under the Apache License v2.0

Copyright (c) 2009-2011 Wayne E. Seguin

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

License Exceptions:

bin/sm-ll, bin/sm-sql, bin/sm-sem are all part of the GNU Parallel project and are licensed under the GNU GPL v3 which can be read at either LICENSE.gpl3 or on the web at http://www.gnu.org/licenses/gpl.html

sm's People

Contributors

adrianrf avatar drnic avatar mpapis avatar slack avatar smortex avatar wayneeseguin avatar yellow5 avatar yonahw avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.