Skip to content

Instantly share code, notes, and snippets.

View just-jeb's full-sized avatar
🌐
Having fun @ Wix

JeB just-jeb

🌐
Having fun @ Wix
View GitHub Profile
export interface TimestampBuilderSchema {
format: string;
path: string;
}
import {Builder, BuilderConfiguration, BuilderContext, BuildEvent} from '@angular-devkit/architect';
import {Observable} from 'rxjs';
import {TimestampBuilderSchema} from './schema';
export default class TimestampBuilder implements Builder<TimestampBuilderSchema> {
constructor(private context: BuilderContext) {
}
run(builderConfig: BuilderConfiguration<Partial<TimestampBuilderSchema>>): Observable<BuildEvent> {
export interface BuildEvent {
success: boolean;
}
import {Builder, BuilderConfiguration, BuilderContext, BuildEvent} from '@angular-devkit/architect';
import {bindNodeCallback, Observable, of} from 'rxjs';
import {catchError, map, tap} from 'rxjs/operators';
import {TimestampBuilderSchema} from './schema';
import {getSystemPath} from '@angular-devkit/core';
import {writeFile} from 'fs';
import * as dateFormat from 'dateformat';
export default class TimestampBuilder implements Builder<TimestampBuilderSchema> {
constructor(private context: BuilderContext) {
export interface Builder<OptionsT> {
run(builderConfig: BuilderConfiguration<Partial<OptionsT>>): Observable<BuildEvent>;
}
import { SchemaObject as TimestampBuilderSchema } from './schema';
import { BuilderContext, BuilderOutput, createBuilder } from '@angular-devkit/architect';
import { Observable } from 'rxjs';
import { json } from '@angular-devkit/core';
export function createTimestamp(
{ path, format }: TimestampBuilderSchema,
{ workspaceRoot, logger }: BuilderContext,
): Observable<BuilderOutput> {
/**
* A builder handler function. The function signature passed to `createBuilder()`.
*/
export interface BuilderHandlerFn<A> {
/**
* Builders are defined by users to perform any kind of task, like building, testing or linting,
* and should use this interface.
* @param input The options (a JsonObject), validated by the schema and received by the
* builder. This can include resolved options from the CLI or the workspace.
* @param context A context that can be used to interact with the Architect framework.
export interface Schema {
error?: string;
info?: {
[key: string]: any;
};
success: boolean;
target?: Target;
}
export function createBuilder<OptT = json.JsonObject, OutT extends BuilderOutput = BuilderOutput>(
fn: BuilderHandlerFn<OptT>,
): Builder<OptT & json.JsonObject>
import { SchemaObject as TimestampBuilderSchema } from './schema';
import { BuilderContext, BuilderOutput, createBuilder } from '@angular-devkit/architect';
import { Observable, bindNodeCallback, of } from 'rxjs';
import { catchError, map, tap } from 'rxjs/operators';
import { getSystemPath, normalize, json } from '@angular-devkit/core';
import { writeFile } from 'fs';
import * as dateFormat from 'dateformat';
export function createTimestamp(
{ path, format }: TimestampBuilderSchema,