Skip to content

Instantly share code, notes, and snippets.

View pomber's full-sized avatar
🧭
Building @code-hike

Rodrigo Pombo pomber

🧭
Building @code-hike
View GitHub Profile
@pomber
pomber / .travis.yml
Created March 30, 2017 17:20
Full Travis config
sudo: false
language: node_js
node_js:
- "node"
cache:
yarn: true
directories:
- "$HOME/google-cloud-sdk/"
services:
- docker
sudo: false
language: node_js
node_js:
- "node"
cache:
yarn: true
directories:
- "$HOME/google-cloud-sdk/"
services:
- docker
@pomber
pomber / deploy-prod.sh
Created March 30, 2017 18:31
Build and push to GCR
#!/bin/bash
set -e
docker build -t gcr.io/${PROJECT_PROD}/${NGINX_IMAGE}:$TRAVIS_COMMIT -f docker/nginx.dockerfile .
docker build -t gcr.io/${PROJECT_PROD}/${NODE_IMAGE}:$TRAVIS_COMMIT -f docker/node.dockerfile .
echo $GCLOUD_SERVICE_KEY_TEST | base64 --decode -i > ${HOME}/gcloud-service-key.json
gcloud auth activate-service-account --key-file ${HOME}/gcloud-service-key.json
@pomber
pomber / sanata.yaml
Last active March 30, 2017 21:24
Kubernetes resources
apiVersion: v1
kind: Secret
metadata:
name: node-secret
type: Opaque
data:
twitter-consumer-key: "output from [echo -n "your key" | base64]"
twitter-consumer-secret: "output from [echo -n "your secret" | base64]"
mongo-url: "output from [echo -n "mongodb://mongo:27017/sanata" | base64]"
---
@pomber
pomber / .travis.yml
Last active April 13, 2017 18:04
Conditional deploy
deploy:
- provider: script
script: ./deploy-prod.sh
on:
all_branches: true
condition: $TRAVIS_TAG =~ ^v[0-9]+\.[0-9]+\.[0-9]+
- provider: script
script: ./deploy-test.sh
on:
branch: master
@pomber
pomber / mono.js
Created April 20, 2017 20:38
Two big functions
export function createElement(type, config, ...args) {
const props = Object.assign({}, config);
if (args.length) {
props.children = [].concat(...args);
}
return { type, props };
}
export function render(element, container) {
const instance = new DomComponent(element);
@pomber
pomber / micro.js
Created April 20, 2017 20:39
Several small functions
export function createElement(type, config, ...args) {
const props = Object.assign({}, config);
if (args.length) {
props.children = [].concat(...args);
}
return { type, props };
}
export function render(element, container) {
const instance = new DomComponent(element);
function render(rootDom, element) {
const { type, props } = element;
const dom = document.createElement(type);
Object.keys(props).filter(isAttribute).forEach(name => {
dom[name] = props[name];
});
const children = props.children || [];
children.forEach(childElement => render(dom, childElement));
rootDom.appendChild(dom);
}
@pomber
pomber / DOM.js
Last active April 25, 2017 21:35
// Get an element by id
const domRoot = document.getElementById("root");
// Create a new element given a tag name
const domInput = document.createElement("input");
// Set properties
domInput["type"] = "text";
domInput["value"] = "Hi world";
domInput["className"] = "my-class";
// Listen to events
domInput.addEventListener("change", e => alert(e.target.value));