GithubHelp home page GithubHelp logo

yesman's Introduction

=======

yesman

======

Yesman is a ruby command line interface that creates basic directory structures for starting a C++ project. As a part of the creation of a new project Yesman will download, compile and generally get Google Test setup for the projects testing suite.

Installation

To install it simply run:

$ gem install yesman

Usage

To create a default project simply run:

$ yesman new ProjectName

Doing so will create a "ProjectName" directory with a "src", "tests", "bin" directory. GoogleTests will be compiled into a "gtest" directory inside of the "tests" directory. A main test runner file named "ProjectNameTests.cpp" will be created inside of the "tests" directory and a "ProjectName.cpp" file will be created in your "src" directory.

There are several optional parameters you can use that will adjust the following:

-s Source Directory Name (defaults to "src")

-t Tests Directory Name (defaults to "tests")

-o Output Directory Name (defaults to "bin")

-e C++ extension to use for generated files (defaults to "cpp")

To generate class files (along with headers and tests) from inside of your project directory run:

$ yesman generate "jsk::SuperClass<jsk::BaseClass"

The string passed to generate (also aliased to 'g') will create your class file, header, and test file. The format is:

"namespace::ClassName<namespace::ParentClass"

Namespaces and inheritance are optional, so you could just as easily run:

$ yesman g "SuperClass<BaseClass

or

$ yesman g "SuperClass"

Requirements

Under the hood there are several technologies that Yesman relies on. In order to run you will need the following:

G++ - You can get this by installing XCode on your mac, be sure to install the command line tools

svn - In order to pull down Google Test you will need to have svn installed on your machine

ruby > 1.9 - OS X is still shipping with 1.8.7. Use rvm to install the latest version of ruby

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

yesman's People

Contributors

knomedia avatar

Watchers

 avatar

yesman's Issues

Give feedback for file/folder generation

I noticed that you almost instantly used tree to show what files were generated by the CLI. I think it would make sense to display what files are being generated. That might be because I'm used to the rails CLI doing that, but it would also work as a progress indicator.

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.