Git Product home page Git Product logo

wasp's Introduction

wasp

wasp

Current Release Open Issues Contributors

Code Triagers Badge first-timers-only

wasp generates and creates basic resources for a modern web app. Initializes a project with a manifest, package, and helps you tag versions effectively.

Named wasp from the idea that wasps invented paper long before the first human thought to put his thoughts down on a sheet of papyrus.

Manifest

Helps to generate a web manifest for use in any modern web app. The goal being to make generating one easy, as a single command setup.

wasp init [-m --manifest]

Package

Helps to generate a package.json for NPM or other tools that use this configuration. It creates a package.json to the NPM spec.

wasp init [-p --package]

Tagging

Not currently implemented. Come back in a few versions

wasp tag v1.0.5

Build

To build for Debian:

First, update the changelog:

dch -i

To Build, run:

debuild -us -uc

Testing without building

First, comment out sys.path.append('/usr/lib/wasp/') in wasp, Details.py, and Utilities.py.

Then change the following in the three files (not all files have all three):

from Details import Details
from Utilities import Utilities
from Colors import Colors

to

from src.Details import Details
from src.Utilities import Utilities
from src.Colors import Colors

respectively.

Please undo all these changes before making a commit or pull request.

Design

Right now there's no format design pattern in use. The current goal is to get a functioning tool. I would like to follow a formally defined design pattern, but until I determine one, this is the current design.

wasp's People

Contributors

ag-ayush avatar davidmackhello avatar devinmatte avatar ftakj avatar ilimugur avatar mxmeinhold avatar rdausilio avatar saifat29 avatar tuantr10 avatar zacharydangelo avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

wasp's Issues

Inline Documenation

I'm terrible at documenting my code. Mostly because I would just rather work on functionality.

Document all functions with a docstring giving an overview of the function, and links to what portion of the file it builds on.

This is an ongoing issue

Testing

Now that the project gets a decent amount of contributions, I should set up a testing suite to test all of the functions.

This should be easy to do. I simply need to try a series of inputs with values that it should be able to handle.

self.image_src("htss://ddddd.com") --> fail

Stop repeating the color request code

For now the theme_color and background_color function have almost the same code, we can refactor and put those code into one global function. Something like this:

def request_color(color_type):
    ...#repeated code
    return ...

class Manifest:
    def theme_color(self):
        self.details['theme_color'] = request_color('theme_color')

    def background_color(self):
        self.details['background_color'] = request_color('background_color')

What do you think @devinmatte?

Add Icons

Use the format that will be created for #5 to build out a similar format for manual icon adding

Formal Design Pattern

This is the start of the discussion of a design pattern that appropriately conforms to this project goal.

A design pattern that break out of the functionality of this software in a logical manor, that can be easily maintained as we continue to build and grow the capabilities of the software.

Command Help

When in the middle of a command, it would be ideal if the user could use a help command in some way.

I'd rather it not be just "help" as the entry, because then the user couldn't use that as their input, but that's also where I'm leaning. Maybe someone else has an idea as to how we would implement a step by step help command?

Package for RedHat Distributions

Right now I package for debian distributions. That's fine so far, especially because I use debian myself.

However there are a lot of users on RedHat so I should learn how to support them.

If someone has the knowledge, and wants to set this up and write up in the README how it works, and how to continue development with it, I'd heavily appreciate it.

Plainformatted Name

When the user picks the name of their project, check it to see if it fits the simple name format.

Example: project-name instead of Project Name

If the user submits a name that fits the simple format, only have the single prompt, but if it's not, allow them to enter one, or have a default that formats the existing name.

Based off how package.json requires name

wasp update

I want to be able to run wasp update -m -p and update the existing files without having to rewrite everything. In the run-case of wasp update it would use the existing values inside of the files, as the default, and only update the fields which are edited.

There way be some logic we can employ to make this simpler for the user.

wasp tag

Tagging is a feature I wanted right from the beginning. This would work in the manor of wasp tag -p -g.

What this would do, is when you go to tag in git, it will also update the version tag in package.json, debian copyright, etc.

This should be a fairly easy implementation, but we should look into making it happen.

Refactor away from Manifest Class

Right now all the details that are parts of the manifest, are in a Manifest class.

That works fine now, but once we start supporting more file types (package.json, composer.json, etc.) we're going to want to share that data and have users only prompted once.

Because of that we need to move away from this format. Potentially just have everything be a global function and have checks to see what's being generated. Or find a better method of handling it.

There might be a design pattern I can better apply for this specific problem

Generate Icons

Currently the program just lets you select existing image files.
It would be really nice to allow the user to select one image, and generate multiple sizes for use.

Basically I could pass one 512x512 image and generate a series of images below that, place them somewhere smart, and add them to the manifest.

Likely would be done with Image Mavericks some way

Add Screenshot support for Manifest

Manifests allow for the addition of screenshots. Allow users to add screenshots on init just like they can add icons.

Should be modeled after the Icon subclass but following this

Color Validation

Find a way to validate color strings. I'm fine with limiting it to hex values during the first version if that's what it takes to get proper validation.

def theme_color(self):
    # TODO: Default
    # TODO: Validation
    self.details['theme_color'] = input("Theme Color " + str(on(["M"], args)) + ": ")

def background_color(self):
    # TODO: Default
    # TODO: Validation
    self.details['background_color'] = input("Background Color " + str(on(["M"], args)) + ": ")

Create a man page

Almost all good command line tools provide a man page for easy documentation.

Write up some documentation, that coincides with a man page so that a new user could easily pick up the tool

Set Language Validation

Right now there's the function for adding a language:

def lang(self):
    # TODO: Default
    # TODO: Validation
    self.details['lang'] = input("Language " + str(on(["M"], args)) + ": ")

I need to check it against the available languages to pick from to make sure that users can't put in invalid options.

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.