Started the base Electron project
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
parent
9351cd6266
commit
6e6fa2b757
136
.gitignore
vendored
136
.gitignore
vendored
@ -1,132 +1,12 @@
|
||||
# ---> Node
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
# Node.js modules
|
||||
node_modules
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
# Generated HTML, CSS and JS files
|
||||
public/
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
# SASS cache files
|
||||
.sass-cache/
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
web_modules/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional stylelint cache
|
||||
.stylelintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variable files
|
||||
.env
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
out
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# vuepress v2.x temp and cache directory
|
||||
.temp
|
||||
.cache
|
||||
|
||||
# Docusaurus cache and generated files
|
||||
.docusaurus
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
# Build artifacts
|
||||
dist/
|
||||
|
||||
|
32
.woodpecker.yml
Normal file
32
.woodpecker.yml
Normal file
@ -0,0 +1,32 @@
|
||||
workspace:
|
||||
base: /usr/src
|
||||
path: app
|
||||
|
||||
pipeline:
|
||||
build:
|
||||
image: node:16
|
||||
commands:
|
||||
- apt update && apt install -y ruby ruby-dev && gem install sass
|
||||
- npm install
|
||||
- npm run grunt
|
||||
|
||||
package_linux:
|
||||
image: electronuserland/builder:16
|
||||
commands:
|
||||
- npm install
|
||||
- npm run build-linux
|
||||
when:
|
||||
event: tag
|
||||
|
||||
gitea_release:
|
||||
image: plugins/gitea-release
|
||||
settings:
|
||||
api_key:
|
||||
from_secret: gitea_api_key
|
||||
base_url: https://git.metaunix.net
|
||||
title: "${CI_COMMIT_TAG}"
|
||||
files:
|
||||
- dist/sentry*.deb
|
||||
- dist/sentry*.rpm
|
||||
when:
|
||||
event: tag
|
109
Gruntfile.js
Normal file
109
Gruntfile.js
Normal file
@ -0,0 +1,109 @@
|
||||
module.exports = function(grunt) {
|
||||
|
||||
var pkg = grunt.file.readJSON('package.json')
|
||||
|
||||
// Project configuration.
|
||||
grunt.initConfig({
|
||||
sass: {
|
||||
dist: {
|
||||
options: {
|
||||
style: 'compressed'
|
||||
},
|
||||
files: [{
|
||||
expand: true,
|
||||
cwd: 'assets/sass',
|
||||
src: ['*.sass'],
|
||||
dest: 'public/styles',
|
||||
ext: '.css'
|
||||
}]
|
||||
}
|
||||
},
|
||||
|
||||
coffee: {
|
||||
options: {
|
||||
sourceMap: true,
|
||||
style: 'compressed'
|
||||
},
|
||||
files: {
|
||||
expand: true,
|
||||
flatten: true,
|
||||
cwd: 'assets/coffee',
|
||||
src: ['*.coffee'],
|
||||
dest: 'public/js',
|
||||
ext: '.js'
|
||||
}
|
||||
},
|
||||
|
||||
twigRender: {
|
||||
compile: {
|
||||
files : [{
|
||||
data: {
|
||||
file_root: __dirname + '/public'
|
||||
},
|
||||
expand: true,
|
||||
cwd: 'assets/twig',
|
||||
src: ['**/*.twig', '!**/_*.twig'],
|
||||
dest: 'public',
|
||||
ext: '.html'
|
||||
}]
|
||||
},
|
||||
},
|
||||
|
||||
copy: {
|
||||
main: {
|
||||
files: [{
|
||||
expand: true,
|
||||
cwd: 'assets/static',
|
||||
src: ['**'],
|
||||
dest: 'public/',
|
||||
}]
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
html: {
|
||||
files: ['assets/twig/*.twig', 'assets/twig/**/*.twig'],
|
||||
tasks: ['twigRender'],
|
||||
options: {
|
||||
atBegin: true,
|
||||
spawn: false
|
||||
}
|
||||
},
|
||||
css: {
|
||||
files: ['assets/sass/*.sass'],
|
||||
tasks: ['sass'],
|
||||
options: {
|
||||
atBegin: true,
|
||||
spawn: false
|
||||
}
|
||||
},
|
||||
js: {
|
||||
files: ['assets/coffee/*.coffee'],
|
||||
tasks: ['coffee'],
|
||||
options: {
|
||||
atBegin: true,
|
||||
spawn: false
|
||||
}
|
||||
},
|
||||
static: {
|
||||
files: ['assets/static/*/*'],
|
||||
tasks: ['copy'],
|
||||
options: {
|
||||
atBegin: true,
|
||||
spawn: false
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Load task plugins
|
||||
grunt.loadNpmTasks('grunt-twig-render');
|
||||
grunt.loadNpmTasks('grunt-contrib-sass');
|
||||
grunt.loadNpmTasks('grunt-contrib-coffee');
|
||||
grunt.loadNpmTasks('grunt-contrib-copy');
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
|
||||
// Default task(s).
|
||||
grunt.registerTask('default', ['twigRender', 'sass', 'coffee', 'copy']);
|
||||
|
||||
};
|
2
LICENSE
2
LICENSE
@ -1,4 +1,4 @@
|
||||
Copyright (c) <year> <owner>
|
||||
Copyright (c) 2022 Metaunix
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
|
9
assets/coffee/index.coffee
Normal file
9
assets/coffee/index.coffee
Normal file
@ -0,0 +1,9 @@
|
||||
si = require('systeminformation')
|
||||
|
||||
window.onload = () ->
|
||||
si.cpu()
|
||||
.then((data) ->
|
||||
console.log(data)
|
||||
).catch((error) ->
|
||||
console.error(error)
|
||||
)
|
2
assets/coffee/sentry.coffee
Normal file
2
assets/coffee/sentry.coffee
Normal file
@ -0,0 +1,2 @@
|
||||
@loadPage = (pagePath) ->
|
||||
window.location.href = pagePath + '.html'
|
49
assets/sass/sentry.sass
Normal file
49
assets/sass/sentry.sass
Normal file
@ -0,0 +1,49 @@
|
||||
body
|
||||
background: white
|
||||
|
||||
a
|
||||
color: cornflowerblue
|
||||
transition: all 200ms ease-in-out
|
||||
|
||||
&:hover
|
||||
color: darken(cornflowerblue, 10%)
|
||||
|
||||
input
|
||||
transition: all 200ms ease-in-out
|
||||
|
||||
input[type=submit],
|
||||
button
|
||||
background-color: cornflowerblue
|
||||
color: #f0f0f0
|
||||
transition: all 200ms ease-in-out
|
||||
|
||||
&:hover
|
||||
background-color: darken(cornflowerblue, 10%)
|
||||
color: white
|
||||
|
||||
.u-text-center
|
||||
text-align: center
|
||||
|
||||
.container
|
||||
max-width: 1024px
|
||||
|
||||
.container.fluid
|
||||
max-width: 100%
|
||||
|
||||
#header h1
|
||||
text-align: center
|
||||
|
||||
#footer
|
||||
position: fixed
|
||||
left: 0
|
||||
right: 0
|
||||
bottom: 0
|
||||
padding-top: 25px
|
||||
padding-bottom: 25px
|
||||
border-top: 1px solid #999
|
||||
|
||||
.row
|
||||
position: relative
|
||||
|
||||
p.no-margin
|
||||
margin-bottom: 0
|
1
assets/static/styles/skeleton-2.0.4.min.css
vendored
Normal file
1
assets/static/styles/skeleton-2.0.4.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
15
assets/twig/index.twig
Normal file
15
assets/twig/index.twig
Normal file
@ -0,0 +1,15 @@
|
||||
{% extends 'layout.twig' %}
|
||||
|
||||
{% block scripts %}
|
||||
<script src="./js/index.js" charset="utf-8"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<header class="row">
|
||||
<div class="columns twelve u-text-center">
|
||||
<h1>Sentry System Info</h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{% endblock %}
|
34
assets/twig/layout.twig
Normal file
34
assets/twig/layout.twig
Normal file
@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'">
|
||||
<link rel="stylesheet" href="{{ file_root }}/styles/skeleton-2.0.4.min.css">
|
||||
<link rel="stylesheet" href="{{ file_root }}//styles/sentry.css">
|
||||
<title>Sentry System Monitor</title>
|
||||
<script src="{{ file_root }}/js/sentry.js" charset="utf-8"></script>
|
||||
{% block scripts %}{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
|
||||
<footer id="footer">
|
||||
<div class="container fluid">
|
||||
<div class="row">
|
||||
<div class="columns three"><p></p></div>
|
||||
<div class="columns six">
|
||||
<p class="no-margin">This app was built using:</p>
|
||||
<p class="no-margin">
|
||||
Node.js <span id="node-version"></span>,
|
||||
Chromium <span id="chrome-version"></span>,
|
||||
and Electron <span id="electron-version"></span>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
BIN
build/icon.png
Normal file
BIN
build/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 277 KiB |
45
main.js
Normal file
45
main.js
Normal file
@ -0,0 +1,45 @@
|
||||
// Modules to control application life and create native browser window
|
||||
const {app, BrowserWindow} = require('electron');
|
||||
const path = require('path');
|
||||
|
||||
function createWindow () {
|
||||
// Create the browser window.
|
||||
const mainWindow = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
contextIsolation: false,
|
||||
preload: path.join(__dirname, 'preload.js')
|
||||
}
|
||||
});
|
||||
|
||||
// and load the index.html of the app.
|
||||
mainWindow.loadFile('public/index.html');
|
||||
|
||||
// Open the DevTools.
|
||||
// mainWindow.webContents.openDevTools()
|
||||
}
|
||||
|
||||
// This method will be called when Electron has finished
|
||||
// initialization and is ready to create browser windows.
|
||||
// Some APIs can only be used after this event occurs.
|
||||
app.whenReady().then(() => {
|
||||
createWindow();
|
||||
|
||||
app.on('activate', function () {
|
||||
// On macOS it's common to re-create a window in the app when the
|
||||
// dock icon is clicked and there are no other windows open.
|
||||
if (BrowserWindow.getAllWindows().length === 0) createWindow()
|
||||
});
|
||||
});
|
||||
|
||||
// Quit when all windows are closed, except on macOS. There, it's common
|
||||
// for applications and their menu bar to stay active until the user quits
|
||||
// explicitly with Cmd + Q.
|
||||
app.on('window-all-closed', function () {
|
||||
if (process.platform !== 'darwin') app.quit();
|
||||
});
|
||||
|
||||
// In this file you can include the rest of your app's specific main process
|
||||
// code. You can also put them in separate files and require them here.
|
9087
package-lock.json
generated
Normal file
9087
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
55
package.json
Normal file
55
package.json
Normal file
@ -0,0 +1,55 @@
|
||||
{
|
||||
"name": "sentry",
|
||||
"version": "0.1.0",
|
||||
"description": "Desktop app to view system information and sensors",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"start": "electron .",
|
||||
"build-linux": "electron-builder build --linux",
|
||||
"build-win": "electron-builder build --win",
|
||||
"grunt": "grunt"
|
||||
},
|
||||
"repository": "https://git.metaunix.net/metaunix/sentry",
|
||||
"keywords": [
|
||||
"sensors",
|
||||
"cpu",
|
||||
"gpu",
|
||||
"memory"
|
||||
],
|
||||
"author": "Gregory Ballantine <gballantine@metaunix.net>",
|
||||
"license": "BSD-2-Clause",
|
||||
"devDependencies": {
|
||||
"electron": "^18.2.4",
|
||||
"electron-builder": "^23.0.3",
|
||||
"grunt": "^1.5.3",
|
||||
"grunt-contrib-coffee": "^2.1.0",
|
||||
"grunt-contrib-copy": "^1.0.0",
|
||||
"grunt-contrib-sass": "^2.0.0",
|
||||
"grunt-contrib-watch": "^1.1.0",
|
||||
"grunt-twig-render": "^1.8.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"systeminformation": "^5.11.15"
|
||||
},
|
||||
"build": {
|
||||
"appId": "net.metaunix.sentry",
|
||||
"copyright": "Copyright © 2022 ${author}",
|
||||
"win": {
|
||||
"target": "msi",
|
||||
"icon": "build/icon.png"
|
||||
},
|
||||
"linux": {
|
||||
"target": [
|
||||
"deb",
|
||||
"rpm"
|
||||
],
|
||||
"icon": "build/icon.png"
|
||||
},
|
||||
"deb": {
|
||||
"category": "internet"
|
||||
},
|
||||
"rpm": {
|
||||
"packageCategory": "internet"
|
||||
}
|
||||
}
|
||||
}
|
12
preload.js
Normal file
12
preload.js
Normal file
@ -0,0 +1,12 @@
|
||||
// All of the Node.js APIs are available in the preload process.
|
||||
// It has the same sandbox as a Chrome extension.
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
const replaceText = (selector, text) => {
|
||||
const element = document.getElementById(selector)
|
||||
if (element) element.innerText = text
|
||||
}
|
||||
|
||||
for (const type of ['chrome', 'node', 'electron']) {
|
||||
replaceText(`${type}-version`, process.versions[type])
|
||||
}
|
||||
})
|
Loading…
Reference in New Issue
Block a user