Git Product home page Git Product logo

foreman's Introduction

This is very much a WIP. Buyer beware.

Project Structure

Foreman.CodeAnalysis

  • Lexing
  • Syntax
  • Binding

Foreman.Console

  • the cli

Foreman.Core Full scope TBD

Foreman.Engine The actual template / job execution engine. The intent is to support Foreman as both a CLI and a Service. This does not process .fm files, the expectation is that you either write the foreman templates in the xml format outright, or you use the cli to build a collection of .fm files into their xml counterparts. The latter is strongly recommended in the grand scheme of things.

Foreman.LanguageServer The LSP which powers the vscode extension specification

Foreman.LanguageServer.Protocol The implementation details of the open standard. This is all just mimics. We may be able to replace a bunch of this with open implementations if we look for it, I just haven't bothered yet. I wrote this mostly to play with the rpc serialization over stdio.

vscode-foreman the vscode extension project. Baked within is an LSP client which is configured to run the debug dll LSP server defined in Foreman.LanguageServer.

Tests

Run dotnet test from the root of the repo. They should all pass, however, some might be covering historic implementation details that deprecated through a long term discovery process. I believe they are all actually relevant still, but no promises.

Running Locally

the CLI

You can run the CLI by building the solution as a whole then cd-ing into that projects subdirectory and running the following command:

  • ./bin/Debug/net8.0/Foreman.Console run

That command is currently hardcoded to run the xml defined within the src/Foreman.Console/example directory

the vscode extension

  • Open up src/vscode-foreman in a separate vscode window
  • Launch debugger client
    • this will open another window with the extension installed
    • the folder used by this extension window is configurable, I just don't recall how top of mind.
  • Create .fm files which are to our current conventions, just a different file extension. bootstrap.ps1 is no longer expected.

example file:

<job type="echo" wow="@{cool/beans}@"
  when="@{inputs/name}@" is="me"
>
  <message value="Hello, @{inputs/name}@!" />
  <message value="Hello, @{my.file.path/output}@!" />
  <hello>wow @{cool/beans}@</hello>
  <a>
    <b>cool</b>
  </a>
</job>

the current vscode extension does the following*:

  • lex/parse the file as you type it
  • display coloring based on semantics

*there are multiple issues that arise with this still, inconsistently

foreman's People

Contributors

mauleb avatar

Stargazers

Javier Belmonte avatar

Watchers

 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.