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

spgtest2

v1.1.4

Published

spg is a tool that generates spring profiles.

Downloads

3

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.

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

TODO

  • [x] Init project
  • [x] Implement Pretty Print Map
  • [x] Implement Merge Map with override strategy
  • [x] Declare Trainer Yaml Struct
  • [x] Add CLI Commands
  • [x] Implement generate method
  • [ ] Add wildcard feature for absolute configs
  • [ ] Add Usage Manuel
  • [x] Add Tests
  • [ ] Add Go Releaser
  • [ ] Publish with Homebrew, etc.
  • [x] Add Github Actions
  • [x] Add Dockerfile

Known Issues

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