smartenv/ts/smartenv.classes.smartenv.ts

106 lines
2.1 KiB
TypeScript
Raw Permalink Normal View History

2019-06-17 06:46:28 +00:00
import * as plugins from './smartenv.plugins';
import * as interfaces from './interfaces';
2017-05-17 13:59:10 +00:00
// interfaces
export interface IEnvObject {
2019-06-17 06:46:28 +00:00
name: string;
value: string;
2017-05-17 13:59:10 +00:00
}
2019-06-17 06:46:28 +00:00
/**
* Smartenv class that makes it easy
*/
2017-05-17 13:59:10 +00:00
export class Smartenv {
2019-06-17 06:46:28 +00:00
get runtimeEnv() {
if (typeof window !== 'undefined') {
2019-06-17 06:46:28 +00:00
return 'browser';
} else if (typeof process !== 'undefined') {
2019-06-17 06:46:28 +00:00
return 'node';
}
}
2019-06-17 06:46:28 +00:00
get isBrowser(): boolean {
return !this.isNode;
}
2019-06-17 06:46:28 +00:00
get userAgent(): string {
if (this.isBrowser) {
// make sure we are in Browser
return navigator.userAgent;
} else {
2019-06-17 06:46:28 +00:00
return 'undefined';
}
}
2019-06-17 06:46:28 +00:00
get isNode(): boolean {
return this.runtimeEnv === 'node';
}
2019-06-17 06:46:28 +00:00
get nodeVersion(): string {
return process.version;
}
2019-06-17 06:46:28 +00:00
get isCI(): boolean {
if (this.isNode) {
if (process.env.CI) {
2019-06-17 06:46:28 +00:00
return true;
} else {
2019-06-17 06:46:28 +00:00
return false;
}
} else {
2019-06-17 06:46:28 +00:00
return false;
}
}
2019-06-17 06:46:28 +00:00
async isMacAsync(): Promise<boolean> {
if (this.isNode) {
let os = await import('os');
return os.platform() === 'darwin';
} else {
2019-06-17 06:46:28 +00:00
return false;
}
}
2019-06-17 06:46:28 +00:00
async isWindowsAsync(): Promise<boolean> {
if (this.isNode) {
let os = await import('os');
return os.platform() === 'win32';
} else {
2019-06-17 06:46:28 +00:00
return false;
}
}
2019-06-17 06:46:28 +00:00
async isLinuxAsync(): Promise<boolean> {
if (this.isNode) {
let os = await import('os');
return os.platform() === 'linux';
} else {
2019-06-17 06:46:28 +00:00
return false;
}
}
2017-05-17 13:59:10 +00:00
/**
* get environment variables that fit the description
*/
// get envVars (regexArg: RegExp) {
// let EnvironmentArray = []
// // TODO: plugins.smartparam.forEachMinimatch()
// }
2017-05-17 13:59:10 +00:00
/**
* prints the environment to console
*/
2019-06-17 06:46:28 +00:00
async printEnv() {
2017-05-17 13:59:10 +00:00
if (this.isNode) {
2019-06-17 06:46:28 +00:00
console.log('running on NODE');
let smartenvVersion = require('../package.json').version;
console.log(
'node version is ' + this.nodeVersion + ' and smartenv version is ' + smartenvVersion
);
2017-05-17 13:59:10 +00:00
} else {
2019-06-17 06:46:28 +00:00
console.log('running on BROWSER');
console.log('browser is ' + this.userAgent);
2017-05-17 13:59:10 +00:00
}
}
}