Compare commits
13 Commits
301a276a7b
...
main
Author | SHA1 | Date | |
---|---|---|---|
cbe5614794 | |||
f03c56fead | |||
26e253a3ab | |||
6d0ec6d8a8 | |||
b97f3d3575 | |||
9f357b4b0e | |||
dc54df19a6 | |||
1224d27caa | |||
f91557ba05 | |||
a483804ac2 | |||
ee5a3cd775 | |||
5f7a346d8a | |||
94c850c293 |
@ -3,7 +3,6 @@
|
|||||||
<Version>1.0.8</Version>
|
<Version>1.0.8</Version>
|
||||||
<Authors>paul</Authors>
|
<Authors>paul</Authors>
|
||||||
<Copyright>WFPL</Copyright>
|
<Copyright>WFPL</Copyright>
|
||||||
<PackageLicenseExpression></PackageLicenseExpression>
|
|
||||||
<ProjectUrl></ProjectUrl>
|
<ProjectUrl></ProjectUrl>
|
||||||
<RepositoryUrl></RepositoryUrl>
|
<RepositoryUrl></RepositoryUrl>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
9
Makefile
9
Makefile
@ -16,14 +16,17 @@ watch:
|
|||||||
test-push:
|
test-push:
|
||||||
isn push src/isn/bin/Debug/isn.*.nupkg
|
isn push src/isn/bin/Debug/isn.*.nupkg
|
||||||
|
|
||||||
clean-%: src/%
|
clean-src-%: src/%
|
||||||
|
rm -rf $^/bin $^/obj
|
||||||
|
|
||||||
|
clean-test-%: test/%
|
||||||
rm -rf $^/bin $^/obj
|
rm -rf $^/bin $^/obj
|
||||||
|
|
||||||
packs: pack-isn pack-isnd pack-isn.abst
|
packs: pack-isn pack-isnd pack-isn.abst
|
||||||
|
|
||||||
clean: clean-isnd clean-isn clean-isn.abst
|
clean: clean-src-isnd clean-src-isn clean-src-isn.abst clean-test-isnd.tests clean-test-isn.tests
|
||||||
|
|
||||||
TARGETFRAMEWORK=net8.0
|
TARGETFRAMEWORK=net9.0
|
||||||
|
|
||||||
server-update:
|
server-update:
|
||||||
dotnet build -c Release src/isnd
|
dotnet build -c Release src/isnd
|
||||||
|
@ -33,7 +33,7 @@ La livraison initiale, aujourd'hui :
|
|||||||
|
|
||||||
````bash
|
````bash
|
||||||
sudo mkdir -p /srv/www/isnd
|
sudo mkdir -p /srv/www/isnd
|
||||||
sudo cp -a src/isnd/bin/Release/net8.0/publish/* /srv/www/isnd
|
sudo cp -a src/isnd/bin/Release/net9.0/publish/* /srv/www/isnd
|
||||||
sudo cp contrib/isnd.service /etc/systemd/system
|
sudo cp contrib/isnd.service /etc/systemd/system
|
||||||
chown -R isn:isn /srv/www/isnd/
|
chown -R isn:isn /srv/www/isnd/
|
||||||
sudo systemctl daemon-reload
|
sudo systemctl daemon-reload
|
||||||
@ -81,13 +81,13 @@ Dans le détail, la séquence serait du style :
|
|||||||
````bash
|
````bash
|
||||||
# compiler tout
|
# compiler tout
|
||||||
dotnet build -c Release
|
dotnet build -c Release
|
||||||
dotnet publish -c Release -f net8.0 src/isnd
|
dotnet publish -c Release -f net9.0 src/isnd
|
||||||
# MAJ du serveur
|
# MAJ du serveur
|
||||||
sudo systemctl stop isnd
|
sudo systemctl stop isnd
|
||||||
sudo cp -a src/isnd/bin/Release/net8.0/publish/* /srv/www/isnd
|
sudo cp -a src/isnd/bin/Release/net9.0/publish/* /srv/www/isnd
|
||||||
sudo systemctl start isnd
|
sudo systemctl start isnd
|
||||||
# MAJ du client
|
# MAJ du client
|
||||||
sudo cp -a src/isn/bin/Release/net8.0/* /usr/local/lib/isn
|
sudo cp -a src/isn/bin/Release/net9.0/* /usr/local/lib/isn
|
||||||
sudo chown -R root:root /usr/local/lib/isn
|
sudo chown -R root:root /usr/local/lib/isn
|
||||||
````
|
````
|
||||||
|
|
||||||
|
8
debian/README.Debian
vendored
Normal file
8
debian/README.Debian
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
yavsc for Debian
|
||||||
|
|
||||||
|
Please edit this to provide information specific to
|
||||||
|
this yavsc Debian package.
|
||||||
|
|
||||||
|
(Automatically generated by debmake Version 4.5.1)
|
||||||
|
|
||||||
|
-- Paul Schneider <paul@localhost> Sun, 08 Jun 2025 01:41:54 +0100
|
14
debian/README.source
vendored
Normal file
14
debian/README.source
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
yavsc for Debian
|
||||||
|
|
||||||
|
See Debian policy manual section 4.14.
|
||||||
|
https://www.debian.org/doc/debian-policy/ch-source.html#source-package-handling-debian-readme-source
|
||||||
|
|
||||||
|
If running dpkg-source -x on a source package doesn’t produce the source of the
|
||||||
|
package, ready for editing, and allow one to make changes and run
|
||||||
|
dpkg-buildpackage to produce a modified package without taking any additional
|
||||||
|
steps, creating this file explain how to do all of these is recommended.
|
||||||
|
Otherwise, remove this file.
|
||||||
|
|
||||||
|
(Automatically generated by debmake Version 4.5.1)
|
||||||
|
|
||||||
|
-- Paul Schneider <paul@localhost> Sun, 08 Jun 2025 01:41:54 +0100
|
6
debian/changelog
vendored
Normal file
6
debian/changelog
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
yavsc (1.1.0-1) UNRELEASED; urgency=low
|
||||||
|
|
||||||
|
* Initial release. Closes: #nnnn
|
||||||
|
<nnnn is the bug number of your ITP>
|
||||||
|
|
||||||
|
-- Paul Schneider <paul@localhost> Sun, 08 Jun 2025 01:41:54 +0100
|
1
debian/clean
vendored
Normal file
1
debian/clean
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
# You must remove unused comment lines for the released package.
|
21
debian/control
vendored
Normal file
21
debian/control
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Source: yavsc
|
||||||
|
Section: unknown
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Paul Schneider <paul@localhost>
|
||||||
|
Build-Depends:
|
||||||
|
debhelper-compat (= 13),
|
||||||
|
Standards-Version: 4.7.0
|
||||||
|
Homepage: <insert the upstream URL, if relevant>
|
||||||
|
Rules-Requires-Root: no
|
||||||
|
#Vcs-Git: https://salsa.debian.org/debian/yavsc.git
|
||||||
|
#Vcs-Browser: https://salsa.debian.org/debian/yavsc
|
||||||
|
|
||||||
|
Package: yavsc
|
||||||
|
Architecture: any
|
||||||
|
Multi-Arch: foreign
|
||||||
|
Depends:
|
||||||
|
${misc:Depends},
|
||||||
|
${shlibs:Depends},
|
||||||
|
Description: auto-generated package by debmake
|
||||||
|
This Debian binary package was auto-generated by the
|
||||||
|
debmake(1) command provided by the debmake package.
|
2092
debian/copyright
vendored
Normal file
2092
debian/copyright
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2
debian/dirs
vendored
Normal file
2
debian/dirs
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
# You must remove unused comment lines for the released package.
|
2
debian/gbp.conf
vendored
Normal file
2
debian/gbp.conf
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
upstream-tag=v%(version)s
|
2
debian/install
vendored
Normal file
2
debian/install
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
# You must remove unused comment lines for the released package.
|
2
debian/links
vendored
Normal file
2
debian/links
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
# You must remove unused comment lines for the released package.
|
7
debian/maintscript.ex
vendored
Normal file
7
debian/maintscript.ex
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# see: dh_installdeb(1), dpkg-maintscript-helper(1)
|
||||||
|
# For renaming a conffile, you are advised to uncomment and edit the following
|
||||||
|
#dpkg-maintscript-helper mv_conffile old-conffile new-conffile prior-version package
|
||||||
|
# For switching a symlink to directory, you are advised to uncomment and edit the following
|
||||||
|
#dpkg-maintscript-helper symlink_to_dir pathname old-target prior-version package
|
||||||
|
# For switching a directory to symlink, you are advised to uncomment and edit the following
|
||||||
|
#dpkg-maintscript-helper dir_to_symlink pathname new-target prior-version package
|
73
debian/manpage.1.ex
vendored
Normal file
73
debian/manpage.1.ex
vendored
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
.\" Hey, EMACS: -*- nroff -*-
|
||||||
|
.\" (C) Copyright 2025 Paul Schneider <paul@localhost>,
|
||||||
|
.\"
|
||||||
|
.\" See man(1), man(7) and man-pages(7), https://www.tldp.org/HOWTO/Man-Page/
|
||||||
|
.\" for the documentation about man-pages and man-page-formatting:
|
||||||
|
.\"
|
||||||
|
.\" 1. Use this as the template for the manpage for <commandname> after
|
||||||
|
.\" renaming this file to <commandname>.1 (if it is for section 1).
|
||||||
|
.\"
|
||||||
|
.\" 2. List the path to this file in debian/<packagename>.manpages to
|
||||||
|
.\" install this manpage to the target binary package.
|
||||||
|
.\"
|
||||||
|
.\" First parameter, YAVSC, should be all caps
|
||||||
|
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
|
.\" other parameters are allowed: see man(7), man(1)
|
||||||
|
.\"
|
||||||
|
.\" Easier way to make an initial manpage for commands is the use of help2man
|
||||||
|
.\" command provided by help2man package while using this file as an tutorial
|
||||||
|
.\" to understand what was created or to make touch-up edits.
|
||||||
|
.\"
|
||||||
|
.\" Other template files (manpage.*) created by debmake command are secondary
|
||||||
|
.\" helper files to create an initial manpage.
|
||||||
|
.\"
|
||||||
|
.TH YAVSC SECTION "08 Jun 2025"
|
||||||
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
|
.\"
|
||||||
|
.\" Some roff macros, for reference:
|
||||||
|
.\" .nh disable hyphenation
|
||||||
|
.\" .hy enable hyphenation
|
||||||
|
.\" .ad l left justify
|
||||||
|
.\" .ad b justify to both left and right margins
|
||||||
|
.\" .nf disable filling
|
||||||
|
.\" .fi enable filling
|
||||||
|
.\" .br insert line break
|
||||||
|
.\" .sp <n> insert n+1 empty lines
|
||||||
|
.\" for manpage-specific macros, see man(7)
|
||||||
|
.SH NAME
|
||||||
|
yavsc \- program to do something
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B yavsc
|
||||||
|
.RI [ options ] " files" ...
|
||||||
|
.br
|
||||||
|
.B bar
|
||||||
|
.RI [ options ] " files" ...
|
||||||
|
.SH DESCRIPTION
|
||||||
|
This manual page documents briefly the
|
||||||
|
.B yavsc
|
||||||
|
and
|
||||||
|
.B bar
|
||||||
|
commands.
|
||||||
|
.PP
|
||||||
|
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||||
|
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||||
|
.\" respectively.
|
||||||
|
\fByavsc\fP is a program that...
|
||||||
|
.SH OPTIONS
|
||||||
|
These programs follow the usual GNU command line syntax, with long
|
||||||
|
options starting with two dashes (`-').
|
||||||
|
A summary of options is included below.
|
||||||
|
For a complete description, see the Info files.
|
||||||
|
.TP
|
||||||
|
.B \-h, \-\-help
|
||||||
|
Show summary of options.
|
||||||
|
.TP
|
||||||
|
.B \-v, \-\-version
|
||||||
|
Show version of program.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR bar (1),
|
||||||
|
.BR baz (1).
|
||||||
|
.br
|
||||||
|
The programs are documented fully by
|
||||||
|
.IR "The Rise and Fall of a Fooish Bar" ,
|
||||||
|
available via the Info system.
|
44
debian/manpage.asciidoc.ex
vendored
Normal file
44
debian/manpage.asciidoc.ex
vendored
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
= @UPACKAGE@(1)
|
||||||
|
:man source: YAVSC
|
||||||
|
:man version: 1.1.0-1
|
||||||
|
:man manual: YAVSC Manual
|
||||||
|
|
||||||
|
// Secondary template file to make manpage.1
|
||||||
|
//
|
||||||
|
// See "AsciiDoc Syntax Quick Reference"
|
||||||
|
// https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/
|
||||||
|
// https://docs.asciidoctor.org/asciidoctor/latest/manpage-backend/
|
||||||
|
|
||||||
|
// convert by:
|
||||||
|
// $ asciidoctor --doctype manpage -b manpage -a 'newline=\n' yavsc.asciidoc
|
||||||
|
|
||||||
|
== NAME
|
||||||
|
|
||||||
|
yavsc - program to do something
|
||||||
|
|
||||||
|
== SYNOPSIS
|
||||||
|
|
||||||
|
*yavsc* [*-h*] ...
|
||||||
|
|
||||||
|
|
||||||
|
== DESCRIPTION
|
||||||
|
|
||||||
|
*yavsc* do something.
|
||||||
|
|
||||||
|
=== optional arguments:
|
||||||
|
|
||||||
|
*-h*, *--help*::
|
||||||
|
show this help message and exit.
|
||||||
|
|
||||||
|
|
||||||
|
== AUTHOR
|
||||||
|
|
||||||
|
Copyright © 2025 Paul Schneider <paul@localhost>
|
||||||
|
|
||||||
|
== LICENSE
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
== SEE ALSO
|
||||||
|
|
||||||
|
See also ...
|
129
debian/manpage.md.ex
vendored
Normal file
129
debian/manpage.md.ex
vendored
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
% YAVSC(SECTION) | User Commands
|
||||||
|
%
|
||||||
|
% "08 Jun 2025"
|
||||||
|
|
||||||
|
[comment]: # Secondary template file to make manpage.1
|
||||||
|
[comment]: #
|
||||||
|
[comment]: # The lines above form a Pandoc metadata block. They must be
|
||||||
|
[comment]: # the first ones in the file.
|
||||||
|
[comment]: # See https://pandoc.org/MANUAL.html#metadata-blocks for details.
|
||||||
|
|
||||||
|
[comment]: # pandoc -s -f markdown -t man package.md -o package.1
|
||||||
|
[comment]: #
|
||||||
|
[comment]: # A manual page package.1 will be generated. You may view the
|
||||||
|
[comment]: # manual page with: nroff -man package.1 | less. A typical entry
|
||||||
|
[comment]: # in a Makefile or Makefile.am is:
|
||||||
|
[comment]: #
|
||||||
|
[comment]: # package.1: package.md
|
||||||
|
[comment]: # pandoc --standalone --from=markdown --to=man $< --output=$@
|
||||||
|
[comment]: #
|
||||||
|
[comment]: # The pandoc binary is found in the pandoc package. Please remember
|
||||||
|
[comment]: # that if you create the nroff version in one of the debian/rules
|
||||||
|
[comment]: # file targets, such as build, you will need to include pandoc in
|
||||||
|
[comment]: # your Build-Depends control field.
|
||||||
|
|
||||||
|
[comment]: # lowdown is a low dependency, lightweight alternative to
|
||||||
|
[comment]: # pandoc as a markdown to manpage translator. Use with:
|
||||||
|
[comment]: #
|
||||||
|
[comment]: # package.1: package.md
|
||||||
|
[comment]: # lowdown -s -Tman -o $@ $<
|
||||||
|
[comment]: #
|
||||||
|
[comment]: # And add lowdown to the Build-Depends control field.
|
||||||
|
|
||||||
|
[comment]: # Remove the lines starting with '[comment]:' in this file in order
|
||||||
|
[comment]: # to avoid warning messages.
|
||||||
|
|
||||||
|
# NAME
|
||||||
|
|
||||||
|
yavsc - short summary
|
||||||
|
|
||||||
|
# SYNOPSIS
|
||||||
|
|
||||||
|
**yavsc** **-e** _this_ [**\-\-example=that**] [{**-e** | **\-\-example**} _this_]
|
||||||
|
[{**-e** | **\-\-example**} {_this_ | _that_}]
|
||||||
|
|
||||||
|
**yavsc** [{**-h** | *\-\-help**} | {**-v** | **\-\-version**}]
|
||||||
|
|
||||||
|
# DESCRIPTION
|
||||||
|
|
||||||
|
**yavsc** is a program that...
|
||||||
|
|
||||||
|
# OPTIONS
|
||||||
|
|
||||||
|
The program follows the usual GNU command line syntax, with long options
|
||||||
|
starting with two dashes ('-'). A summary of options is included below.
|
||||||
|
|
||||||
|
**-e** _this_, **\-\-example=**_that_
|
||||||
|
: Does this and that.
|
||||||
|
|
||||||
|
**-h**, **\-\-help**
|
||||||
|
: Show summary of options.
|
||||||
|
|
||||||
|
**-v**, **\-\-version**
|
||||||
|
: Show version of program.
|
||||||
|
|
||||||
|
# FILES
|
||||||
|
|
||||||
|
/etc/foo.conf
|
||||||
|
: The system-wide configuration file to control the behaviour of
|
||||||
|
yavsc. See **foo.conf**(5) for further details.
|
||||||
|
|
||||||
|
${HOME}/.foo.conf
|
||||||
|
: The per-user configuration file to control the behaviour of
|
||||||
|
yavsc. See **foo.conf**(5) for further details.
|
||||||
|
|
||||||
|
# ENVIRONMENT
|
||||||
|
|
||||||
|
**FOO_CONF**
|
||||||
|
: If used, the defined file is used as configuration file (see also
|
||||||
|
the section called “FILES”).
|
||||||
|
|
||||||
|
# DIAGNOSTICS
|
||||||
|
|
||||||
|
The following diagnostics may be issued on stderr:
|
||||||
|
|
||||||
|
Bad configuration file. Exiting.
|
||||||
|
: The configuration file seems to contain a broken configuration
|
||||||
|
line. Use the **\-\-verbose** option, to get more info.
|
||||||
|
|
||||||
|
**yavsc** provides some return codes, that can be used in scripts:
|
||||||
|
|
||||||
|
Code Diagnostic
|
||||||
|
0 Program exited successfully.
|
||||||
|
1 The configuration file seems to be broken.
|
||||||
|
|
||||||
|
# BUGS
|
||||||
|
|
||||||
|
The program is currently limited to only work with the foobar library.
|
||||||
|
|
||||||
|
The upstream BTS can be found at https://bugzilla.foo.tld.
|
||||||
|
|
||||||
|
# SEE ALSO
|
||||||
|
|
||||||
|
**bar**(1), **baz**(1), **foo.conf**(5)
|
||||||
|
|
||||||
|
The programs are documented fully by The Rise and Fall of a Fooish Bar
|
||||||
|
available via the **info**(1) system.
|
||||||
|
|
||||||
|
# AUTHOR
|
||||||
|
|
||||||
|
Paul Schneider <paul@localhost>
|
||||||
|
: Wrote this manpage for the Debian system.
|
||||||
|
|
||||||
|
# COPYRIGHT
|
||||||
|
|
||||||
|
Copyright © 2025 Paul Schneider
|
||||||
|
|
||||||
|
This manual page was written for the Debian system (and may be used by
|
||||||
|
others).
|
||||||
|
|
||||||
|
Permission is granted to copy, distribute and/or modify this document under
|
||||||
|
the terms of the GNU General Public License, Version 2 or (at your option)
|
||||||
|
any later version published by the Free Software Foundation.
|
||||||
|
|
||||||
|
On Debian systems, the complete text of the GNU General Public License
|
||||||
|
can be found in /usr/share/common-licenses/GPL.
|
||||||
|
|
||||||
|
[comment]: # Local Variables:
|
||||||
|
[comment]: # mode: markdown
|
||||||
|
[comment]: # End:
|
144
debian/manpage.sgml.ex
vendored
Normal file
144
debian/manpage.sgml.ex
vendored
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Install docbook-to-man package and see docbook-to-man(1)
|
||||||
|
|
||||||
|
Secondary template file to make manpage.1
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Fill in your name for FIRSTNAME and SURNAME. -->
|
||||||
|
<!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
|
||||||
|
<!ENTITY dhsurname "<surname>SURNAME</surname>">
|
||||||
|
<!-- Please adjust the date whenever revising the manpage. -->
|
||||||
|
<!ENTITY dhdate "<date>08 Jun 2025</date>">
|
||||||
|
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
|
||||||
|
allowed: see man(7), man(1). -->
|
||||||
|
<!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
|
||||||
|
<!ENTITY dhemail "<email>paul@localhost</email>">
|
||||||
|
<!ENTITY dhusername "Paul Schneider">
|
||||||
|
<!ENTITY dhucpackage "<refentrytitle>YAVSC</refentrytitle>">
|
||||||
|
<!ENTITY dhpackage "yavsc">
|
||||||
|
|
||||||
|
<!ENTITY debian "<productname>Debian</productname>">
|
||||||
|
<!ENTITY gnu "<acronym>GNU</acronym>">
|
||||||
|
<!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
|
||||||
|
]>
|
||||||
|
|
||||||
|
<refentry>
|
||||||
|
<refentryinfo>
|
||||||
|
<address>
|
||||||
|
&dhemail;
|
||||||
|
</address>
|
||||||
|
<author>
|
||||||
|
&dhfirstname;
|
||||||
|
&dhsurname;
|
||||||
|
</author>
|
||||||
|
<copyright>
|
||||||
|
<year>2003</year>
|
||||||
|
<holder>&dhusername;</holder>
|
||||||
|
</copyright>
|
||||||
|
&dhdate;
|
||||||
|
</refentryinfo>
|
||||||
|
<refmeta>
|
||||||
|
&dhucpackage;
|
||||||
|
|
||||||
|
&dhsection;
|
||||||
|
</refmeta>
|
||||||
|
<refnamediv>
|
||||||
|
<refname>&dhpackage;</refname>
|
||||||
|
|
||||||
|
<refpurpose>program to do something</refpurpose>
|
||||||
|
</refnamediv>
|
||||||
|
<refsynopsisdiv>
|
||||||
|
<cmdsynopsis>
|
||||||
|
<command>&dhpackage;</command>
|
||||||
|
|
||||||
|
<arg><option>-e <replaceable>this</replaceable></option></arg>
|
||||||
|
|
||||||
|
<arg><option>--example <replaceable>that</replaceable></option></arg>
|
||||||
|
</cmdsynopsis>
|
||||||
|
</refsynopsisdiv>
|
||||||
|
<refsect1>
|
||||||
|
<title>DESCRIPTION</title>
|
||||||
|
|
||||||
|
<para>This manual page documents briefly the
|
||||||
|
<command>&dhpackage;</command> and <command>bar</command>
|
||||||
|
commands.</para>
|
||||||
|
|
||||||
|
<para>This manual page was written for the &debian; distribution
|
||||||
|
because the original program does not have a manual page.
|
||||||
|
Instead, it has documentation in the &gnu;
|
||||||
|
<application>Info</application> format; see below.</para>
|
||||||
|
|
||||||
|
<para><command>&dhpackage;</command> is a program that...</para>
|
||||||
|
|
||||||
|
</refsect1>
|
||||||
|
<refsect1>
|
||||||
|
<title>OPTIONS</title>
|
||||||
|
|
||||||
|
<para>These programs follow the usual &gnu; command line syntax,
|
||||||
|
with long options starting with two dashes (`-'). A summary of
|
||||||
|
options is included below. For a complete description, see the
|
||||||
|
<application>Info</application> files.</para>
|
||||||
|
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-h</option>
|
||||||
|
<option>--help</option>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Show summary of options.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-v</option>
|
||||||
|
<option>--version</option>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Show version of program.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1>
|
||||||
|
<title>SEE ALSO</title>
|
||||||
|
|
||||||
|
<para>bar (1), baz (1).</para>
|
||||||
|
|
||||||
|
<para>The programs are documented fully by <citetitle>The Rise and
|
||||||
|
Fall of a Fooish Bar</citetitle> available via the
|
||||||
|
<application>Info</application> system.</para>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1>
|
||||||
|
<title>AUTHOR</title>
|
||||||
|
|
||||||
|
<para>This manual page was written by &dhusername; &dhemail; for
|
||||||
|
the &debian; system (and may be used by others). Permission is
|
||||||
|
granted to copy, distribute and/or modify this document under
|
||||||
|
the terms of the &gnu; General Public License, Version 2 any
|
||||||
|
later version published by the Free Software Foundation.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
On Debian systems, the complete text of the GNU General Public
|
||||||
|
License can be found in /usr/share/common-licenses/GPL.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
</refsect1>
|
||||||
|
</refentry>
|
||||||
|
|
||||||
|
<!-- Keep this comment at the end of the file
|
||||||
|
Local variables:
|
||||||
|
mode: sgml
|
||||||
|
sgml-omittag:t
|
||||||
|
sgml-shorttag:t
|
||||||
|
sgml-minimize-attributes:nil
|
||||||
|
sgml-always-quote-attributes:t
|
||||||
|
sgml-indent-step:2
|
||||||
|
sgml-indent-data:t
|
||||||
|
sgml-parent-document:nil
|
||||||
|
sgml-default-dtd-file:nil
|
||||||
|
sgml-exposed-tags:nil
|
||||||
|
sgml-local-catalogs:nil
|
||||||
|
sgml-local-ecat-files:nil
|
||||||
|
End:
|
||||||
|
-->
|
267
debian/manpage.xml.ex
vendored
Normal file
267
debian/manpage.xml.ex
vendored
Normal file
@ -0,0 +1,267 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||||
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Secondary template file to make manpage.1
|
||||||
|
|
||||||
|
Install docbook-xsl and docbook-xsl-doc-html and see
|
||||||
|
/usr/share/doc/docbook-xsl/examples/foo.1.example_manpage.xml
|
||||||
|
/usr/share/doc/docbook-xsl-doc-html/doc/manpages/index.html
|
||||||
|
|
||||||
|
The xsltproc binary is found in the xsltproc package. The XSL files are in
|
||||||
|
docbook-xsl. A description of the parameters you can use can be found in the
|
||||||
|
docbook-xsl-doc-* packages.
|
||||||
|
|
||||||
|
Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
|
||||||
|
|
||||||
|
General documentation about man-pages and man-page-formatting:
|
||||||
|
man(1), man(7), man-pages(7), https://www.tldp.org/HOWTO/Man-Page/
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Fill in your name for FIRSTNAME and SURNAME. -->
|
||||||
|
<!ENTITY dhfirstname "FIRSTNAME">
|
||||||
|
<!ENTITY dhsurname "SURNAME">
|
||||||
|
<!-- dhusername could also be set to "&dhfirstname; &dhsurname;". -->
|
||||||
|
<!ENTITY dhusername "Paul Schneider">
|
||||||
|
<!ENTITY dhemail "paul@localhost">
|
||||||
|
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
|
||||||
|
allowed: see man(7), man(1) and
|
||||||
|
https://www.tldp.org/HOWTO/Man-Page/q2.html. -->
|
||||||
|
<!ENTITY dhsection "SECTION">
|
||||||
|
<!-- TITLE should be something like "User commands" or similar (see
|
||||||
|
https://www.tldp.org/HOWTO/Man-Page/q2.html). -->
|
||||||
|
<!ENTITY dhtitle "yavsc User Manual">
|
||||||
|
<!ENTITY dhucpackage "YAVSC">
|
||||||
|
<!ENTITY dhpackage "yavsc">
|
||||||
|
]>
|
||||||
|
|
||||||
|
<refentry>
|
||||||
|
<refentryinfo>
|
||||||
|
<title>&dhtitle;</title>
|
||||||
|
<productname>&dhpackage;</productname>
|
||||||
|
<authorgroup>
|
||||||
|
<author>
|
||||||
|
<firstname>&dhfirstname;</firstname>
|
||||||
|
<surname>&dhsurname;</surname>
|
||||||
|
<contrib>Wrote this manpage for the Debian system.</contrib>
|
||||||
|
<address>
|
||||||
|
<email>&dhemail;</email>
|
||||||
|
</address>
|
||||||
|
</author>
|
||||||
|
</authorgroup>
|
||||||
|
<copyright>
|
||||||
|
<year>2007</year>
|
||||||
|
<holder>&dhusername;</holder>
|
||||||
|
</copyright>
|
||||||
|
<legalnotice>
|
||||||
|
<para>This manual page was written for the Debian system
|
||||||
|
(and may be used by others).</para>
|
||||||
|
<para>Permission is granted to copy, distribute and/or modify this
|
||||||
|
document under the terms of the GNU General Public License,
|
||||||
|
Version 2 or (at your option) any later version published by
|
||||||
|
the Free Software Foundation.</para>
|
||||||
|
<para>On Debian systems, the complete text of the GNU General Public
|
||||||
|
License can be found in
|
||||||
|
<filename>/usr/share/common-licenses/GPL</filename>.</para>
|
||||||
|
</legalnotice>
|
||||||
|
</refentryinfo>
|
||||||
|
<refmeta>
|
||||||
|
<refentrytitle>&dhucpackage;</refentrytitle>
|
||||||
|
<manvolnum>&dhsection;</manvolnum>
|
||||||
|
</refmeta>
|
||||||
|
<refnamediv>
|
||||||
|
<refname>&dhpackage;</refname>
|
||||||
|
<refpurpose>program to do something</refpurpose>
|
||||||
|
</refnamediv>
|
||||||
|
<refsynopsisdiv>
|
||||||
|
<cmdsynopsis>
|
||||||
|
<command>&dhpackage;</command>
|
||||||
|
<!-- These are several examples, how syntaxes could look -->
|
||||||
|
<arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
|
||||||
|
<arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
|
||||||
|
<arg choice="opt">
|
||||||
|
<group choice="req">
|
||||||
|
<arg choice="plain"><option>-e</option></arg>
|
||||||
|
<arg choice="plain"><option>--example</option></arg>
|
||||||
|
</group>
|
||||||
|
<replaceable class="option">this</replaceable>
|
||||||
|
</arg>
|
||||||
|
<arg choice="opt">
|
||||||
|
<group choice="req">
|
||||||
|
<arg choice="plain"><option>-e</option></arg>
|
||||||
|
<arg choice="plain"><option>--example</option></arg>
|
||||||
|
</group>
|
||||||
|
<group choice="req">
|
||||||
|
<arg choice="plain"><replaceable>this</replaceable></arg>
|
||||||
|
<arg choice="plain"><replaceable>that</replaceable></arg>
|
||||||
|
</group>
|
||||||
|
</arg>
|
||||||
|
</cmdsynopsis>
|
||||||
|
<cmdsynopsis>
|
||||||
|
<command>&dhpackage;</command>
|
||||||
|
<!-- Normally the help and version options make the programs stop
|
||||||
|
right after outputting the requested information. -->
|
||||||
|
<group choice="opt">
|
||||||
|
<arg choice="plain">
|
||||||
|
<group choice="req">
|
||||||
|
<arg choice="plain"><option>-h</option></arg>
|
||||||
|
<arg choice="plain"><option>--help</option></arg>
|
||||||
|
</group>
|
||||||
|
</arg>
|
||||||
|
<arg choice="plain">
|
||||||
|
<group choice="req">
|
||||||
|
<arg choice="plain"><option>-v</option></arg>
|
||||||
|
<arg choice="plain"><option>--version</option></arg>
|
||||||
|
</group>
|
||||||
|
</arg>
|
||||||
|
</group>
|
||||||
|
</cmdsynopsis>
|
||||||
|
</refsynopsisdiv>
|
||||||
|
<refsect1 id="description">
|
||||||
|
<title>DESCRIPTION</title>
|
||||||
|
<para>This manual page documents briefly the
|
||||||
|
<command>&dhpackage;</command> and <command>bar</command>
|
||||||
|
commands.</para>
|
||||||
|
<para>This manual page was written for the Debian distribution
|
||||||
|
because the original program does not have a manual page.
|
||||||
|
Instead, it has documentation in the GNU <citerefentry>
|
||||||
|
<refentrytitle>info</refentrytitle>
|
||||||
|
<manvolnum>1</manvolnum>
|
||||||
|
</citerefentry> format; see below.</para>
|
||||||
|
<para><command>&dhpackage;</command> is a program that...</para>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="options">
|
||||||
|
<title>OPTIONS</title>
|
||||||
|
<para>The program follows the usual GNU command line syntax,
|
||||||
|
with long options starting with two dashes (`-'). A summary of
|
||||||
|
options is included below. For a complete description, see the
|
||||||
|
<citerefentry>
|
||||||
|
<refentrytitle>info</refentrytitle>
|
||||||
|
<manvolnum>1</manvolnum>
|
||||||
|
</citerefentry> files.</para>
|
||||||
|
<variablelist>
|
||||||
|
<!-- Use the variablelist.term.separator and the
|
||||||
|
variablelist.term.break.after parameters to
|
||||||
|
control the term elements. -->
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-e <replaceable>this</replaceable></option></term>
|
||||||
|
<term><option>--example=<replaceable>that</replaceable></option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>Does this and that.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-h</option></term>
|
||||||
|
<term><option>--help</option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>Show summary of options.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>-v</option></term>
|
||||||
|
<term><option>--version</option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>Show version of program.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="files">
|
||||||
|
<title>FILES</title>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><filename>/etc/foo.conf</filename></term>
|
||||||
|
<listitem>
|
||||||
|
<para>The system-wide configuration file to control the
|
||||||
|
behaviour of <application>&dhpackage;</application>. See
|
||||||
|
<citerefentry>
|
||||||
|
<refentrytitle>foo.conf</refentrytitle>
|
||||||
|
<manvolnum>5</manvolnum>
|
||||||
|
</citerefentry> for further details.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><filename>${HOME}/.foo.conf</filename></term>
|
||||||
|
<listitem>
|
||||||
|
<para>The per-user configuration file to control the
|
||||||
|
behaviour of <application>&dhpackage;</application>. See
|
||||||
|
<citerefentry>
|
||||||
|
<refentrytitle>foo.conf</refentrytitle>
|
||||||
|
<manvolnum>5</manvolnum>
|
||||||
|
</citerefentry> for further details.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="environment">
|
||||||
|
<title>ENVIRONMENT</title>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><envar>FOO_CONF</envar></term>
|
||||||
|
<listitem>
|
||||||
|
<para>If used, the defined file is used as configuration
|
||||||
|
file (see also <xref linkend="files"/>).</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="diagnostics">
|
||||||
|
<title>DIAGNOSTICS</title>
|
||||||
|
<para>The following diagnostics may be issued
|
||||||
|
on <filename class="devicefile">stderr</filename>:</para>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><errortext>Bad configuration file. Exiting.</errortext></term>
|
||||||
|
<listitem>
|
||||||
|
<para>The configuration file seems to contain a broken configuration
|
||||||
|
line. Use the <option>--verbose</option> option, to get more info.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
<para><command>&dhpackage;</command> provides some return codes, that can
|
||||||
|
be used in scripts:</para>
|
||||||
|
<segmentedlist>
|
||||||
|
<segtitle>Code</segtitle>
|
||||||
|
<segtitle>Diagnostic</segtitle>
|
||||||
|
<seglistitem>
|
||||||
|
<seg><errorcode>0</errorcode></seg>
|
||||||
|
<seg>Program exited successfully.</seg>
|
||||||
|
</seglistitem>
|
||||||
|
<seglistitem>
|
||||||
|
<seg><errorcode>1</errorcode></seg>
|
||||||
|
<seg>The configuration file seems to be broken.</seg>
|
||||||
|
</seglistitem>
|
||||||
|
</segmentedlist>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="bugs">
|
||||||
|
<!-- Or use this section to tell about upstream BTS. -->
|
||||||
|
<title>BUGS</title>
|
||||||
|
<para>The program is currently limited to only work
|
||||||
|
with the <package>foobar</package> library.</para>
|
||||||
|
<para>The upstreams <acronym>BTS</acronym> can be found
|
||||||
|
at <ulink url="https://bugzilla.foo.tld"/>.</para>
|
||||||
|
</refsect1>
|
||||||
|
<refsect1 id="see_also">
|
||||||
|
<title>SEE ALSO</title>
|
||||||
|
<!-- In alphabetical order. -->
|
||||||
|
<para><citerefentry>
|
||||||
|
<refentrytitle>bar</refentrytitle>
|
||||||
|
<manvolnum>1</manvolnum>
|
||||||
|
</citerefentry>, <citerefentry>
|
||||||
|
<refentrytitle>baz</refentrytitle>
|
||||||
|
<manvolnum>1</manvolnum>
|
||||||
|
</citerefentry>, <citerefentry>
|
||||||
|
<refentrytitle>foo.conf</refentrytitle>
|
||||||
|
<manvolnum>5</manvolnum>
|
||||||
|
</citerefentry></para>
|
||||||
|
<para>The programs are documented fully by <citetitle>The Rise and
|
||||||
|
Fall of a Fooish Bar</citetitle> available via the <citerefentry>
|
||||||
|
<refentrytitle>info</refentrytitle>
|
||||||
|
<manvolnum>1</manvolnum>
|
||||||
|
</citerefentry> system.</para>
|
||||||
|
</refsect1>
|
||||||
|
</refentry>
|
1
debian/patches/series
vendored
Normal file
1
debian/patches/series
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
# You must remove unused comment lines for the released package.
|
7
debian/postinst.ex
vendored
Normal file
7
debian/postinst.ex
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# If no user provided script is activated in this file, you should remove this file.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
7
debian/postrm.ex
vendored
Normal file
7
debian/postrm.ex
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# If no user provided script is activated in this file, you should remove this file.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
7
debian/preinst.ex
vendored
Normal file
7
debian/preinst.ex
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# If no user provided script is activated in this file, you should remove this file.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
7
debian/prerm.ex
vendored
Normal file
7
debian/prerm.ex
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# If no user provided script is activated in this file, you should remove this file.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
15
debian/rules
vendored
Executable file
15
debian/rules
vendored
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/make -f
|
||||||
|
# You must remove unused comment lines for the released package.
|
||||||
|
#export DH_VERBOSE = 1
|
||||||
|
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||||
|
#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
|
||||||
|
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1
|
||||||
|
|
||||||
|
%:
|
||||||
|
dh $@
|
||||||
|
|
||||||
|
#override_dh_auto_install:
|
||||||
|
# dh_auto_install -- prefix=/usr
|
||||||
|
|
||||||
|
#override_dh_install:
|
||||||
|
# dh_install --list-missing -X.pyc -X.pyo
|
25
debian/salsa-ci.yml
vendored
Normal file
25
debian/salsa-ci.yml
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# For more information on what jobs are run see:
|
||||||
|
# https://salsa.debian.org/salsa-ci-team/pipeline
|
||||||
|
#
|
||||||
|
# To enable the jobs, go to your repository (at salsa.debian.org)
|
||||||
|
# and click over Settings > CI/CD > Expand (in General pipelines).
|
||||||
|
# In "CI/CD configuration file" write debian/salsa-ci.yml and click
|
||||||
|
# in "Save Changes". The CI tests will run after the next commit.
|
||||||
|
---
|
||||||
|
include:
|
||||||
|
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
|
||||||
|
|
||||||
|
# # This commented-out sample disables all default tests, only disable those
|
||||||
|
# # CI tests that is required to get the CI process to succeed.
|
||||||
|
#
|
||||||
|
# variables:
|
||||||
|
# SALSA_CI_DISABLE_APTLY: 1
|
||||||
|
# SALSA_CI_DISABLE_AUTOPKGTEST: 1
|
||||||
|
# SALSA_CI_DISABLE_BLHC: 1
|
||||||
|
# SALSA_CI_DISABLE_LINTIAN: 1
|
||||||
|
# SALSA_CI_DISABLE_PIUPARTS: 1
|
||||||
|
# SALSA_CI_DISABLE_REPROTEST: 1
|
||||||
|
# SALSA_CI_DISABLE_BUILD_PACKAGE_ALL: 1
|
||||||
|
# SALSA_CI_DISABLE_BUILD_PACKAGE_ANY: 1
|
||||||
|
# SALSA_CI_DISABLE_BUILD_PACKAGE_I386: 1
|
||||||
|
# SALSA_CI_DISABLE_CROSSBUILD_ARM64: 1
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
3.0 (quilt)
|
2
debian/source/lintian-overrides.ex
vendored
Normal file
2
debian/source/lintian-overrides.ex
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# See dh_lintian(1)
|
||||||
|
# cut and paste the lintian(1) outputs without leading "E: ", "W: ", ...
|
47
debian/source/local-options.ex
vendored
Normal file
47
debian/source/local-options.ex
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# Uncomment to active options. See dpkg-source(1)
|
||||||
|
#
|
||||||
|
# This file contains a list of long options that should be automatically
|
||||||
|
# prepended to the set of command line options of a dpkg-source --build call.
|
||||||
|
|
||||||
|
# This is normally for the non-native Debian packaging.
|
||||||
|
|
||||||
|
# Whenever possible, use this instead of debian/local-options to make
|
||||||
|
# dpkg-source long options applied for the team builds based on the VCS
|
||||||
|
# repository while NMU builds based on the Debian source package are not
|
||||||
|
# affected.
|
||||||
|
|
||||||
|
# == Patch unapplied strategy (dquilt, gbp, ...) ==
|
||||||
|
#
|
||||||
|
# The source outside of debian/ directory is unmodified from the upstream one:
|
||||||
|
# * Workflow using diff -u
|
||||||
|
# https://www.debian.org/doc/manuals/debmake-doc/ch04.en.html#diff-u
|
||||||
|
# * Workflow using dquilt
|
||||||
|
# https://www.debian.org/doc/manuals/debmake-doc/ch04.en.html#dquilt
|
||||||
|
# * Workflow using dpkg-source commit (commit only patch to VCS after dpkg-source commit)
|
||||||
|
# https://www.debian.org/doc/manuals/debmake-doc/ch04.en.html#dpkg-source-commit
|
||||||
|
# * Workflow to use gbp-buildpackage(1) with pristine-tar
|
||||||
|
# * Workflow described in dgit-maint-gbp(7)
|
||||||
|
#
|
||||||
|
# Uncomment following if you use this strategy
|
||||||
|
#abort-on-upstream-changes
|
||||||
|
#unapply-patches
|
||||||
|
|
||||||
|
# == Patch applied strategy (merge) ==
|
||||||
|
#
|
||||||
|
# The source outside of debian/ directory is modified by maintainer and
|
||||||
|
# different from the upstream one:
|
||||||
|
# * Workflow using dpkg-source commit (commit all to VCS after dpkg-source commit)
|
||||||
|
# https://www.debian.org/doc/manuals/debmake-doc/ch04.en.html#dpkg-source-commit
|
||||||
|
# * Workflow described in dgit-maint-merge(7)
|
||||||
|
#
|
||||||
|
# uncomment following if you use this strategy
|
||||||
|
#single-debian-patch
|
||||||
|
#auto-commit
|
||||||
|
|
||||||
|
# == Patch applied strategy (debrebase) ==
|
||||||
|
#
|
||||||
|
# The source outside of debian/ directory is modified by maintainer and
|
||||||
|
# different from the upstream one:
|
||||||
|
# * Workflow described in dgit-maint-debrebase(7)
|
||||||
|
#
|
||||||
|
# Remove this file if you use this strategy
|
26
debian/source/local-patch-header.ex
vendored
Normal file
26
debian/source/local-patch-header.ex
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
The automatically generated patch by dpkg-source(1) puts this free form text on
|
||||||
|
top of it.
|
||||||
|
|
||||||
|
This is normally for the non-native Debian packaging.
|
||||||
|
|
||||||
|
Whenever possible, use this instead of debian/patch-header to make dpkg-source
|
||||||
|
long options applied for the team builds based on the VCS repository while NMU
|
||||||
|
builds based on the Debian source package are not affected.
|
||||||
|
|
||||||
|
== Patch applied strategy (merge) ==
|
||||||
|
|
||||||
|
The source outside of debian/ directory is modified by maintainer and
|
||||||
|
different from the upstream one:
|
||||||
|
* Workflow using dpkg-source commit (commit all to VCS after dpkg-source commit)
|
||||||
|
https://www.debian.org/doc/manuals/debmake-doc/ch04.en.html#dpkg-source-commit
|
||||||
|
* Workflow described in dgit-maint-merge(7)
|
||||||
|
|
||||||
|
Keep this file after updating its content if you use this strategy
|
||||||
|
|
||||||
|
== Other strategies ==
|
||||||
|
|
||||||
|
Remove this file if you use this strategy
|
||||||
|
|
||||||
|
===
|
||||||
|
|
||||||
|
A single combined diff, containing all the changes, follows.
|
10
debian/source/options.ex
vendored
Normal file
10
debian/source/options.ex
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Uncomment to active options. See dpkg-source(1)
|
||||||
|
#
|
||||||
|
# This file contains a list of long options that should be automatically
|
||||||
|
# prepended to the set of command line options of a dpkg-source --build call.
|
||||||
|
|
||||||
|
# This is normally for the non-native Debian packaging.
|
||||||
|
|
||||||
|
# Whenever possible, use debian/local-options instead to make dpkg-source long
|
||||||
|
# options applied for the team builds based on the VCS repository while NMU
|
||||||
|
# builds based on the Debian source package are not affected.
|
12
debian/source/patch-header.ex
vendored
Normal file
12
debian/source/patch-header.ex
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
The automatically generated patch by dpkg-source(1) puts this free form text on
|
||||||
|
top of it.
|
||||||
|
|
||||||
|
This is normally for the non-native Debian packaging.
|
||||||
|
|
||||||
|
Whenever possible, use debian/local-patch-header instead to make dpkg-source long
|
||||||
|
options applied for the team builds based on the VCS repository while NMU
|
||||||
|
builds based on the Debian source package are not affected.
|
||||||
|
|
||||||
|
A single combined diff, containing all the changes, follows.
|
||||||
|
|
||||||
|
===
|
9
debian/tests/control
vendored
Normal file
9
debian/tests/control
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#
|
||||||
|
# DEP-8: autopkgtest - automatic as-installed package testing
|
||||||
|
# Please check * https://dep-team.pages.debian.net/deps/dep8/
|
||||||
|
# * /usr/share/doc/autopkgtest
|
||||||
|
#
|
||||||
|
# !!! Please make sure to edit this to a valid test, otherwise build will fails
|
||||||
|
#
|
||||||
|
#Tests: testcode.sh
|
||||||
|
#Restrictions: allow-stderr, breaks-testbed, needs-internet, needs-root
|
16
debian/upstream/metadata
vendored
Normal file
16
debian/upstream/metadata
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#
|
||||||
|
# DEP-12: Per-package machine-readable metadata about Upstream
|
||||||
|
# Please check * https://dep-team.pages.debian.net/deps/dep12/
|
||||||
|
# * https://wiki.debian.org/UpstreamMetadata
|
||||||
|
Reference:
|
||||||
|
Author: <please use full names and separate multiple author by the keyword "and">
|
||||||
|
Title:
|
||||||
|
Journal:
|
||||||
|
Year:
|
||||||
|
Volume:
|
||||||
|
Number:
|
||||||
|
Pages:
|
||||||
|
DOI:
|
||||||
|
PMID:
|
||||||
|
URL:
|
||||||
|
eprint:
|
3
debian/watch
vendored
Normal file
3
debian/watch
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# You must remove unused comment lines for the released package.
|
||||||
|
# Compulsory line, this is a version 4 file
|
||||||
|
version=4
|
3
debian/yavsc.bug-control.ex
vendored
Normal file
3
debian/yavsc.bug-control.ex
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Installed as usr/share/bug/yavsc/control in yavsc
|
||||||
|
# See dh_bugfiles(1) and /usr/share/doc/reportbug/README.developers.gz
|
||||||
|
# It is the bug control file containing some directions for the bug reporting tool.
|
3
debian/yavsc.bug-presubj.ex
vendored
Normal file
3
debian/yavsc.bug-presubj.ex
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Installed as usr/share/bug/yavsc/presubj in yavsc
|
||||||
|
# See dh_bugfiles(1) and /usr/share/doc/reportbug/README.developers.gz
|
||||||
|
# The contents of this file are displayed to the user by the bug reporting tool.
|
3
debian/yavsc.bug-script.ex
vendored
Normal file
3
debian/yavsc.bug-script.ex
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Installed as usr/share/bug/yavsc or usr/share/bug/yavsc/script in yavsc
|
||||||
|
# See dh_bugfiles(1) and /usr/share/doc/reportbug/README.developers.gz
|
||||||
|
# This is the script to be run by the bug reporting program for generating a bug report template.
|
10
debian/yavsc.conffiles.ex
vendored
Normal file
10
debian/yavsc.conffiles.ex
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# See dh_installdeb(1).
|
||||||
|
# This file will be installed into the DEBIAN directory. The provided file will
|
||||||
|
# be enriched by debhelper to include all the conffiles auto-detected by
|
||||||
|
# debhelper (the maintainer should not list there as debhelper assumes it
|
||||||
|
# should handle that part).
|
||||||
|
#
|
||||||
|
# This file is primarily useful for using "special" entries such as the
|
||||||
|
# remove-on-upgrade feature from dpkg.
|
||||||
|
#
|
||||||
|
# For most packages, this file doesn’t need to exist.
|
5
debian/yavsc.cron.d.ex
vendored
Normal file
5
debian/yavsc.cron.d.ex
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#
|
||||||
|
# Regular cron jobs for the yavsc package
|
||||||
|
# See dh_installcron(1) and crontab(5).
|
||||||
|
#
|
||||||
|
#0 4 * * * root [ -x /usr/bin/yavsc_maintenance ] && /usr/bin/yavsc_maintenance
|
3
debian/yavsc.cron.daily.ex
vendored
Normal file
3
debian/yavsc.cron.daily.ex
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Daily cron jobs shell script for the yavsc package
|
||||||
|
#true
|
3
debian/yavsc.cron.hourly.ex
vendored
Normal file
3
debian/yavsc.cron.hourly.ex
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Hourly cron jobs shell script for the yavsc package
|
||||||
|
#true
|
3
debian/yavsc.cron.monthly.ex
vendored
Normal file
3
debian/yavsc.cron.monthly.ex
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Monthly cron jobs shell script for the yavsc package
|
||||||
|
#true
|
3
debian/yavsc.cron.weekly.ex
vendored
Normal file
3
debian/yavsc.cron.weekly.ex
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Weekly cron jobs shell script for the yavsc package
|
||||||
|
#true
|
7
debian/yavsc.default.ex
vendored
Normal file
7
debian/yavsc.default.ex
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Defaults for yavsc initscript
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is a POSIX shell fragment
|
||||||
|
#
|
||||||
|
|
||||||
|
#DAEMON_OPTS=""
|
47
debian/yavsc.emacsen-install.ex
vendored
Normal file
47
debian/yavsc.emacsen-install.ex
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#! /bin/sh -e
|
||||||
|
# /usr/lib/emacsen-common/packages/install/yavsc
|
||||||
|
|
||||||
|
# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
|
||||||
|
# from the install scripts for gettext by Santiago Vila
|
||||||
|
# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
|
||||||
|
|
||||||
|
FLAVOR=$1
|
||||||
|
PACKAGE=yavsc
|
||||||
|
|
||||||
|
if [ ${FLAVOR} = emacs ]; then exit 0; fi
|
||||||
|
|
||||||
|
echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
|
||||||
|
|
||||||
|
#FLAVORTEST=`echo $FLAVOR | cut -c-6`
|
||||||
|
#if [ ${FLAVORTEST} = xemacs ] ; then
|
||||||
|
# SITEFLAG="-no-site-file"
|
||||||
|
#else
|
||||||
|
# SITEFLAG="--no-site-file"
|
||||||
|
#fi
|
||||||
|
FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
|
||||||
|
|
||||||
|
ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
|
||||||
|
ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
|
||||||
|
ELRELDIR=../../../emacs/site-lisp/${PACKAGE}
|
||||||
|
|
||||||
|
# Install-info-altdir does not actually exist.
|
||||||
|
# Maybe somebody will write it.
|
||||||
|
if test -x /usr/sbin/install-info-altdir; then
|
||||||
|
echo install/${PACKAGE}: install Info links for ${FLAVOR}
|
||||||
|
install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
install -m 755 -d ${ELCDIR}
|
||||||
|
cd ${ELDIR}
|
||||||
|
FILES=`echo *.el`
|
||||||
|
cd ${ELCDIR}
|
||||||
|
ln -sf ${ELRELDIR}/*.el .
|
||||||
|
|
||||||
|
cat << EOF > path.el
|
||||||
|
(debian-pkg-add-load-path-item ".")
|
||||||
|
(setq byte-compile-warnings nil)
|
||||||
|
EOF
|
||||||
|
${FLAVOR} ${FLAGS} ${FILES}
|
||||||
|
rm -f path.el
|
||||||
|
|
||||||
|
exit 0
|
15
debian/yavsc.emacsen-remove.ex
vendored
Normal file
15
debian/yavsc.emacsen-remove.ex
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
# /usr/lib/emacsen-common/packages/remove/yavsc
|
||||||
|
|
||||||
|
FLAVOR=$1
|
||||||
|
PACKAGE=yavsc
|
||||||
|
|
||||||
|
if [ ${FLAVOR} != emacs ]; then
|
||||||
|
if test -x /usr/sbin/install-info-altdir; then
|
||||||
|
echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
|
||||||
|
install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/yavsc.info.gz
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
|
||||||
|
rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
|
||||||
|
fi
|
26
debian/yavsc.emacsen-startup.ex
vendored
Normal file
26
debian/yavsc.emacsen-startup.ex
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
;; -*-emacs-lisp-*-
|
||||||
|
;;
|
||||||
|
;; Emacs startup file, e.g. /etc/emacs/site-start.d/50yavsc.el
|
||||||
|
;; for the Debian yavsc package
|
||||||
|
;;
|
||||||
|
;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
|
||||||
|
;; Modified by Dirk Eddelbuettel <edd@debian.org>
|
||||||
|
;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
|
||||||
|
|
||||||
|
;; The yavsc package follows the Debian/GNU Linux 'emacsen' policy and
|
||||||
|
;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
|
||||||
|
;; xemacs19, emacs20, xemacs20...). The compiled code is then
|
||||||
|
;; installed in a subdirectory of the respective site-lisp directory.
|
||||||
|
;; We have to add this to the load-path:
|
||||||
|
(let ((package-dir (concat "/usr/share/"
|
||||||
|
(symbol-name debian-emacs-flavor)
|
||||||
|
"/site-lisp/yavsc")))
|
||||||
|
;; If package-dir does not exist, the yavsc package must have
|
||||||
|
;; removed but not purged, and we should skip the setup.
|
||||||
|
(when (file-directory-p package-dir)
|
||||||
|
(if (fboundp 'debian-pkg-add-load-path-item)
|
||||||
|
(debian-pkg-add-load-path-item package-dir)
|
||||||
|
(setq load-path (cons package-dir load-path)))
|
||||||
|
(autoload 'yavsc-mode "yavsc-mode"
|
||||||
|
"Major mode for editing yavsc files." t)
|
||||||
|
(add-to-list 'auto-mode-alist '("\\.yavsc$" . yavsc-mode))))
|
2
debian/yavsc.lintian-overrides.ex
vendored
Normal file
2
debian/yavsc.lintian-overrides.ex
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# See dh_lintian(1) and Lintian User Manual (/usr/share/doc/lintian/lintian.html)
|
||||||
|
# cut and paste the lintian(1) outputs without leading "E: ", "W: ", ...
|
2
debian/yavsc.service.ex
vendored
Normal file
2
debian/yavsc.service.ex
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# If this exists, it is installed into lib/systemd/system/yavsc.service in yavsc
|
||||||
|
# See dh_systemd_enable(1).
|
2
debian/yavsc.tmpfile.ex
vendored
Normal file
2
debian/yavsc.tmpfile.ex
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# If this exists, it is installed into usr/lib/tmpfiles.d/yavsc.conf in yavsc
|
||||||
|
# See dh_installtmpfiles(1).
|
@ -9,15 +9,8 @@
|
|||||||
],
|
],
|
||||||
"rollForward": false
|
"rollForward": false
|
||||||
},
|
},
|
||||||
"gitversion.tool": {
|
|
||||||
"version": "5.10.1",
|
|
||||||
"commands": [
|
|
||||||
"dotnet-gitversion"
|
|
||||||
],
|
|
||||||
"rollForward": false
|
|
||||||
},
|
|
||||||
"gitreleasemanager.tool": {
|
"gitreleasemanager.tool": {
|
||||||
"version": "0.13.0",
|
"version": "0.20.0",
|
||||||
"commands": [
|
"commands": [
|
||||||
"dotnet-gitreleasemanager"
|
"dotnet-gitreleasemanager"
|
||||||
],
|
],
|
||||||
@ -29,13 +22,6 @@
|
|||||||
"wyam2"
|
"wyam2"
|
||||||
],
|
],
|
||||||
"rollForward": false
|
"rollForward": false
|
||||||
},
|
|
||||||
"dotnet-ef": {
|
|
||||||
"version": "8.0.7",
|
|
||||||
"commands": [
|
|
||||||
"dotnet-ef"
|
|
||||||
],
|
|
||||||
"rollForward": false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
2
src/.vscode/launch.json
vendored
2
src/.vscode/launch.json
vendored
@ -10,7 +10,7 @@
|
|||||||
"request": "launch",
|
"request": "launch",
|
||||||
"preLaunchTask": "build",
|
"preLaunchTask": "build",
|
||||||
// If you have changed target frameworks, make sure to update the program path.
|
// If you have changed target frameworks, make sure to update the program path.
|
||||||
"program": "${workspaceFolder}/isnd/bin/Debug/net8.0/isnd.dll",
|
"program": "${workspaceFolder}/isnd/bin/Debug/net9.0/isnd.dll",
|
||||||
"args": [],
|
"args": [],
|
||||||
"cwd": "${workspaceFolder}/isnd",
|
"cwd": "${workspaceFolder}/isnd",
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
|
<TargetFrameworks>net7.0;net8.0;net9.0</TargetFrameworks>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||||
<RootNamespace>nuget_cli</RootNamespace>
|
<RootNamespace>nuget_cli</RootNamespace>
|
||||||
<UserSecretsId>45b74c62-05bc-4603-95b4-3e80ae2fdf50</UserSecretsId>
|
<UserSecretsId>45b74c62-05bc-4603-95b4-3e80ae2fdf50</UserSecretsId>
|
||||||
|
|
||||||
@ -12,11 +12,11 @@
|
|||||||
<InformationalVersion>1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327</InformationalVersion>
|
<InformationalVersion>1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327</InformationalVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="8.0.1" />
|
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="9.0.6" />
|
||||||
<PackageReference Include="Mono.Options" Version="5.3.0" />
|
<PackageReference Include="Mono.Options" Version="6.12.0.148" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="unleash.client" Version="4.1.13" />
|
<PackageReference Include="unleash.client" Version="5.2.1" />
|
||||||
<PackageReference Include="GitVersion.MsBuild" Version="6.0.3" />
|
<PackageReference Include="GitVersion.MsBuild" Version="6.3.0" />
|
||||||
<ProjectReference Include="../isn.abst/isn.abst.csproj" />
|
<ProjectReference Include="../isn.abst/isn.abst.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
@ -16,7 +16,6 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
[AllowAnonymous]
|
|
||||||
public class AccountController : Controller
|
public class AccountController : Controller
|
||||||
{
|
{
|
||||||
private readonly IAuthenticationSchemeProvider _schemeProvider;
|
private readonly IAuthenticationSchemeProvider _schemeProvider;
|
||||||
@ -40,7 +39,7 @@ namespace isnd.Controllers
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Entry point into the login workflow
|
/// Entry point into the login workflow
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[HttpGet]
|
[HttpGet,AllowAnonymous]
|
||||||
public async Task<IActionResult> Login(string returnUrl)
|
public async Task<IActionResult> Login(string returnUrl)
|
||||||
{
|
{
|
||||||
// build a model so we know what to show on the login page
|
// build a model so we know what to show on the login page
|
||||||
@ -59,7 +58,7 @@ namespace isnd.Controllers
|
|||||||
/// Handle postback from username/password login
|
/// Handle postback from username/password login
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken, AllowAnonymous]
|
||||||
public async Task<IActionResult> Login(LoginInputModel model, string button)
|
public async Task<IActionResult> Login(LoginInputModel model, string button)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -167,7 +166,7 @@ namespace isnd.Controllers
|
|||||||
return View("LoggedOut", vm);
|
return View("LoggedOut", vm);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet,AllowAnonymous]
|
||||||
public IActionResult AccessDenied()
|
public IActionResult AccessDenied()
|
||||||
{
|
{
|
||||||
return new BadRequestObjectResult(403);
|
return new BadRequestObjectResult(403);
|
||||||
|
@ -81,7 +81,7 @@ namespace isnd.Controllers
|
|||||||
public async Task<ActionResult> Delete(string id)
|
public async Task<ActionResult> Delete(string id)
|
||||||
{
|
{
|
||||||
string userid = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
string userid = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
||||||
ApiKey key = await dbContext.ApiKeys.FirstOrDefaultAsync(k => k.Id == id && k.UserId == userid);
|
ApiKey key = await dbContext.ApiKey.FirstOrDefaultAsync(k => k.Id == id && k.UserId == userid);
|
||||||
return View(new DeleteModel { ApiKey = key });
|
return View(new DeleteModel { ApiKey = key });
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,13 +89,13 @@ namespace isnd.Controllers
|
|||||||
public async Task<ActionResult> Delete(DeleteModel model)
|
public async Task<ActionResult> Delete(DeleteModel model)
|
||||||
{
|
{
|
||||||
string userid = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
string userid = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
||||||
ApiKey key = dbContext.ApiKeys.FirstOrDefault(k => k.Id == model.ApiKey.Id && k.UserId == userid);
|
ApiKey key = dbContext.ApiKey.FirstOrDefault(k => k.Id == model.ApiKey.Id && k.UserId == userid);
|
||||||
if (key == null)
|
if (key == null)
|
||||||
{
|
{
|
||||||
ModelState.AddModelError(null, "Key not found");
|
ModelState.AddModelError(null, "Key not found");
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
_ = dbContext.ApiKeys.Remove(key);
|
_ = dbContext.ApiKey.Remove(key);
|
||||||
_ = await dbContext.SaveChangesAsync();
|
_ = await dbContext.SaveChangesAsync();
|
||||||
return View("Index", new IndexModel { ApiKey = GetUserKeys().ToList() } );
|
return View("Index", new IndexModel { ApiKey = GetUserKeys().ToList() } );
|
||||||
}
|
}
|
||||||
@ -103,7 +103,7 @@ namespace isnd.Controllers
|
|||||||
public async Task<ActionResult> Details(string id)
|
public async Task<ActionResult> Details(string id)
|
||||||
{
|
{
|
||||||
string userid = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
string userid = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
||||||
ApiKey key = await dbContext.ApiKeys.FirstOrDefaultAsync(k => k.Id == id && k.UserId == userid);
|
ApiKey key = await dbContext.ApiKey.FirstOrDefaultAsync(k => k.Id == id && k.UserId == userid);
|
||||||
if (key == null)
|
if (key == null)
|
||||||
{
|
{
|
||||||
ModelState.AddModelError("id", "Key not found");
|
ModelState.AddModelError("id", "Key not found");
|
||||||
@ -133,7 +133,7 @@ namespace isnd.Controllers
|
|||||||
{
|
{
|
||||||
string userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
string userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
||||||
|
|
||||||
var apiKey = await dbContext.ApiKeys.SingleOrDefaultAsync(k => k.UserId == userId && k.Id == model.ApiKey.Id);
|
var apiKey = await dbContext.ApiKey.SingleOrDefaultAsync(k => k.UserId == userId && k.Id == model.ApiKey.Id);
|
||||||
apiKey.Name = model.ApiKey.Name;
|
apiKey.Name = model.ApiKey.Name;
|
||||||
apiKey.ValidityPeriodInDays = model.ApiKey.ValidityPeriodInDays;
|
apiKey.ValidityPeriodInDays = model.ApiKey.ValidityPeriodInDays;
|
||||||
await dbContext.SaveChangesAsync();
|
await dbContext.SaveChangesAsync();
|
||||||
@ -142,7 +142,7 @@ namespace isnd.Controllers
|
|||||||
|
|
||||||
public IQueryable<ApiKey> GetUserKeys()
|
public IQueryable<ApiKey> GetUserKeys()
|
||||||
{
|
{
|
||||||
return dbContext.ApiKeys.Include(k => k.User).Where(k => k.User.UserName == User.Identity.Name);
|
return dbContext.ApiKey.Include(k => k.User).Where(k => k.User.UserName == User.Identity.Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -36,7 +36,7 @@ namespace isnd.Controllers
|
|||||||
public IActionResult Index()
|
public IActionResult Index()
|
||||||
{
|
{
|
||||||
return View(new HomeIndexViewModel{
|
return View(new HomeIndexViewModel{
|
||||||
PkgCount = _dbContext.Packages
|
PkgCount = _dbContext.Package
|
||||||
.Where(p => p.Versions.Count > 0)
|
.Where(p => p.Versions.Count > 0)
|
||||||
.Count(),
|
.Count(),
|
||||||
APIUrl = _isndSettings.ExternalUrl + Constants.ApiVersionPrefix + ApiConfig.Index});
|
APIUrl = _isndSettings.ExternalUrl + Constants.ApiVersionPrefix + ApiConfig.Index});
|
||||||
|
@ -27,7 +27,7 @@ namespace isnd
|
|||||||
// GET: PackageVersion
|
// GET: PackageVersion
|
||||||
public async Task<IActionResult> Index(PackageVersionIndexViewModel model)
|
public async Task<IActionResult> Index(PackageVersionIndexViewModel model)
|
||||||
{
|
{
|
||||||
var applicationDbContext = _context.PackageVersions.Include(p => p.Package)
|
var applicationDbContext = _context.PackageVersion.Include(p => p.Package)
|
||||||
.Include(p => p.Package.Owner)
|
.Include(p => p.Package.Owner)
|
||||||
.Include(p => p.Package.Versions)
|
.Include(p => p.Package.Versions)
|
||||||
.Where(
|
.Where(
|
||||||
@ -41,7 +41,7 @@ namespace isnd
|
|||||||
public async Task<IActionResult> Mines(PackageVersionIndexViewModel model)
|
public async Task<IActionResult> Mines(PackageVersionIndexViewModel model)
|
||||||
{
|
{
|
||||||
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
||||||
var applicationDbContext = _context.PackageVersions
|
var applicationDbContext = _context.PackageVersion
|
||||||
.Include(p => p.Package).Where(
|
.Include(p => p.Package).Where(
|
||||||
p => (string.IsNullOrEmpty(model.PackageId) || p.PackageId.StartsWith(model.PackageId))
|
p => (string.IsNullOrEmpty(model.PackageId) || p.PackageId.StartsWith(model.PackageId))
|
||||||
&& p.Package.OwnerId == userId);
|
&& p.Package.OwnerId == userId);
|
||||||
|
@ -4,6 +4,8 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using isnd.Attributes;
|
using isnd.Attributes;
|
||||||
using isnd.Entities;
|
using isnd.Entities;
|
||||||
using isn.abst;
|
using isn.abst;
|
||||||
|
using System.Linq;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
@ -15,17 +17,30 @@ namespace isnd.Controllers
|
|||||||
public IActionResult GetPackage(
|
public IActionResult GetPackage(
|
||||||
[FromRoute][SafeName][Required] string id,
|
[FromRoute][SafeName][Required] string id,
|
||||||
[FromRoute][SafeName][Required] string version,
|
[FromRoute][SafeName][Required] string version,
|
||||||
[FromRoute] string idf, [FromRoute] string versionFromName)
|
[FromRoute] string idf,
|
||||||
|
[FromRoute] string versionFromName)
|
||||||
{
|
{
|
||||||
var pkgPath = Path.Combine(isndSettings.PackagesRootDir,
|
DirectoryInfo pkgsDirInfo = new DirectoryInfo(isndSettings.PackagesRootDir);
|
||||||
id, version, $"{id}-{version}." + Constants.PacketFileExtension
|
|
||||||
);
|
|
||||||
|
|
||||||
FileInfo pkgFileInfo = new FileInfo(pkgPath);
|
var pkgDirInfo = pkgsDirInfo.GetDirectories().FirstOrDefault(
|
||||||
|
s=>string.Compare(s.Name,id, System.StringComparison.InvariantCultureIgnoreCase)==0);
|
||||||
|
if (pkgDirInfo==null)
|
||||||
|
return BadRequest("Package does´nt exist in the file system.");
|
||||||
|
var pkgVersionDirInfo = pkgDirInfo.GetDirectories().FirstOrDefault(
|
||||||
|
s=>s.Name==version);
|
||||||
|
if (pkgVersionDirInfo==null)
|
||||||
|
return BadRequest("Package does´nt exist in the specified version.");
|
||||||
|
|
||||||
|
var pkgNameSpec=$"{id}-{version}.{Constants.PacketFileExtension}";
|
||||||
|
|
||||||
if (!pkgFileInfo.Exists)
|
FileInfo pkgFileInfo = pkgVersionDirInfo.GetFiles()
|
||||||
|
.FirstOrDefault(p=>string.Compare(p.Name,pkgNameSpec,
|
||||||
|
System.StringComparison.InvariantCultureIgnoreCase)==0);
|
||||||
|
|
||||||
|
if (pkgFileInfo==null || !pkgFileInfo.Exists)
|
||||||
{
|
{
|
||||||
return BadRequest("Package does´nt exist in the file system.");
|
logger.LogError($"Not found in {pkgVersionDirInfo.FullName} : {pkgNameSpec}");
|
||||||
|
return BadRequest("Package version does´nt exist in the file system.");
|
||||||
}
|
}
|
||||||
return File(pkgFileInfo.OpenRead(), "application/zip; charset=binary");
|
return File(pkgFileInfo.OpenRead(), "application/zip; charset=binary");
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ namespace isnd.Controllers
|
|||||||
public IActionResult GetVersions(
|
public IActionResult GetVersions(
|
||||||
string id,
|
string id,
|
||||||
string version,
|
string version,
|
||||||
bool prerelease = false,
|
bool prerelease = true,
|
||||||
string packageType = null,
|
string packageType = null,
|
||||||
int skip = 0,
|
int skip = 0,
|
||||||
int take = 50)
|
int take = 50)
|
||||||
|
@ -8,6 +8,7 @@ using Microsoft.Extensions.Logging;
|
|||||||
using isnd.Entities;
|
using isnd.Entities;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using isn.abst;
|
using isn.abst;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace isnd.Controllers
|
namespace isnd.Controllers
|
||||||
{
|
{
|
||||||
@ -27,18 +28,34 @@ namespace isnd.Controllers
|
|||||||
ViewData["files"] = files;
|
ViewData["files"] = files;
|
||||||
|
|
||||||
var clearKey = protector.Unprotect(apiKey);
|
var clearKey = protector.Unprotect(apiKey);
|
||||||
var dbApiKey = dbContext.ApiKeys.SingleOrDefault(k => k.Id == clearKey);
|
var dbApiKey = dbContext.ApiKey.SingleOrDefault(k => k.Id == clearKey);
|
||||||
if (dbApiKey == null)
|
if (dbApiKey == null)
|
||||||
{
|
{
|
||||||
logger.LogError("403 : no api-key");
|
logger.LogError("403 : no api-key");
|
||||||
return Unauthorized();
|
return Unauthorized();
|
||||||
}
|
}
|
||||||
|
bool foundPackage = false;
|
||||||
|
|
||||||
foreach (IFormFile file in Request.Form.Files)
|
foreach (IFormFile file in Request.Form.Files)
|
||||||
{
|
{
|
||||||
var version = await packageManager.PutPackageAsync(file.OpenReadStream(), dbApiKey.UserId);
|
FileInfo inputFileInfo = new FileInfo(file.FileName);
|
||||||
logger.LogInformation($"new package : {version.PackageId} {version.NugetLink}");
|
switch (inputFileInfo.Extension)
|
||||||
|
{
|
||||||
|
case ".nupkg":
|
||||||
|
case ".nupkgs":
|
||||||
|
var libVersion = await packageManager.PutPackageAsync(inputFileInfo.Extension, file.OpenReadStream(), dbApiKey.UserId);
|
||||||
|
logger.LogInformation($"new package : {libVersion.PackageId} {libVersion.NugetLink}");
|
||||||
|
foundPackage = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
logger.LogInformation($"file extension is not supported : {inputFileInfo.Extension}");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return Ok();
|
if (foundPackage)
|
||||||
|
return Ok();
|
||||||
|
return BadRequest("no package");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -18,7 +18,7 @@ namespace isnd.Controllers
|
|||||||
string q=null,
|
string q=null,
|
||||||
int skip=0,
|
int skip=0,
|
||||||
int take=25,
|
int take=25,
|
||||||
bool prerelease=false,
|
bool prerelease=true,
|
||||||
string semVerLevel = "2.0.0",
|
string semVerLevel = "2.0.0",
|
||||||
string packageType = "Dependency")
|
string packageType = "Dependency")
|
||||||
{
|
{
|
||||||
|
@ -56,7 +56,7 @@ namespace isnd.Controllers
|
|||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
var packageVersion = dbContext.PackageVersions
|
var packageVersion = dbContext.PackageVersion
|
||||||
.Include(p=>p.LatestCommit)
|
.Include(p=>p.LatestCommit)
|
||||||
.Include(p => p.Package)
|
.Include(p => p.Package)
|
||||||
.Where(m => m.PackageId == model.pkgid)
|
.Where(m => m.PackageId == model.pkgid)
|
||||||
@ -84,7 +84,7 @@ namespace isnd.Controllers
|
|||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
var packageVersion = await dbContext.PackageVersions.Include(p => p.Package)
|
var packageVersion = await dbContext.PackageVersion.Include(p => p.Package)
|
||||||
.FirstOrDefaultAsync(m => m.PackageId == pkgid && m.FullString == version
|
.FirstOrDefaultAsync(m => m.PackageId == pkgid && m.FullString == version
|
||||||
&& (pkgtype!=null && m.Type == pkgtype || m.Type != "Delete" ));
|
&& (pkgtype!=null && m.Type == pkgtype || m.Type != "Delete" ));
|
||||||
if (packageVersion == null) return NotFound();
|
if (packageVersion == null) return NotFound();
|
||||||
@ -99,7 +99,7 @@ namespace isnd.Controllers
|
|||||||
public async Task<IActionResult> DeleteConfirmed(string pkgid, string version,
|
public async Task<IActionResult> DeleteConfirmed(string pkgid, string version,
|
||||||
string type)
|
string type)
|
||||||
{
|
{
|
||||||
var packageVersion = await dbContext.PackageVersions
|
var packageVersion = await dbContext.PackageVersion
|
||||||
.Include(pv => pv.Package)
|
.Include(pv => pv.Package)
|
||||||
.Where(m => m.PackageId == pkgid
|
.Where(m => m.PackageId == pkgid
|
||||||
&& m.FullString == version && (type==null || m.Type == type))
|
&& m.FullString == version && (type==null || m.Type == type))
|
||||||
|
@ -37,27 +37,27 @@ namespace isnd.Data
|
|||||||
/// User API keys
|
/// User API keys
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value></value>
|
/// <value></value>
|
||||||
public DbSet<ApiKey> ApiKeys { get; set; }
|
public DbSet<ApiKey> ApiKey { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Packages
|
/// Packages
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value></value>
|
/// <value></value>
|
||||||
public DbSet<Package> Packages { get; set; }
|
public DbSet<Package> Package { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Package Versions
|
/// Package Versions
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value></value>
|
/// <value></value>
|
||||||
public DbSet<PackageVersion> PackageVersions { get; set; }
|
public DbSet<PackageVersion> PackageVersion { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Commits
|
/// Commits
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value></value>
|
/// <value></value>
|
||||||
public DbSet<Commit> Commits { get; set; }
|
public DbSet<Commit> Commits { get; set; }
|
||||||
public DbSet<Dependency> Dependencies { get; set; }
|
public DbSet<Dependency> Dependency { get; set; }
|
||||||
|
|
||||||
public DbSet<PackageDependencyGroup> PackageDependencyGroups { get; set; }
|
public DbSet<PackageDependencyGroup> PackageDependencyGroup { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ namespace isnd.Data.Catalog
|
|||||||
{
|
{
|
||||||
Title = PackageId = pkg.Package.Id;
|
Title = PackageId = pkg.Package.Id;
|
||||||
Version = pkg.FullString;
|
Version = pkg.FullString;
|
||||||
Authors = $"{pkg.Package.Owner.FullName} <${pkg.Package.Owner.Email}>";
|
Authors = $"{pkg.Package.Owner.FullName} <{pkg.Package.Owner.Email}>";
|
||||||
packageContent = apiBase + pkg.NugetLink;
|
packageContent = apiBase + pkg.NugetLink;
|
||||||
CommitId = pkg.CommitId;
|
CommitId = pkg.CommitId;
|
||||||
Published = CommitTimeStamp = pkg.LatestCommit.CommitTimeStamp;
|
Published = CommitTimeStamp = pkg.LatestCommit.CommitTimeStamp;
|
||||||
|
@ -21,5 +21,10 @@ namespace isnd.Data.Catalog
|
|||||||
[JsonProperty("take")]
|
[JsonProperty("take")]
|
||||||
|
|
||||||
public int Take { get; set; } = 25;
|
public int Take { get; set; } = 25;
|
||||||
|
|
||||||
|
override public string ToString()
|
||||||
|
{
|
||||||
|
return $"[PackageRegistrationQuery Query:{Query} Prerelease:{Prerelease} Skip:{Skip} Take:{Take}]";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -49,6 +49,11 @@ namespace isnd.Data.Packages
|
|||||||
|
|
||||||
public virtual Commit LatestCommit { get; set; }
|
public virtual Commit LatestCommit { get; set; }
|
||||||
|
|
||||||
|
internal static bool ValidateId(string pkgId)
|
||||||
|
{
|
||||||
|
return !string.IsNullOrWhiteSpace(pkgId);
|
||||||
|
}
|
||||||
|
|
||||||
public PackageVersion GetLatestVersion()
|
public PackageVersion GetLatestVersion()
|
||||||
{
|
{
|
||||||
var latest = Versions.Max(v => v.NugetVersion);
|
var latest = Versions.Max(v => v.NugetVersion);
|
||||||
|
@ -30,7 +30,7 @@ namespace isnd.Interfaces
|
|||||||
|
|
||||||
Task<PackageSearchResult> SearchPackageAsync(PackageRegistrationQuery query);
|
Task<PackageSearchResult> SearchPackageAsync(PackageRegistrationQuery query);
|
||||||
|
|
||||||
Task<PackageVersion> PutPackageAsync(Stream packageStream, string ownerId);
|
Task<PackageVersion> PutPackageAsync(string fileExtension, Stream packageStream, string ownerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
545
src/isnd/Migrations/20250707142411_net9.Designer.cs
generated
Normal file
545
src/isnd/Migrations/20250707142411_net9.Designer.cs
generated
Normal file
@ -0,0 +1,545 @@
|
|||||||
|
// <auto-generated />
|
||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
|
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||||
|
using isnd.Data;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace isnd.Migrations
|
||||||
|
{
|
||||||
|
[DbContext(typeof(ApplicationDbContext))]
|
||||||
|
[Migration("20250707142411_net9")]
|
||||||
|
partial class net9
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
#pragma warning disable 612, 618
|
||||||
|
modelBuilder
|
||||||
|
.HasAnnotation("ProductVersion", "9.0.6")
|
||||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||||
|
|
||||||
|
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("ConcurrencyStamp")
|
||||||
|
.IsConcurrencyToken()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("character varying(256)");
|
||||||
|
|
||||||
|
b.Property<string>("NormalizedName")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("character varying(256)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("NormalizedName")
|
||||||
|
.IsUnique()
|
||||||
|
.HasDatabaseName("RoleNameIndex");
|
||||||
|
|
||||||
|
b.ToTable("AspNetRoles", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<string>("ClaimType")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("ClaimValue")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("RoleId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("RoleId");
|
||||||
|
|
||||||
|
b.ToTable("AspNetRoleClaims", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||||
|
|
||||||
|
b.Property<string>("ClaimType")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("ClaimValue")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("AspNetUserClaims", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("LoginProvider")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("ProviderKey")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("ProviderDisplayName")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("LoginProvider", "ProviderKey");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("AspNetUserLogins", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("RoleId")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("UserId", "RoleId");
|
||||||
|
|
||||||
|
b.HasIndex("RoleId");
|
||||||
|
|
||||||
|
b.ToTable("AspNetUserRoles", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("LoginProvider")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Value")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("UserId", "LoginProvider", "Name");
|
||||||
|
|
||||||
|
b.ToTable("AspNetUserTokens", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.ApiKeys.ApiKey", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("CreationDate")
|
||||||
|
.HasColumnType("timestamp with time zone");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("UserId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<int>("ValidityPeriodInDays")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("ApiKey");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.ApplicationUser", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<int>("AccessFailedCount")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<string>("ConcurrencyStamp")
|
||||||
|
.IsConcurrencyToken()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Email")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("character varying(256)");
|
||||||
|
|
||||||
|
b.Property<bool>("EmailConfirmed")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<string>("FullName")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("LockoutEnabled")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset?>("LockoutEnd")
|
||||||
|
.HasColumnType("timestamp with time zone");
|
||||||
|
|
||||||
|
b.Property<string>("NormalizedEmail")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("character varying(256)");
|
||||||
|
|
||||||
|
b.Property<string>("NormalizedUserName")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("character varying(256)");
|
||||||
|
|
||||||
|
b.Property<string>("PasswordHash")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("PhoneNumber")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("PhoneNumberConfirmed")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<string>("SecurityStamp")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("TwoFactorEnabled")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<string>("UserName")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("character varying(256)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("NormalizedEmail")
|
||||||
|
.HasDatabaseName("EmailIndex");
|
||||||
|
|
||||||
|
b.HasIndex("NormalizedUserName")
|
||||||
|
.IsUnique()
|
||||||
|
.HasDatabaseName("UserNameIndex");
|
||||||
|
|
||||||
|
b.ToTable("AspNetUsers", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.Dependency", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("DependencyGroupId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Exclude")
|
||||||
|
.HasMaxLength(2048)
|
||||||
|
.HasColumnType("character varying(2048)");
|
||||||
|
|
||||||
|
b.Property<string>("PackageId")
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("Version")
|
||||||
|
.HasMaxLength(1024)
|
||||||
|
.HasColumnType("character varying(1024)");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("DependencyGroupId");
|
||||||
|
|
||||||
|
b.ToTable("Dependency");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.PackageDependencyGroup", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<string>("PackageId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("character varying(1024)");
|
||||||
|
|
||||||
|
b.Property<string>("PackageVersionFullString")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("character varying(256)");
|
||||||
|
|
||||||
|
b.Property<string>("TargetFramework")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("PackageId", "PackageVersionFullString");
|
||||||
|
|
||||||
|
b.ToTable("PackageDependencyGroup");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.PackageVersion", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("PackageId")
|
||||||
|
.HasMaxLength(1024)
|
||||||
|
.HasColumnType("character varying(1024)");
|
||||||
|
|
||||||
|
b.Property<string>("FullString")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("character varying(256)");
|
||||||
|
|
||||||
|
b.Property<string>("Authors")
|
||||||
|
.HasMaxLength(1024)
|
||||||
|
.HasColumnType("character varying(1024)");
|
||||||
|
|
||||||
|
b.Property<long>("CommitNId")
|
||||||
|
.HasColumnType("bigint");
|
||||||
|
|
||||||
|
b.Property<string>("Description")
|
||||||
|
.HasMaxLength(1024)
|
||||||
|
.HasColumnType("character varying(1024)");
|
||||||
|
|
||||||
|
b.Property<bool>("IsPrerelease")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.Property<int>("Major")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<int>("Minor")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<int>("Patch")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<int>("Revision")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<string>("Type")
|
||||||
|
.HasMaxLength(256)
|
||||||
|
.HasColumnType("character varying(256)");
|
||||||
|
|
||||||
|
b.HasKey("PackageId", "FullString");
|
||||||
|
|
||||||
|
b.HasIndex("CommitNId");
|
||||||
|
|
||||||
|
b.ToTable("PackageVersion");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.Packages.Commit", b =>
|
||||||
|
{
|
||||||
|
b.Property<long>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("bigint");
|
||||||
|
|
||||||
|
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
|
||||||
|
|
||||||
|
b.Property<int>("Action")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b.Property<DateTimeOffset>("TimeStamp")
|
||||||
|
.HasColumnType("timestamp with time zone");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Commits");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.Packages.Package", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.HasMaxLength(1024)
|
||||||
|
.HasColumnType("character varying(1024)");
|
||||||
|
|
||||||
|
b.Property<long>("CommitNId")
|
||||||
|
.HasColumnType("bigint");
|
||||||
|
|
||||||
|
b.Property<string>("Description")
|
||||||
|
.HasMaxLength(1024)
|
||||||
|
.HasColumnType("character varying(1024)");
|
||||||
|
|
||||||
|
b.Property<string>("OwnerId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("text");
|
||||||
|
|
||||||
|
b.Property<bool>("Public")
|
||||||
|
.HasColumnType("boolean");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CommitNId");
|
||||||
|
|
||||||
|
b.HasIndex("OwnerId");
|
||||||
|
|
||||||
|
b.ToTable("Package");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("RoleId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("isnd.Data.ApplicationUser", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("isnd.Data.ApplicationUser", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("RoleId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("isnd.Data.ApplicationUser", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("isnd.Data.ApplicationUser", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.ApiKeys.ApiKey", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("isnd.Data.ApplicationUser", "User")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("User");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.Dependency", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("isnd.Data.PackageDependencyGroup", "Group")
|
||||||
|
.WithMany("Dependencies")
|
||||||
|
.HasForeignKey("DependencyGroupId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Group");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.PackageDependencyGroup", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("isnd.Data.PackageVersion", "PackageVersion")
|
||||||
|
.WithMany("DependencyGroups")
|
||||||
|
.HasForeignKey("PackageId", "PackageVersionFullString")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("PackageVersion");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.PackageVersion", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("isnd.Data.Packages.Commit", "LatestCommit")
|
||||||
|
.WithMany("Versions")
|
||||||
|
.HasForeignKey("CommitNId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("isnd.Data.Packages.Package", "Package")
|
||||||
|
.WithMany("Versions")
|
||||||
|
.HasForeignKey("PackageId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("LatestCommit");
|
||||||
|
|
||||||
|
b.Navigation("Package");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.Packages.Package", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("isnd.Data.Packages.Commit", "LatestCommit")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("CommitNId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("isnd.Data.ApplicationUser", "Owner")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("OwnerId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("LatestCommit");
|
||||||
|
|
||||||
|
b.Navigation("Owner");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.PackageDependencyGroup", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Dependencies");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.PackageVersion", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("DependencyGroups");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.Packages.Commit", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Versions");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("isnd.Data.Packages.Package", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("Versions");
|
||||||
|
});
|
||||||
|
#pragma warning restore 612, 618
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
376
src/isnd/Migrations/20250707142411_net9.cs
Normal file
376
src/isnd/Migrations/20250707142411_net9.cs
Normal file
@ -0,0 +1,376 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace isnd.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class net9 : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_ApiKeys_AspNetUsers_UserId",
|
||||||
|
table: "ApiKeys");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_Dependencies_PackageDependencyGroups_DependencyGroupId",
|
||||||
|
table: "Dependencies");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_PackageDependencyGroups_PackageVersions_PackageId_PackageVe~",
|
||||||
|
table: "PackageDependencyGroups");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_Packages_AspNetUsers_OwnerId",
|
||||||
|
table: "Packages");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_Packages_Commits_CommitNId",
|
||||||
|
table: "Packages");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_PackageVersions_Commits_CommitNId",
|
||||||
|
table: "PackageVersions");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_PackageVersions_Packages_PackageId",
|
||||||
|
table: "PackageVersions");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_PackageVersions",
|
||||||
|
table: "PackageVersions");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_Packages",
|
||||||
|
table: "Packages");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_PackageDependencyGroups",
|
||||||
|
table: "PackageDependencyGroups");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_Dependencies",
|
||||||
|
table: "Dependencies");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_ApiKeys",
|
||||||
|
table: "ApiKeys");
|
||||||
|
|
||||||
|
migrationBuilder.RenameTable(
|
||||||
|
name: "PackageVersions",
|
||||||
|
newName: "PackageVersion");
|
||||||
|
|
||||||
|
migrationBuilder.RenameTable(
|
||||||
|
name: "Packages",
|
||||||
|
newName: "Package");
|
||||||
|
|
||||||
|
migrationBuilder.RenameTable(
|
||||||
|
name: "PackageDependencyGroups",
|
||||||
|
newName: "PackageDependencyGroup");
|
||||||
|
|
||||||
|
migrationBuilder.RenameTable(
|
||||||
|
name: "Dependencies",
|
||||||
|
newName: "Dependency");
|
||||||
|
|
||||||
|
migrationBuilder.RenameTable(
|
||||||
|
name: "ApiKeys",
|
||||||
|
newName: "ApiKey");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_PackageVersions_CommitNId",
|
||||||
|
table: "PackageVersion",
|
||||||
|
newName: "IX_PackageVersion_CommitNId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_Packages_OwnerId",
|
||||||
|
table: "Package",
|
||||||
|
newName: "IX_Package_OwnerId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_Packages_CommitNId",
|
||||||
|
table: "Package",
|
||||||
|
newName: "IX_Package_CommitNId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_PackageDependencyGroups_PackageId_PackageVersionFullString",
|
||||||
|
table: "PackageDependencyGroup",
|
||||||
|
newName: "IX_PackageDependencyGroup_PackageId_PackageVersionFullString");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_Dependencies_DependencyGroupId",
|
||||||
|
table: "Dependency",
|
||||||
|
newName: "IX_Dependency_DependencyGroupId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_ApiKeys_UserId",
|
||||||
|
table: "ApiKey",
|
||||||
|
newName: "IX_ApiKey_UserId");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_PackageVersion",
|
||||||
|
table: "PackageVersion",
|
||||||
|
columns: new[] { "PackageId", "FullString" });
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_Package",
|
||||||
|
table: "Package",
|
||||||
|
column: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_PackageDependencyGroup",
|
||||||
|
table: "PackageDependencyGroup",
|
||||||
|
column: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_Dependency",
|
||||||
|
table: "Dependency",
|
||||||
|
column: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_ApiKey",
|
||||||
|
table: "ApiKey",
|
||||||
|
column: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_ApiKey_AspNetUsers_UserId",
|
||||||
|
table: "ApiKey",
|
||||||
|
column: "UserId",
|
||||||
|
principalTable: "AspNetUsers",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_Dependency_PackageDependencyGroup_DependencyGroupId",
|
||||||
|
table: "Dependency",
|
||||||
|
column: "DependencyGroupId",
|
||||||
|
principalTable: "PackageDependencyGroup",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_Package_AspNetUsers_OwnerId",
|
||||||
|
table: "Package",
|
||||||
|
column: "OwnerId",
|
||||||
|
principalTable: "AspNetUsers",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_Package_Commits_CommitNId",
|
||||||
|
table: "Package",
|
||||||
|
column: "CommitNId",
|
||||||
|
principalTable: "Commits",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_PackageDependencyGroup_PackageVersion_PackageId_PackageVers~",
|
||||||
|
table: "PackageDependencyGroup",
|
||||||
|
columns: new[] { "PackageId", "PackageVersionFullString" },
|
||||||
|
principalTable: "PackageVersion",
|
||||||
|
principalColumns: new[] { "PackageId", "FullString" },
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_PackageVersion_Commits_CommitNId",
|
||||||
|
table: "PackageVersion",
|
||||||
|
column: "CommitNId",
|
||||||
|
principalTable: "Commits",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_PackageVersion_Package_PackageId",
|
||||||
|
table: "PackageVersion",
|
||||||
|
column: "PackageId",
|
||||||
|
principalTable: "Package",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_ApiKey_AspNetUsers_UserId",
|
||||||
|
table: "ApiKey");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_Dependency_PackageDependencyGroup_DependencyGroupId",
|
||||||
|
table: "Dependency");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_Package_AspNetUsers_OwnerId",
|
||||||
|
table: "Package");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_Package_Commits_CommitNId",
|
||||||
|
table: "Package");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_PackageDependencyGroup_PackageVersion_PackageId_PackageVers~",
|
||||||
|
table: "PackageDependencyGroup");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_PackageVersion_Commits_CommitNId",
|
||||||
|
table: "PackageVersion");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_PackageVersion_Package_PackageId",
|
||||||
|
table: "PackageVersion");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_PackageVersion",
|
||||||
|
table: "PackageVersion");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_PackageDependencyGroup",
|
||||||
|
table: "PackageDependencyGroup");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_Package",
|
||||||
|
table: "Package");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_Dependency",
|
||||||
|
table: "Dependency");
|
||||||
|
|
||||||
|
migrationBuilder.DropPrimaryKey(
|
||||||
|
name: "PK_ApiKey",
|
||||||
|
table: "ApiKey");
|
||||||
|
|
||||||
|
migrationBuilder.RenameTable(
|
||||||
|
name: "PackageVersion",
|
||||||
|
newName: "PackageVersions");
|
||||||
|
|
||||||
|
migrationBuilder.RenameTable(
|
||||||
|
name: "PackageDependencyGroup",
|
||||||
|
newName: "PackageDependencyGroups");
|
||||||
|
|
||||||
|
migrationBuilder.RenameTable(
|
||||||
|
name: "Package",
|
||||||
|
newName: "Packages");
|
||||||
|
|
||||||
|
migrationBuilder.RenameTable(
|
||||||
|
name: "Dependency",
|
||||||
|
newName: "Dependencies");
|
||||||
|
|
||||||
|
migrationBuilder.RenameTable(
|
||||||
|
name: "ApiKey",
|
||||||
|
newName: "ApiKeys");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_PackageVersion_CommitNId",
|
||||||
|
table: "PackageVersions",
|
||||||
|
newName: "IX_PackageVersions_CommitNId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_PackageDependencyGroup_PackageId_PackageVersionFullString",
|
||||||
|
table: "PackageDependencyGroups",
|
||||||
|
newName: "IX_PackageDependencyGroups_PackageId_PackageVersionFullString");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_Package_OwnerId",
|
||||||
|
table: "Packages",
|
||||||
|
newName: "IX_Packages_OwnerId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_Package_CommitNId",
|
||||||
|
table: "Packages",
|
||||||
|
newName: "IX_Packages_CommitNId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_Dependency_DependencyGroupId",
|
||||||
|
table: "Dependencies",
|
||||||
|
newName: "IX_Dependencies_DependencyGroupId");
|
||||||
|
|
||||||
|
migrationBuilder.RenameIndex(
|
||||||
|
name: "IX_ApiKey_UserId",
|
||||||
|
table: "ApiKeys",
|
||||||
|
newName: "IX_ApiKeys_UserId");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_PackageVersions",
|
||||||
|
table: "PackageVersions",
|
||||||
|
columns: new[] { "PackageId", "FullString" });
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_PackageDependencyGroups",
|
||||||
|
table: "PackageDependencyGroups",
|
||||||
|
column: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_Packages",
|
||||||
|
table: "Packages",
|
||||||
|
column: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_Dependencies",
|
||||||
|
table: "Dependencies",
|
||||||
|
column: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddPrimaryKey(
|
||||||
|
name: "PK_ApiKeys",
|
||||||
|
table: "ApiKeys",
|
||||||
|
column: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_ApiKeys_AspNetUsers_UserId",
|
||||||
|
table: "ApiKeys",
|
||||||
|
column: "UserId",
|
||||||
|
principalTable: "AspNetUsers",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_Dependencies_PackageDependencyGroups_DependencyGroupId",
|
||||||
|
table: "Dependencies",
|
||||||
|
column: "DependencyGroupId",
|
||||||
|
principalTable: "PackageDependencyGroups",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_PackageDependencyGroups_PackageVersions_PackageId_PackageVe~",
|
||||||
|
table: "PackageDependencyGroups",
|
||||||
|
columns: new[] { "PackageId", "PackageVersionFullString" },
|
||||||
|
principalTable: "PackageVersions",
|
||||||
|
principalColumns: new[] { "PackageId", "FullString" },
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_Packages_AspNetUsers_OwnerId",
|
||||||
|
table: "Packages",
|
||||||
|
column: "OwnerId",
|
||||||
|
principalTable: "AspNetUsers",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_Packages_Commits_CommitNId",
|
||||||
|
table: "Packages",
|
||||||
|
column: "CommitNId",
|
||||||
|
principalTable: "Commits",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_PackageVersions_Commits_CommitNId",
|
||||||
|
table: "PackageVersions",
|
||||||
|
column: "CommitNId",
|
||||||
|
principalTable: "Commits",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_PackageVersions_Packages_PackageId",
|
||||||
|
table: "PackageVersions",
|
||||||
|
column: "PackageId",
|
||||||
|
principalTable: "Packages",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -17,7 +17,7 @@ namespace isnd.Migrations
|
|||||||
{
|
{
|
||||||
#pragma warning disable 612, 618
|
#pragma warning disable 612, 618
|
||||||
modelBuilder
|
modelBuilder
|
||||||
.HasAnnotation("ProductVersion", "8.0.10")
|
.HasAnnotation("ProductVersion", "9.0.6")
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||||
|
|
||||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||||
@ -177,7 +177,7 @@ namespace isnd.Migrations
|
|||||||
|
|
||||||
b.HasIndex("UserId");
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
b.ToTable("ApiKeys");
|
b.ToTable("ApiKey");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("isnd.Data.ApplicationUser", b =>
|
modelBuilder.Entity("isnd.Data.ApplicationUser", b =>
|
||||||
@ -272,7 +272,7 @@ namespace isnd.Migrations
|
|||||||
|
|
||||||
b.HasIndex("DependencyGroupId");
|
b.HasIndex("DependencyGroupId");
|
||||||
|
|
||||||
b.ToTable("Dependencies");
|
b.ToTable("Dependency");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("isnd.Data.PackageDependencyGroup", b =>
|
modelBuilder.Entity("isnd.Data.PackageDependencyGroup", b =>
|
||||||
@ -297,7 +297,7 @@ namespace isnd.Migrations
|
|||||||
|
|
||||||
b.HasIndex("PackageId", "PackageVersionFullString");
|
b.HasIndex("PackageId", "PackageVersionFullString");
|
||||||
|
|
||||||
b.ToTable("PackageDependencyGroups");
|
b.ToTable("PackageDependencyGroup");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("isnd.Data.PackageVersion", b =>
|
modelBuilder.Entity("isnd.Data.PackageVersion", b =>
|
||||||
@ -344,7 +344,7 @@ namespace isnd.Migrations
|
|||||||
|
|
||||||
b.HasIndex("CommitNId");
|
b.HasIndex("CommitNId");
|
||||||
|
|
||||||
b.ToTable("PackageVersions");
|
b.ToTable("PackageVersion");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("isnd.Data.Packages.Commit", b =>
|
modelBuilder.Entity("isnd.Data.Packages.Commit", b =>
|
||||||
@ -392,7 +392,7 @@ namespace isnd.Migrations
|
|||||||
|
|
||||||
b.HasIndex("OwnerId");
|
b.HasIndex("OwnerId");
|
||||||
|
|
||||||
b.ToTable("Packages");
|
b.ToTable("Package");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||||
|
@ -36,13 +36,13 @@ public class ApiKeyProvider : IApiKeyProvider
|
|||||||
ValidityPeriodInDays = model.ValidityPeriodInDays
|
ValidityPeriodInDays = model.ValidityPeriodInDays
|
||||||
};
|
};
|
||||||
|
|
||||||
_ = dbContext.ApiKeys.Add(newKey);
|
_ = dbContext.ApiKey.Add(newKey);
|
||||||
_ = await dbContext.SaveChangesAsync();
|
_ = await dbContext.SaveChangesAsync();
|
||||||
return newKey;
|
return newKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IQueryable<ApiKey> GetUserKeys(string identityName)
|
public IQueryable<ApiKey> GetUserKeys(string identityName)
|
||||||
{
|
{
|
||||||
return dbContext.ApiKeys.Include(k => k.User).Where(k => k.User.UserName == identityName);
|
return dbContext.ApiKey.Include(k => k.User).Where(k => k.User.UserName == identityName);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -20,6 +20,8 @@ using System.Xml;
|
|||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
using NuGet.Protocol;
|
using NuGet.Protocol;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace isnd.Services
|
namespace isnd.Services
|
||||||
{
|
{
|
||||||
@ -29,11 +31,13 @@ namespace isnd.Services
|
|||||||
readonly ApplicationDbContext dbContext;
|
readonly ApplicationDbContext dbContext;
|
||||||
|
|
||||||
public PackageManager(ApplicationDbContext dbContext,
|
public PackageManager(ApplicationDbContext dbContext,
|
||||||
IOptions<IsndSettings> siteConfigOptionsOptions)
|
IOptions<IsndSettings> siteConfigOptionsOptions,
|
||||||
|
ILoggerFactory loggerFactory)
|
||||||
{
|
{
|
||||||
this.dbContext = dbContext;
|
this.dbContext = dbContext;
|
||||||
isndSettings = siteConfigOptionsOptions.Value;
|
isndSettings = siteConfigOptionsOptions.Value;
|
||||||
apiBase = isndSettings.ExternalUrl + Constants.ApiVersionPrefix;
|
apiBase = isndSettings.ExternalUrl + Constants.ApiVersionPrefix;
|
||||||
|
this.logger = loggerFactory.CreateLogger<PackageManager>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Resource> GetResources()
|
public IEnumerable<Resource> GetResources()
|
||||||
@ -103,7 +107,7 @@ namespace isnd.Services
|
|||||||
int skip, int take, bool prerelease = false,
|
int skip, int take, bool prerelease = false,
|
||||||
string packageType = null)
|
string packageType = null)
|
||||||
{
|
{
|
||||||
var scope = dbContext.PackageVersions.Where(
|
var scope = dbContext.PackageVersion.Where(
|
||||||
v => v.PackageId.StartsWith(id)
|
v => v.PackageId.StartsWith(id)
|
||||||
&& (prerelease || !v.IsPrerelease)
|
&& (prerelease || !v.IsPrerelease)
|
||||||
&& (packageType == null || v.Type == packageType)
|
&& (packageType == null || v.Type == packageType)
|
||||||
@ -135,13 +139,13 @@ namespace isnd.Services
|
|||||||
IQueryable<PackageVersion> results =
|
IQueryable<PackageVersion> results =
|
||||||
(parsedVersion != null) ?
|
(parsedVersion != null) ?
|
||||||
(packageType == null) ?
|
(packageType == null) ?
|
||||||
dbContext.PackageVersions.Where(
|
dbContext.PackageVersion.Where(
|
||||||
v => v.PackageId.ToLower() == id
|
v => v.PackageId.ToLower() == id
|
||||||
&& (prerelease || !v.IsPrerelease)
|
&& (prerelease || !v.IsPrerelease)
|
||||||
&& (parsedVersion.CompareTo(new SemanticVersion(v.Major, v.Minor, v.Patch)) < 0)
|
&& (parsedVersion.CompareTo(new SemanticVersion(v.Major, v.Minor, v.Patch)) < 0)
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
dbContext.PackageVersions.Where(
|
dbContext.PackageVersion.Where(
|
||||||
v => v.PackageId.ToLower() == id
|
v => v.PackageId.ToLower() == id
|
||||||
&& (prerelease || !v.IsPrerelease)
|
&& (prerelease || !v.IsPrerelease)
|
||||||
&& (v.Type == packageType)
|
&& (v.Type == packageType)
|
||||||
@ -150,12 +154,12 @@ namespace isnd.Services
|
|||||||
|
|
||||||
:
|
:
|
||||||
(packageType == null) ?
|
(packageType == null) ?
|
||||||
dbContext.PackageVersions.Where(
|
dbContext.PackageVersion.Where(
|
||||||
v => v.PackageId.ToLower() == id
|
v => v.PackageId.ToLower() == id
|
||||||
&& (prerelease || !v.IsPrerelease)
|
&& (prerelease || !v.IsPrerelease)
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
dbContext.PackageVersions.Where(
|
dbContext.PackageVersion.Where(
|
||||||
v => v.PackageId.ToLower() == id
|
v => v.PackageId.ToLower() == id
|
||||||
&& (prerelease || !v.IsPrerelease)
|
&& (prerelease || !v.IsPrerelease)
|
||||||
&& (v.Type == packageType)
|
&& (v.Type == packageType)
|
||||||
@ -173,6 +177,7 @@ namespace isnd.Services
|
|||||||
|
|
||||||
private IsndSettings isndSettings;
|
private IsndSettings isndSettings;
|
||||||
private readonly string apiBase;
|
private readonly string apiBase;
|
||||||
|
private readonly ILogger<PackageManager> logger;
|
||||||
|
|
||||||
public virtual async Task<Catalog> GetCatalogIndexAsync()
|
public virtual async Task<Catalog> GetCatalogIndexAsync()
|
||||||
{
|
{
|
||||||
@ -194,7 +199,7 @@ namespace isnd.Services
|
|||||||
i = isndSettings.CatalogPageLen;
|
i = isndSettings.CatalogPageLen;
|
||||||
foreach (var commit in scope)
|
foreach (var commit in scope)
|
||||||
{
|
{
|
||||||
var validPkgs = (await dbContext.Packages
|
var validPkgs = (await dbContext.Package
|
||||||
.Include(po => po.Owner)
|
.Include(po => po.Owner)
|
||||||
.Include(pkg => pkg.Versions)
|
.Include(pkg => pkg.Versions)
|
||||||
.Include(pkg => pkg.LatestCommit)
|
.Include(pkg => pkg.LatestCommit)
|
||||||
@ -232,7 +237,7 @@ namespace isnd.Services
|
|||||||
TimeStamp = DateTimeOffset.Now.ToUniversalTime()
|
TimeStamp = DateTimeOffset.Now.ToUniversalTime()
|
||||||
};
|
};
|
||||||
dbContext.Commits.Add(commit);
|
dbContext.Commits.Add(commit);
|
||||||
var pkg = await dbContext.PackageVersions.SingleOrDefaultAsync(
|
var pkg = await dbContext.PackageVersion.SingleOrDefaultAsync(
|
||||||
v => v.PackageId == pkgId &&
|
v => v.PackageId == pkgId &&
|
||||||
v.FullString == version &&
|
v.FullString == version &&
|
||||||
v.Type == type
|
v.Type == type
|
||||||
@ -241,7 +246,7 @@ namespace isnd.Services
|
|||||||
{
|
{
|
||||||
return new PackageDeletionReport { Deleted = false };
|
return new PackageDeletionReport { Deleted = false };
|
||||||
}
|
}
|
||||||
dbContext.PackageVersions.Remove(pkg);
|
dbContext.PackageVersion.Remove(pkg);
|
||||||
await dbContext.SaveChangesAsync();
|
await dbContext.SaveChangesAsync();
|
||||||
await UpdateCatalogForAsync(commit);
|
await UpdateCatalogForAsync(commit);
|
||||||
return new PackageDeletionReport { Deleted = true, DeletedVersion = pkg };
|
return new PackageDeletionReport { Deleted = true, DeletedVersion = pkg };
|
||||||
@ -250,7 +255,7 @@ namespace isnd.Services
|
|||||||
public async Task<PackageDetails> GetPackageDetailsAsync
|
public async Task<PackageDetails> GetPackageDetailsAsync
|
||||||
(string pkgId, string version, string type)
|
(string pkgId, string version, string type)
|
||||||
{
|
{
|
||||||
var pkg = await dbContext.PackageVersions
|
var pkg = await dbContext.PackageVersion
|
||||||
.Include(v => v.Package)
|
.Include(v => v.Package)
|
||||||
.Include(v => v.Package.Owner)
|
.Include(v => v.Package.Owner)
|
||||||
.Include(v => v.LatestCommit)
|
.Include(v => v.LatestCommit)
|
||||||
@ -263,7 +268,7 @@ namespace isnd.Services
|
|||||||
if (pkg == null) return null;
|
if (pkg == null) return null;
|
||||||
foreach (var g in pkg.DependencyGroups)
|
foreach (var g in pkg.DependencyGroups)
|
||||||
{
|
{
|
||||||
g.Dependencies = dbContext.Dependencies.Where(d => d.DependencyGroupId == g.Id).ToList();
|
g.Dependencies = dbContext.Dependency.Where(d => d.DependencyGroupId == g.Id).ToList();
|
||||||
}
|
}
|
||||||
return new PackageDetails(pkg, apiBase);
|
return new PackageDetails(pkg, apiBase);
|
||||||
}
|
}
|
||||||
@ -271,7 +276,7 @@ namespace isnd.Services
|
|||||||
public async Task<Data.Catalog.RegistrationLeaf> GetCatalogEntryAsync
|
public async Task<Data.Catalog.RegistrationLeaf> GetCatalogEntryAsync
|
||||||
(string pkgId, string semver, string pkgType = "Dependency")
|
(string pkgId, string semver, string pkgType = "Dependency")
|
||||||
{
|
{
|
||||||
var version = await dbContext.PackageVersions
|
var version = await dbContext.PackageVersion
|
||||||
.Include(v => v.Package)
|
.Include(v => v.Package)
|
||||||
.Include(v => v.Package.LatestCommit)
|
.Include(v => v.Package.LatestCommit)
|
||||||
.Include(v => v.Package.Owner)
|
.Include(v => v.Package.Owner)
|
||||||
@ -285,7 +290,7 @@ namespace isnd.Services
|
|||||||
if (version == null) return null;
|
if (version == null) return null;
|
||||||
foreach (var g in version.DependencyGroups)
|
foreach (var g in version.DependencyGroups)
|
||||||
{
|
{
|
||||||
g.Dependencies = dbContext.Dependencies.Where(d => d.DependencyGroupId == g.Id).ToList();
|
g.Dependencies = dbContext.Dependency.Where(d => d.DependencyGroupId == g.Id).ToList();
|
||||||
}
|
}
|
||||||
return version.ToPackage(apiBase);
|
return version.ToPackage(apiBase);
|
||||||
}
|
}
|
||||||
@ -293,12 +298,14 @@ namespace isnd.Services
|
|||||||
public async Task<PackageDeletionReport> UserAskForPackageDeletionAsync
|
public async Task<PackageDeletionReport> UserAskForPackageDeletionAsync
|
||||||
(string uid, string id, string lower, string type)
|
(string uid, string id, string lower, string type)
|
||||||
{
|
{
|
||||||
PackageVersion packageVersion = await dbContext.PackageVersions
|
PackageVersion packageVersion = await dbContext.PackageVersion
|
||||||
.Include(pv => pv.Package)
|
.Include(pv => pv.Package)
|
||||||
.FirstOrDefaultAsync(m => m.PackageId == id
|
.FirstOrDefaultAsync(m => m.PackageId == id
|
||||||
&& m.FullString == lower && (type == null || m.Type == type));
|
&& m.FullString == lower && (type == null || m.Type == type));
|
||||||
if (packageVersion == null) return null;
|
if (packageVersion == null) return null;
|
||||||
if (packageVersion.Package.OwnerId != uid) return null;
|
if (packageVersion.Package.OwnerId != uid) return null;
|
||||||
|
dbContext.PackageVersion.Remove(packageVersion);
|
||||||
|
await dbContext.SaveChangesAsync();
|
||||||
return new PackageDeletionReport { Deleted = true, DeletedVersion = packageVersion };
|
return new PackageDeletionReport { Deleted = true, DeletedVersion = packageVersion };
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,7 +314,7 @@ namespace isnd.Services
|
|||||||
(string pkgId, string semver, string pkgType, bool preRelease)
|
(string pkgId, string semver, string pkgType, bool preRelease)
|
||||||
{
|
{
|
||||||
// PackageDependency
|
// PackageDependency
|
||||||
return dbContext.PackageVersions
|
return dbContext.PackageVersion
|
||||||
.Include(v => v.Package)
|
.Include(v => v.Package)
|
||||||
.Include(v => v.Package.Owner)
|
.Include(v => v.Package.Owner)
|
||||||
.Include(v => v.Package.LatestCommit)
|
.Include(v => v.Package.LatestCommit)
|
||||||
@ -322,7 +329,7 @@ namespace isnd.Services
|
|||||||
}
|
}
|
||||||
public PackageVersion GetPackage(string pkgId, string semver, string pkgType)
|
public PackageVersion GetPackage(string pkgId, string semver, string pkgType)
|
||||||
{
|
{
|
||||||
return dbContext.PackageVersions
|
return dbContext.PackageVersion
|
||||||
.Include(v => v.Package)
|
.Include(v => v.Package)
|
||||||
.Include(v => v.LatestCommit)
|
.Include(v => v.LatestCommit)
|
||||||
.Include(v => v.DependencyGroups.Last().Dependencies)
|
.Include(v => v.DependencyGroups.Last().Dependencies)
|
||||||
@ -335,7 +342,7 @@ namespace isnd.Services
|
|||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(query.Query)) return null;
|
if (string.IsNullOrWhiteSpace(query.Query)) return null;
|
||||||
query.Query = query.Query.ToLower();
|
query.Query = query.Query.ToLower();
|
||||||
var scope = await dbContext.PackageVersions
|
var scope = await dbContext.PackageVersion
|
||||||
.Include(p => p.Package)
|
.Include(p => p.Package)
|
||||||
.Include(p => p.Package.Owner)
|
.Include(p => p.Package.Owner)
|
||||||
.Include(p => p.LatestCommit)
|
.Include(p => p.LatestCommit)
|
||||||
@ -345,7 +352,7 @@ namespace isnd.Services
|
|||||||
string bid = $"{apiBase}{ApiConfig.Registration}";
|
string bid = $"{apiBase}{ApiConfig.Registration}";
|
||||||
foreach (var version in scope)
|
foreach (var version in scope)
|
||||||
{
|
{
|
||||||
version.DependencyGroups = dbContext.PackageDependencyGroups.Include(d => d.Dependencies)
|
version.DependencyGroups = dbContext.PackageDependencyGroup.Include(d => d.Dependencies)
|
||||||
.Where(d => d.PackageId == version.PackageId && d.PackageVersionFullString == version.FullString)
|
.Where(d => d.PackageId == version.PackageId && d.PackageVersionFullString == version.FullString)
|
||||||
.ToList();
|
.ToList();
|
||||||
version.LatestCommit = dbContext.Commits.Single(c => c.Id == version.CommitNId);
|
version.LatestCommit = dbContext.Commits.Single(c => c.Id == version.CommitNId);
|
||||||
@ -355,6 +362,8 @@ namespace isnd.Services
|
|||||||
|
|
||||||
public async Task<PackageSearchResult> SearchPackageAsync(PackageRegistrationQuery query)
|
public async Task<PackageSearchResult> SearchPackageAsync(PackageRegistrationQuery query)
|
||||||
{
|
{
|
||||||
|
Debug.Assert(query != null);
|
||||||
|
logger.LogInformation(query.ToString());
|
||||||
string bid = $"{apiBase}{ApiConfig.Registration}";
|
string bid = $"{apiBase}{ApiConfig.Registration}";
|
||||||
if (string.IsNullOrWhiteSpace(query.Query))
|
if (string.IsNullOrWhiteSpace(query.Query))
|
||||||
{
|
{
|
||||||
@ -362,29 +371,32 @@ namespace isnd.Services
|
|||||||
return new PackageSearchResult(apiBase);
|
return new PackageSearchResult(apiBase);
|
||||||
}
|
}
|
||||||
|
|
||||||
var allPackages = dbContext.Packages
|
var allPackages = dbContext.Package
|
||||||
.Include(g => g.Versions).OrderBy(v => v.CommitNId)
|
.Include(g => g.Versions).OrderBy(v => v.CommitNId)
|
||||||
.Where(d => d.Id.StartsWith(query.Query)
|
.Where(d => d.Id.StartsWith(query.Query)
|
||||||
&& (query.Prerelease || d.Versions.Any(v => !v.IsPrerelease)))
|
&& (query.Prerelease || d.Versions.Any(v => !v.IsPrerelease)))
|
||||||
.Where(p => p.Versions.Count >= 0);
|
.Where(p => p.Versions.Count >= 0);
|
||||||
|
|
||||||
var count = await allPackages.CountAsync();
|
var count = await allPackages.CountAsync();
|
||||||
|
logger.LogInformation($" total hits : {count}");
|
||||||
|
|
||||||
var packages = await allPackages
|
var packages = await allPackages
|
||||||
.Skip(query.Skip).Take(query.Take).ToArrayAsync();
|
.Skip(query.Skip).Take(query.Take).ToArrayAsync();
|
||||||
|
|
||||||
foreach (var package in packages)
|
foreach (var package in packages)
|
||||||
foreach (var version in package.Versions)
|
foreach (var version in package.Versions)
|
||||||
{
|
{
|
||||||
version.DependencyGroups = dbContext.PackageDependencyGroups.Include(d => d.Dependencies)
|
version.DependencyGroups = dbContext.PackageDependencyGroup.Include(d => d.Dependencies)
|
||||||
.Where(d => d.PackageVersionFullString == version.FullString && d.PackageId == version.PackageId)
|
.Where(d => d.PackageVersionFullString == version.FullString && d.PackageId == version.PackageId)
|
||||||
|
|
||||||
.ToList();
|
.ToList();
|
||||||
|
logger.LogInformation($" version: {version.PackageId} {version.FullString} {version.DependencyGroups.Count}");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PackageSearchResult(packages, apiBase, count);
|
return new PackageSearchResult(packages, apiBase, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<PackageVersion> PutPackageAsync(Stream packageStream, string ownerId)
|
public async Task<PackageVersion> PutPackageAsync(string fileExtension, Stream packageStream, string ownerId)
|
||||||
{
|
{
|
||||||
PackageVersion version = null;
|
PackageVersion version = null;
|
||||||
using (packageStream)
|
using (packageStream)
|
||||||
@ -404,9 +416,9 @@ namespace isnd.Services
|
|||||||
|
|
||||||
var xMeta = XElement.Load(xmlReader, LoadOptions.None).Descendants().First();
|
var xMeta = XElement.Load(xmlReader, LoadOptions.None).Descendants().First();
|
||||||
|
|
||||||
var xMetaElts = xMeta.Descendants();
|
var xMetaElements = xMeta.Descendants();
|
||||||
|
|
||||||
string description = xMetaElts.FirstOrDefault(x => x.Name.LocalName == "description")?.Value;
|
string description = xMetaElements.FirstOrDefault(x => x.Name.LocalName == "description")?.Value;
|
||||||
|
|
||||||
var dependencies = xMeta
|
var dependencies = xMeta
|
||||||
.Descendants().FirstOrDefault(x => x.Name.LocalName == "dependencies");
|
.Descendants().FirstOrDefault(x => x.Name.LocalName == "dependencies");
|
||||||
@ -418,8 +430,10 @@ namespace isnd.Services
|
|||||||
.Select(x => NewFrameworkDependencyGroup(x)).ToArray();
|
.Select(x => NewFrameworkDependencyGroup(x)).ToArray();
|
||||||
// FIXME default package type or null
|
// FIXME default package type or null
|
||||||
var types = "Dependency";
|
var types = "Dependency";
|
||||||
pkgId = xMetaElts.FirstOrDefault(x => x.Name.LocalName == "id")?.Value;
|
pkgId = xMetaElements.FirstOrDefault(x => x.Name.LocalName == "id")?.Value;
|
||||||
string pkgVersion = xMetaElts.FirstOrDefault(x => x.Name.LocalName == "version")?.Value;
|
if (!Package.ValidateId(pkgId))
|
||||||
|
throw new InvalidDataException();
|
||||||
|
string pkgVersion = xMetaElements.FirstOrDefault(x => x.Name.LocalName == "version")?.Value;
|
||||||
|
|
||||||
if (!NuGetVersion.TryParse(pkgVersion, out nugetVersion))
|
if (!NuGetVersion.TryParse(pkgVersion, out nugetVersion))
|
||||||
throw new InvalidPackageException("metadata/version");
|
throw new InvalidPackageException("metadata/version");
|
||||||
@ -427,13 +441,13 @@ namespace isnd.Services
|
|||||||
string packageIdPath = Path.Combine(isndSettings.PackagesRootDir,
|
string packageIdPath = Path.Combine(isndSettings.PackagesRootDir,
|
||||||
pkgId);
|
pkgId);
|
||||||
pkgPath = Path.Combine(packageIdPath, nugetVersion.ToFullString());
|
pkgPath = Path.Combine(packageIdPath, nugetVersion.ToFullString());
|
||||||
string name = $"{pkgId}-{nugetVersion}." + Constants.PacketFileExtension;
|
string name = $"{pkgId}-{nugetVersion}" + fileExtension;
|
||||||
fullPath = Path.Combine(pkgPath, name);
|
fullPath = Path.Combine(pkgPath, name);
|
||||||
|
|
||||||
var authors = xMetaElts.FirstOrDefault(x => x.Name.LocalName == "authors")?.Value;
|
var authors = xMetaElements.FirstOrDefault(x => x.Name.LocalName == "authors")?.Value;
|
||||||
|
|
||||||
var packageIdPathInfo = new DirectoryInfo(packageIdPath);
|
var packageIdPathInfo = new DirectoryInfo(packageIdPath);
|
||||||
Data.Packages.Package pkg = dbContext.Packages.SingleOrDefault(p => p.Id == pkgId);
|
Data.Packages.Package pkg = dbContext.Package.SingleOrDefault(p => p.Id == pkgId);
|
||||||
Commit commit = new Commit
|
Commit commit = new Commit
|
||||||
{
|
{
|
||||||
Action = PackageAction.PublishPackage,
|
Action = PackageAction.PublishPackage,
|
||||||
@ -452,7 +466,7 @@ namespace isnd.Services
|
|||||||
OwnerId = ownerId,
|
OwnerId = ownerId,
|
||||||
Public = true,
|
Public = true,
|
||||||
};
|
};
|
||||||
dbContext.Packages.Add(pkg);
|
dbContext.Package.Add(pkg);
|
||||||
}
|
}
|
||||||
pkg.LatestCommit = commit;
|
pkg.LatestCommit = commit;
|
||||||
|
|
||||||
@ -471,16 +485,16 @@ namespace isnd.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
string fullStringVersion = nugetVersion.ToFullString();
|
string fullStringVersion = nugetVersion.ToFullString();
|
||||||
var pkgVersions = dbContext.PackageVersions.Where
|
var pkgVersions = dbContext.PackageVersion.Where
|
||||||
(v => v.PackageId == pkg.Id && v.FullString == fullStringVersion);
|
(v => v.PackageId == pkg.Id && v.FullString == fullStringVersion);
|
||||||
if (pkgVersions.Count() > 0)
|
if (pkgVersions.Count() > 0)
|
||||||
{
|
{
|
||||||
foreach (var v in pkgVersions.ToArray())
|
foreach (var v in pkgVersions.ToArray())
|
||||||
dbContext.PackageVersions.Remove(v);
|
dbContext.PackageVersion.Remove(v);
|
||||||
}
|
}
|
||||||
string versionFullString = nugetVersion.ToFullString();
|
string versionFullString = nugetVersion.ToFullString();
|
||||||
|
|
||||||
dbContext.PackageVersions.Add
|
dbContext.PackageVersion.Add
|
||||||
(version = new PackageVersion
|
(version = new PackageVersion
|
||||||
{
|
{
|
||||||
Package = pkg,
|
Package = pkg,
|
||||||
@ -498,11 +512,11 @@ namespace isnd.Services
|
|||||||
|
|
||||||
dbContext.Commits.Add(commit);
|
dbContext.Commits.Add(commit);
|
||||||
|
|
||||||
foreach (var group in dbContext.PackageDependencyGroups.Include(g => g.PackageVersion)
|
foreach (var group in dbContext.PackageDependencyGroup.Include(g => g.PackageVersion)
|
||||||
.Where(x => x.PackageId == pkgId && x.PackageVersionFullString == versionFullString)
|
.Where(x => x.PackageId == pkgId && x.PackageVersionFullString == versionFullString)
|
||||||
.ToList())
|
.ToList())
|
||||||
{
|
{
|
||||||
dbContext.PackageDependencyGroups.Remove(group);
|
dbContext.PackageDependencyGroup.Remove(group);
|
||||||
}
|
}
|
||||||
version.DependencyGroups = new List<PackageDependencyGroup>();
|
version.DependencyGroups = new List<PackageDependencyGroup>();
|
||||||
foreach (var framework in frameWorks)
|
foreach (var framework in frameWorks)
|
||||||
@ -521,7 +535,7 @@ namespace isnd.Services
|
|||||||
};
|
};
|
||||||
|
|
||||||
version.DependencyGroups.Add(group);
|
version.DependencyGroups.Add(group);
|
||||||
dbContext.PackageDependencyGroups.Add(group);
|
dbContext.PackageDependencyGroup.Add(group);
|
||||||
|
|
||||||
}
|
}
|
||||||
await dbContext.SaveChangesAsync();
|
await dbContext.SaveChangesAsync();
|
||||||
|
@ -19,6 +19,7 @@ using System;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using Microsoft.AspNetCore.HttpOverrides;
|
using Microsoft.AspNetCore.HttpOverrides;
|
||||||
using Microsoft.AspNetCore.DataProtection;
|
using Microsoft.AspNetCore.DataProtection;
|
||||||
|
using Microsoft.EntityFrameworkCore.Diagnostics;
|
||||||
|
|
||||||
namespace isnd
|
namespace isnd
|
||||||
{
|
{
|
||||||
@ -51,11 +52,14 @@ namespace isnd
|
|||||||
.Configure<AdminStartupList>(adminStartupListConf)
|
.Configure<AdminStartupList>(adminStartupListConf)
|
||||||
.Configure<MigrationsEndPointOptions>(o => o.Path = "~/migrate")
|
.Configure<MigrationsEndPointOptions>(o => o.Path = "~/migrate")
|
||||||
.AddDbContext<ApplicationDbContext>(options =>
|
.AddDbContext<ApplicationDbContext>(options =>
|
||||||
options.UseNpgsql(
|
options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"))
|
||||||
Configuration.GetConnectionString("DefaultConnection")))
|
.ConfigureWarnings(w => w.Ignore(RelationalEventId.PendingModelChangesWarning))
|
||||||
|
.EnableDetailedErrors()
|
||||||
|
)
|
||||||
.AddIdentity<ApplicationUser, IdentityRole>()
|
.AddIdentity<ApplicationUser, IdentityRole>()
|
||||||
.AddRoles<IdentityRole>()
|
.AddRoles<IdentityRole>()
|
||||||
.AddEntityFrameworkStores<ApplicationDbContext>()
|
.AddEntityFrameworkStores<ApplicationDbContext>(
|
||||||
|
)
|
||||||
.AddSignInManager()
|
.AddSignInManager()
|
||||||
.AddDefaultUI()
|
.AddDefaultUI()
|
||||||
.AddDefaultTokenProviders();
|
.AddDefaultTokenProviders();
|
||||||
@ -95,7 +99,7 @@ namespace isnd
|
|||||||
s.SerializerSettings.ReferenceResolverProvider = () => new NSJWebApiReferenceResolver();
|
s.SerializerSettings.ReferenceResolverProvider = () => new NSJWebApiReferenceResolver();
|
||||||
})
|
})
|
||||||
.AddXmlSerializerFormatters();
|
.AddXmlSerializerFormatters();
|
||||||
#if SWAGGER
|
#if SWAGGER
|
||||||
services.AddSwaggerGen(options =>
|
services.AddSwaggerGen(options =>
|
||||||
{
|
{
|
||||||
options.SwaggerDoc("v1", new OpenApiInfo
|
options.SwaggerDoc("v1", new OpenApiInfo
|
||||||
@ -118,7 +122,7 @@ namespace isnd
|
|||||||
var xmlFilename = $"{typeof(Startup).Assembly.GetName().Name}.xml";
|
var xmlFilename = $"{typeof(Startup).Assembly.GetName().Name}.xml";
|
||||||
options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename));
|
options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename));
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,10 +137,10 @@ namespace isnd
|
|||||||
{
|
{
|
||||||
app.UseDeveloperExceptionPage();
|
app.UseDeveloperExceptionPage();
|
||||||
app.UseMigrationsEndPoint();
|
app.UseMigrationsEndPoint();
|
||||||
#if SWAGGER
|
#if SWAGGER
|
||||||
app.UseSwagger();
|
app.UseSwagger();
|
||||||
app.UseSwaggerUI();
|
app.UseSwaggerUI();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -34,12 +34,9 @@ namespace isnd.ViewModels
|
|||||||
|
|
||||||
public PackageSearchResult(IEnumerable<Package> result, string apiBase, int totalHit)
|
public PackageSearchResult(IEnumerable<Package> result, string apiBase, int totalHit)
|
||||||
{
|
{
|
||||||
|
|
||||||
this.result = result;
|
this.result = result;
|
||||||
this.ApiBase = apiBase;
|
this.ApiBase = apiBase;
|
||||||
|
data = result.Select(p=> NewPackageHit(apiBase, p)).ToArray();
|
||||||
data = (totalHit>0) ? result.Select(p=> NewPackageHit(apiBase, p)).ToArray()
|
|
||||||
: new PackageHit[0];
|
|
||||||
this.totalHits = totalHit;
|
this.totalHits = totalHit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,11 +18,6 @@
|
|||||||
"SenderName": "<from-name>",
|
"SenderName": "<from-name>",
|
||||||
"SenderEmail": "<from-email>"
|
"SenderEmail": "<from-email>"
|
||||||
},
|
},
|
||||||
"Unleash":
|
|
||||||
{
|
|
||||||
"ClientApiKey": "lame-unleash-client-api-key",
|
|
||||||
"ApiUrl": "http://localhost:4242/api/"
|
|
||||||
},
|
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
"Default": "Warning"
|
"Default": "Warning"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<UserSecretsId>85fd766d-5d23-4476-aed1-463b2942e86a</UserSecretsId>
|
<UserSecretsId>85fd766d-5d23-4476-aed1-463b2942e86a</UserSecretsId>
|
||||||
<IsPackable>true</IsPackable>
|
<IsPackable>true</IsPackable>
|
||||||
<PackageLicenseExpression>WTFPL</PackageLicenseExpression>
|
<PackageLicenseExpression>WTFPL</PackageLicenseExpression>
|
||||||
@ -13,33 +13,33 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="8.0.10" />
|
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.6" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="8.0.10" />
|
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="9.0.6" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.10">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.6" />
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="9.0.0" />
|
||||||
<PrivateAssets>all</PrivateAssets>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.10" />
|
|
||||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="8.0.6" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="8.0.10" />
|
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="9.0.6" />
|
||||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.10" IncludeAssets="All" />
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4" IncludeAssets="All" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.10" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.6" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.10">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.6">
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.6">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
<Publish>true</Publish>
|
||||||
|
</PackageReference>
|
||||||
<PackageReference Include="NuGet.Packaging.Core" Version="6.9.1" />
|
<PackageReference Include="NuGet.Packaging.Core" Version="6.9.1" />
|
||||||
<PackageReference Include="MailKit" Version="4.8.0" />
|
<PackageReference Include="MailKit" Version="4.13.0" />
|
||||||
<PackageReference Include="GitVersion.MsBuild" Version="6.0.3">
|
<PackageReference Include="GitVersion.MsBuild" Version="6.3.0">
|
||||||
<PrivateAssets>All</PrivateAssets>
|
<PrivateAssets>All</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="8.0.1" />
|
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="9.0.6" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Antiforgery" Version="2.2.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Antiforgery" Version="2.3.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.10" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.6" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="../isn.abst/isn.abst.csproj" />
|
<ProjectReference Include="../isn.abst/isn.abst.csproj" />
|
||||||
|
BIN
test/data/packages/AsciiDocNet.1.0.0.nupkg
Normal file
BIN
test/data/packages/AsciiDocNet.1.0.0.nupkg
Normal file
Binary file not shown.
@ -3,4 +3,7 @@
|
|||||||
<packageSources>
|
<packageSources>
|
||||||
<add key="localhost" value="https://localhost:5001/v3/index.json" protocolVersion="3" />
|
<add key="localhost" value="https://localhost:5001/v3/index.json" protocolVersion="3" />
|
||||||
</packageSources>
|
</packageSources>
|
||||||
|
<disabledPackageSources>
|
||||||
|
<add key="localhost" value="true" />
|
||||||
|
</disabledPackageSources>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<RootNamespace>test_isn</RootNamespace>
|
<RootNamespace>test_isn</RootNamespace>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
@ -11,11 +11,4 @@
|
|||||||
<Version>1.0.7</Version>
|
<Version>1.0.7</Version>
|
||||||
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="isn.abst" Version="1.0.24" />
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -42,17 +42,6 @@ namespace isn.tests
|
|||||||
var pub = model.Resources.FirstOrDefault((r) => r.Type.StartsWith("PackagePublish/"));
|
var pub = model.Resources.FirstOrDefault((r) => r.Type.StartsWith("PackagePublish/"));
|
||||||
Assert.True(pub != null);
|
Assert.True(pub != null);
|
||||||
}
|
}
|
||||||
[Fact]
|
|
||||||
public void TestSetApiKey()
|
|
||||||
{
|
|
||||||
string source = "http://localhost:3002/v3/index.json";
|
|
||||||
|
|
||||||
var setting = Settings.Create();
|
|
||||||
setting.Sources[source] = new SourceSettings{ Url=source };
|
|
||||||
string testingKey = "CfDJ8LF3SbIJ4FJAgs7uIQKhdCAYCNVXRwU6TEoaXOo1_ZpG2u8TCGFP2z13hw9xR0LC0gdbr1QGwNndiXUl4DI74nxyBi-T1oC33PWtE-5vgiJWeCH223PYtoSEdzDiWovwJZWJbQON0WqoG8vSfbrBXTmicD6oxF4ghwXXexY0RiRR";
|
|
||||||
|
|
||||||
Assert.Equal(testingKey, setting.Sources[source].ApiKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
<NoWarn>NETSDK1138</NoWarn>
|
<NoWarn>NETSDK1138</NoWarn>
|
||||||
<AssemblyVersion>1.0.7.0</AssemblyVersion>
|
<AssemblyVersion>1.0.7.0</AssemblyVersion>
|
||||||
@ -9,11 +9,11 @@
|
|||||||
<Version>1.0.7</Version>
|
<Version>1.0.7</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||||
<PackageReference Include="xunit" Version="2.9.2" />
|
<PackageReference Include="xunit" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
|
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
|
||||||
<PackageReference Include="xunit.runner.reporters" Version="2.9.2" />
|
<PackageReference Include="xunit.runner.reporters" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.1" />
|
||||||
|
|
||||||
<PackageToolReference Include="xunit.runner.console" Version="2.5.7" PrivateAssets="All" />
|
<PackageToolReference Include="xunit.runner.console" Version="2.5.7" PrivateAssets="All" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -183,7 +183,7 @@ namespace isnd.host.tests
|
|||||||
PackageUpdateResource pushRes = await repository.GetResourceAsync<PackageUpdateResource>();
|
PackageUpdateResource pushRes = await repository.GetResourceAsync<PackageUpdateResource>();
|
||||||
SymbolPackageUpdateResourceV3 symbolPackageResource = await repository.GetResourceAsync<SymbolPackageUpdateResourceV3>();
|
SymbolPackageUpdateResourceV3 symbolPackageResource = await repository.GetResourceAsync<SymbolPackageUpdateResourceV3>();
|
||||||
|
|
||||||
await pushRes.Push(new List<string>{ "../../../../../src/isn.abst/bin/Release/isn.abst.1.0.1.nupkg" }, null,
|
await pushRes.Push(new List<string>{ "/home/paul/workspace/isn/test/data/packages/AsciiDocNet.1.0.0.nupkg" }, null,
|
||||||
5000, false, GetApiKey, GetSymbolsApiKey, false, false, symbolPackageResource, logger);
|
5000, false, GetApiKey, GetSymbolsApiKey, false, false, symbolPackageResource, logger);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,6 @@ namespace isnd.tests
|
|||||||
|
|
||||||
public IDataProtector DataProtector { get; private set; }
|
public IDataProtector DataProtector { get; private set; }
|
||||||
|
|
||||||
public ApplicationDbContext dbContext { get; private set; }
|
|
||||||
|
|
||||||
public string TestingUserName { get; private set; }
|
public string TestingUserName { get; private set; }
|
||||||
public string ProtectedTestingApiKey { get; internal set; }
|
public string ProtectedTestingApiKey { get; internal set; }
|
||||||
@ -80,15 +79,18 @@ namespace isnd.tests
|
|||||||
|
|
||||||
DataProtector = Host.Services.GetRequiredService<IDataProtectionProvider>()
|
DataProtector = Host.Services.GetRequiredService<IDataProtectionProvider>()
|
||||||
.CreateProtector(siteSettings.ProtectionTitle);
|
.CreateProtector(siteSettings.ProtectionTitle);
|
||||||
|
using IServiceScope scope = Host.Services.CreateScope();
|
||||||
|
ApplicationDbContext dbContext =
|
||||||
|
scope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
|
||||||
|
|
||||||
dbContext = Host.Services.GetRequiredService<ApplicationDbContext>();
|
|
||||||
TestingUserName = "Tester";
|
TestingUserName = "Tester";
|
||||||
TestingUser = dbContext.Users.FirstOrDefault(u => u.UserName == TestingUserName);
|
TestingUser = dbContext.Users.FirstOrDefault(u => u.UserName == TestingUserName);
|
||||||
EnsureUser(TestingUserName);
|
EnsureUser(TestingUserName);
|
||||||
var testKey = dbContext.ApiKeys.FirstOrDefault(k => k.UserId == TestingUser.Id);
|
var testKey = dbContext.ApiKey.FirstOrDefault(k => k.UserId == TestingUser.Id);
|
||||||
if (testKey == null)
|
if (testKey == null)
|
||||||
{
|
{
|
||||||
var keyProvider = Host.Services.GetService<IApiKeyProvider>();
|
var keyProvider = scope.ServiceProvider.GetService<IApiKeyProvider>();
|
||||||
var apiKeyQuery = new Data.ApiKeys.CreateModel
|
var apiKeyQuery = new Data.ApiKeys.CreateModel
|
||||||
{
|
{
|
||||||
Name = "Testing Key",
|
Name = "Testing Key",
|
||||||
@ -111,7 +113,12 @@ namespace isnd.tests
|
|||||||
{
|
{
|
||||||
if (TestingUser == null)
|
if (TestingUser == null)
|
||||||
{
|
{
|
||||||
var userManager = Host.Services.GetRequiredService<UserManager<ApplicationUser>>();
|
using IServiceScope scope = Host.Services.CreateScope();
|
||||||
|
|
||||||
|
var userManager =
|
||||||
|
scope.ServiceProvider.GetRequiredService<UserManager<ApplicationUser>>();
|
||||||
|
|
||||||
|
|
||||||
TestingUser = new ApplicationUser
|
TestingUser = new ApplicationUser
|
||||||
{
|
{
|
||||||
UserName = testingUserName
|
UserName = testingUserName
|
||||||
@ -120,6 +127,9 @@ namespace isnd.tests
|
|||||||
var result = userManager.CreateAsync(TestingUser).Result;
|
var result = userManager.CreateAsync(TestingUser).Result;
|
||||||
|
|
||||||
Assert.True(result.Succeeded);
|
Assert.True(result.Succeeded);
|
||||||
|
|
||||||
|
ApplicationDbContext dbContext =
|
||||||
|
scope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
|
||||||
TestingUser = dbContext.Users.FirstOrDefault(u => u.UserName == testingUserName);
|
TestingUser = dbContext.Users.FirstOrDefault(u => u.UserName == testingUserName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,25 +1,23 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net8.0</TargetFrameworks>
|
<TargetFrameworks>net9.0</TargetFrameworks>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
<UserSecretsId>d7144e46-4e63-4391-ba86-64b61f6e7be4</UserSecretsId>
|
<UserSecretsId>d7144e46-4e63-4391-ba86-64b61f6e7be4</UserSecretsId>
|
||||||
<NoWarn>NETSDK1138</NoWarn>
|
<NoWarn>NETSDK1138</NoWarn>
|
||||||
<AssemblyVersion>1.0.7.0</AssemblyVersion>
|
|
||||||
<FileVersion>1.0.7.0</FileVersion>
|
|
||||||
<InformationalVersion>1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327</InformationalVersion>
|
|
||||||
<Version>1.0.7</Version>
|
<Version>1.0.7</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||||
<PackageReference Include="XunitXml.TestLogger" Version="4.1.0" />
|
<PackageReference Include="XunitXml.TestLogger" Version="6.1.0" />
|
||||||
<PackageReference Include="xunit" Version="2.9.2" />
|
<PackageReference Include="xunit" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
|
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
|
||||||
<PackageReference Include="xunit.runner.reporters" Version="2.9.2" />
|
<PackageReference Include="xunit.runner.reporters" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.1" />
|
||||||
<PackageToolReference Include="xunit.runner.console" Version="2.4.2" PrivateAssets="All" />
|
<PackageToolReference Include="xunit.runner.console" Version="2.4.2" PrivateAssets="All" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\src\isnd\isnd.csproj" />
|
<ProjectReference Include="..\..\src\isnd\isnd.csproj" />
|
||||||
<ProjectReference Include="..\..\src\isn\isn.csproj" />
|
<ProjectReference Include="..\..\src\isn\isn.csproj" />
|
||||||
|
<File Include="Yavsc.Abstract.1.0.8.nupkg"></File>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
Reference in New Issue
Block a user