npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

spgjs

v0.0.1

Published

spg is a tool that generates spring profiles.

Downloads

17

Readme

spg

ci ci

spg is a tool that generates Spring profiles based on the current environment.

If you develop your micro services with real environments and your yaml files not up to date probably you spend time fixing. The project aims to save you time and you can use it during development and testing.

Installation

There are several ways to install the project.

If you are using MacOS you can install it with Homebrew:

brew tap nekinci/tap
brew install spg

If you want to use it with Docker you can install it with Docker:

docker pull nekinci/spg:latest
alias spg='docker run  -v ${PWD}:/go/src/app -v ${HOME}/.spg:/home/spg/.spg nekinci/spg:latest'

If you want to use npm you can install it with npm:

npm install -g spgjs

Or you can install it with manual installation of the project:

You can visit release page to see the latest version. After that you can download the project and add it to your PATH.

Usage

Firstly you need to create a configuration file. As I explained in the Configuration section you can use the configuration file with the your environment.

And then you must set the configuration file with the spg command:

spg config set <path to configuration file>

If you want to see the current configuration file you can use the spg config print command:

spg config print

Or you can unset the configuration file with the spg config unset command:

spg config unset

To generate a profile you can use the spg generate command. The following example shows how to generate a profile for the my-profile environment. my-profile environment must be defined in the configuration file. -o or --output option is optional. The default value is application-result.yaml. If you want to change the output file you can use the -o or --output option. And lastly you must be give the already exist profile file as an parameter. The following command is a working example:

spg generate -p my-profile -o my-new-profile.yml application.yml application-dev.yml

Configuration

Example: You have a application.yaml file with the following content:

server:
  port: 8080
client:
  urls:
    serviceA: servicea.test.com
    serviceB: serviceb.test.com

Let's assume you want debug the application in prp environment. But you don't have a application-prp.yaml file. And you don't know prp urls. Probably you don't want to create a new file. Because your job is to debug or develop your application. With spg you can generate a application-prp.yaml file with the following content:

server:
  port: 8080
client:
  urls:
    serviceA: servicea.prp.com
    serviceB: serviceb.prp.com

But first you need to define trainer config file that contains url information of your services. Because spg don't know the url of your services. The following config file is an example:

version: v1
information:
  absolute-configs:
    - config-key: spring.http.encoding.force # means change the value of spring.http.encoding.force to true
      environment:
        oc: true
        test: false
        prp: true
        prod: false
    - config-key: keycloak.securityConstraints[0].authRoles[0] # means change the first role of the first security constraint
      environment:
        oc: user
        test: user
        prp: admin
        prod: admin
    - config-key: keycloak.roles[].value # means change all role values under keycloak.roles
      environment:
        oc: user
        test: user
        prp: admin
        prod: admin
    - config-key: "*.keycloak.b" # e.g: abc.keycloak.b, a.b.c.keycloak.b, keycloak.b means change all values of keycloak.b
      environment:
        oc: true
        test: false
        prp: true
        prod: false
  fields:
    - keys: # metadata keys for decide which fields to change
        - a-service
        - aService
      type: url
      environment:
        oc: 
          scheme: http
          value: a-service:8080
        test:
          scheme: http
          value: a-service-test.cloud.com
        prp:
          scheme: http
          value: a-service-prp.cloud.com
        prod:
          scheme: https
          value: a-service.com

Known Issues

  • Don't handled yet metadata in trainer yaml file* (e.g. information.fields.keys)
  • Config array selectors only support for primitive types. Don't supported for complex types.* (e.g. maps or arrays)