@tasenor/common-plugins 1.10.29 → 1.10.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
 
2
- > @tasenor/common-plugins@1.10.28 build /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
2
+ > @tasenor/common-plugins@1.10.30 build /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
3
3
  > rm -fr dist && tsc
4
4
 
@@ -1,8 +1,8 @@
1
1
 
2
- > @tasenor/common-plugins@1.10.28 ci /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
2
+ > @tasenor/common-plugins@1.10.30 ci /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
3
3
  > pnpm run lint
4
4
 
5
5
 
6
- > @tasenor/common-plugins@1.10.28 lint /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
6
+ > @tasenor/common-plugins@1.10.30 lint /home/ci/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
7
7
  > eslint 'src/**/*.{ts,tsx}' 'data/**/*.mjs'
8
8
 
@@ -1,5 +1,5 @@
1
1
  import { GitRepo, systemPiped, TasenorExporter, ToolPlugin } from '@tasenor/common-node';
2
- import { error, log, note } from '@tasenor/common';
2
+ import { error, log, note, validGitRepoName } from '@tasenor/common';
3
3
  import fs from 'fs';
4
4
  import path from 'path';
5
5
  class GitBackup extends ToolPlugin {
@@ -7,7 +7,7 @@ class GitBackup extends ToolPlugin {
7
7
  super();
8
8
  this.code = 'GitBackup';
9
9
  this.title = 'Backup for Git';
10
- this.version = '1.0.2';
10
+ this.version = '1.0.3';
11
11
  this.icon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path></svg>';
12
12
  this.releaseDate = '2022-12-12';
13
13
  this.use = 'both';
@@ -49,6 +49,11 @@ class GitBackup extends ToolPlugin {
49
49
  const sshPrivateKey = await this.getSetting(db, 'sshPrivateKey');
50
50
  // Skip if not configured for use.
51
51
  if (repository === undefined || subDirectory === undefined) {
52
+ error('Cannot make backup since no repository or subdirectory configured.');
53
+ return false;
54
+ }
55
+ if (!validGitRepoName(repository)) {
56
+ error(`Bad repository address ${JSON.stringify(repository)}.`);
52
57
  return false;
53
58
  }
54
59
  const sshPath = path.join(workDir, 'ssh.key');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/backend/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/backend/index.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ declare class GitBackup extends ToolPlugin {
16
16
  disabled: boolean;
17
17
  }[];
18
18
  toolTitle(): string;
19
- onMakeBackup(): Promise<void>;
19
+ onMakeBackup(message: string): Promise<void>;
20
20
  toolTopPanel(): JSX.Element;
21
21
  toolMainPanel(): JSX.Element;
22
22
  getSettings(): {
@@ -1,12 +1,24 @@
1
- import React from 'react';
2
- import { Note, IconButton, SubPanel, ToolPlugin } from '@tasenor/common-ui';
1
+ import React, { useState, useRef } from 'react';
2
+ import { Note, IconButton, SubPanel, ToolPlugin, Dialog } from '@tasenor/common-ui';
3
3
  import { makeObservable, observable, runInAction } from 'mobx';
4
- import { Trans } from 'react-i18next';
4
+ import { Trans, useTranslation } from 'react-i18next';
5
+ import { TextField } from '@mui/material';
6
+ function MakeBackupIcon(props) {
7
+ const { disabled, onMakeBackup } = props;
8
+ const [askMessage, setAskMessage] = useState(false);
9
+ const [message, setMessage] = useState('');
10
+ const { t } = useTranslation();
11
+ const val = useRef(message); // For some reason the message is not up to date when enter pressed on dialog.
12
+ return React.createElement(React.Fragment, null,
13
+ React.createElement(Dialog, { wider: true, isVisible: askMessage, title: t('Comment for Git Commit'), onClose: () => setAskMessage(false), onConfirm: () => onMakeBackup(val.current.trim()) },
14
+ React.createElement(TextField, { fullWidth: true, autoFocus: true, value: val.current, onChange: (e) => { setMessage(e.target.value); val.current = e.target.value; } })),
15
+ React.createElement(IconButton, { id: "Make Backup", disabled: disabled, onClick: () => setAskMessage(true), title: "summarize-make-backup", icon: "save" }));
16
+ }
5
17
  class GitBackup extends ToolPlugin {
6
18
  busy = false;
7
19
  static code = 'GitBackup';
8
20
  static title = 'Backup for Git';
9
- static version = '1.0.2';
21
+ static version = '1.0.3';
10
22
  static icon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path></svg>';
11
23
  static releaseDate = '2022-12-12';
12
24
  static use = 'both';
@@ -23,12 +35,12 @@ class GitBackup extends ToolPlugin {
23
35
  'label-repository': 'Repository URL',
24
36
  'label-subDirectory': 'Subdirectory inside the repository',
25
37
  'label-sshPrivateKey': 'SSH private key',
26
- 'label-sshPublicKey': 'SSH public key',
27
38
  'icon-summarize-make-backup': 'Make a backup'
28
39
  },
29
40
  fi: {
30
41
  'label-repository': 'Git-säilön URL',
31
42
  'label-subDirectory': 'Alihakemiston nimi säilön sisällä',
43
+ 'label-sshPrivateKey': 'SSH yksityinen avain',
32
44
  'icon-summarize-make-backup': 'Tee varmuuskopio',
33
45
  'Backup for Git': 'Git-pohjainen Varmuuskopiointi',
34
46
  'Manual backup by GitBackup {version}': 'Ylimääräinen varmuuskopio GitBackup {version}',
@@ -43,9 +55,9 @@ class GitBackup extends ToolPlugin {
43
55
  toolTitle() {
44
56
  return 'Backup for Git';
45
57
  }
46
- async onMakeBackup() {
58
+ async onMakeBackup(message) {
47
59
  runInAction(() => (this.busy = true));
48
- const { success } = await this.POST({ makeBackup: this.t('Manual backup by GitBackup {version}').replace('{version}', GitBackup.version) });
60
+ const { success } = await this.POST({ makeBackup: message || this.t('Manual backup by GitBackup {version}').replace('{version}', GitBackup.version) });
49
61
  runInAction(() => {
50
62
  this.busy = false;
51
63
  if (success) {
@@ -58,8 +70,7 @@ class GitBackup extends ToolPlugin {
58
70
  }
59
71
  toolTopPanel() {
60
72
  const repo = this.getSetting('repository');
61
- return React.createElement(React.Fragment, null,
62
- React.createElement(IconButton, { id: "Make Backup", disabled: this.busy || !repo, onClick: () => this.onMakeBackup(), title: "summarize-make-backup", icon: "save" }));
73
+ return React.createElement(MakeBackupIcon, { disabled: !repo || this.busy, onMakeBackup: (msg) => this.onMakeBackup(msg) });
63
74
  }
64
75
  toolMainPanel() {
65
76
  const repo = this.getSetting('repository');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/ui/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/ui/index.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tasenor/common-plugins",
3
- "version": "1.10.29",
3
+ "version": "1.10.31",
4
4
  "description": "Shared common plugins of Tasenor project",
5
5
  "repository": "git@github.com:dataplugoy/tasenor-bookkeeper.git",
6
6
  "author": "Tommi Ronkainen <tommi.ronkainen@gmail.com>",
@@ -13,9 +13,9 @@
13
13
  "dayjs": "1.10.8",
14
14
  "sprintf-js": "^1.1.2",
15
15
  "tsx": "^4.7.0",
16
- "@tasenor/common": "1.10.29",
17
- "@tasenor/common-node": "1.10.29",
18
- "@tasenor/common-ui": "1.10.29"
16
+ "@tasenor/common": "1.10.31",
17
+ "@tasenor/common-node": "1.10.31",
18
+ "@tasenor/common-ui": "1.10.31"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@mui/icons-material": "^5.14.1",
@@ -31,8 +31,8 @@
31
31
  "react-i18next": "^13.0.2",
32
32
  "react-router-dom": "^6.14.1",
33
33
  "typescript": "^5.1.6",
34
- "@tasenor/config": "1.10.29",
35
- "eslint-config-tasenor": "0.0.0"
34
+ "eslint-config-tasenor": "0.0.0",
35
+ "@tasenor/config": "1.10.31"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "@mui/icons-material": "^5.14.1",
@@ -1,5 +1,5 @@
1
1
  import { GitRepo, KnexDatabase, systemPiped, TasenorExporter, ToolPlugin } from '@tasenor/common-node'
2
- import { DirectoryPath, Email, error, FilePath, log, note, PluginCode, Version } from '@tasenor/common'
2
+ import { DirectoryPath, Email, error, FilePath, log, note, PluginCode, validGitRepoName, Version } from '@tasenor/common'
3
3
  import fs from 'fs'
4
4
  import path from 'path'
5
5
 
@@ -9,7 +9,7 @@ class GitBackup extends ToolPlugin {
9
9
 
10
10
  this.code = 'GitBackup'as PluginCode
11
11
  this.title = 'Backup for Git'
12
- this.version = '1.0.2' as Version
12
+ this.version = '1.0.3' as Version
13
13
  this.icon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path></svg>'
14
14
  this.releaseDate = '2022-12-12'
15
15
  this.use = 'both'
@@ -59,6 +59,12 @@ class GitBackup extends ToolPlugin {
59
59
 
60
60
  // Skip if not configured for use.
61
61
  if (repository === undefined || subDirectory === undefined) {
62
+ error('Cannot make backup since no repository or subdirectory configured.')
63
+ return false
64
+ }
65
+
66
+ if (!validGitRepoName(repository)) {
67
+ error(`Bad repository address ${JSON.stringify(repository)}.`)
62
68
  return false
63
69
  }
64
70
 
@@ -1,7 +1,37 @@
1
- import React from 'react'
2
- import { Note, IconButton, SubPanel, ToolPlugin } from '@tasenor/common-ui'
1
+ import React, { useState, useRef } from 'react'
2
+ import { Note, IconButton, SubPanel, ToolPlugin, Dialog } from '@tasenor/common-ui'
3
3
  import { makeObservable, observable, runInAction } from 'mobx'
4
- import { Trans } from 'react-i18next'
4
+ import { Trans, useTranslation } from 'react-i18next'
5
+ import { TextField } from '@mui/material'
6
+
7
+ interface MakeBackupIconProps {
8
+ disabled: boolean
9
+ onMakeBackup: (string) => void
10
+ }
11
+
12
+ function MakeBackupIcon(props: MakeBackupIconProps) {
13
+ const { disabled, onMakeBackup } = props
14
+ const [askMessage, setAskMessage] = useState(false)
15
+ const [message, setMessage] = useState('')
16
+ const { t } = useTranslation()
17
+ const val = useRef(message) // For some reason the message is not up to date when enter pressed on dialog.
18
+
19
+ return <>
20
+ {
21
+ <Dialog
22
+ wider
23
+ isVisible={askMessage}
24
+ title={t('Comment for Git Commit')} onClose={() =>
25
+ setAskMessage(false)}
26
+ onConfirm={() => onMakeBackup(val.current.trim())}
27
+ >
28
+ <TextField fullWidth autoFocus value={val.current} onChange={(e) => { setMessage(e.target.value); val.current = e.target.value }}/>
29
+ </Dialog>
30
+ }
31
+ <IconButton id="Make Backup" disabled={disabled} onClick={() => setAskMessage(true)} title="summarize-make-backup" icon="save" />
32
+ </>
33
+
34
+ }
5
35
 
6
36
  class GitBackup extends ToolPlugin {
7
37
 
@@ -9,7 +39,7 @@ class GitBackup extends ToolPlugin {
9
39
 
10
40
  static code = 'GitBackup'
11
41
  static title = 'Backup for Git'
12
- static version = '1.0.2'
42
+ static version = '1.0.3'
13
43
  static icon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path></svg>'
14
44
  static releaseDate = '2022-12-12'
15
45
  static use = 'both'
@@ -29,12 +59,12 @@ class GitBackup extends ToolPlugin {
29
59
  'label-repository': 'Repository URL',
30
60
  'label-subDirectory': 'Subdirectory inside the repository',
31
61
  'label-sshPrivateKey': 'SSH private key',
32
- 'label-sshPublicKey': 'SSH public key',
33
62
  'icon-summarize-make-backup': 'Make a backup'
34
63
  },
35
64
  fi: {
36
65
  'label-repository': 'Git-säilön URL',
37
66
  'label-subDirectory': 'Alihakemiston nimi säilön sisällä',
67
+ 'label-sshPrivateKey': 'SSH yksityinen avain',
38
68
  'icon-summarize-make-backup': 'Tee varmuuskopio',
39
69
 
40
70
  'Backup for Git': 'Git-pohjainen Varmuuskopiointi',
@@ -54,9 +84,9 @@ class GitBackup extends ToolPlugin {
54
84
  return 'Backup for Git'
55
85
  }
56
86
 
57
- async onMakeBackup() {
87
+ async onMakeBackup(message: string) {
58
88
  runInAction(() => (this.busy = true))
59
- const { success } = await this.POST({ makeBackup: this.t('Manual backup by GitBackup {version}').replace('{version}', GitBackup.version) }) as { success: boolean }
89
+ const { success } = await this.POST({ makeBackup: message || this.t('Manual backup by GitBackup {version}').replace('{version}', GitBackup.version) }) as { success: boolean }
60
90
  runInAction(() => {
61
91
  this.busy = false
62
92
  if (success) {
@@ -69,9 +99,7 @@ class GitBackup extends ToolPlugin {
69
99
 
70
100
  toolTopPanel() {
71
101
  const repo = this.getSetting('repository')
72
- return <>
73
- <IconButton id="Make Backup" disabled={this.busy || !repo} onClick={() => this.onMakeBackup()} title="summarize-make-backup" icon="save" />
74
- </>
102
+ return <MakeBackupIcon disabled={!repo || this.busy} onMakeBackup={(msg) => this.onMakeBackup(msg)} />
75
103
  }
76
104
 
77
105
  toolMainPanel() {