Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e722ddfb3 | ||
|
|
646a8e0b9f | ||
|
|
f27a2871d7 | ||
|
|
909c44d72a | ||
|
|
53cf595e17 | ||
|
|
2c4eb78c3f | ||
|
|
d7a1325c0b | ||
|
|
30efbcc621 | ||
|
|
628c16eb95 | ||
|
|
d8552c62ff | ||
|
|
df84083536 | ||
|
|
461a4f122b | ||
|
|
c937af8ee7 | ||
|
|
636d4279c8 | ||
|
|
019b838925 | ||
|
|
0fc18459cd | ||
|
|
583c5660d6 | ||
|
|
52d5713a99 | ||
|
|
b34a66f270 | ||
|
|
eed996f608 | ||
|
|
b96c5d0557 |
9
.github/workflows/bump-and-release.yaml
vendored
9
.github/workflows/bump-and-release.yaml
vendored
@@ -1,19 +1,13 @@
|
|||||||
name: Bump & release
|
name: Bump & release
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
|
||||||
types: [closed]
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
push: # Ensure a new release is created for each new tag
|
push: # Ensure a new release is created for each new tag
|
||||||
tags:
|
tags:
|
||||||
- '[0-9]+.[0-9]+.[0-9]+'
|
- '[0-9]+.[0-9]+.[0-9]+'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bump-version-and-release:
|
bump-version-and-release:
|
||||||
if: > # Push => Ensure only changes from master. PR => to not trigger when closing PR without merging
|
if: github.event.base_ref == 'refs/heads/master'
|
||||||
(github.event_name == 'push' && github.event.base_ref == 'refs/heads/master')
|
|
||||||
|| github.event.pull_request.merged == true
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
@@ -21,3 +15,4 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
user: undergroundwires-bot
|
user: undergroundwires-bot
|
||||||
release-token: ${{secrets.BUMP_GITHUB_PAT}} # Does not trigger release pipeline if we use default token: https://github.community/t5/GitHub-Actions/Github-Action-trigger-on-release-not-working-if-releases-was/td-p/34559
|
release-token: ${{secrets.BUMP_GITHUB_PAT}} # Does not trigger release pipeline if we use default token: https://github.community/t5/GitHub-Actions/Github-Action-trigger-on-release-not-working-if-releases-was/td-p/34559
|
||||||
|
# GitHub does not inject secrets if pipeline runs from fork or a fork is merged to main repo.
|
||||||
50
CHANGELOG.md
50
CHANGELOG.md
@@ -1,5 +1,53 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.4.9 (2020-07-14)
|
||||||
|
|
||||||
|
* disable office telemetry Disassembler0/Win10-Initial-Setup-Script#288 | [commit](https://github.com/undergroundwires/privacy.sexy/commit/53cf595e1726ee3de79137fd566978fd512d218f)
|
||||||
|
* updated to may 2020 update | [commit](https://github.com/undergroundwires/privacy.sexy/commit/909c44d72a4a602ee8f27d06b6ec706c1e432ce1)
|
||||||
|
* simplified docker builds | [commit](https://github.com/undergroundwires/privacy.sexy/commit/f27a2871d74e5117fc029be82caef12246e10879)
|
||||||
|
|
||||||
|
[compare](https://github.com/undergroundwires/privacy.sexy/compare/0.4.8...0.4.9)
|
||||||
|
|
||||||
|
## 0.4.8 (2020-07-11)
|
||||||
|
|
||||||
|
* added more scripts #16 (#17) | [commit](https://github.com/undergroundwires/privacy.sexy/commit/d8552c62ffea13ce62abce836c7dd4980eef6bb9)
|
||||||
|
* stopping services before disabling #16 | [commit](https://github.com/undergroundwires/privacy.sexy/commit/628c16eb952495f5b3f6d794161b355f4b08b819)
|
||||||
|
* can disable features, capabilities & remove onedrive #16 | [commit](https://github.com/undergroundwires/privacy.sexy/commit/30efbcc621eb83dd5a9c1e66b8f1f5350eb95006)
|
||||||
|
* updated one more typo (#19) | [commit](https://github.com/undergroundwires/privacy.sexy/commit/d7a1325c0b7665ce712dc411965d00fc1d6fa384)
|
||||||
|
* more tweaks #16 | [commit](https://github.com/undergroundwires/privacy.sexy/commit/2c4eb78c3f156cb0d033977cffbe7464697680f5)
|
||||||
|
|
||||||
|
[compare](https://github.com/undergroundwires/privacy.sexy/compare/0.4.7...0.4.8)
|
||||||
|
|
||||||
|
## 0.4.7 (2020-06-30)
|
||||||
|
|
||||||
|
* removed HKU tweak as all HKU's are changed #10 | [commit](https://github.com/undergroundwires/privacy.sexy/commit/c937af8ee7da9aa95131e56abf7bf24800390fe6)
|
||||||
|
* Fixed types + script in "Clear Windows log files" (#15) | [commit](https://github.com/undergroundwires/privacy.sexy/commit/461a4f122b342369db5cc08c5e30961c64e68cdd)
|
||||||
|
|
||||||
|
[compare](https://github.com/undergroundwires/privacy.sexy/compare/0.4.6...0.4.7)
|
||||||
|
|
||||||
|
## 0.4.6 (2020-06-16)
|
||||||
|
|
||||||
|
* Fixed Some More Issues (#12) | [commit](https://github.com/undergroundwires/privacy.sexy/commit/52d5713a99422cdf900aba819e49e998abac33cc)
|
||||||
|
* removed failing continuous deployment #14 | [commit](https://github.com/undergroundwires/privacy.sexy/commit/583c5660d6ac934b845a044e013357aa91f61c15)
|
||||||
|
* Updated Some Tweaks (#11) | [commit](https://github.com/undergroundwires/privacy.sexy/commit/0fc18459cde57684f00764815062f838f932aed5)
|
||||||
|
* Updated Some More Tweaks (#13) | [commit](https://github.com/undergroundwires/privacy.sexy/commit/019b838925e963b7ec052ac76c6faf5650b9eb67)
|
||||||
|
|
||||||
|
[compare](https://github.com/undergroundwires/privacy.sexy/compare/0.4.5...0.4.6)
|
||||||
|
|
||||||
|
## 0.4.5 (2020-06-13)
|
||||||
|
|
||||||
|
[compare](https://github.com/undergroundwires/privacy.sexy/compare/0.4.4...0.4.5)
|
||||||
|
|
||||||
|
## 0.4.4 (2020-05-24)
|
||||||
|
|
||||||
|
* fixed close card button not being visible & cleanup | [commit](https://github.com/undergroundwires/privacy.sexy/commit/0d2efe5b05aa965458b78b8fa43754ce2f4fe11b)
|
||||||
|
* new footer with privacy policy | [commit](https://github.com/undergroundwires/privacy.sexy/commit/e2ab124fb799f56ada3570fdc911361cb803e889)
|
||||||
|
* one command to lint everything "npm run lint" | [commit](https://github.com/undergroundwires/privacy.sexy/commit/bb98d20637cbf1d524ebb2973e308773006e3153)
|
||||||
|
* fix "group by" overflows on smaller screens | [commit](https://github.com/undergroundwires/privacy.sexy/commit/c668a97950a1cb7c8bf2a7fd8a72d1101e65e8ce)
|
||||||
|
* clicking outside of a card closes it | [commit](https://github.com/undergroundwires/privacy.sexy/commit/aab8f21a8d8dbed54798af581e6e1ad9e86a4be1)
|
||||||
|
|
||||||
|
[compare](https://github.com/undergroundwires/privacy.sexy/compare/0.4.3...0.4.4)
|
||||||
|
|
||||||
## 0.4.3 (2020-05-23)
|
## 0.4.3 (2020-05-23)
|
||||||
|
|
||||||
* removed redundant documentation | [commit](https://github.com/undergroundwires/privacy.sexy/commit/749a140eb8dba09cb67fec2f8dec937e66e3cff5)
|
* removed redundant documentation | [commit](https://github.com/undergroundwires/privacy.sexy/commit/749a140eb8dba09cb67fec2f8dec937e66e3cff5)
|
||||||
@@ -8,7 +56,7 @@
|
|||||||
* reading version from package.json instead of version file #5 | [commit](https://github.com/undergroundwires/privacy.sexy/commit/691f989682179016ddcbf55a05cded29155288c9)
|
* reading version from package.json instead of version file #5 | [commit](https://github.com/undergroundwires/privacy.sexy/commit/691f989682179016ddcbf55a05cded29155288c9)
|
||||||
* automatically increases patch number #5 | [commit](https://github.com/undergroundwires/privacy.sexy/commit/3e3bc07576f7c7e74e3e11fc7d197cbb9a9fb8c0)
|
* automatically increases patch number #5 | [commit](https://github.com/undergroundwires/privacy.sexy/commit/3e3bc07576f7c7e74e3e11fc7d197cbb9a9fb8c0)
|
||||||
* using deployment operations from aws-static-site-with-cd | [commit](https://github.com/undergroundwires/privacy.sexy/commit/997be7113f676888892ffa35566d9ebb58a3e9ea)
|
* using deployment operations from aws-static-site-with-cd | [commit](https://github.com/undergroundwires/privacy.sexy/commit/997be7113f676888892ffa35566d9ebb58a3e9ea)
|
||||||
* automated using bump-everywhere + more quality checks (#8) | [commit](https://github.com/undergroundwires/privacy.sexy/commit/a27ca65b9eb29f009553e047bfb52f4200c0bd17)
|
* automated using bump-everywhere + more quality checks (#8) | [commit](https://github.com/undergroundwires/privacy.sexy/commit/4a91e8ccd8a707bc6bea34ee28cff7fa4f66ee2f)
|
||||||
|
|
||||||
[compare](https://github.com/undergroundwires/privacy.sexy/compare/0.4.2...0.4.3)
|
[compare](https://github.com/undergroundwires/privacy.sexy/compare/0.4.2...0.4.3)
|
||||||
|
|
||||||
|
|||||||
12
Dockerfile
12
Dockerfile
@@ -1,20 +1,12 @@
|
|||||||
# +-+-+-+-+-+ +-+-+-+-+-+
|
# Build
|
||||||
# |B|u|i|l|d| |S|t|a|g|e|
|
|
||||||
# +-+-+-+-+-+ +-+-+-+-+-+
|
|
||||||
FROM node:lts-alpine as build-stage
|
FROM node:lts-alpine as build-stage
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
RUN npm install
|
RUN npm install
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
# For testing purposes, it's easy to run http-server on lts-alpine such as continuing from here:
|
|
||||||
# RUN npm install -g http-server
|
|
||||||
# EXPOSE 8080
|
|
||||||
# CMD [ "http-server", "dist" ]
|
|
||||||
|
|
||||||
# +-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+
|
# Production stage
|
||||||
# |P|r|o|d|u|c|t|i|o|n| |S|t|a|g|e|
|
|
||||||
# +-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+
|
|
||||||
FROM nginx:stable-alpine as production-stage
|
FROM nginx:stable-alpine as production-stage
|
||||||
COPY --from=build-stage /app/dist /usr/share/nginx/html
|
COPY --from=build-stage /app/dist /usr/share/nginx/html
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|||||||
20
README.md
20
README.md
@@ -28,16 +28,16 @@ Fork it & add more scripts in [application.yaml](src/application/application.yam
|
|||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
||||||
- Setup and run
|
- Project setup: `npm install`
|
||||||
- For development:
|
- Testing
|
||||||
- `npm install` to project setup.
|
- Run unit tests: `npm run test:unit`
|
||||||
- `npm run serve` to compile & hot-reload for development.
|
- Lint: `npm run lint`
|
||||||
- Production (using Docker):
|
- **Webpage**
|
||||||
- Build `docker build -t undergroundwires/privacy.sexy .`
|
- Development: `npm run serve` to compile & hot-reload for development.
|
||||||
- Run `docker run -it -p 8080:8080 --rm --name privacy.sexy-1 undergroundwires/privacy.sexy`
|
- Production: `npm run build` to prepare files for distribution.
|
||||||
- Prepare for production: `npm run build`
|
- Or run using Docker:
|
||||||
- Run tests: `npm run test:unit`
|
1. Build: `docker build -t undergroundwires/privacy.sexy:0.4.9 .`
|
||||||
- Lint and fix files: `npm run lint`
|
2. Run: `docker run -it -p 8080:80 --rm --name privacy.sexy-0.4.9 undergroundwires/privacy.sexy:0.4.9`
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
BIN
docs/gitops.png
BIN
docs/gitops.png
Binary file not shown.
|
Before Width: | Height: | Size: 233 KiB After Width: | Height: | Size: 233 KiB |
8
package-lock.json
generated
8
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "privacy.sexy",
|
"name": "privacy.sexy",
|
||||||
"version": "0.4.3",
|
"version": "0.4.4",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -12882,9 +12882,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"websocket-extensions": {
|
"websocket-extensions": {
|
||||||
"version": "0.1.3",
|
"version": "0.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
|
||||||
"integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
|
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"whatwg-encoding": {
|
"whatwg-encoding": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "privacy.sexy",
|
"name": "privacy.sexy",
|
||||||
"version": "0.4.3",
|
"version": "0.4.9",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"serve": "vue-cli-service serve",
|
"serve": "vue-cli-service serve",
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
import { Category } from '../../domain/Category';
|
import { Category } from '../../domain/Category';
|
||||||
import { Application } from '../../domain/Application';
|
import { Application } from '../../domain/Application';
|
||||||
import applicationFile from 'js-yaml-loader!./../application.yaml';
|
import { ApplicationYaml } from 'js-yaml-loader!./../application.yaml';
|
||||||
import { parseCategory } from './CategoryParser';
|
import { parseCategory } from './CategoryParser';
|
||||||
|
|
||||||
export function parseApplication(): Application {
|
export function parseApplication(content: ApplicationYaml): Application {
|
||||||
const categories = new Array<Category>();
|
const categories = new Array<Category>();
|
||||||
if (!applicationFile.actions || applicationFile.actions.length <= 0) {
|
if (!content.actions || content.actions.length <= 0) {
|
||||||
throw new Error('Application does not define any action');
|
throw new Error('Application does not define any action');
|
||||||
}
|
}
|
||||||
for (const action of applicationFile.actions) {
|
for (const action of content.actions) {
|
||||||
const category = parseCategory(action);
|
const category = parseCategory(action);
|
||||||
categories.push(category);
|
categories.push(category);
|
||||||
}
|
}
|
||||||
const app = new Application(
|
const app = new Application(
|
||||||
applicationFile.name,
|
content.name,
|
||||||
applicationFile.repositoryUrl,
|
content.repositoryUrl,
|
||||||
process.env.VUE_APP_VERSION,
|
process.env.VUE_APP_VERSION,
|
||||||
categories);
|
categories);
|
||||||
return app;
|
return app;
|
||||||
|
|||||||
@@ -3,13 +3,14 @@ import { IUserFilter } from './Filter/IUserFilter';
|
|||||||
import { ApplicationCode } from './Code/ApplicationCode';
|
import { ApplicationCode } from './Code/ApplicationCode';
|
||||||
import { UserSelection } from './Selection/UserSelection';
|
import { UserSelection } from './Selection/UserSelection';
|
||||||
import { IUserSelection } from './Selection/IUserSelection';
|
import { IUserSelection } from './Selection/IUserSelection';
|
||||||
import { AsyncLazy } from '../../infrastructure/Threading/AsyncLazy';
|
import { AsyncLazy } from '@/infrastructure/Threading/AsyncLazy';
|
||||||
import { Signal } from '../../infrastructure/Events/Signal';
|
import { Signal } from '@/infrastructure/Events/Signal';
|
||||||
import { parseApplication } from '../Parser/ApplicationParser';
|
import { parseApplication } from '../Parser/ApplicationParser';
|
||||||
import { IApplicationState } from './IApplicationState';
|
import { IApplicationState } from './IApplicationState';
|
||||||
import { Script } from '../../domain/Script';
|
import { Script } from '@/domain/Script';
|
||||||
import { Application } from '../../domain/Application';
|
import { Application } from '@/domain/Application';
|
||||||
import { IApplicationCode } from './Code/IApplicationCode';
|
import { IApplicationCode } from './Code/IApplicationCode';
|
||||||
|
import applicationFile from 'js-yaml-loader!@/application/application.yaml';
|
||||||
|
|
||||||
/** Mutatable singleton application state that's the single source of truth throughout the application */
|
/** Mutatable singleton application state that's the single source of truth throughout the application */
|
||||||
export class ApplicationState implements IApplicationState {
|
export class ApplicationState implements IApplicationState {
|
||||||
@@ -20,7 +21,7 @@ export class ApplicationState implements IApplicationState {
|
|||||||
|
|
||||||
/** Application instance with all scripts. */
|
/** Application instance with all scripts. */
|
||||||
private static instance = new AsyncLazy<IApplicationState>(() => {
|
private static instance = new AsyncLazy<IApplicationState>(() => {
|
||||||
const application = parseApplication();
|
const application = parseApplication(applicationFile);
|
||||||
const selectedScripts = new Array<Script>();
|
const selectedScripts = new Array<Script>();
|
||||||
const state = new ApplicationState(application, selectedScripts);
|
const state = new ApplicationState(application, selectedScripts);
|
||||||
return Promise.resolve(state);
|
return Promise.resolve(state);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
2
src/application/application.yaml.d.ts
vendored
2
src/application/application.yaml.d.ts
vendored
@@ -17,7 +17,7 @@ declare module 'js-yaml-loader!*' {
|
|||||||
category: string;
|
category: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ApplicationYaml {
|
export interface ApplicationYaml {
|
||||||
name: string;
|
name: string;
|
||||||
repositoryUrl: string;
|
repositoryUrl: string;
|
||||||
actions: ReadonlyArray<YamlCategory>;
|
actions: ReadonlyArray<YamlCategory>;
|
||||||
|
|||||||
12
tests/unit/application/Parser/ApplicationParser.spec.ts
Normal file
12
tests/unit/application/Parser/ApplicationParser.spec.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import applicationFile from 'js-yaml-loader!@/application/application.yaml';
|
||||||
|
import { parseApplication } from '@/application/Parser/ApplicationParser';
|
||||||
|
import 'mocha';
|
||||||
|
import { expect } from 'chai';
|
||||||
|
|
||||||
|
describe('ApplicationParser', () => {
|
||||||
|
describe('parseApplication', () => {
|
||||||
|
it('can parse current application file', () => {
|
||||||
|
expect(() => parseApplication(applicationFile)).to.not.throw();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user