Git Product home page Git Product logo

flancy's Introduction

Build status

Flancy - A web microframework for Windows PowerShell

Flancy comes from combing Flask (python web microframework) and Nancy (the .NET microframework libraries used by this module). Flask + Nancy = Flancy!

Flancy creates a standalone web server in PowerShell code. The code is routed based on the path and verb used by the client. Each path-verb is routed to a piece of PowerShell code that serves up the data requested.

What is PowerShell?

An interpreted language created by Microsoft that is built on and taps into the .NET framework.

Why?

PowerShell is a development language and one day it will be treated as such. Alternatively, even as a non-dev automation language for sysadmins, often times a sysadmin just wants to expose PowerShell commands as easily as possible through a web request. The aim of this project is to provide the easiest possible way to spin up an in-code web server that can be backed by PowerShell.

Getting Started

The example script is the best way to start. Writing a web server is sooooo ridiculously easy. Here's the meat of how it's done:

import-module flancy
$url = "http://localhost:8001"

new-flancy -url $url -webschema @(
    Get '/' { "Welcome to Flancy!" }
    Get '/processes' {
        $processes = Get-Process
        $processes |select name, id |convertto-json
    }
)

One thing to note: Because of the way that Nancy works, I cannot create new custom types on subsequent New-Flancy requests. This means that in order to make a change to your service, you'll need to restart your PowerShell session. Another option is to start them in jobs in order to get clean sessions without restarting.

What's Next

A ton - I know there's a ton of bugs and things to think about. Start logging issues and feel free to contribute (including writing tests) via pull request.

Contribute

In order to contribute, please create a Pull Request against the devel branch. Please include the following with each pull request:

  • In the commits, if it resolves an issue, say "Fixes #xx" where xx is the issue number or at least refer to the Issue # by specifying "#xx" somewhere in your commit.
  • If there is no test for what you have done, please try to write one
  • Ensure that all tests pass prior to submitting - tests are run by calling maketest.ps1. You cannot run invoke-pester by itself or the tests will fail.
  • Update any relevant documentation or the example.ps1 file

flancy's People

Contributors

adamdriscoll avatar beatcracker avatar toenuff avatar

Watchers

 avatar  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.