Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 1 addition & 44 deletions color-code-k8s.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,47 +16,4 @@ spec:
protocol: TCP
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: color-code-deployment
namespace: incredible-dev
labels:
name: color-code
spec:
replicas: 1
selector:
matchLabels:
app: color-code
template:
metadata:
labels:
app: color-code
spec:
containers:
- name: color-code
image: CONTAINER_IMAGE
imagePullPolicy: Always
env:
- name: PORT
value: '3000'
- name: AUTH_TOKEN
valueFrom:
secretKeyRef:
name: idev-secrets
key: COLOR_CODES_AUTH_TOKEN
ports:
- name: http
containerPort: 3000
protocol: TCP
securityContext:
privileged: false
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 150m
memory: 128Mi

141 changes: 71 additions & 70 deletions color_codes.js
Original file line number Diff line number Diff line change
@@ -1,98 +1,99 @@
// Allows absolute paths
require('module-alias/register');
require("module-alias/register");

const express = require('express');
const express = require("express");
const app = express();
const port = parseInt(process.env.PORT || '') || 3000;
const authToken = process.env.AUTH_TOKEN || '';
const port = parseInt(process.env.PORT || "") || 3000;
const authToken = process.env.AUTH_TOKEN || "";

/**
* NOTE: Do not delete these unused imports.
*/
const vsctm = require('@root/release/main');
const themedTokenize = require('@root/out/tests/themedTokenizerCustom');
const main = require('@root/out/main');
const plist = require('@root/out/plist');
const Resolver = require('@root/out/tests/resolver');
const onigLib = require('@root/out/tests/onigLibs');
const themes = require('@root/out/tests/themes_custom');
const vsctm = require("@root/release/main");
const themedTokenize = require("@root/out/tests/themedTokenizerCustom");
const main = require("@root/out/main");
const plist = require("@root/out/plist");
const Resolver = require("@root/out/tests/resolver");
const onigLib = require("@root/out/tests/onigLibs");
const themes = require("@root/out/tests/themes_custom");

const THEMES_PATH = './testcases/themes/';
const THEMES_PATH = "./testcases/themes/";

app.use(express.json());

const langExtensions = {
batch: '.bat',
c: '.c',
'c++': '.cpp',
clojure: '.clj',
css: '.css',
dockerfile: '.dockerfile',
go: '.go',
html: '.html',
jade: '.jade',
java: '.java',
javascript: '.js',
javascriptreact: '.jsx',
json: '.json',
markdown: '.md',
'objective-c': '.m',
perl: '.pl',
php: '.php',
powershell: '.ps1',
properties: '.properties',
python: '.py',
r: '.r',
ruby: '.rb',
rust: '.rs',
scss: '.scss',
shellscript: '.sh',
sql: '.sql',
swift: '.swift',
typescript: '.ts',
typescriptreact: '.tsx',
xml: '.xml',
yaml: '.yaml',
graphql: '.graphql',
haskell: '.hs',
matlab: '.m',
toml: '.toml',
batch: ".bat",
c: ".c",
"c++": ".cpp",
clojure: ".clj",
css: ".css",
dockerfile: ".dockerfile",
go: ".go",
html: ".html",
jade: ".jade",
java: ".java",
javascript: ".js",
javascriptreact: ".jsx",
json: ".json",
markdown: ".md",
"objective-c": ".m",
perl: ".pl",
php: ".php",
powershell: ".ps1",
properties: ".properties",
python: ".py",
r: ".r",
ruby: ".rb",
rust: ".rs",
scss: ".scss",
shellscript: ".sh",
sql: ".sql",
swift: ".swift",
typescript: ".ts",
typescriptreact: ".tsx",
xml: ".xml",
yaml: ".yaml",
graphql: ".graphql",
haskell: ".hs",
matlab: ".m",
toml: ".toml",
bash: ".bash",
};

const getTheme = {
abyss: ['Abyss.tmTheme'],
dark_vs: ['dark_vs.json'],
light_vs: ['light_vs.json'],
hc_black: ['hc_black.json'],
dark_plus: ['dark_plus.json', 'dark_vs.json'],
light_plus: ['light_plus.json', 'light_vs.json'],
kimbie_dark: ['Kimbie_dark.tmTheme'],
monokai: ['Monokai.tmTheme'],
monokai_dimmed: ['dimmed-monokai.tmTheme'],
quietlight: ['QuietLight.tmTheme'],
red: ['red.tmTheme'],
solarized_dark: ['Solarized-dark.tmTheme'],
solarized_light: ['Solarized-light.tmTheme'],
tomorrow_night_blue: ['Tomorrow-Night-Blue.tmTheme'],
abyss: ["Abyss.tmTheme"],
dark_vs: ["dark_vs.json"],
light_vs: ["light_vs.json"],
hc_black: ["hc_black.json"],
dark_plus: ["dark_plus.json", "dark_vs.json"],
light_plus: ["light_plus.json", "light_vs.json"],
kimbie_dark: ["Kimbie_dark.tmTheme"],
monokai: ["Monokai.tmTheme"],
monokai_dimmed: ["dimmed-monokai.tmTheme"],
quietlight: ["QuietLight.tmTheme"],
red: ["red.tmTheme"],
solarized_dark: ["Solarized-dark.tmTheme"],
solarized_light: ["Solarized-light.tmTheme"],
tomorrow_night_blue: ["Tomorrow-Night-Blue.tmTheme"],
};

app.get('/', (req, res) => {
res.send('UP');
app.get("/", (req, res) => {
res.send("UP");
});

const requestValidate = (req, res, next) => {
if (req.headers['x-secret'] !== authToken) {
if (req.headers["x-secret"] !== authToken) {
return res
.status(401)
.json({ success: false, errors: ['Invalid auth token'] });
.json({ success: false, errors: ["Invalid auth token"] });
}

next();
};

app.post('/color-codes', requestValidate, async (req, res) => {
const code = req.body.code || '';
const theme = req.body.theme || 'dark_plus';
app.post("/color-codes", requestValidate, async (req, res) => {
const code = req.body.code || "";
const theme = req.body.theme || "dark_plus";
let language = req.body.language;

try {
Expand All @@ -102,15 +103,15 @@ app.post('/color-codes', requestValidate, async (req, res) => {
throw err;
}

console.log('theme:', theme, 'language:', language);
console.log("theme:", theme, "language:", language);

if (!(theme in getTheme)) {
const err = new Error(`theme "${theme}" is invalid`);
err.status = 400;
throw err;
}
if (!(language in langExtensions)) {
language = 'javascript';
language = "javascript";
}

const color_codes = await themes.getColorCodes(
Expand Down
42 changes: 42 additions & 0 deletions kuber/production/deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: color-code-deployment
namespace: incredible-dev
labels:
name: color-code
spec:
replicas: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 2
maxSurge: 2
selector:
matchLabels:
app: color-code
template:
metadata:
labels:
app: color-code
spec:
containers:
- name: color-code
image: CONTAINER_IMAGE
imagePullPolicy: Always
env:
- name: PORT
value: '3000'
- name: AUTH_TOKEN
valueFrom:
secretKeyRef:
name: idev-secrets
key: COLOR_CODES_AUTH_TOKEN
ports:
- name: http
containerPort: 3000
protocol: TCP
securityContext:
privileged: false
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
17 changes: 17 additions & 0 deletions kuber/production/service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
apiVersion: v1
kind: Service
metadata:
name: color-code-service
namespace: incredible-dev
labels:
name: color-code
app: color-code
spec:
selector:
app: color-code
ports:
- name: http
port: 80
targetPort: 3000
protocol: TCP
type: LoadBalancer
44 changes: 44 additions & 0 deletions kuber/staging/staging-deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: color-code-deployment
namespace: incredible-dev
labels:
name: color-code
spec:
replicas: 1
selector:
matchLabels:
app: color-code
template:
metadata:
labels:
app: color-code
spec:
containers:
- name: color-code
image: CONTAINER_IMAGE
imagePullPolicy: Always
env:
- name: PORT
value: '3000'
- name: AUTH_TOKEN
valueFrom:
secretKeyRef:
name: idev-secrets
key: COLOR_CODES_AUTH_TOKEN
ports:
- name: http
containerPort: 3000
protocol: TCP
securityContext:
privileged: false
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
resources:
requests:
cpu: 100m
memory: 64Mi
limits:
cpu: 250m
memory: 256Mi
17 changes: 17 additions & 0 deletions kuber/staging/staging-service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
apiVersion: v1
kind: Service
metadata:
name: color-code-service
namespace: incredible-dev
labels:
name: color-code
app: color-code
spec:
selector:
app: color-code
ports:
- name: http
port: 80
targetPort: 3000
protocol: TCP
type: LoadBalancer
Loading