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

@sapops/bind-hdi

v0.7.0

Published

This CLI was created for a very specific use case. In our team we used to work in SAP Web IDE (Native Hana) to build our database artifacts. One of the key features available in this app - is ability to build personal containers with own independent schem

Downloads

122

Readme

Bind existing HDI container to your local environment

This CLI was created for a very specific use case. In our team we used to work in SAP Web IDE (Native Hana) to build our database artifacts. One of the key features available in this app - is ability to build personal containers with own independent schema

Meanwhile if we use another IDE like VS Code we need to resolve service binding manually.

This command does not create a new service binding. However what it does it connects to prebuilt hdi (via di-builder service binding) and updates your default-env.json with credentials of the service you want to bind to.

Prerequisites

First of all please make sure that all services are generated. If you want to keep using your personal container you need to clone your project in Web IDE and build it there. If you want to connect to a main non-personal container - you need to deploy it first using xs deploy and then you can use this CLI

Don't forget to ignore default-env.json

Please beware that publishing default-env.json in git repos may trigger bad consequences. Therefore it's highly recommended to include default-env.json to your .gitignore file

Usage

Usage: bind-hdi [options]

Options:
  -s, --service <container>  Source container to bind
  -a, --as <alias>           bind as..
  --target-container         as target container
  --to <json>                json file to update
  -h, --help                 display help for command

Exapmple

# bind to a personal HDI container as a target container
npx bind-hdi --service=USERNAME-hash-service-app --as=your_app_db --to=db/default-env.json --target-container

Such a command will create/update default-env.json file in db folder with following values:

{
	"VCAP_SERVICES": {
		"hana": [
			{
				"name": "USERNAME-hash-service-app",
				"label": "hana",
				"tags": [
					"hana",
					"database",
					"relational"
				],
				"plan": "hdi-shared",
				"credentials": {
					"schema": "YOUR_APP_2",
                    ...					
				}
			}
		]
	},
	"SERVICE_REPLACEMENTS": [
		{
			"key": "your_app_db",
			"service": "USERNAME-hash-service-app"
		}
	],
	"TARGET_CONTAINER": "USERNAME-hash-service-app"
}

You can see that it will generate not only VCAP_VALUES but SERVICE_REPLACEMENTS as well as it's needed for @sap/hdi-deploy module. TARGET_CONTAINER is updated by use of --target-container flag.

Now let's assume we have another external service used in our app (for example in .hdbgrants file). Without it our app won't deploy. So let's add it too

npx bind-hdi --service=external_app-container --as=EXTERNAL_APP_SERVICE --to=db/default-env.json

So let's check how our default-env.json looks now:

{
	"TARGET_CONTAINER": "USERNAME-hash-service-app",
	"VCAP_SERVICES": {
		"hana": [
			{
				"name": "USERNAME-hash-service-app",
				"label": "hana",
				"tags": [
					"hana",
					"database",
					"relational"
				],
				"plan": "hdi-shared",
				"credentials": {
					"schema": "YOUR_APP_2",
					...
				}
			},
			{
				"name": "external_app-container",
				"label": "hana",
				"tags": [
					"hana",
					"database",
					"relational"
				],
				"plan": "hdi-shared",
				"credentials": {
					"schema": "EXTERNAL_APP_SCHEMA",
					...
				}
			}
		]
	},
	"SERVICE_REPLACEMENTS": [
		{
			"key": "your_app_db",
			"service": "USERNAME-hash-service-app"
		},
		{
			"key": "EXTERNAL_APP_SERVICE",
			"service": "external_app-container"
		}
	]
}

Deployment

If your HDI container ( db module ) is set up in a standard way it's enough just to run npm start in db folder

cd db
npm start

It will work in the same way as you would have run it from Web IDE.