├── .gitattributes ├── .gitignore ├── Build ├── BuildDPM.fbp8 ├── CompileIDEResource.fbp8 ├── DPMInstaller.iss ├── DPMSignAndPackage.fbp8 └── DownloadPackages.bat ├── GettingStarted.md ├── LICENSE.txt ├── README.md ├── Source ├── Cmdline │ ├── Commands │ │ ├── DPM.Console.Command.Add.pas │ │ ├── DPM.Console.Command.Base.pas │ │ ├── DPM.Console.Command.Cache.pas │ │ ├── DPM.Console.Command.Config.pas │ │ ├── DPM.Console.Command.Delete.pas │ │ ├── DPM.Console.Command.ExitCodes.pas │ │ ├── DPM.Console.Command.Factory.pas │ │ ├── DPM.Console.Command.Feed.pas │ │ ├── DPM.Console.Command.Help.pas │ │ ├── DPM.Console.Command.Info.pas │ │ ├── DPM.Console.Command.Install.pas │ │ ├── DPM.Console.Command.List.pas │ │ ├── DPM.Console.Command.Pack.pas │ │ ├── DPM.Console.Command.Push.pas │ │ ├── DPM.Console.Command.Restore.pas │ │ ├── DPM.Console.Command.SetApiKey.pas │ │ ├── DPM.Console.Command.Sign.pas │ │ ├── DPM.Console.Command.Sources.pas │ │ ├── DPM.Console.Command.Spec.pas │ │ ├── DPM.Console.Command.Uninstall.pas │ │ ├── DPM.Console.Command.Update.pas │ │ ├── DPM.Console.Command.Verify.pas │ │ ├── DPM.Console.Command.Why.pas │ │ └── DPM.Console.Command.pas │ ├── DGet.Console.Help.pas │ ├── DPM.Console.Application.pas │ ├── DPM.Console.Banner.pas │ ├── DPM.Console.ExitCodes.pas │ ├── DPM.Console.Reg.pas │ ├── DPM.Console.Types.pas │ ├── DPM.Console.Utils.pas │ ├── Logging │ │ └── DPM.Console.Logger.pas │ ├── Options │ │ ├── DPM.Console.Options.Reg.pas │ │ └── DPM.Console.Options.pas │ ├── Project │ │ └── DPM.Project.pas │ └── Writer │ │ ├── DPM.Console.Linux.pas │ │ ├── DPM.Console.MacOS.pas │ │ ├── DPM.Console.Writer.Windows.pas │ │ └── DPM.Console.Writer.pas ├── Controls │ ├── DPM.Controls.AutoComplete.pas │ ├── DPM.Controls.ButtonBar.pas │ ├── DPM.Controls.ButtonedEdit.pas │ ├── DPM.Controls.GroupButton.pas │ ├── DPM.Controls.LogMemo.pas │ ├── DPM.Controls.VersionGrid.pas │ └── LogMemoTest │ │ ├── Project1.dpr │ │ ├── Project1.dproj │ │ ├── Unit1.dfm │ │ └── Unit1.pas ├── Core │ ├── Cache │ │ ├── DPM.Core.Cache.Interfaces.pas │ │ └── DPM.Core.Cache.pas │ ├── Compiler │ │ ├── DPM.Core.Compiler.BOM.pas │ │ ├── DPM.Core.Compiler.EnvironmentProvider.pas │ │ ├── DPM.Core.Compiler.Factory.pas │ │ ├── DPM.Core.Compiler.Interfaces.pas │ │ ├── DPM.Core.Compiler.MSBuild.pas │ │ └── DPM.Core.Compiler.ProjectSettings.pas │ ├── Configuration │ │ ├── DPM.Core.Configuration.Classes.pas │ │ ├── DPM.Core.Configuration.Interfaces.pas │ │ └── DPM.Core.Configuration.Manager.pas │ ├── DPM.Core.Constants.pas │ ├── DPM.Core.Init.pas │ ├── DPM.Core.TargetPlatform.pas │ ├── DPM.Core.Types.pas │ ├── Dependency │ │ ├── DPM.Core.Dependency.Context.pas │ │ ├── DPM.Core.Dependency.Interfaces.pas │ │ ├── DPM.Core.Dependency.Reference.pas │ │ ├── DPM.Core.Dependency.Resolution.pas │ │ ├── DPM.Core.Dependency.Resolver.pas │ │ └── DPM.Core.Dependency.Version.pas │ ├── External │ │ └── VSoft.AntPatterns.pas │ ├── Logging │ │ └── DPM.Core.Logging.pas │ ├── Manifest │ │ ├── DPM.Core.Manifest.Interfaces.pas │ │ ├── DPM.Core.Manifest.Reader.pas │ │ └── DPM.Core.Manifest.pas │ ├── Options │ │ ├── DPM.Core.Options.Base.pas │ │ ├── DPM.Core.Options.Cache.pas │ │ ├── DPM.Core.Options.Common.pas │ │ ├── DPM.Core.Options.Config.pas │ │ ├── DPM.Core.Options.Feed.pas │ │ ├── DPM.Core.Options.Info.pas │ │ ├── DPM.Core.Options.Install.pas │ │ ├── DPM.Core.Options.List.pas │ │ ├── DPM.Core.Options.Pack.pas │ │ ├── DPM.Core.Options.Push.pas │ │ ├── DPM.Core.Options.Restore.pas │ │ ├── DPM.Core.Options.Search.pas │ │ ├── DPM.Core.Options.Sources.pas │ │ ├── DPM.Core.Options.Spec.pas │ │ └── DPM.Core.Options.UnInstall.pas │ ├── Package │ │ ├── DPM.Core.Package.Classes.pas │ │ ├── DPM.Core.Package.Dependency.pas │ │ ├── DPM.Core.Package.Icon.pas │ │ ├── DPM.Core.Package.Installer.Interfaces.pas │ │ ├── DPM.Core.Package.Installer.pas │ │ ├── DPM.Core.Package.InstallerContext.pas │ │ ├── DPM.Core.Package.Interfaces.pas │ │ ├── DPM.Core.Package.ListItem.pas │ │ ├── DPM.Core.Package.PackageLatestVersionInfo.pas │ │ └── DPM.Core.Package.SearchResults.pas │ ├── Packaging │ │ ├── DPM.Core.Packaging.Archive.Reader.pas │ │ ├── DPM.Core.Packaging.Archive.Writer.pas │ │ ├── DPM.Core.Packaging.Archive.pas │ │ ├── DPM.Core.Packaging.IdValidator.pas │ │ ├── DPM.Core.Packaging.Writer.pas │ │ └── DPM.Core.Packaging.pas │ ├── Project │ │ ├── DPM.Core.Project.Configuration.pas │ │ ├── DPM.Core.Project.Editor.pas │ │ ├── DPM.Core.Project.GroupProjReader.pas │ │ └── DPM.Core.Project.Interfaces.pas │ ├── Repository │ │ ├── DPM.Core.Repository.Base.pas │ │ ├── DPM.Core.Repository.BaseGithub.pas │ │ ├── DPM.Core.Repository.DNGithub.pas │ │ ├── DPM.Core.Repository.DPMGithub.pas │ │ ├── DPM.Core.Repository.Directory.pas │ │ ├── DPM.Core.Repository.Factory.pas │ │ ├── DPM.Core.Repository.Http.pas │ │ ├── DPM.Core.Repository.Interfaces.pas │ │ ├── DPM.Core.Repository.Manager.pas │ │ └── DPM.Core.Repository.PackageInfo.pas │ ├── Sources │ │ ├── DPM.Core.Sources.Interfaces.pas │ │ ├── DPM.Core.Sources.Manager.pas │ │ ├── DPM.Core.Sources.ServiceIndex.pas │ │ └── DPM.Core.Sources.Types.pas │ ├── Spec │ │ ├── DPM.Core.Spec.BPLEntry.pas │ │ ├── DPM.Core.Spec.BuildEntry.pas │ │ ├── DPM.Core.Spec.Dependency.pas │ │ ├── DPM.Core.Spec.DependencyGroup.pas │ │ ├── DPM.Core.Spec.FileEntry.pas │ │ ├── DPM.Core.Spec.Interfaces.pas │ │ ├── DPM.Core.Spec.MetaData.pas │ │ ├── DPM.Core.Spec.Node.pas │ │ ├── DPM.Core.Spec.Reader.pas │ │ ├── DPM.Core.Spec.SearchPath.pas │ │ ├── DPM.Core.Spec.SearchPathGroup.pas │ │ ├── DPM.Core.Spec.TargetPlatform.pas │ │ ├── DPM.Core.Spec.Template.pas │ │ ├── DPM.Core.Spec.TemplateBase.pas │ │ ├── DPM.Core.Spec.Writer.pas │ │ └── DPM.Core.Spec.pas │ ├── Utils │ │ ├── DPM.Core.Utils.Config.pas │ │ ├── DPM.Core.Utils.Directory.pas │ │ ├── DPM.Core.Utils.Enum.pas │ │ ├── DPM.Core.Utils.Files.pas │ │ ├── DPM.Core.Utils.Numbers.pas │ │ ├── DPM.Core.Utils.Path.pas │ │ ├── DPM.Core.Utils.Process.pas │ │ ├── DPM.Core.Utils.Strings.pas │ │ ├── DPM.Core.Utils.System.pas │ │ └── DPM.Core.Utils.XML.pas │ ├── Xml │ │ ├── DPM.Core.MSXML.pas │ │ └── DPM.Core.XML.NodeBase.pas │ └── readme.txt ├── DPM.Core.Tests.dpr ├── DPM.Core.Tests.dproj ├── DPM.Core.Tests.prjmgc ├── DPM.IDE.D100.dpr ├── DPM.IDE.D100.dproj ├── DPM.IDE.D101.dpr ├── DPM.IDE.D101.dproj ├── DPM.IDE.D102.dpr ├── DPM.IDE.D102.dproj ├── DPM.IDE.D103.dpr ├── DPM.IDE.D103.dproj ├── DPM.IDE.D104.dpr ├── DPM.IDE.D104.dproj ├── DPM.IDE.D104.dproj_old ├── DPM.IDE.D110.dpr ├── DPM.IDE.D110.dproj ├── DPM.IDE.D110.prjmgc ├── DPM.IDE.D110.rc ├── DPM.IDE.D120.dpr ├── DPM.IDE.D120.dproj ├── DPM.IDE.D120.rc ├── DPM.IDE.Template.config ├── DPM.IDE.Template.dpr ├── DPM.IDE.Template.dproj ├── DPM.IDE.XE2.dpr ├── DPM.IDE.XE2.dproj ├── DPM.IDE.XE2Manifest.xml ├── DPM.IDE.XE3.dpr ├── DPM.IDE.XE3.dproj ├── DPM.IDE.XE4.dpr ├── DPM.IDE.XE4.dproj ├── DPM.IDE.XE5.dpr ├── DPM.IDE.XE5.dproj ├── DPM.IDE.XE6.dpr ├── DPM.IDE.XE6.dproj ├── DPM.IDE.XE7.dpr ├── DPM.IDE.XE7.dproj ├── DPM.IDE.XE8.dpr ├── DPM.IDE.XE8.dproj ├── DPMIDE.pkdef ├── DSpecCreator │ ├── Controls │ │ └── VSoft.Controls.Menus.MRU.pas │ ├── DPM.Creator.BuildForm.dfm │ ├── DPM.Creator.BuildForm.pas │ ├── DPM.Creator.DependencyForm.dfm │ ├── DPM.Creator.DependencyForm.pas │ ├── DPM.Creator.Dspec.FileHandler.pas │ ├── DPM.Creator.Dspec.Replacer.pas │ ├── DPM.Creator.FakeIDEOptions.pas │ ├── DPM.Creator.FileForm.dfm │ ├── DPM.Creator.FileForm.pas │ ├── DPM.Creator.Logger.pas │ ├── DPM.Creator.MRUService.pas │ ├── DPM.Creator.MainForm.dfm │ ├── DPM.Creator.MainForm.pas │ ├── DPM.Creator.OptionsForm.dfm │ ├── DPM.Creator.OptionsForm.pas │ ├── DPM.Creator.RuntimeForm.dfm │ ├── DPM.Creator.RuntimeForm.pas │ ├── DPM.Creator.SearchPathForm.dfm │ ├── DPM.Creator.SearchPathForm.pas │ ├── DPM.Creator.TemplateForm.dfm │ ├── DPM.Creator.TemplateForm.pas │ ├── DPM.Creator.TemplateTreeNode.pas │ ├── DspecCreator.Artwork │ │ └── Windows │ │ │ ├── AppIcon.icns │ │ │ ├── AppIcon.ico │ │ │ ├── Uwp_150.png │ │ │ └── Uwp_44.png │ ├── DspecCreator.dpr │ ├── DspecCreator.dproj │ ├── DspecCreator.dres │ ├── DspecCreator.prjmgc │ ├── DspecCreator.rc │ ├── DspecCreatorResource.rc │ ├── Images │ │ ├── package-info.png │ │ ├── package-platforms.png │ │ └── package-templates.png │ ├── LICENSE │ ├── README.md │ ├── Resources │ │ └── spdx-licenses.txt │ ├── SPDXProcessor │ │ ├── SPDXProcessor.dpr │ │ └── SPDXProcessor.dproj │ └── dspecticon.png ├── Experts │ ├── Rad Studio D10.0 Seattle │ │ ├── DPM.IDE.D10.dpr │ │ └── DPM.IDE.D10.dproj │ ├── Rad Studio D10.1 Berlin │ │ ├── DPM.IDE.D10.dpr │ │ └── DPM.IDE.D10.dproj │ ├── Rad Studio D10.2 Tokyo │ │ ├── DPM.IDE.D10.dpr │ │ └── DPM.IDE.D10.dproj │ ├── Rad Studio D10.3 Rio │ │ ├── DPM.IDE.D10.dpr │ │ └── DPM.IDE.D10.dproj │ ├── Rad Studio D10.4 Sydney │ │ ├── DPM.IDE.D10.dpr │ │ └── DPM.IDE.D10.dproj │ ├── Rad Studio D11 Alexandria │ │ ├── DPM.IDE.D11.dpr │ │ └── DPM.IDE.D11.dproj │ ├── Rad Studio XE2 │ │ ├── DPM.IDE.XE2.dpr │ │ └── DPM.IDE.XE2.dproj │ ├── Rad Studio XE3 │ │ ├── DPM.IDE.XE3.dpr │ │ └── DPM.IDE.XE3.dproj │ ├── Rad Studio XE4 │ │ ├── DPM.IDE.XE4.dpr │ │ └── DPM.IDE.XE4.dproj │ ├── Rad Studio XE5 │ │ ├── DPM.IDE.XE5.dpr │ │ └── DPM.IDE.XE5.dproj │ ├── Rad Studio XE6 │ │ ├── DPM.IDE.XE6.dpr │ │ └── DPM.IDE.XE6.dproj │ ├── Rad Studio XE7 │ │ ├── DPM.IDE.XE7.dpr │ │ └── DPM.IDE.XE7.dproj │ └── Rad Studio XE8 │ │ ├── DPM.IDE.XE8.dpr │ │ └── DPM.IDE.XE8.dproj ├── IDE │ ├── Compatibility │ │ ├── System.Actions.pas │ │ └── System.ImageList.pas │ ├── DPM.IDE.AboutForm.dfm │ ├── DPM.IDE.AboutForm.pas │ ├── DPM.IDE.AddInOptions.pas │ ├── DPM.IDE.AddInOptionsFrame.dfm │ ├── DPM.IDE.AddInOptionsFrame.pas │ ├── DPM.IDE.AddInOptionsHostForm.dfm │ ├── DPM.IDE.AddInOptionsHostForm.pas │ ├── DPM.IDE.Constants.pas │ ├── DPM.IDE.IDENotifier.pas │ ├── DPM.IDE.IconCache.pas │ ├── DPM.IDE.InstallerContext.pas │ ├── DPM.IDE.Main.pas │ ├── DPM.IDE.PathManager.pas │ ├── DPM.IDE.ProjectController.pas │ ├── DPM.IDE.ProjectMenu.pas │ ├── DPM.IDE.ProjectNotifier.pas │ ├── DPM.IDE.ProjectStorageNotifier.pas │ ├── DPM.IDE.ProjectTree.Containers.pas │ ├── DPM.IDE.ProjectTreeManager.pas │ ├── DPM.IDE.Resources.rc │ ├── DPM.IDE.Resources.res │ ├── DPM.IDE.ToolsAPI.pas │ ├── DPM.IDE.Types.pas │ ├── DPM.IDE.Utils.pas │ ├── DPM.IDE.VSTProxy.pas │ ├── DPM.IDE.Wizard.pas │ ├── DPMIDE.inc │ ├── EditorView │ │ ├── DPM.IDE.ActivityIndicator.pas │ │ ├── DPM.IDE.Details.Interfaces.pas │ │ ├── DPM.IDE.EditorView.pas │ │ ├── DPM.IDE.EditorViewFrame.dfm │ │ ├── DPM.IDE.EditorViewFrame.pas │ │ ├── DPM.IDE.EditorViewManager.pas │ │ ├── DPM.IDE.PackageDetailsFrame.dfm │ │ ├── DPM.IDE.PackageDetailsFrame.pas │ │ ├── DPM.IDE.PackageDetailsPanel.pas │ │ ├── DPM.IDE.SearchBarFrame.dfm │ │ └── DPM.IDE.SearchBarFrame.pas │ ├── Logging │ │ ├── DPM.IDE.Logger.pas │ │ ├── DPM.IDE.MessageForm.dfm │ │ ├── DPM.IDE.MessageForm.pas │ │ └── DPM.IDE.MessageService.pas │ └── Options │ │ └── DPM.IDE.Options.pas ├── SVG │ ├── GDIPKerning.pas │ ├── GDIPOBJ2.pas │ ├── GDIPPathText.pas │ ├── PasSVGFactory.pas │ ├── SVG.pas │ ├── SVGBase64.pas │ ├── SVGColor.pas │ ├── SVGCommon.pas │ ├── SVGGraphic.pas │ ├── SVGInterfaces.pas │ ├── SVGPaint.pas │ ├── SVGParse.pas │ ├── SVGPath.pas │ ├── SVGStyle.pas │ ├── SVGTypes.pas │ └── XmlLite.pas ├── Tests │ ├── DPM.Core.Tests.PackageIdentity.pas │ ├── DPM.Core.Tests.PathUtils.pas │ ├── DPM.Core.Tests.Spec.Reader.pas │ ├── DPM.Core.Tests.Types.pas │ ├── DependencyVersionTests.pas │ ├── TargetPlatformTests.pas │ └── TestLogger.pas ├── dpm-103.groupproj ├── dpm-104.groupproj ├── dpm.dpr ├── dpm.dproj ├── dpm.groupproj ├── dpm.mes ├── dpm.prjmgc ├── dpmManifest.xml ├── images │ ├── Refresh16.png │ ├── add_16px.png │ ├── add_24px.png │ ├── add_32px.png │ ├── add_48px.png │ ├── cancel_16px.png │ ├── cancel_24px.png │ ├── cancel_32px.png │ ├── cancel_48px.png │ ├── cancel_hot_16px.png │ ├── cancel_hot_24px.png │ ├── cancel_hot_32px.png │ ├── cancel_hot_48px.png │ ├── downgrade_16px.png │ ├── downgrade_24px.png │ ├── downgrade_32px.png │ ├── downgrade_48px.png │ ├── dpm-large.png │ ├── dpm-large.svg │ ├── dpm.bmp │ ├── dpm.ico │ ├── dpm.png │ ├── dpm16.bmp │ ├── dpm32light.png │ ├── dpm_16.png │ ├── dpm_24.png │ ├── dpm_32.png │ ├── dpm_48.png │ ├── freeicons.io │ │ ├── about128.png │ │ └── about16.png │ ├── info_16px.png │ ├── info_24px.png │ ├── info_32px.png │ ├── info_48px.png │ ├── move-down_16px.png │ ├── move-down_24px.png │ ├── move-down_32px.png │ ├── move-down_48px.png │ ├── move-up_16px.png │ ├── move-up_24px.png │ ├── move-up_32px.png │ ├── move-up_48px.png │ ├── open_16px.png │ ├── open_24px.png │ ├── open_32px.png │ ├── open_48px.png │ ├── platform-win32.bmp │ ├── platform-win64.bmp │ ├── platform_andriod.bmp │ ├── platform_andriod.pdn │ ├── platform_ios.bmp │ ├── platform_linux.bmp │ ├── platform_macos.bmp │ ├── refresh_16px.png │ ├── refresh_24px.png │ ├── refresh_32px.png │ ├── refresh_48px.png │ ├── remove_16px.png │ ├── remove_24px.png │ ├── remove_32px.png │ ├── remove_48px.png │ ├── search-black.16.png │ ├── search-grey-16.png │ ├── settings16.png │ ├── settings_16px.png │ ├── settings_24px.png │ ├── settings_32px.png │ ├── settings_48px.png │ ├── upgrade_16px.png │ ├── upgrade_24px.png │ ├── upgrade_32px.png │ └── upgrade_48px.png ├── mainicon.ico └── restore.bat ├── TestPackages ├── A │ ├── VSoft.A.dspec │ └── VSoft.A.pas ├── B │ ├── VSoft.B.dspec │ └── VSoft.B.pas ├── C │ ├── VSoft.C.dspec │ └── VSoft.C.pas ├── D │ ├── VSoft.D.dspec │ └── VSoft.D.pas ├── E │ ├── VSoft.E.dspec │ └── VSoft.E.pas ├── F │ ├── VSoft.F.dspec │ └── VSoft.F.pas ├── GeneratePackages.bat └── TestProject │ ├── TestProject.dpr │ ├── TestProject.dproj │ ├── Unit1.pas │ └── dpm.config_ └── ThirdParty ├── Gabr42.OmniThreadLibrary.dspec └── readme.txt /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # Explicitly declare text files you want to always be normalized and converted 5 | # to native line endings on checkout. 6 | *.pas text 7 | *.dfm text 8 | 9 | # Declare files that will always have CRLF line endings on checkout. 10 | 11 | # Denote all files that are truly binary and should not be modified. 12 | *.exe binary 13 | *.res binary -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled source # 2 | ################### 3 | *.dcu 4 | *.obj 5 | *.exe 6 | *.bpl 7 | *.bpi 8 | *.dcp 9 | *.rsm 10 | *.stat 11 | *.map 12 | 13 | # Backup files # 14 | ################### 15 | *.~* 16 | /__history 17 | 18 | # IDE Files # 19 | ################### 20 | *.dproj.local 21 | *.groupproj.local 22 | *.identcache 23 | *.dsk 24 | *.tvsconfig 25 | *.otares 26 | *.drc 27 | *.res 28 | # Output Folders # 29 | ################### 30 | /Output/** 31 | Source/Win32 32 | 33 | # mixed hg/git Folders # 34 | .hg** 35 | 36 | # External libs # 37 | Source/Libs 38 | 39 | # Local package cache # 40 | .packages 41 | *.fb8lck 42 | *.fbpbrk 43 | *.rsb 44 | *.fbpInf 45 | *.fbl8 46 | Source/DPM.IDE.D100.rc 47 | Source/DPM.IDE.D101.rc 48 | Source/DPM.IDE.D102.rc 49 | Source/DPM.IDE.D103.rc 50 | Source/DPM.IDE.D104.rc 51 | Source/DPM.IDE.XE2.rc 52 | Source/DPM.IDE.XE3.rc 53 | Source/DPM.IDE.XE4.rc 54 | Source/DPM.IDE.XE5.rc 55 | Source/DPM.IDE.XE6.rc 56 | Source/DPM.IDE.XE7.rc 57 | Source/DPM.IDE.XE8.rc 58 | Source/dpm.rc 59 | 60 | !.gitignore 61 | Source/IDE/DPM.IDE.Resources.res 62 | Source/dpm.core.tests.rc 63 | Source/dpm.used 64 | *.used 65 | *.cfg 66 | Source/IDE/EditorView/__recovery 67 | Packages 68 | Source/DSpecCreator/__recovery 69 | *.user 70 | *.dll 71 | __recovery 72 | *.jdbg 73 | -------------------------------------------------------------------------------- /Build/CompileIDEResource.fbp8: -------------------------------------------------------------------------------- 1 | project 2 | begin 3 | projectid = {35C56D29-C526-4D0E-A924-73D02F70A543} 4 | target 5 | begin 6 | name = Default 7 | targetid = {AA28D6E0-5F48-4822-B1C3-9DC2E89EBFD2} 8 | rootaction 9 | begin 10 | action.brcc32.execute 11 | begin 12 | compilerversion = 28 13 | enablembcs = false 14 | id = {DEDCDEEC-8086-4513-80DB-098EBFF56B12} 15 | rescompiler = rc 16 | scriptfile = I:\\Github\\DelphiPackageManager\\DPMMaster\\Source\\IDE\\DPM.IDE.Resources.rc 17 | verboseoutput = true 18 | end 19 | end 20 | end 21 | end -------------------------------------------------------------------------------- /Build/DownloadPackages.bat: -------------------------------------------------------------------------------- 1 | IF "%~1" == "" GOTO need_param 2 | goto do_download 3 | 4 | :need_param 5 | echo "usage: DownloadPackages c:\dpmfeed" 6 | exit /b 7 | 8 | :do_download 9 | 10 | curl -L "https://github.com/VSoftTechnologies/Spring4DMirror/releases/download/v2.0.0-dev5/Spring4D.Base-10.4-Win32-2.0.0-dev5.dpkg" --output %1%\Spring4D.Base-10.4-Win32-2.0.0-dev5.dpkg 11 | curl -L "https://github.com/VSoftTechnologies/Spring4DMirror/releases/download/v2.0.0-dev5/Spring4D.Core-10.4-Win32-2.0.0-dev5.dpkg" --output %1%\Spring4D.Core-10.4-Win32-2.0.0-dev5.dpkg 12 | curl -L "https://github.com/VSoftTechnologies/Spring4DMirror/releases/download/v2.0.0-dev5/Spring4D.Extensions-10.4-Win32-2.0.0-dev5.dpkg" --output %1%\Spring4D.Extensions-10.4-Win32-2.0.0-dev5.dpkg 13 | 14 | curl -L "https://github.com/VSoftTechnologies/VSoft.AntPatterns/releases/download/v0.1.0/VSoft.AntPatterns-10.4-Win32-0.1.0.dpkg" --output %1%\VSoft.AntPatterns-10.4-Win32-0.1.0.dpkg 15 | 16 | curl -L "https://github.com/VSoftTechnologies/JsonDataObjects/releases/download/v0.1.0/VSoft.JsonDataObjects-10.4-Win32-0.1.0.dpkg" --output %1%\VSoft.JsonDataObjects-10.4-Win32-0.1.0.dpkg 17 | 18 | curl -L "https://github.com/VSoftTechnologies/VSoft.Uri/releases/download/v0.1.0/VSoft.Uri-10.4-Win32-0.1.0.dpkg" --output %1%\VSoft.Uri-10.4-Win32-0.1.0.dpkg 19 | 20 | curl -L "https://github.com/VSoftTechnologies/VSoft.SemanticVersion/releases/download/v0.2.0/VSoft.SemanticVersion-10.4-Win32-0.2.0.dpkg" --output %1%\VSoft.SemanticVersion-10.4-Win32-0.2.0.dpkg 21 | 22 | curl -L "https://github.com/VSoftTechnologies/VSoft.HttpClient/releases/download/v0.1.0/VSoft.HttpClient-10.4-Win32-0.1.0.dpkg" --output %1%\VSoft.HttpClient-10.4-Win32-0.1.0.dpkg 23 | 24 | curl -L "https://github.com/VSoftTechnologies/VSoft.CommandLineParser/releases/download/v0.1.0/VSoft.CommandLine-10.4-Win32-0.1.0.dpkg" --output %1%\VSoft.CommandLine-10.4-Win32-0.1.0.dpkg 25 | 26 | curl -L "https://github.com/VSoftTechnologies/VSoft.VirtualListView/releases/download/v0.3.0-rc6/VSoft.VirtualListView-10.4-Win32-0.3.0-rc6.dpkg" --output %1%\VSoft.VirtualListView-10.4-Win32-0.3.0-rc6.dpkg 27 | 28 | curl -L "https://github.com/VSoftTechnologies/VSoft.CancellationToken/releases/download/v0.0.2/VSoft.CancellationToken-10.4-Win32-0.0.2.dpkg" --output %1%\VSoft.CancellationToken-10.4-Win32-0.0.2.dpkg 29 | 30 | curl -L "https://github.com/VSoftTechnologies/VSoft.Awaitable/releases/download/v0.2.0/VSoft.Awaitable-10.4-Win32-0.2.0.dpkg" -output %1%\VSoft.Awaitable-10.4-Win32-0.2.0.dpkg 31 | 32 | curl -L "https://github.com/VSoftTechnologies/DUnitX/releases/download/v0.1.3/VSoft.DUnitX-10.4-Win32-0.1.3.dpkg" --output %1%\VSoft.DUnitX-10.4-Win32-0.1.3.dpkg 33 | 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DPM - A package manager for Delphi 2 | 3 | ## Introducing DPM 4 | 5 | DPM is an open-source package/library manager for Delphi XE2 or later. It is heavily influenced by NuGet, so the cli, docs etc will seem very familiar to NuGet users. Delphi's development environment is quite different from .net, and has different challenges to overcome, so whilst we were influenced by NuGet, DPM is not identical to NuGet. We also took a close look at many other package managers for other development eco-systems. 6 | 7 | ## What is a Package Manager 8 | 9 | A package manager provides a standard for developers to share and consume code. Authors create packages that other developers can consume. The package manager provides a simple way to automate the installation, upgrading or removal of packages. This streamlines the development process, allowing developers to get up and running on a project quickly, without needing to understand the (usually ad-hoc) way the project or organization has structured their third party libraries. This also translates into simpler build/CI processes, with less 'compiles on my machine' style issues. 10 | 11 | ## Who and Why 12 | 13 | DPM's initial developer is Vincent Parrett (DUnitX, FinalBuilder, Continua CI). Why is discussed in [this blog post](https://www.finalbuilder.com/resources/blogs/delphi-package-manager-rfc). 14 | 15 | ## DPM Status 16 | 17 | DPM is still in development, so not all functionality is ready yet. At this time, it's at the stage where we are encouraging library authors to take a look and play with it and provide feedback (and perhaps get involved in the development). It's very much at a minimum viable product stage. 18 | 19 | ### What works 20 | 21 | - Creating packages 22 | - Installing packages, including dependencies 23 | - Restoring packages, including dependencies. 24 | - Pushing packages to a package source. 25 | 26 | ## How do I use it 27 | 28 | See [getting started](https://docs.delphi.dev/getting-started/installing.html). 29 | 30 | The command line documentation can be found [here](https://docs.delphi.dev/commands/commands.html). 31 | 32 | ## Is DPM integrated into the Delphi IDE 33 | 34 | Yes, the installer available under the releases section includes IDE plugins for XE2-11.3 35 | 36 | ## Is there a central package source 37 | 38 | Yes, you can [find it here](https://delphi.dev) - although publishing packages is currently limited while we flesh out the user interface (update coming soon). 39 | 40 | ## Is my old version of Delphi supported 41 | 42 | Delphi XE2-12.x are currently supported. 43 | 44 | All target [platforms](https://docs.delphi.dev/platforms.html) for supported compiler versions are supported. 45 | 46 | ## What about C++ Builder or FPC 47 | 48 | Whilst we would like to support C++Builder, we would need some help - we're delphi people. 49 | [see here](https://docs.delphi.dev/compiler-versions.html) 50 | 51 | ## Does it support design-time components 52 | 53 | Not yet, but that is being worked on. 54 | 55 | ## How does it work 56 | 57 | See [this page](https://docs.delphi.dev/concepts/how-it-works.html) 58 | 59 | ## Can I help 60 | 61 | Yep, see [Contributing to DPM](https://docs.delphi.dev/contributing.html). 62 | -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Add.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Add.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Base.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Base.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Cache.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Cache.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Config.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Config.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Delete.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Delete.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.ExitCodes.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.ExitCodes.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Factory.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Factory.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Feed.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Feed.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Help.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Help.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Info.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Info.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Install.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Install.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.List.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.List.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Pack.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Pack.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Push.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Push.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Restore.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Restore.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.SetApiKey.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.SetApiKey.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Sign.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Sign.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Sources.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Sources.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Spec.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Spec.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Uninstall.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Uninstall.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Update.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Update.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Verify.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Verify.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.Why.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.Why.pas -------------------------------------------------------------------------------- /Source/Cmdline/Commands/DPM.Console.Command.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Commands/DPM.Console.Command.pas -------------------------------------------------------------------------------- /Source/Cmdline/DGet.Console.Help.pas: -------------------------------------------------------------------------------- 1 | unit DGet.Console.Help; 2 | 3 | interface 4 | 5 | uses 6 | DGet.Console.Types, 7 | DGet.Console; 8 | 9 | 10 | procedure ShowCommandHelp(console : IConsole; const command : TDelphiGetCommand); 11 | 12 | implementation 13 | 14 | uses 15 | VSoft.CommandLine.Options; 16 | 17 | 18 | procedure ShowCommandHelp(console : IConsole; const command : TDelphiGetCommand); 19 | //var 20 | // cmd : ICommandDefinition; 21 | begin 22 | case command of 23 | TDelphiGetCommand.Help : 24 | begin 25 | 26 | 27 | 28 | end; 29 | else 30 | 31 | 32 | TOptionsRegistry.PrintUsage(CommandString[command], 33 | procedure (const value : string) 34 | begin 35 | console.WriteLine(value); 36 | end); 37 | 38 | end; 39 | 40 | 41 | end; 42 | 43 | end. 44 | -------------------------------------------------------------------------------- /Source/Cmdline/DPM.Console.Application.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/DPM.Console.Application.pas -------------------------------------------------------------------------------- /Source/Cmdline/DPM.Console.Banner.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/DPM.Console.Banner.pas -------------------------------------------------------------------------------- /Source/Cmdline/DPM.Console.ExitCodes.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/DPM.Console.ExitCodes.pas -------------------------------------------------------------------------------- /Source/Cmdline/DPM.Console.Reg.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/DPM.Console.Reg.pas -------------------------------------------------------------------------------- /Source/Cmdline/DPM.Console.Types.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/DPM.Console.Types.pas -------------------------------------------------------------------------------- /Source/Cmdline/DPM.Console.Utils.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/DPM.Console.Utils.pas -------------------------------------------------------------------------------- /Source/Cmdline/Logging/DPM.Console.Logger.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Logging/DPM.Console.Logger.pas -------------------------------------------------------------------------------- /Source/Cmdline/Options/DPM.Console.Options.Reg.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Options/DPM.Console.Options.Reg.pas -------------------------------------------------------------------------------- /Source/Cmdline/Options/DPM.Console.Options.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Options/DPM.Console.Options.pas -------------------------------------------------------------------------------- /Source/Cmdline/Project/DPM.Project.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Project; 2 | 3 | interface 4 | 5 | implementation 6 | 7 | end. 8 | -------------------------------------------------------------------------------- /Source/Cmdline/Writer/DPM.Console.Linux.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Writer/DPM.Console.Linux.pas -------------------------------------------------------------------------------- /Source/Cmdline/Writer/DPM.Console.MacOS.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Writer/DPM.Console.MacOS.pas -------------------------------------------------------------------------------- /Source/Cmdline/Writer/DPM.Console.Writer.Windows.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Writer/DPM.Console.Writer.Windows.pas -------------------------------------------------------------------------------- /Source/Cmdline/Writer/DPM.Console.Writer.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Cmdline/Writer/DPM.Console.Writer.pas -------------------------------------------------------------------------------- /Source/Controls/DPM.Controls.ButtonBar.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Controls/DPM.Controls.ButtonBar.pas -------------------------------------------------------------------------------- /Source/Controls/DPM.Controls.LogMemo.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Controls/DPM.Controls.LogMemo.pas -------------------------------------------------------------------------------- /Source/Controls/DPM.Controls.VersionGrid.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Controls/DPM.Controls.VersionGrid.pas -------------------------------------------------------------------------------- /Source/Controls/LogMemoTest/Project1.dpr: -------------------------------------------------------------------------------- 1 | program Project1; 2 | 3 | uses 4 | Vcl.Forms, 5 | Unit1 in 'Unit1.pas' {Form1}, 6 | DPM.Controls.LogMemo in '..\DPM.Controls.LogMemo.pas', 7 | DPM.Core.Utils.Strings in '..\..\Core\Utils\DPM.Core.Utils.Strings.pas', 8 | Vcl.Themes, 9 | Vcl.Styles; 10 | 11 | {$R *.res} 12 | 13 | begin 14 | Application.Initialize; 15 | Application.MainFormOnTaskbar := True; 16 | TStyleManager.TrySetStyle('Glossy'); 17 | Application.CreateForm(TForm1, Form1); 18 | Application.Run; 19 | end. 20 | -------------------------------------------------------------------------------- /Source/Controls/LogMemoTest/Unit1.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 0 3 | Top = 0 4 | Caption = 'Form1' 5 | ClientHeight = 442 6 | ClientWidth = 628 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -12 11 | Font.Name = 'Segoe UI' 12 | Font.Style = [] 13 | OnCreate = FormCreate 14 | TextHeight = 15 15 | object Memo1: TMemo 16 | Left = 296 17 | Top = 248 18 | Width = 185 19 | Height = 89 20 | Lines.Strings = ( 21 | 'Memo1') 22 | TabOrder = 0 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /Source/Controls/LogMemoTest/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, DPM.Controls.LogMemo, Vcl.StdCtrls; 8 | 9 | type 10 | TForm1 = class(TForm) 11 | Memo1: TMemo; 12 | procedure FormCreate(Sender: TObject); 13 | private 14 | { Private declarations } 15 | FLogMemo : TLogMemo; 16 | public 17 | { Public declarations } 18 | end; 19 | 20 | var 21 | Form1: TForm1; 22 | 23 | implementation 24 | 25 | {$R *.dfm} 26 | 27 | procedure TForm1.FormCreate(Sender: TObject); 28 | var 29 | i: Integer; 30 | begin 31 | FLogMemo := TLogMemo.Create(Self); 32 | FLogMemo.Top := 10; 33 | FLogMemo.Left := 10; 34 | FLogMemo.Width := Self.ClientWidth - 20; 35 | FLogMemo.Height := Self.ClientHeight - 20; 36 | FLogMemo.Anchors := [TAnchorKind.akLeft,TAnchorKind.akTop, TAnchorKind.akRight, TAnchorKind.akBottom]; 37 | FLogMemo.Parent := Self; 38 | for i := 0 to 50 do 39 | FLogMemo.AddRow( IntToStr(i) + ' This is a test xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx dxxxxxxxxxxxxxxxxxxxxxx', TLogMessageType.mtInformation); 40 | end; 41 | 42 | end. 43 | -------------------------------------------------------------------------------- /Source/Core/Cache/DPM.Core.Cache.Interfaces.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Cache/DPM.Core.Cache.Interfaces.pas -------------------------------------------------------------------------------- /Source/Core/Cache/DPM.Core.Cache.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Cache/DPM.Core.Cache.pas -------------------------------------------------------------------------------- /Source/Core/Compiler/DPM.Core.Compiler.BOM.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Compiler/DPM.Core.Compiler.BOM.pas -------------------------------------------------------------------------------- /Source/Core/Compiler/DPM.Core.Compiler.EnvironmentProvider.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Compiler/DPM.Core.Compiler.EnvironmentProvider.pas -------------------------------------------------------------------------------- /Source/Core/Compiler/DPM.Core.Compiler.Factory.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Compiler/DPM.Core.Compiler.Factory.pas -------------------------------------------------------------------------------- /Source/Core/Compiler/DPM.Core.Compiler.Interfaces.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Compiler/DPM.Core.Compiler.Interfaces.pas -------------------------------------------------------------------------------- /Source/Core/Compiler/DPM.Core.Compiler.MSBuild.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Compiler/DPM.Core.Compiler.MSBuild.pas -------------------------------------------------------------------------------- /Source/Core/Configuration/DPM.Core.Configuration.Classes.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Configuration/DPM.Core.Configuration.Classes.pas -------------------------------------------------------------------------------- /Source/Core/Configuration/DPM.Core.Configuration.Interfaces.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Configuration/DPM.Core.Configuration.Interfaces.pas -------------------------------------------------------------------------------- /Source/Core/Configuration/DPM.Core.Configuration.Manager.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Configuration/DPM.Core.Configuration.Manager.pas -------------------------------------------------------------------------------- /Source/Core/DPM.Core.Constants.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/DPM.Core.Constants.pas -------------------------------------------------------------------------------- /Source/Core/DPM.Core.Init.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/DPM.Core.Init.pas -------------------------------------------------------------------------------- /Source/Core/DPM.Core.TargetPlatform.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/DPM.Core.TargetPlatform.pas -------------------------------------------------------------------------------- /Source/Core/Dependency/DPM.Core.Dependency.Context.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Dependency/DPM.Core.Dependency.Context.pas -------------------------------------------------------------------------------- /Source/Core/Dependency/DPM.Core.Dependency.Interfaces.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Dependency/DPM.Core.Dependency.Interfaces.pas -------------------------------------------------------------------------------- /Source/Core/Dependency/DPM.Core.Dependency.Reference.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Dependency/DPM.Core.Dependency.Reference.pas -------------------------------------------------------------------------------- /Source/Core/Dependency/DPM.Core.Dependency.Resolution.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Dependency/DPM.Core.Dependency.Resolution.pas -------------------------------------------------------------------------------- /Source/Core/Dependency/DPM.Core.Dependency.Version.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Dependency/DPM.Core.Dependency.Version.pas -------------------------------------------------------------------------------- /Source/Core/Logging/DPM.Core.Logging.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Logging/DPM.Core.Logging.pas -------------------------------------------------------------------------------- /Source/Core/Manifest/DPM.Core.Manifest.Interfaces.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Manifest.Interfaces; 2 | 3 | interface 4 | 5 | uses 6 | System.Classes, 7 | JsonDataObjects, 8 | DPM.Core.Types, 9 | DPM.Core.Spec.Interfaces; 10 | 11 | type 12 | // The package manifest is a processed spec with a single targetPlatform. 13 | IPackageManifest = interface 14 | ['{F3B0C13F-20A8-4DA6-9056-CF17021C12FC}'] 15 | 16 | function GetMetaData : ISpecMetaData; 17 | function GetTargetPlatform : ISpecTargetPlatform; 18 | function GetIsValid : boolean; 19 | function GetFileName : string; 20 | function LoadFromJson(const jsonObject : TJsonObject) : boolean; 21 | 22 | property MetaData : ISpecMetaData read GetMetaData; 23 | property TargetPlatform : ISpecTargetPlatform read GetTargetPlatform; 24 | property IsValid : boolean read GetIsValid; 25 | property FileName : string read GetFileName; 26 | end; 27 | 28 | IPackageManifestReader = interface 29 | ['{98B91CEB-ACF3-433C-8E5D-087AFD0A1EA8}'] 30 | function ReadManifest(const fileName : string) : IPackageManifest; 31 | function ReadManifestString(const manifestString : string) : IPackageManifest; 32 | end; 33 | 34 | implementation 35 | 36 | end. 37 | -------------------------------------------------------------------------------- /Source/Core/Manifest/DPM.Core.Manifest.Reader.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Manifest.Reader; 2 | 3 | interface 4 | 5 | uses 6 | JsonDataObjects, 7 | DPM.Core.Logging, 8 | DPM.Core.Manifest.Interfaces; 9 | 10 | type 11 | TPackageManifestReader = class(TInterfacedObject, IPackageManifestReader) 12 | private 13 | FLogger : ILogger; 14 | protected 15 | function InternalReadPackageSpecJson(const fileName : string; const jsonObject : TJsonObject) : IPackageManifest; 16 | function ReadManifest(const fileName : string) : IPackageManifest; 17 | function ReadManifestString(const manifestString : string) : IPackageManifest; 18 | 19 | public 20 | constructor Create(const logger : ILogger); 21 | end; 22 | 23 | implementation 24 | 25 | uses 26 | System.SysUtils, 27 | DPM.Core.Manifest; 28 | 29 | { TPackageManifestReader } 30 | 31 | constructor TPackageManifestReader.Create(const logger: ILogger); 32 | begin 33 | FLogger := logger; 34 | end; 35 | 36 | function TPackageManifestReader.InternalReadPackageSpecJson(const fileName: string; const jsonObject: TJsonObject): IPackageManifest; 37 | begin 38 | result := nil; 39 | if not jsonObject.Contains('metadata') then 40 | begin 41 | FLogger.Error('json document does not have a metadata object, this is probably not a dspec file'); 42 | exit; 43 | end; 44 | result := TPackageManifest.Create(FLogger, fileName); 45 | result.LoadFromJson(jsonObject); 46 | end; 47 | 48 | function TPackageManifestReader.ReadManifest(const fileName: string): IPackageManifest; 49 | var 50 | jsonObj : TJsonObject; 51 | begin 52 | result := nil; 53 | if not FileExists(fileName) then 54 | begin 55 | FLogger.Error('Pacakge manifest file : [' + filename + '] does not exist'); 56 | exit; 57 | end; 58 | try 59 | jsonObj := TJsonObject.ParseFromFile(fileName) as TJsonObject; 60 | try 61 | Result := InternalReadPackageSpecJson(fileName, jsonObj); 62 | finally 63 | jsonObj.Free; 64 | end; 65 | except 66 | on e : Exception do 67 | begin 68 | result := nil; 69 | FLogger.Error('Error parsing package manifest json : ' + e.Message); 70 | exit; 71 | end; 72 | end; 73 | 74 | end; 75 | 76 | function TPackageManifestReader.ReadManifestString(const manifestString: string): IPackageManifest; 77 | var 78 | jsonObj : TJsonObject; 79 | begin 80 | result := nil; 81 | if manifestString = '' then 82 | begin 83 | FLogger.Error('Manifest string is empty!'); 84 | exit; 85 | end; 86 | 87 | try 88 | jsonObj := TJsonObject.Parse(manifestString) as TJsonObject; 89 | try 90 | Result := InternalReadPackageSpecJson('', jsonObj); 91 | finally 92 | jsonObj.Free; 93 | end; 94 | except 95 | on e : Exception do 96 | begin 97 | FLogger.Error('Error parsing package manifest json : ' + e.Message); 98 | exit; 99 | end; 100 | end; 101 | 102 | end; 103 | 104 | end. 105 | -------------------------------------------------------------------------------- /Source/Core/Manifest/DPM.Core.Manifest.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Manifest; 2 | 3 | interface 4 | 5 | uses 6 | JsonDataObjects, 7 | DPM.Core.Logging, 8 | DPM.Core.Spec.Interfaces, 9 | DPM.Core.Manifest.Interfaces; 10 | 11 | type 12 | TPackageManifest = class(TInterfacedObject, IPackageManifest) 13 | private 14 | FLogger : ILogger; 15 | FMetaData : ISpecMetaData; 16 | FTargetPlatform : ISpecTargetPlatform; 17 | FIsValid : boolean; 18 | FFileName : string; 19 | protected 20 | function GetMetaData : ISpecMetaData; 21 | function GetTargetPlatform : ISpecTargetPlatform; 22 | function GetIsValid : boolean; 23 | function GetFileName : string; 24 | function LoadTargetPlatformFromJson(const targetPlatformsArray : TJsonArray) : boolean; 25 | function LoadFromJson(const jsonObject : TJsonObject) : boolean; 26 | public 27 | constructor Create(const logger : ILogger; const fileName : string); 28 | destructor Destroy;override; 29 | end; 30 | 31 | implementation 32 | 33 | uses 34 | DPM.Core.Spec.MetaData, 35 | DPM.Core.Spec.TargetPlatform; 36 | 37 | { TPackageManifest } 38 | 39 | constructor TPackageManifest.Create(const logger: ILogger; const fileName: string); 40 | begin 41 | inherited Create; 42 | FLogger := logger; 43 | FFileName := fileName; 44 | //FLogger.Debug('Creating manifest for : ' + FFileName); 45 | FMetaData := TSpecMetaData.Create(logger) as ISpecMetaData; 46 | 47 | end; 48 | 49 | destructor TPackageManifest.Destroy; 50 | begin 51 | FTargetPlatform := nil; 52 | //FLogger.Debug('destroying manifest for : ' + FFileName); 53 | FMetaData := nil; 54 | FLogger := nil; 55 | inherited; 56 | end; 57 | 58 | function TPackageManifest.GetFileName: string; 59 | begin 60 | result := FFileName; 61 | end; 62 | 63 | function TPackageManifest.GetIsValid: boolean; 64 | begin 65 | result := FIsValid; 66 | end; 67 | 68 | function TPackageManifest.GetMetaData: ISpecMetaData; 69 | begin 70 | result := FMetaData; 71 | end; 72 | 73 | function TPackageManifest.GetTargetPlatform: ISpecTargetPlatform; 74 | begin 75 | result := FTargetPlatform; 76 | end; 77 | 78 | function TPackageManifest.LoadFromJson(const jsonObject: TJsonObject): boolean; 79 | var 80 | metaDataObj : TJsonObject; 81 | targetPlatformsArray : TJsonArray; 82 | begin 83 | FIsValid := false; 84 | //Logger.Debug('Reading spec metadata'); 85 | if not jsonObject.Contains('metadata') then 86 | begin 87 | FLogger.Error('Required element [metadata] not found!'); 88 | result := false; 89 | end 90 | else 91 | begin 92 | metaDataObj := jsonObject.O['metadata']; 93 | result := FMetaData.LoadFromJson(metaDataObj) 94 | end; 95 | 96 | if not jsonObject.Contains('targetPlatforms') then 97 | begin 98 | FLogger.Error('Required element [targetPlatforms] not found!'); 99 | result := false; 100 | end 101 | else 102 | begin 103 | //Logger.Debug('Reading spec targetPlatforms'); 104 | targetPlatformsArray := jsonObject.A['targetPlatforms']; 105 | result := LoadTargetPlatformFromJson(targetPlatformsArray) and result; 106 | end; 107 | 108 | FIsValid := result; 109 | end; 110 | 111 | 112 | function TPackageManifest.LoadTargetPlatformFromJson(const targetPlatformsArray: TJsonArray): boolean; 113 | begin 114 | if targetPlatformsArray.Count = 0 then 115 | begin 116 | FLogger.Error('No targetPlatforms found, at 1 is required'); 117 | exit(false); 118 | end; 119 | if targetPlatformsArray.Count > 1 then 120 | begin 121 | FLogger.Error('More than one targetPlatform found, only 1 is allowed in a package manifest'); 122 | exit(false); 123 | end; 124 | 125 | FTargetPlatform := TSpecTargetPlatform.Create(FLogger); 126 | result := FTargetPlatform.LoadFromJson(targetPlatformsArray.O[0]); 127 | 128 | end; 129 | 130 | end. 131 | -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Base.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Base.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Cache.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Cache.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Common.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Common.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Config.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Config.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Feed.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Feed.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Info.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Options.Info; 2 | 3 | interface 4 | 5 | uses 6 | DPM.Core.Options.Base; 7 | 8 | type 9 | TInfoOptions = class(TOptionsBase) 10 | private 11 | class var 12 | FDefault : TInfoOptions; 13 | public 14 | class constructor CreateDefault; 15 | class property Default : TInfoOptions read FDefault; 16 | 17 | end; 18 | 19 | implementation 20 | 21 | { TInfoOptions } 22 | 23 | class constructor TInfoOptions.CreateDefault; 24 | begin 25 | FDefault := TInfoOptions.Create; 26 | end; 27 | 28 | end. 29 | -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Install.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Install.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.List.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.List.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Pack.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Pack.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Push.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Push.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Restore.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Restore.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Search.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Search.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Sources.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Sources.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.Spec.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.Spec.pas -------------------------------------------------------------------------------- /Source/Core/Options/DPM.Core.Options.UnInstall.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Options/DPM.Core.Options.UnInstall.pas -------------------------------------------------------------------------------- /Source/Core/Package/DPM.Core.Package.Classes.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Package/DPM.Core.Package.Classes.pas -------------------------------------------------------------------------------- /Source/Core/Package/DPM.Core.Package.Dependency.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Package/DPM.Core.Package.Dependency.pas -------------------------------------------------------------------------------- /Source/Core/Package/DPM.Core.Package.Icon.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Package.Icon; 2 | 3 | interface 4 | 5 | uses 6 | System.Classes, 7 | DPM.Core.Package.Interfaces; 8 | 9 | 10 | function CreatePackageIcon(const iconKind : TPackageIconKind; const stream : TStream) : IPackageIcon; 11 | 12 | implementation 13 | 14 | type 15 | TPackageIcon = class(TInterfacedObject, IPackageIcon) 16 | private 17 | FKind : TPackageIconKind; 18 | FStream : TStream; 19 | protected 20 | function GetKind : TPackageIconKind; 21 | function GetStream : TStream; 22 | procedure SetStream(const value : TStream); 23 | public 24 | constructor Create(const iconKind : TPackageIconKind; const stream : TStream); 25 | destructor Destroy; override; 26 | end; 27 | 28 | 29 | function CreatePackageIcon(const iconKind : TPackageIconKind; const stream : TStream) : IPackageIcon; 30 | begin 31 | result := TPackageIcon.Create(iconKind, stream); 32 | end; 33 | 34 | 35 | 36 | { TPackageIcon } 37 | 38 | constructor TPackageIcon.Create(const iconKind : TPackageIconKind; const stream : TStream); 39 | begin 40 | FKind := iconKind; 41 | FStream := stream; 42 | FStream.Position := 0; 43 | end; 44 | 45 | destructor TPackageIcon.Destroy; 46 | begin 47 | if FStream <> nil then 48 | FStream.Free; 49 | inherited; 50 | end; 51 | 52 | function TPackageIcon.GetKind : TPackageIconKind; 53 | begin 54 | result := FKind; 55 | end; 56 | 57 | function TPackageIcon.GetStream : TStream; 58 | begin 59 | result := FStream; 60 | end; 61 | 62 | procedure TPackageIcon.SetStream(const value : TStream); 63 | begin 64 | FStream := value; 65 | end; 66 | 67 | end. 68 | 69 | -------------------------------------------------------------------------------- /Source/Core/Package/DPM.Core.Package.Installer.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Package/DPM.Core.Package.Installer.pas -------------------------------------------------------------------------------- /Source/Core/Package/DPM.Core.Package.Interfaces.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Package/DPM.Core.Package.Interfaces.pas -------------------------------------------------------------------------------- /Source/Core/Package/DPM.Core.Package.PackageLatestVersionInfo.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Package.PackageLatestVersionInfo; 2 | 3 | interface 4 | 5 | uses 6 | DPM.Core.Types, 7 | DPM.Core.Package.Interfaces; 8 | 9 | type 10 | TDPMPackageLatestVersionInfo = class(TInterfacedObject, IPackageLatestVersionInfo) 11 | private 12 | FId : string; 13 | FLatestStableVersion: TPackageVersion; 14 | FLatestVersion: TPackageVersion; 15 | protected 16 | function GetId: string; 17 | function GetLatestStableVersion: TPackageVersion; 18 | function GetLatestVersion: TPackageVersion; 19 | procedure SetLatestStableVersion(const value : TPackageVersion); 20 | procedure SetLatestVersion(const value : TPackageVersion); 21 | 22 | public 23 | constructor Create(const id : string; const latestStableVer : TPackageVersion; const latestVersion : TPackageVersion); 24 | end; 25 | 26 | 27 | implementation 28 | 29 | { TDPMPackageLatestVersionInfo } 30 | 31 | constructor TDPMPackageLatestVersionInfo.Create(const id: string; const latestStableVer, latestVersion: TPackageVersion); 32 | begin 33 | FId := id; 34 | FLatestStableVersion := latestStableVer; 35 | FLatestVersion := latestVersion; 36 | end; 37 | 38 | function TDPMPackageLatestVersionInfo.GetId: string; 39 | begin 40 | result := FId; 41 | end; 42 | 43 | function TDPMPackageLatestVersionInfo.GetLatestStableVersion: TPackageVersion; 44 | begin 45 | result := FLatestStableVersion; 46 | end; 47 | 48 | function TDPMPackageLatestVersionInfo.GetLatestVersion: TPackageVersion; 49 | begin 50 | result := FLatestVersion; 51 | end; 52 | 53 | procedure TDPMPackageLatestVersionInfo.SetLatestStableVersion(const value: TPackageVersion); 54 | begin 55 | FLatestStableVersion := value; 56 | end; 57 | 58 | procedure TDPMPackageLatestVersionInfo.SetLatestVersion(const value: TPackageVersion); 59 | begin 60 | FLatestVersion := value; 61 | end; 62 | 63 | end. 64 | -------------------------------------------------------------------------------- /Source/Core/Packaging/DPM.Core.Packaging.Archive.Reader.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Packaging/DPM.Core.Packaging.Archive.Reader.pas -------------------------------------------------------------------------------- /Source/Core/Packaging/DPM.Core.Packaging.Archive.Writer.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Packaging/DPM.Core.Packaging.Archive.Writer.pas -------------------------------------------------------------------------------- /Source/Core/Packaging/DPM.Core.Packaging.Archive.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Packaging/DPM.Core.Packaging.Archive.pas -------------------------------------------------------------------------------- /Source/Core/Packaging/DPM.Core.Packaging.IdValidator.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Packaging.IdValidator; 2 | 3 | interface 4 | 5 | uses 6 | System.RegularExpressions, 7 | DPM.Core.Constants; 8 | 9 | // Valid Id is : Org.PackageName 10 | // must start with a letter. 11 | 12 | type 13 | TPackageIdValidator = class 14 | private 15 | class var 16 | FRegex : TRegEx; 17 | public 18 | class procedure ValidatePackageId(const Id : string); 19 | class function IsValidPackageId(const Id : string) : boolean; 20 | class constructor Create; 21 | end; 22 | 23 | implementation 24 | 25 | uses 26 | System.SysUtils; 27 | 28 | { TPackageIdValidator } 29 | 30 | class constructor TPackageIdValidator.Create; 31 | begin 32 | //prefx must start with A-Z and must be at least 3 chars. 33 | FRegex := TRegex.Create('^[A-Z](?:\w+){2,}(?:\.\w+)+$', [roIgnoreCase]); 34 | end; 35 | 36 | class function TPackageIdValidator.IsValidPackageId(const Id : string) : boolean; 37 | begin 38 | if Id = '' then 39 | result := false 40 | else 41 | result := FRegex.IsMatch(Id); 42 | end; 43 | 44 | class procedure TPackageIdValidator.ValidatePackageId(const Id : string); 45 | begin 46 | if Id = '' then 47 | raise EArgumentNilException.Create('Id is empty'); 48 | 49 | if Length(Id) > cMaxPackageIdLength then 50 | raise EArgumentException.Create('Length of Id [' + Id + '] exceeds max Id length [' + IntToStr(cMaxPackageIdLength) + ']'); 51 | 52 | if not IsValidPackageId(Id) then 53 | raise EArgumentException.Create('Invalid Package Id [' + Id + ']'); 54 | 55 | end; 56 | 57 | end. 58 | 59 | -------------------------------------------------------------------------------- /Source/Core/Packaging/DPM.Core.Packaging.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Packaging/DPM.Core.Packaging.pas -------------------------------------------------------------------------------- /Source/Core/Project/DPM.Core.Project.Configuration.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Project/DPM.Core.Project.Configuration.pas -------------------------------------------------------------------------------- /Source/Core/Project/DPM.Core.Project.Editor.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Project/DPM.Core.Project.Editor.pas -------------------------------------------------------------------------------- /Source/Core/Project/DPM.Core.Project.GroupProjReader.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Project/DPM.Core.Project.GroupProjReader.pas -------------------------------------------------------------------------------- /Source/Core/Project/DPM.Core.Project.Interfaces.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Project/DPM.Core.Project.Interfaces.pas -------------------------------------------------------------------------------- /Source/Core/Repository/DPM.Core.Repository.Base.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Repository/DPM.Core.Repository.Base.pas -------------------------------------------------------------------------------- /Source/Core/Repository/DPM.Core.Repository.BaseGithub.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Repository/DPM.Core.Repository.BaseGithub.pas -------------------------------------------------------------------------------- /Source/Core/Repository/DPM.Core.Repository.DNGithub.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Repository/DPM.Core.Repository.DNGithub.pas -------------------------------------------------------------------------------- /Source/Core/Repository/DPM.Core.Repository.DPMGithub.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Repository/DPM.Core.Repository.DPMGithub.pas -------------------------------------------------------------------------------- /Source/Core/Repository/DPM.Core.Repository.Factory.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Repository/DPM.Core.Repository.Factory.pas -------------------------------------------------------------------------------- /Source/Core/Repository/DPM.Core.Repository.Interfaces.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Repository/DPM.Core.Repository.Interfaces.pas -------------------------------------------------------------------------------- /Source/Core/Repository/DPM.Core.Repository.Manager.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Repository/DPM.Core.Repository.Manager.pas -------------------------------------------------------------------------------- /Source/Core/Repository/DPM.Core.Repository.PackageInfo.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Repository.PackageInfo; 2 | 3 | interface 4 | 5 | uses 6 | DPM.Core.Types, 7 | DPM.Core.Repository.Interfaces; 8 | 9 | type 10 | TPackageInfo = class(TInterfacedObject, IPackageInfo) 11 | private 12 | FCompilerVersion: TCompilerVersion; 13 | FId: string; 14 | FPlatform: TDPMPlatform; 15 | FSourceName: string; 16 | FVersion: TPackageVersion; 17 | protected 18 | function GetCompilerVersion: TCompilerVersion; 19 | function GetId: string; 20 | function GetPlatform: TDPMPlatform; 21 | function GetSourceName: string; 22 | function GetVersion: TPackageVersion; 23 | public 24 | function ToString : string;override; 25 | constructor Create(const id, source : string; const version : TPackageVersion; const compilerVersion: TCompilerVersion; const platform : TDPMPlatform); 26 | end; 27 | 28 | // TPackageInfoComparer = class 29 | 30 | implementation 31 | 32 | { TPackageInfo } 33 | 34 | constructor TPackageInfo.Create(const id, source : string; const version : TPackageVersion; const compilerVersion: TCompilerVersion; const platform: TDPMPlatform); 35 | begin 36 | FId := id; 37 | FVersion := version; 38 | FSourceName := source; 39 | FCompilerVersion := compilerVersion; 40 | FPlatform := platform; 41 | end; 42 | 43 | function TPackageInfo.GetCompilerVersion: TCompilerVersion; 44 | begin 45 | result := FCompilerVersion; 46 | end; 47 | 48 | function TPackageInfo.GetId: string; 49 | begin 50 | result := FId; 51 | end; 52 | 53 | function TPackageInfo.GetPlatform: TDPMPlatform; 54 | begin 55 | result := FPlatform; 56 | end; 57 | 58 | function TPackageInfo.GetSourceName: string; 59 | begin 60 | result := FSourceName; 61 | end; 62 | 63 | function TPackageInfo.GetVersion: TPackageVersion; 64 | begin 65 | result := FVersion; 66 | end; 67 | 68 | function TPackageInfo.ToString: string; 69 | begin 70 | result := FId +'-' + CompilerToString(FCompilerVersion) + '-' + DPMPlatformToString(FPlatform) + '-' + FVersion.ToString; 71 | end; 72 | 73 | end. 74 | -------------------------------------------------------------------------------- /Source/Core/Sources/DPM.Core.Sources.Interfaces.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Sources/DPM.Core.Sources.Interfaces.pas -------------------------------------------------------------------------------- /Source/Core/Sources/DPM.Core.Sources.Manager.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Sources/DPM.Core.Sources.Manager.pas -------------------------------------------------------------------------------- /Source/Core/Sources/DPM.Core.Sources.ServiceIndex.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Sources.ServiceIndex; 2 | 3 | interface 4 | 5 | uses 6 | Spring.Collections, 7 | JsonDataObjects, 8 | DPM.Core.Sources.Interfaces; 9 | 10 | type 11 | TServiceIndex = class(TInterfacedObject, IServiceIndex) 12 | private 13 | FItems : IList; 14 | protected 15 | function FindItem(const resourceType : string) : IServiceIndexItem; 16 | function FindItems(const resourceType: string): IEnumerable; 17 | function GetItems: Spring.Collections.IList; 18 | procedure LoadFromJsonObject(const jsonObject : TJsonObject); 19 | public 20 | constructor Create; 21 | class function LoadFromJson(const jsonObject : TJsonObject) : IServiceIndex; 22 | class function LoadFromString(const jsonString : string) : IServiceIndex; 23 | end; 24 | 25 | TServiceIndexItem = class(TInterfacedObject, IServiceIndexItem) 26 | private 27 | FResourceType: string; 28 | FResourceUrl: string; 29 | protected 30 | function GetResourceType: string; 31 | function GetResourceUrl: string; 32 | public 33 | constructor Create(const resourceType : string; const resourceUrl : string); 34 | end; 35 | 36 | 37 | implementation 38 | 39 | uses 40 | System.SysUtils; 41 | 42 | { TServiceIndexItem } 43 | 44 | constructor TServiceIndexItem.Create(const resourceType, resourceUrl: string); 45 | begin 46 | FResourceType := resourceType; 47 | FResourceUrl := resourceUrl; 48 | end; 49 | 50 | function TServiceIndexItem.GetResourceType: string; 51 | begin 52 | result := FResourceType; 53 | end; 54 | 55 | function TServiceIndexItem.GetResourceUrl: string; 56 | begin 57 | result := FResourceUrl; 58 | end; 59 | 60 | { TServiceIndex } 61 | 62 | constructor TServiceIndex.Create; 63 | begin 64 | FItems := TCollections.CreateList; 65 | end; 66 | 67 | function TServiceIndex.FindItem(const resourceType: string): IServiceIndexItem; 68 | begin 69 | result := FindItems(resourceType).FirstOrDefault; 70 | end; 71 | 72 | function TServiceIndex.FindItems(const resourceType: string): IEnumerable; 73 | begin 74 | result := FItems.Where( 75 | function(const item : IServiceIndexItem) : boolean 76 | begin 77 | result := SameText(item.ResourceType, resourceType); 78 | end); 79 | end; 80 | 81 | function TServiceIndex.GetItems: Spring.Collections.IList; 82 | begin 83 | result := FItems; 84 | end; 85 | 86 | class function TServiceIndex.LoadFromJson(const jsonObject: TJsonObject): IServiceIndex; 87 | begin 88 | result := TServiceIndex.Create; 89 | (result as TServiceIndex).LoadFromJsonObject(jsonObject); 90 | end; 91 | 92 | procedure TServiceIndex.LoadFromJsonObject(const jsonObject: TJsonObject); 93 | var 94 | resourcesArray : TJsonArray; 95 | resourceObj : TJsonObject; 96 | i: integer; 97 | resourceType : string; 98 | resourceUrl : string; 99 | item : IServiceIndexItem; 100 | begin 101 | resourcesArray := jsonObject.A['resources']; 102 | if resourcesArray.Count = 0 then 103 | exit; 104 | for i := 0 to resourcesArray.Count -1 do 105 | begin 106 | resourceObj := resourcesArray.O[i]; 107 | resourceType := resourceObj.S['@type']; 108 | resourceUrl := resourceObj.S['@id']; 109 | item := TServiceIndexItem.Create(resourceType, resourceUrl); 110 | FItems.Add(item); 111 | end; 112 | end; 113 | 114 | class function TServiceIndex.LoadFromString(const jsonString: string): IServiceIndex; 115 | var 116 | jsonObj : TJsonObject; 117 | begin 118 | jsonObj := TJsonObject.Parse(jsonString) as TJsonObject; 119 | try 120 | result := LoadFromJson(jsonObj); 121 | finally 122 | jsonObj.Free; 123 | end; 124 | end; 125 | 126 | end. 127 | -------------------------------------------------------------------------------- /Source/Core/Sources/DPM.Core.Sources.Types.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Sources/DPM.Core.Sources.Types.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.BPLEntry.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.BPLEntry.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.BuildEntry.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.BuildEntry.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.Dependency.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.Dependency.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.DependencyGroup.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.DependencyGroup.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.FileEntry.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.FileEntry.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.Interfaces.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.Interfaces.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.MetaData.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.MetaData.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.Node.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.Node.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.Reader.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.Reader.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.SearchPath.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.SearchPath.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.SearchPathGroup.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.SearchPathGroup.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.TargetPlatform.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.TargetPlatform.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.Template.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.Template.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.TemplateBase.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.TemplateBase.pas -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.Writer.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Spec.Writer; 2 | 3 | interface 4 | 5 | uses 6 | DPM.Core.Types, 7 | DPM.Core.Logging, 8 | DPM.Core.Options.Spec, 9 | DPM.Core.Spec.Interfaces; 10 | 11 | type 12 | TPackageSpecWriter = class(TInterfacedObject, IPackageSpecWriter) 13 | private 14 | FLogger : ILogger; 15 | FSpec : IPackageSpec; 16 | protected 17 | public 18 | constructor Create(const logger : ILogger; spec: IPackageSpec); 19 | procedure SaveToFile(const filename: string); 20 | end; 21 | 22 | implementation 23 | 24 | uses 25 | System.IOUtils, 26 | JSONDataObjects, 27 | DPM.Core.Project.Interfaces; 28 | 29 | { TPackageSpecWriter } 30 | 31 | constructor TPackageSpecWriter.Create(const logger : ILogger; spec: IPackageSpec); 32 | begin 33 | FLogger := logger; 34 | FSpec := spec; 35 | end; 36 | 37 | procedure TPackageSpecWriter.SaveToFile(const filename: string); 38 | begin 39 | JsonSerializationConfig.IndentChar := ' '; 40 | TFile.WriteAllText(Filename, Fspec.ToJson); 41 | end; 42 | 43 | end. 44 | 45 | -------------------------------------------------------------------------------- /Source/Core/Spec/DPM.Core.Spec.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Spec/DPM.Core.Spec.pas -------------------------------------------------------------------------------- /Source/Core/Utils/DPM.Core.Utils.Config.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Utils/DPM.Core.Utils.Config.pas -------------------------------------------------------------------------------- /Source/Core/Utils/DPM.Core.Utils.Directory.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Utils/DPM.Core.Utils.Directory.pas -------------------------------------------------------------------------------- /Source/Core/Utils/DPM.Core.Utils.Enum.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Utils/DPM.Core.Utils.Enum.pas -------------------------------------------------------------------------------- /Source/Core/Utils/DPM.Core.Utils.Files.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Utils/DPM.Core.Utils.Files.pas -------------------------------------------------------------------------------- /Source/Core/Utils/DPM.Core.Utils.Numbers.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Utils/DPM.Core.Utils.Numbers.pas -------------------------------------------------------------------------------- /Source/Core/Utils/DPM.Core.Utils.Path.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Utils/DPM.Core.Utils.Path.pas -------------------------------------------------------------------------------- /Source/Core/Utils/DPM.Core.Utils.Process.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Utils/DPM.Core.Utils.Process.pas -------------------------------------------------------------------------------- /Source/Core/Utils/DPM.Core.Utils.Strings.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Utils/DPM.Core.Utils.Strings.pas -------------------------------------------------------------------------------- /Source/Core/Utils/DPM.Core.Utils.System.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Utils/DPM.Core.Utils.System.pas -------------------------------------------------------------------------------- /Source/Core/Utils/DPM.Core.Utils.XML.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Utils/DPM.Core.Utils.XML.pas -------------------------------------------------------------------------------- /Source/Core/Xml/DPM.Core.XML.NodeBase.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Core/Xml/DPM.Core.XML.NodeBase.pas -------------------------------------------------------------------------------- /Source/Core/readme.txt: -------------------------------------------------------------------------------- 1 | Note : Units in the Core folder should NOT reference any VCL or windows GDI api's. This is because the dpm command line tool uses these units, and at some point we want to be able to run dpm.exe in a docker container - referencing any vcl units will bring in staticly linked windows dll's that do not exist on Windows Server Core/windows docker images. -------------------------------------------------------------------------------- /Source/DPM.Core.Tests.prjmgc: -------------------------------------------------------------------------------- 1 | [Settings] 2 | AutoLibSuffix=0 3 | ClearChildAppSettings=0 4 | ClearChildPackageSettings=0 5 | ClearChildVersionInfo=0 6 | NormalizeDproj=0 7 | SplitDproj=0 8 | EnableMissingPlatforms=0 9 | RemoveUnusedPlatforms=0 10 | RefreshFormType=0 11 | RemoveExcludedPackages=0 12 | RemoveDeployment=0 13 | RemoveUWP=0 14 | RemoveExplicits=0 15 | 16 | -------------------------------------------------------------------------------- /Source/DPM.IDE.D100.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.D100.dpr -------------------------------------------------------------------------------- /Source/DPM.IDE.D101.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.D101.dpr -------------------------------------------------------------------------------- /Source/DPM.IDE.D102.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.D102.dpr -------------------------------------------------------------------------------- /Source/DPM.IDE.D103.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.D103.dpr -------------------------------------------------------------------------------- /Source/DPM.IDE.D104.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.D104.dpr -------------------------------------------------------------------------------- /Source/DPM.IDE.D110.prjmgc: -------------------------------------------------------------------------------- 1 | [Settings] 2 | AutoLibSuffix=0 3 | ClearChildAppSettings=0 4 | ClearChildPackageSettings=0 5 | ClearChildVersionInfo=0 6 | NormalizeDproj=0 7 | SplitDproj=0 8 | EnableMissingPlatforms=0 9 | RemoveUnusedPlatforms=0 10 | RefreshFormType=0 11 | RemoveExcludedPackages=0 12 | RemoveDeployment=0 13 | RemoveUWP=0 14 | RemoveExplicits=0 15 | 16 | -------------------------------------------------------------------------------- /Source/DPM.IDE.D110.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.D110.rc -------------------------------------------------------------------------------- /Source/DPM.IDE.D120.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.D120.rc -------------------------------------------------------------------------------- /Source/DPM.IDE.Template.config: -------------------------------------------------------------------------------- 1 | .\DPM.IDE.Template.dproj 2 | -projectsFolder=.\packages 3 | -useFolderPerCompiler=true 4 | -projectFolderTemplate=Rad Studio %Compiler% %CompilerCodeName% 5 | -compilerVersions=XE2 , XE3, D10_1 - XE5 -------------------------------------------------------------------------------- /Source/DPM.IDE.XE2.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.XE2.dpr -------------------------------------------------------------------------------- /Source/DPM.IDE.XE2Manifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Source/DPM.IDE.XE3.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.XE3.dpr -------------------------------------------------------------------------------- /Source/DPM.IDE.XE4.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.XE4.dpr -------------------------------------------------------------------------------- /Source/DPM.IDE.XE5.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.XE5.dpr -------------------------------------------------------------------------------- /Source/DPM.IDE.XE6.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.XE6.dpr -------------------------------------------------------------------------------- /Source/DPM.IDE.XE7.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.XE7.dpr -------------------------------------------------------------------------------- /Source/DPM.IDE.XE8.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DPM.IDE.XE8.dpr -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.BuildForm.dfm: -------------------------------------------------------------------------------- 1 | object BuildForm: TBuildForm 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsDialog 5 | Caption = 'Build' 6 | ClientHeight = 129 7 | ClientWidth = 487 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -12 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | Position = poScreenCenter 15 | DesignSize = ( 16 | 487 17 | 129) 18 | TextHeight = 15 19 | object lblBuildId: TLabel 20 | Left = 16 21 | Top = 16 22 | Width = 40 23 | Height = 15 24 | Caption = 'BuildId:' 25 | end 26 | object lblProject: TLabel 27 | Left = 16 28 | Top = 45 29 | Width = 40 30 | Height = 15 31 | Caption = 'Project:' 32 | end 33 | object btnCancel: TButton 34 | Left = 306 35 | Top = 88 36 | Width = 75 37 | Height = 25 38 | Anchors = [akTop, akRight] 39 | Cancel = True 40 | Caption = 'Cancel' 41 | TabOrder = 0 42 | OnClick = btnCancelClick 43 | end 44 | object btnOk: TButton 45 | Left = 395 46 | Top = 88 47 | Width = 75 48 | Height = 25 49 | Anchors = [akTop, akRight] 50 | Caption = 'OK' 51 | Default = True 52 | TabOrder = 1 53 | OnClick = btnOkClick 54 | end 55 | object edtBuildId: TEdit 56 | Left = 72 57 | Top = 13 58 | Width = 398 59 | Height = 23 60 | Anchors = [akLeft, akTop, akRight] 61 | TabOrder = 2 62 | end 63 | object edtProject: TEdit 64 | Left = 72 65 | Top = 42 66 | Width = 398 67 | Height = 23 68 | Anchors = [akLeft, akTop, akRight] 69 | ParentShowHint = False 70 | ShowHint = True 71 | TabOrder = 3 72 | end 73 | end 74 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.BuildForm.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Creator.BuildForm; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, 7 | Winapi.Messages, 8 | System.SysUtils, 9 | System.Variants, 10 | System.Classes, 11 | Vcl.Graphics, 12 | Vcl.Controls, 13 | Vcl.Forms, 14 | Vcl.Dialogs, 15 | Vcl.StdCtrls 16 | ; 17 | 18 | type 19 | TBuildForm = class(TForm) 20 | btnCancel: TButton; 21 | btnOk: TButton; 22 | lblBuildId: TLabel; 23 | edtBuildId: TEdit; 24 | lblProject: TLabel; 25 | edtProject: TEdit; 26 | procedure btnCancelClick(Sender: TObject); 27 | procedure btnOkClick(Sender: TObject); 28 | private 29 | { Private declarations } 30 | public 31 | { Public declarations } 32 | end; 33 | 34 | implementation 35 | 36 | {$R *.dfm} 37 | 38 | procedure TBuildForm.btnCancelClick(Sender: TObject); 39 | begin 40 | Close; 41 | ModalResult := mrCancel; 42 | end; 43 | 44 | procedure TBuildForm.btnOkClick(Sender: TObject); 45 | begin 46 | Close; 47 | ModalResult := mrOk; 48 | end; 49 | 50 | end. 51 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.DependencyForm.dfm: -------------------------------------------------------------------------------- 1 | object DependencyForm: TDependencyForm 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsDialog 5 | Caption = 'Dependency' 6 | ClientHeight = 121 7 | ClientWidth = 487 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -12 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | Position = poScreenCenter 15 | DesignSize = ( 16 | 487 17 | 121) 18 | TextHeight = 15 19 | object lblBuildId: TLabel 20 | Left = 44 21 | Top = 16 22 | Width = 13 23 | Height = 15 24 | Caption = 'Id:' 25 | end 26 | object lblProject: TLabel 27 | Left = 16 28 | Top = 45 29 | Width = 41 30 | Height = 15 31 | Caption = 'Version:' 32 | end 33 | object btnCancel: TButton 34 | Left = 318 35 | Top = 88 36 | Width = 75 37 | Height = 25 38 | Cancel = True 39 | Caption = 'Cancel' 40 | TabOrder = 2 41 | OnClick = btnCancelClick 42 | end 43 | object btnOk: TButton 44 | Left = 399 45 | Top = 88 46 | Width = 75 47 | Height = 25 48 | Caption = 'OK' 49 | Default = True 50 | TabOrder = 3 51 | OnClick = btnOkClick 52 | end 53 | object edtDependencyId: TEdit 54 | Left = 72 55 | Top = 13 56 | Width = 394 57 | Height = 23 58 | Anchors = [akLeft, akTop, akRight] 59 | ParentShowHint = False 60 | ShowHint = False 61 | TabOrder = 0 62 | TextHint = 'e.g VSoft.DUnitX' 63 | end 64 | object edtVersion: TEdit 65 | Left = 72 66 | Top = 42 67 | Width = 394 68 | Height = 23 69 | Anchors = [akLeft, akTop, akRight] 70 | ParentShowHint = False 71 | ShowHint = True 72 | TabOrder = 1 73 | TextHint = 'semver - e.g 1.2.0' 74 | end 75 | end 76 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.DependencyForm.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Creator.DependencyForm; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, 7 | Winapi.Messages, 8 | System.SysUtils, 9 | System.Variants, 10 | System.Classes, 11 | Vcl.Graphics, 12 | Vcl.Controls, 13 | Vcl.Forms, 14 | Vcl.Dialogs, 15 | Vcl.StdCtrls 16 | ; 17 | 18 | type 19 | TDependencyForm = class(TForm) 20 | btnCancel: TButton; 21 | btnOk: TButton; 22 | lblBuildId: TLabel; 23 | edtDependencyId: TEdit; 24 | lblProject: TLabel; 25 | edtVersion: TEdit; 26 | procedure btnCancelClick(Sender: TObject); 27 | procedure btnOkClick(Sender: TObject); 28 | private 29 | { Private declarations } 30 | public 31 | { Public declarations } 32 | end; 33 | 34 | implementation 35 | 36 | {$R *.dfm} 37 | 38 | procedure TDependencyForm.btnCancelClick(Sender: TObject); 39 | begin 40 | Close; 41 | ModalResult := mrCancel; 42 | end; 43 | 44 | procedure TDependencyForm.btnOkClick(Sender: TObject); 45 | begin 46 | Close; 47 | ModalResult := mrOk; 48 | end; 49 | 50 | end. 51 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.Dspec.Replacer.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Creator.Dspec.Replacer; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, 7 | System.RegularExpressions, 8 | DPM.Core.Types, 9 | // DPM.dspec.format, 10 | DPM.Core.Spec.Interfaces 11 | ; 12 | 13 | type 14 | TClassReplacer = class 15 | private 16 | Fspec : IPackageSpec; 17 | FCompiler : TCompilerVersion; 18 | function matcher(const Match: TMatch): String; 19 | function Replace(inputStr: string): string; 20 | constructor Create(compiler: TCompilerVersion; structure : IPackageSpec); 21 | public 22 | class function ReplaceVars(inputStr: String; compiler: TCompilerVersion; structure: IPackageSpec): string; 23 | end; 24 | 25 | 26 | implementation 27 | 28 | { TClassReplacer } 29 | 30 | constructor TClassReplacer.Create(compiler: TCompilerVersion; structure : IPackageSpec); 31 | begin 32 | FCompiler := compiler; 33 | Fspec := structure; 34 | end; 35 | 36 | function TClassReplacer.matcher(const Match: TMatch): String; 37 | begin 38 | if SameText(Match.Groups[1].Value, 'compiler') then 39 | Exit(CompilerToString(FCompiler)) 40 | else if SameText(Match.Groups[1].Value, 'compilerNoPoint') then 41 | Exit(CompilerToStringNoPoint(FCompiler)) 42 | else if SameText(Match.Groups[1].Value, 'compilerCodeName') then 43 | Exit(CompilerCodeName(FCompiler)) 44 | else if SameText(Match.Groups[1].Value, 'compilerWithCodeName') then 45 | Exit(CompilerWithCodeName(FCompiler)) 46 | else if SameText(Match.Groups[1].Value, 'compilerVersion') then 47 | Exit(CompilerToCompilerVersionIntStr(FCompiler)) 48 | else if SameText(Match.Groups[1].Value, 'libSuffix') then 49 | Exit(CompilerToLibSuffix(FCompiler)) 50 | else if SameText(Match.Groups[1].Value, 'bdsVersion') then 51 | Exit(CompilerToBDSVersion(FCompiler)) 52 | else if SameText(Match.Groups[1].Value, 'id') then 53 | Exit(FSpec.metadata.id) 54 | else if SameText(Match.Groups[1].Value, 'version') then 55 | Exit(FSpec.metadata.version.ToString) 56 | else if SameText(Match.Groups[1].Value, 'author') then 57 | Exit(FSpec.metadata.authors) 58 | else if SameText(Match.Groups[1].Value, 'title') then 59 | Exit(FSpec.metadata.id) 60 | else if SameText(Match.Groups[1].Value, 'description') then 61 | Exit(FSpec.metadata.description) 62 | else if SameText(Match.Groups[1].Value, 'copyright') then 63 | Exit(FSpec.metadata.copyright) 64 | else 65 | Exit(Match.Value); // In case of no match, return the original placeholder 66 | end; 67 | 68 | function TClassReplacer.Replace(inputStr: string): string; 69 | begin 70 | Result := TRegEx.Replace(inputStr, '\$(.*?)\$', matcher); 71 | end; 72 | 73 | class function TClassReplacer.ReplaceVars(inputStr: String; compiler: TCompilerVersion; structure: IPackageSpec): string; 74 | var 75 | replacer : TClassReplacer; 76 | begin 77 | replacer := TClassReplacer.Create(compiler, structure); 78 | try 79 | Result := replacer.Replace(inputStr); 80 | finally 81 | FreeAndNil(replacer); 82 | end; 83 | end; 84 | 85 | 86 | end. 87 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.FileForm.dfm: -------------------------------------------------------------------------------- 1 | object SourceForm: TSourceForm 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsDialog 5 | Caption = 'SourceForm' 6 | ClientHeight = 147 7 | ClientWidth = 487 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -12 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | Position = poScreenCenter 15 | DesignSize = ( 16 | 487 17 | 147) 18 | TextHeight = 15 19 | object lblSrc: TLabel 20 | Left = 22 21 | Top = 16 22 | Width = 19 23 | Height = 15 24 | Caption = 'Src:' 25 | end 26 | object lblDest: TLabel 27 | Left = 14 28 | Top = 69 29 | Width = 26 30 | Height = 15 31 | Caption = 'Dest:' 32 | end 33 | object btnCancel: TButton 34 | Left = 323 35 | Top = 114 36 | Width = 75 37 | Height = 25 38 | Cancel = True 39 | Caption = 'Cancel' 40 | TabOrder = 3 41 | OnClick = btnCancelClick 42 | end 43 | object btnOk: TButton 44 | Left = 404 45 | Top = 114 46 | Width = 75 47 | Height = 25 48 | Caption = 'OK' 49 | Default = True 50 | TabOrder = 4 51 | OnClick = btnOkClick 52 | end 53 | object edtSource: TEdit 54 | Left = 46 55 | Top = 13 56 | Width = 429 57 | Height = 23 58 | Anchors = [akLeft, akTop, akRight] 59 | ParentShowHint = False 60 | ShowHint = True 61 | TabOrder = 0 62 | end 63 | object chkFlatten: TCheckBox 64 | Left = 47 65 | Top = 43 66 | Width = 97 67 | Height = 17 68 | Caption = 'Flatten' 69 | TabOrder = 1 70 | end 71 | object edtDest: TEdit 72 | Left = 46 73 | Top = 66 74 | Width = 429 75 | Height = 23 76 | Anchors = [akLeft, akTop, akRight] 77 | ParentShowHint = False 78 | ShowHint = True 79 | TabOrder = 2 80 | end 81 | end 82 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.FileForm.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Creator.FileForm; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, 7 | Winapi.Messages, 8 | System.SysUtils, 9 | System.Variants, 10 | System.Classes, 11 | Vcl.Graphics, 12 | Vcl.Controls, 13 | Vcl.Forms, 14 | Vcl.Dialogs, 15 | Vcl.StdCtrls 16 | ; 17 | 18 | type 19 | TSourceForm = class(TForm) 20 | btnCancel: TButton; 21 | btnOk: TButton; 22 | lblSrc: TLabel; 23 | edtSource: TEdit; 24 | chkFlatten: TCheckBox; 25 | lblDest: TLabel; 26 | edtDest: TEdit; 27 | procedure btnCancelClick(Sender: TObject); 28 | procedure btnOkClick(Sender: TObject); 29 | private 30 | { Private declarations } 31 | public 32 | { Public declarations } 33 | end; 34 | 35 | implementation 36 | 37 | {$R *.dfm} 38 | 39 | procedure TSourceForm.btnCancelClick(Sender: TObject); 40 | begin 41 | Close; 42 | ModalResult := mrCancel; 43 | end; 44 | 45 | procedure TSourceForm.btnOkClick(Sender: TObject); 46 | begin 47 | Close; 48 | ModalResult := mrOk; 49 | end; 50 | 51 | end. 52 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.Logger.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Creator.Logger; 2 | 3 | interface 4 | 5 | uses 6 | System.Classes, 7 | DPM.Core.Types, 8 | DPM.Core.Logging 9 | ; 10 | 11 | type 12 | TDSpecLogger = class(TInterfacedObject, ILogger) 13 | private 14 | strList : TStrings; 15 | FVerbosity : TVerbosity; 16 | public 17 | procedure Debug(const data : string); 18 | procedure Verbose(const data : string; const important : boolean = false); 19 | procedure Information(const data : string; const important : boolean = false); 20 | procedure Warning(const data : string; const important : boolean = false); 21 | procedure Error(const data : string); 22 | procedure Success(const data : string; const important : boolean = false); 23 | procedure Clear; //not implemented in the console logger. 24 | procedure NewLine; 25 | 26 | function GetVerbosity : TVerbosity; 27 | procedure SetVerbosity(const value : TVerbosity); 28 | constructor Create(sl: TStrings); 29 | end; 30 | 31 | implementation 32 | 33 | { TDSpecLogger } 34 | 35 | procedure TDSpecLogger.Clear; 36 | begin 37 | 38 | end; 39 | 40 | constructor TDSpecLogger.Create(sl: TStrings); 41 | begin 42 | strList := sl; 43 | end; 44 | 45 | procedure TDSpecLogger.Debug(const data: string); 46 | begin 47 | strList.Add('DEBUG: ' + data); 48 | end; 49 | 50 | procedure TDSpecLogger.Error(const data: string); 51 | begin 52 | strList.Add('ERROR: ' + data); 53 | end; 54 | 55 | function TDSpecLogger.GetVerbosity: TVerbosity; 56 | begin 57 | Result := FVerbosity; 58 | end; 59 | 60 | procedure TDSpecLogger.Information(const data: string; const important: boolean); 61 | begin 62 | strList.Add('INFORMATION: ' + data); 63 | end; 64 | 65 | procedure TDSpecLogger.NewLine; 66 | begin 67 | strList.Add(''); 68 | end; 69 | 70 | procedure TDSpecLogger.SetVerbosity(const value: TVerbosity); 71 | begin 72 | FVerbosity := value; 73 | end; 74 | 75 | procedure TDSpecLogger.Success(const data: string; const important: boolean); 76 | begin 77 | strList.Add('SUCCESS: ' + data); 78 | end; 79 | 80 | procedure TDSpecLogger.Verbose(const data: string; const important: boolean); 81 | begin 82 | strList.Add('VERBOSE: ' + data); 83 | end; 84 | 85 | procedure TDSpecLogger.Warning(const data: string; const important: boolean); 86 | begin 87 | strList.Add('WARNING: ' + data); 88 | end; 89 | 90 | end. 91 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.OptionsForm.dfm: -------------------------------------------------------------------------------- 1 | object OptionsForm: TOptionsForm 2 | Left = 0 3 | Top = 0 4 | Caption = 'OptionsForm' 5 | ClientHeight = 504 6 | ClientWidth = 859 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -12 11 | Font.Name = 'Segoe UI' 12 | Font.Style = [] 13 | Position = poMainFormCenter 14 | OnCreate = FormCreate 15 | OnShow = FormShow 16 | TextHeight = 15 17 | inline DPMOptionsFrame: TDPMOptionsFrame 18 | Left = 0 19 | Top = 0 20 | Width = 859 21 | Height = 463 22 | Align = alClient 23 | TabOrder = 0 24 | ExplicitWidth = 859 25 | ExplicitHeight = 463 26 | inherited pgOptions: TPageControl 27 | Width = 859 28 | Height = 463 29 | ExplicitWidth = 855 30 | ExplicitHeight = 462 31 | inherited tsSources: TTabSheet 32 | ExplicitWidth = 851 33 | ExplicitHeight = 429 34 | inherited Panel1: TPanel 35 | Width = 851 36 | ExplicitWidth = 847 37 | inherited btnAdd: TSpeedButton 38 | Left = 668 39 | ExplicitLeft = 668 40 | end 41 | inherited btnRemove: TSpeedButton 42 | Left = 715 43 | ExplicitLeft = 715 44 | end 45 | inherited btnUp: TSpeedButton 46 | Left = 760 47 | ExplicitLeft = 760 48 | end 49 | inherited btnDown: TSpeedButton 50 | Left = 805 51 | ExplicitLeft = 805 52 | end 53 | inherited txtPackageCacheLocation: TButtonedEdit 54 | Height = 23 55 | ExplicitHeight = 23 56 | end 57 | end 58 | inherited Panel2: TPanel 59 | Top = 218 60 | Width = 851 61 | ExplicitTop = 217 62 | ExplicitWidth = 847 63 | inherited txtName: TEdit 64 | Height = 23 65 | ExplicitHeight = 23 66 | end 67 | inherited txtUri: TButtonedEdit 68 | Height = 23 69 | ExplicitHeight = 23 70 | end 71 | inherited txtUserName: TEdit 72 | Height = 23 73 | ExplicitHeight = 23 74 | end 75 | inherited txtPassword: TEdit 76 | Height = 23 77 | ExplicitHeight = 23 78 | end 79 | inherited cboSourceType: TComboBox 80 | ExplicitHeight = 23 81 | end 82 | end 83 | inherited Panel3: TPanel 84 | Width = 851 85 | Height = 129 86 | ExplicitWidth = 847 87 | ExplicitHeight = 128 88 | inherited lvSources: TListView 89 | Width = 851 90 | Height = 129 91 | ExplicitWidth = 847 92 | ExplicitHeight = 128 93 | end 94 | end 95 | end 96 | inherited tsIDEOptions: TTabSheet 97 | inherited pnlIDEOptions: TPanel 98 | inherited spAutoCloseDelay: TSpinEdit 99 | Height = 24 100 | ExplicitHeight = 24 101 | end 102 | inherited cboLogLevel: TComboBox 103 | ExplicitHeight = 23 104 | end 105 | end 106 | end 107 | end 108 | end 109 | object Panel1: TPanel 110 | Left = 0 111 | Top = 463 112 | Width = 859 113 | Height = 41 114 | Align = alBottom 115 | TabOrder = 1 116 | ExplicitTop = 462 117 | ExplicitWidth = 855 118 | object btnCancel: TButton 119 | Left = 656 120 | Top = 6 121 | Width = 75 122 | Height = 25 123 | Cancel = True 124 | Caption = 'Cancel' 125 | TabOrder = 0 126 | OnClick = btnCancelClick 127 | end 128 | object btnOk: TButton 129 | Left = 764 130 | Top = 6 131 | Width = 75 132 | Height = 25 133 | Caption = 'Ok' 134 | Default = True 135 | TabOrder = 1 136 | OnClick = btnOkClick 137 | end 138 | end 139 | end 140 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.OptionsForm.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Creator.OptionsForm; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, 7 | Winapi.Messages, 8 | System.SysUtils, 9 | System.Variants, 10 | System.Classes, 11 | Vcl.Graphics, 12 | Vcl.Controls, 13 | Vcl.Forms, 14 | Vcl.Dialogs, 15 | Vcl.StdCtrls, 16 | Vcl.ExtCtrls, 17 | DPM.Core.Types, 18 | DPM.Core.Logging, 19 | DPM.IDE.AddInOptionsFrame, 20 | DPM.Core.Configuration.Interfaces, 21 | DPM.Core.Configuration.Manager, 22 | DPM.IDE.Options 23 | ; 24 | 25 | type 26 | 27 | TOptionsForm = class(TForm) 28 | DPMOptionsFrame: TDPMOptionsFrame; 29 | Panel1: TPanel; 30 | btnCancel: TButton; 31 | btnOk: TButton; 32 | procedure btnCancelClick(Sender: TObject); 33 | procedure btnOkClick(Sender: TObject); 34 | procedure FormCreate(Sender: TObject); 35 | procedure FormShow(Sender: TObject); 36 | private 37 | { Private declarations } 38 | FConfigManager : IConfigurationManager; 39 | FLogger: ILogger; 40 | FIDEOptions : IDPMIDEOptions; 41 | public 42 | { Public declarations } 43 | constructor Create(AOwner: TComponent; logger: ILogger); reintroduce; 44 | end; 45 | 46 | implementation 47 | 48 | {$R *.dfm} 49 | 50 | constructor TOptionsForm.Create(AOwner: TComponent; logger: ILogger); 51 | begin 52 | inherited Create(AOwner); 53 | FLogger := logger; 54 | FIDEOptions := TDPMIDEOptions.Create; 55 | FIDEOptions.LoadFromFile(); 56 | end; 57 | 58 | procedure TOptionsForm.btnCancelClick(Sender: TObject); 59 | begin 60 | Close; 61 | Self.ModalResult := mrCancel; 62 | end; 63 | 64 | procedure TOptionsForm.btnOkClick(Sender: TObject); 65 | begin 66 | if DPMOptionsFrame.Validate then 67 | begin 68 | DPMOptionsFrame.SaveSettings; 69 | Close; 70 | Self.ModalResult := mrOK; 71 | end; 72 | end; 73 | 74 | procedure TOptionsForm.FormCreate(Sender: TObject); 75 | begin 76 | FConfigManager := TConfigurationManager.Create(FLogger); 77 | DPMOptionsFrame.Configure(FConfigManager, FIDEOptions, FLogger, ''); 78 | DPMOptionsFrame.LoadSettings; 79 | end; 80 | 81 | procedure TOptionsForm.FormShow(Sender: TObject); 82 | begin 83 | DPMOptionsFrame.tsIDEOptions.Visible := False; 84 | end; 85 | 86 | end. 87 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.RuntimeForm.dfm: -------------------------------------------------------------------------------- 1 | object BplForm: TBplForm 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsDialog 5 | Caption = 'Runtime' 6 | ClientHeight = 159 7 | ClientWidth = 487 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -12 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | Position = poScreenCenter 15 | DesignSize = ( 16 | 487 17 | 159) 18 | TextHeight = 15 19 | object lblRuntimeSrc: TLabel 20 | Left = 27 21 | Top = 56 22 | Width = 19 23 | Height = 15 24 | Caption = 'Src:' 25 | end 26 | object lblRuntimeBuildId: TLabel 27 | Left = 10 28 | Top = 16 29 | Width = 43 30 | Height = 15 31 | Caption = 'Build Id:' 32 | end 33 | object btnCancel: TButton 34 | Left = 316 35 | Top = 120 36 | Width = 75 37 | Height = 25 38 | Cancel = True 39 | Caption = 'Cancel' 40 | TabOrder = 4 41 | OnClick = btnCancelClick 42 | end 43 | object btnOk: TButton 44 | Left = 397 45 | Top = 120 46 | Width = 75 47 | Height = 25 48 | Caption = 'OK' 49 | Default = True 50 | TabOrder = 5 51 | OnClick = btnOkClick 52 | end 53 | object chkCopyLocal: TCheckBox 54 | Left = 59 55 | Top = 88 56 | Width = 97 57 | Height = 17 58 | Caption = 'Copy Local' 59 | TabOrder = 2 60 | end 61 | object edtSource: TEdit 62 | Left = 59 63 | Top = 53 64 | Width = 413 65 | Height = 23 66 | Anchors = [akLeft, akTop, akRight] 67 | ParentShowHint = False 68 | ShowHint = True 69 | TabOrder = 1 70 | end 71 | object edtBuildId: TEdit 72 | Left = 59 73 | Top = 13 74 | Width = 413 75 | Height = 23 76 | Anchors = [akLeft, akTop, akRight] 77 | TabOrder = 0 78 | end 79 | object chkInstall: TCheckBox 80 | Left = 59 81 | Top = 111 82 | Width = 97 83 | Height = 17 84 | Caption = 'Install In IDE' 85 | TabOrder = 3 86 | end 87 | end 88 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.RuntimeForm.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Creator.RuntimeForm; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, 7 | Winapi.Messages, 8 | System.SysUtils, 9 | System.Variants, 10 | System.Classes, 11 | Vcl.Graphics, 12 | Vcl.Controls, 13 | Vcl.Forms, 14 | Vcl.Dialogs, 15 | Vcl.StdCtrls 16 | ; 17 | 18 | type 19 | TBplForm = class(TForm) 20 | btnCancel: TButton; 21 | btnOk: TButton; 22 | chkCopyLocal: TCheckBox; 23 | lblRuntimeSrc: TLabel; 24 | edtSource: TEdit; 25 | lblRuntimeBuildId: TLabel; 26 | edtBuildId: TEdit; 27 | chkInstall: TCheckBox; 28 | procedure btnCancelClick(Sender: TObject); 29 | procedure btnOkClick(Sender: TObject); 30 | private 31 | { Private declarations } 32 | public 33 | { Public declarations } 34 | end; 35 | 36 | implementation 37 | 38 | {$R *.dfm} 39 | 40 | procedure TBplForm.btnCancelClick(Sender: TObject); 41 | begin 42 | Close; 43 | ModalResult := mrCancel; 44 | end; 45 | 46 | procedure TBplForm.btnOkClick(Sender: TObject); 47 | begin 48 | Close; 49 | ModalResult := mrOk; 50 | end; 51 | 52 | end. 53 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.SearchPathForm.dfm: -------------------------------------------------------------------------------- 1 | object SearchPathForm: TSearchPathForm 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsDialog 5 | Caption = 'Search Path Entry' 6 | ClientHeight = 103 7 | ClientWidth = 487 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -12 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | Position = poScreenCenter 15 | DesignSize = ( 16 | 487 17 | 103) 18 | TextHeight = 15 19 | object lblRuntimeSrc: TLabel 20 | Left = 23 21 | Top = 16 22 | Width = 30 23 | Height = 15 24 | Caption = 'Path :' 25 | end 26 | object btnCancel: TButton 27 | Left = 316 28 | Top = 56 29 | Width = 75 30 | Height = 25 31 | Cancel = True 32 | Caption = 'Cancel' 33 | TabOrder = 1 34 | OnClick = btnCancelClick 35 | end 36 | object btnOk: TButton 37 | Left = 397 38 | Top = 56 39 | Width = 75 40 | Height = 25 41 | Caption = 'OK' 42 | Default = True 43 | TabOrder = 2 44 | OnClick = btnOkClick 45 | end 46 | object edtSearchPath: TEdit 47 | Left = 59 48 | Top = 13 49 | Width = 410 50 | Height = 23 51 | Anchors = [akLeft, akTop, akRight] 52 | ParentShowHint = False 53 | ShowHint = True 54 | TabOrder = 0 55 | end 56 | end 57 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.SearchPathForm.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Creator.SearchPathForm; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, 7 | Winapi.Messages, 8 | System.SysUtils, 9 | System.Variants, 10 | System.Classes, 11 | Vcl.Graphics, 12 | Vcl.Controls, 13 | Vcl.Forms, 14 | Vcl.Dialogs, 15 | Vcl.StdCtrls 16 | ; 17 | 18 | type 19 | TSearchPathForm = class(TForm) 20 | btnCancel: TButton; 21 | btnOk: TButton; 22 | lblRuntimeSrc: TLabel; 23 | edtSearchPath: TEdit; 24 | procedure btnCancelClick(Sender: TObject); 25 | procedure btnOkClick(Sender: TObject); 26 | private 27 | { Private declarations } 28 | public 29 | { Public declarations } 30 | end; 31 | 32 | implementation 33 | 34 | {$R *.dfm} 35 | 36 | procedure TSearchPathForm.btnCancelClick(Sender: TObject); 37 | begin 38 | Close; 39 | ModalResult := mrCancel; 40 | end; 41 | 42 | procedure TSearchPathForm.btnOkClick(Sender: TObject); 43 | begin 44 | Close; 45 | ModalResult := mrOk; 46 | end; 47 | 48 | end. 49 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.TemplateForm.dfm: -------------------------------------------------------------------------------- 1 | object TemplateForm: TTemplateForm 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsDialog 5 | Caption = 'Templates' 6 | ClientHeight = 142 7 | ClientWidth = 291 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -12 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | Position = poScreenCenter 15 | TextHeight = 15 16 | object Label1: TLabel 17 | Left = 32 18 | Top = 32 19 | Width = 121 20 | Height = 15 21 | Caption = 'Enter Template Names:' 22 | end 23 | object edtTemplate: TEdit 24 | Left = 32 25 | Top = 56 26 | Width = 233 27 | Height = 23 28 | TabOrder = 0 29 | end 30 | object btnCancel: TButton 31 | Left = 109 32 | Top = 96 33 | Width = 75 34 | Height = 25 35 | Cancel = True 36 | Caption = 'Cancel' 37 | TabOrder = 1 38 | OnClick = btnCancelClick 39 | end 40 | object btnOk: TButton 41 | Left = 190 42 | Top = 96 43 | Width = 75 44 | Height = 25 45 | Caption = 'OK' 46 | Default = True 47 | TabOrder = 2 48 | OnClick = btnOkClick 49 | end 50 | end 51 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DPM.Creator.TemplateForm.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Creator.TemplateForm; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, 7 | Winapi.Messages, 8 | System.SysUtils, 9 | System.Variants, 10 | System.Classes, 11 | Vcl.Graphics, 12 | Vcl.Controls, 13 | Vcl.Forms, 14 | Vcl.Dialogs, 15 | Vcl.StdCtrls 16 | ; 17 | 18 | type 19 | TTemplateForm = class(TForm) 20 | Label1: TLabel; 21 | edtTemplate: TEdit; 22 | btnCancel: TButton; 23 | btnOk: TButton; 24 | procedure btnCancelClick(Sender: TObject); 25 | procedure btnOkClick(Sender: TObject); 26 | private 27 | { Private declarations } 28 | public 29 | { Public declarations } 30 | end; 31 | 32 | implementation 33 | 34 | {$R *.dfm} 35 | 36 | procedure TTemplateForm.btnCancelClick(Sender: TObject); 37 | begin 38 | Close; 39 | ModalResult := mrCancel; 40 | end; 41 | 42 | procedure TTemplateForm.btnOkClick(Sender: TObject); 43 | begin 44 | Close; 45 | ModalResult := mrOk; 46 | end; 47 | 48 | end. 49 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DspecCreator.Artwork/Windows/AppIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DSpecCreator/DspecCreator.Artwork/Windows/AppIcon.icns -------------------------------------------------------------------------------- /Source/DSpecCreator/DspecCreator.Artwork/Windows/AppIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DSpecCreator/DspecCreator.Artwork/Windows/AppIcon.ico -------------------------------------------------------------------------------- /Source/DSpecCreator/DspecCreator.Artwork/Windows/Uwp_150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DSpecCreator/DspecCreator.Artwork/Windows/Uwp_150.png -------------------------------------------------------------------------------- /Source/DSpecCreator/DspecCreator.Artwork/Windows/Uwp_44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DSpecCreator/DspecCreator.Artwork/Windows/Uwp_44.png -------------------------------------------------------------------------------- /Source/DSpecCreator/DspecCreator.dres: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DSpecCreator/DspecCreator.dres -------------------------------------------------------------------------------- /Source/DSpecCreator/DspecCreator.prjmgc: -------------------------------------------------------------------------------- 1 | [Settings] 2 | AutoLibSuffix=0 3 | ClearChildAppSettings=0 4 | ClearChildPackageSettings=0 5 | ClearChildVersionInfo=0 6 | NormalizeDproj=1 7 | SplitDproj=1 8 | EnableMissingPlatforms=0 9 | RemoveUnusedPlatforms=1 10 | RefreshFormType=0 11 | RemoveExcludedPackages=1 12 | RemoveDeployment=1 13 | RemoveUWP=1 14 | 15 | -------------------------------------------------------------------------------- /Source/DSpecCreator/DspecCreator.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DSpecCreator/DspecCreator.rc -------------------------------------------------------------------------------- /Source/DSpecCreator/DspecCreatorResource.rc: -------------------------------------------------------------------------------- 1 | ADD_PACKAGE_16 RCDATA "..\\images\\add_16px.png" 2 | REMOVE_PACKAGE_16 RCDATA "..\\images\\remove_16px.png" 3 | ADD_PACKAGE_24 RCDATA "..\\images\\add_24px.png" 4 | ADD_PACKAGE_32 RCDATA "..\\images\\add_32px.png" 5 | ADD_PACKAGE_48 RCDATA "..\\images\\add_48px.png" 6 | REMOVE_PACKAGE_24 RCDATA "..\\images\\remove_24px.png" 7 | REMOVE_PACKAGE_32 RCDATA "..\\images\\remove_32px.png" 8 | REMOVE_PACKAGE_48 RCDATA "..\\images\\remove_48px.png" 9 | MOVE_UP_16 RCDATA "..\\images\\move-up_16px.png" 10 | MOVE_UP_24 RCDATA "..\\images\\move-up_24px.png" 11 | MOVE_UP_32 RCDATA "..\\images\\move-up_32px.png" 12 | MOVE_UP_48 RCDATA "..\\images\\move-up_48px.png" 13 | MOVE_DOWN_16 RCDATA "..\\images\\move-down_16px.png" 14 | MOVE_DOWN_24 RCDATA "..\\images\\move-down_24px.png" 15 | MOVE_DOWN_32 RCDATA "..\\images\\move-down_32px.png" 16 | MOVE_DOWN_48 RCDATA "..\\images\\move-down_48px.png" 17 | OPEN_16 RCDATA "..\\images\\open_16px.png" 18 | OPEN_24 RCDATA "..\\images\\open_24px.png" 19 | OPEN_32 RCDATA "..\\images\\open_32px.png" 20 | OPEN_48 RCDATA "..\\images\\open_48px.png" 21 | SPDX RCDATA "Resources\\spdx-licenses.txt" 22 | -------------------------------------------------------------------------------- /Source/DSpecCreator/Images/package-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DSpecCreator/Images/package-info.png -------------------------------------------------------------------------------- /Source/DSpecCreator/Images/package-platforms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DSpecCreator/Images/package-platforms.png -------------------------------------------------------------------------------- /Source/DSpecCreator/Images/package-templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DSpecCreator/Images/package-templates.png -------------------------------------------------------------------------------- /Source/DSpecCreator/README.md: -------------------------------------------------------------------------------- 1 | # DelphiPackageManagerDSpecCreator 2 | ![image](./DspecCreator.Artwork/Windows/Uwp_150.png) 3 | 4 | DSpecCreator is a project that can be used to create and edit .dspec files that are used to create packages that can be used with Delphi Package Manager 5 | https://github.com/DelphiPackageManager/DPM 6 | 7 | ## Project Status 8 | Project is still very much a work in progress. You should be able to create a usable .dspec file though. The below screenshots show the main screens of the program 9 | 10 | ![image](./Images/package-info.png) 11 | 12 | ![image](./Images/package-platforms.png) 13 | 14 | ![image](./Images/package-templates.png) 15 | -------------------------------------------------------------------------------- /Source/DSpecCreator/Resources/spdx-licenses.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DSpecCreator/Resources/spdx-licenses.txt -------------------------------------------------------------------------------- /Source/DSpecCreator/SPDXProcessor/SPDXProcessor.dpr: -------------------------------------------------------------------------------- 1 | program SPDXProcessor; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | {$R *.res} 6 | 7 | uses 8 | System.SysUtils, 9 | System.Classes, 10 | JsonDataObjects; 11 | 12 | // process https://raw.githubusercontent.com/spdx/license-list-data/main/json/licenses.json 13 | // and convert to id=name,url list 14 | 15 | procedure ProcessFile(const jsonFileName : string; const outputFileName : string); 16 | var 17 | jsonObj : TJsonObject; 18 | sList : TStringList; 19 | licensesArray : TJsonArray; 20 | begin 21 | try 22 | jsonObj := TJsonObject.ParseFromFile(jsonFileName) as TJsonObject; 23 | sList := TStringList.Create; 24 | try 25 | licensesArray := jsonObj.A['licenses']; 26 | 27 | for var i := 0 to licensesArray.Count - 1 do 28 | begin 29 | var license := licensesArray.O[i]; 30 | if license.B['isDeprecatedLicenseId'] then 31 | continue; 32 | var id := license.S['licenseId']; 33 | WriteLn('processing ' + id); 34 | 35 | var name := license.S['name']; 36 | var url := license.S['reference']; 37 | sList.AddPair(id, name + ',' + url); 38 | 39 | end; 40 | sList.SaveToFile(outputFileName, TEncoding.ANSI); 41 | finally 42 | jsonObj.Free; 43 | sList.Free; 44 | end; 45 | except 46 | on e : Exception do 47 | begin 48 | WriteLn('Exception while loading json file [' + jsonFileName + ']' + #13#10 + e.Message); 49 | exit; 50 | end; 51 | end; 52 | 53 | 54 | end; 55 | 56 | //TODO : Actually download the file to process 57 | 58 | begin 59 | try 60 | if ParamCount < 2 then 61 | raise EInOutArgumentException.Create('Expected 2 parameters - jsonfile outputfile'); 62 | 63 | 64 | var spdxJsonFile := ParamStr(1); 65 | if (not FileExists(spdxJsonFile)) then 66 | raise EInOutArgumentException.Create(spdxJsonFile + ' - does not exist'); 67 | 68 | var outputFile := ParamStr(2); 69 | 70 | 71 | ProcessFile(spdxJsonFile, outputFile); 72 | 73 | except 74 | on E: Exception do 75 | Writeln(E.ClassName, ': ', E.Message); 76 | end; 77 | end. 78 | -------------------------------------------------------------------------------- /Source/DSpecCreator/dspecticon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/DSpecCreator/dspecticon.png -------------------------------------------------------------------------------- /Source/IDE/Compatibility/System.Actions.pas: -------------------------------------------------------------------------------- 1 | unit System.Actions; 2 | 3 | interface 4 | 5 | // this is to deal with XE2 and earlier not having system.actions 6 | // the form designer in later ide's keeps adding it to the uses 7 | // clause so this will keep earlier ides happy. 8 | 9 | 10 | implementation 11 | 12 | end. 13 | -------------------------------------------------------------------------------- /Source/IDE/Compatibility/System.ImageList.pas: -------------------------------------------------------------------------------- 1 | unit System.ImageList; 2 | 3 | interface 4 | 5 | // this is to deal with XE7 and earlier not having system.imagelist 6 | // the form designer in later ide's keeps adding it to the uses 7 | // clause so this will keep earlier ides happy. 8 | 9 | implementation 10 | 11 | end. 12 | -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.AboutForm.pas: -------------------------------------------------------------------------------- 1 | {***************************************************************************} 2 | { } 3 | { Delphi Package Manager - DPM } 4 | { } 5 | { Copyright © 2019 Vincent Parrett and contributors } 6 | { } 7 | { vincent@finalbuilder.com } 8 | { https://www.finalbuilder.com } 9 | { } 10 | { } 11 | {***************************************************************************} 12 | { } 13 | { Licensed under the Apache License, Version 2.0 (the "License"); } 14 | { you may not use this file except in compliance with the License. } 15 | { You may obtain a copy of the License at } 16 | { } 17 | { http://www.apache.org/licenses/LICENSE-2.0 } 18 | { } 19 | { Unless required by applicable law or agreed to in writing, software } 20 | { distributed under the License is distributed on an "AS IS" BASIS, } 21 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 22 | { See the License for the specific language governing permissions and } 23 | { limitations under the License. } 24 | { } 25 | {***************************************************************************} 26 | 27 | unit DPM.IDE.AboutForm; 28 | 29 | interface 30 | 31 | uses 32 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 33 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.pngimage, Vcl.ExtCtrls; 34 | 35 | type 36 | TDPMAboutForm = class(TForm) 37 | Image1 : TImage; 38 | Label1 : TLabel; 39 | Label2 : TLabel; 40 | Label3 : TLabel; 41 | githubLinkLabel : TLinkLabel; 42 | Label4 : TLabel; 43 | lblVersion: TLabel; 44 | procedure githubLinkLabelLinkClick(Sender : TObject; const Link : string; LinkType : TSysLinkType); 45 | private 46 | { Private declarations } 47 | public 48 | { Public declarations } 49 | constructor Create(AOwner : TComponent);override; 50 | end; 51 | 52 | var 53 | DPMAboutForm : TDPMAboutForm; 54 | 55 | implementation 56 | 57 | uses 58 | Winapi.ShellAPI, 59 | {$IFNDEF CREATOR} 60 | ToolsApi, 61 | {$ENDIF} 62 | DPM.Core.Utils.System; 63 | {$I DPMIDE.inc} 64 | 65 | {$R *.dfm} 66 | 67 | constructor TDPMAboutForm.Create(AOwner: TComponent); 68 | begin 69 | inherited; 70 | {$IFNDEF CREATOR} 71 | {$IFDEF STYLEELEMENTS} 72 | StyleElements := [seFont, seClient, seBorder]; 73 | {$ENDIF} 74 | {$IFDEF THEMESERVICES} 75 | (BorlandIDEServices as IOTAIDEThemingServices).ApplyTheme(Self); 76 | {$ENDIF} 77 | {$ENDIF} 78 | 79 | lblVersion.Caption := lblVersion.Caption + TSystemUtils.GetVersionString; 80 | end; 81 | 82 | procedure TDPMAboutForm.githubLinkLabelLinkClick(Sender : TObject; const Link : string; LinkType : TSysLinkType); 83 | begin 84 | ShellExecute(0, 'Open', PChar(Link), nil, nil, SW_SHOWNORMAL); 85 | end; 86 | 87 | end. 88 | 89 | -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.AddInOptions.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.AddInOptions.pas -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.AddInOptionsFrame.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.AddInOptionsFrame.pas -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.AddInOptionsHostForm.dfm: -------------------------------------------------------------------------------- 1 | object DPMOptionsHostForm: TDPMOptionsHostForm 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu] 5 | BorderStyle = bsSingle 6 | Caption = 'DPM Options' 7 | ClientHeight = 549 8 | ClientWidth = 720 9 | Color = clBtnFace 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -11 13 | Font.Name = 'Tahoma' 14 | Font.Style = [] 15 | OldCreateOrder = True 16 | Position = poOwnerFormCenter 17 | PixelsPerInch = 96 18 | TextHeight = 13 19 | inline DPMOptionsFrame: TDPMOptionsFrame 20 | Left = 0 21 | Top = 0 22 | Width = 720 23 | Height = 504 24 | Align = alClient 25 | Color = clWindow 26 | ParentBackground = False 27 | ParentColor = False 28 | TabOrder = 0 29 | ExplicitWidth = 720 30 | inherited pgOptions: TPageControl 31 | Width = 720 32 | ExplicitWidth = 720 33 | inherited tsSources: TTabSheet 34 | ExplicitLeft = 4 35 | ExplicitTop = 30 36 | ExplicitWidth = 712 37 | ExplicitHeight = 470 38 | inherited Panel1: TPanel 39 | Width = 712 40 | ExplicitWidth = 712 41 | inherited btnAdd: TSpeedButton 42 | Left = 475 43 | ExplicitLeft = 475 44 | end 45 | inherited btnRemove: TSpeedButton 46 | Left = 520 47 | ExplicitLeft = 520 48 | end 49 | inherited btnUp: TSpeedButton 50 | Left = 565 51 | ExplicitLeft = 565 52 | end 53 | inherited btnDown: TSpeedButton 54 | Left = 610 55 | ExplicitLeft = 610 56 | end 57 | end 58 | inherited Panel2: TPanel 59 | Width = 712 60 | ExplicitWidth = 712 61 | end 62 | inherited Panel3: TPanel 63 | Width = 712 64 | ExplicitWidth = 712 65 | inherited lvSources: TListView 66 | Width = 712 67 | ParentColor = True 68 | ExplicitWidth = 712 69 | end 70 | end 71 | end 72 | inherited tsIDEOptions: TTabSheet 73 | ExplicitLeft = 4 74 | ExplicitTop = 30 75 | ExplicitWidth = 660 76 | ExplicitHeight = 470 77 | end 78 | end 79 | end 80 | object Panel1: TPanel 81 | Left = 0 82 | Top = 504 83 | Width = 720 84 | Height = 45 85 | Align = alBottom 86 | BevelOuter = bvNone 87 | Caption = 'Panel1' 88 | ParentColor = True 89 | ShowCaption = False 90 | TabOrder = 1 91 | object btnCancel: TButton 92 | Left = 629 93 | Top = 6 94 | Width = 75 95 | Height = 25 96 | Cancel = True 97 | Caption = 'Cancel' 98 | ModalResult = 2 99 | TabOrder = 0 100 | end 101 | object btnOK: TButton 102 | Left = 528 103 | Top = 6 104 | Width = 75 105 | Height = 25 106 | Caption = 'OK' 107 | Default = True 108 | TabOrder = 1 109 | OnClick = btnOKClick 110 | end 111 | end 112 | end 113 | -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.AddInOptionsHostForm.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.AddInOptionsHostForm.pas -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.Constants.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.Constants.pas -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.IDENotifier.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.IDENotifier.pas -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.IconCache.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.IconCache.pas -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.InstallerContext.pas: -------------------------------------------------------------------------------- 1 | unit DPM.IDE.InstallerContext; 2 | 3 | interface 4 | 5 | uses 6 | Spring.Collections, 7 | VSoft.CancellationToken, 8 | DPM.Core.Types, 9 | DPM.Core.Logging, 10 | DPM.Core.Dependency.Interfaces, 11 | DPM.Core.Package.Installer.Interfaces, 12 | DPM.Core.Package.InstallerContext, 13 | DPM.Core.Manifest.Interfaces, 14 | DPM.IDE.PathManager; 15 | 16 | type 17 | TDPMIDEPackageInstallerContext = class(TCorePackageInstallerContext, IPackageInstallerContext) 18 | private 19 | FPathManager : IDPMIDEPathManager; 20 | protected 21 | procedure Clear;override; 22 | procedure RemoveProject(const projectFile : string);override; 23 | function InstallDesignPackages(const cancellationToken: ICancellationToken; const projectFile : string; const platform: TDPMPlatform; const packageManifests: IDictionary) : boolean;override; 24 | public 25 | constructor Create(const logger : ILogger; const pathManager : IDPMIDEPathManager);reintroduce; 26 | end; 27 | 28 | implementation 29 | 30 | uses 31 | System.SysUtils; 32 | 33 | { TDPMIDEPackageInstallerContext } 34 | 35 | constructor TDPMIDEPackageInstallerContext.Create(const logger: ILogger; const pathManager : IDPMIDEPathManager); 36 | begin 37 | inherited Create(logger); 38 | FPathManager := pathManager; 39 | 40 | end; 41 | 42 | 43 | function TDPMIDEPackageInstallerContext.InstallDesignPackages(const cancellationToken: ICancellationToken; const projectFile : string; const platform: TDPMPlatform; const packageManifests: IDictionary): boolean; 44 | var 45 | projectGraph : IPackageReference; 46 | begin 47 | result := true; 48 | projectGraph := GetProjectGraph(projectFile, platform); 49 | if projectGraph = nil then 50 | begin 51 | Logger.Error(Format('No projectGraph recorded for : %s platform : %s',[projectFile,DPMPlatformToString(platform)])); 52 | 53 | 54 | end; 55 | 56 | 57 | 58 | end; 59 | 60 | procedure TDPMIDEPackageInstallerContext.RemoveProject(const projectFile: string); 61 | begin 62 | inherited; 63 | //unstall any unused design time packages. 64 | end; 65 | 66 | procedure TDPMIDEPackageInstallerContext.Clear; 67 | begin 68 | inherited; 69 | //uninstall any design time packages. 70 | end; 71 | 72 | end. 73 | 74 | -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.Main.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.Main.pas -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.PathManager.pas: -------------------------------------------------------------------------------- 1 | unit DPM.IDE.PathManager; 2 | 3 | interface 4 | 5 | uses 6 | System.Classes; 7 | 8 | type 9 | IDPMIDEPathManager = interface 10 | ['{31ADC6E0-7B8E-4203-A635-7D02FC4C0FC7}'] 11 | procedure RemovePath(const APath : string); 12 | procedure EnsurePath(const APath: string); 13 | end; 14 | 15 | TDPMIDEPathManager = class(TInterfacedObject, IDPMIDEPathManager) 16 | private 17 | FPaths : TStringList; 18 | protected 19 | procedure RemovePath(const APath : string); 20 | procedure EnsurePath(const APath: string); 21 | public 22 | constructor Create; 23 | destructor Destroy;override; 24 | end; 25 | 26 | implementation 27 | 28 | uses 29 | WinApi.Windows, 30 | System.SysUtils, 31 | System.StrUtils; 32 | 33 | { TDPMIDEPathManager } 34 | 35 | constructor TDPMIDEPathManager.Create; 36 | var 37 | i: Integer; 38 | begin 39 | FPaths := TStringList.Create; 40 | FPaths.Duplicates := TDuplicates.dupIgnore; 41 | FPaths.CaseSensitive := false; 42 | FPaths.Sorted := false; 43 | FPaths.Delimiter := ';'; 44 | FPaths.DelimitedText := GetEnvironmentVariable('PATH'); 45 | for i := 0 to FPaths.Count -1 do 46 | FPaths.Objects[i] := TObject(1); //set the reference count for the path entry so we don't remove ones that 47 | // that were there on startup. 48 | end; 49 | 50 | destructor TDPMIDEPathManager.Destroy; 51 | begin 52 | FPaths.Free; 53 | inherited; 54 | end; 55 | 56 | 57 | procedure SetEnvironmentVariable(const Name, Value: string); 58 | begin 59 | WinApi.Windows.SetEnvironmentVariable(PChar(Name), PChar(Value)); 60 | end; 61 | 62 | procedure TDPMIDEPathManager.EnsurePath(const APath: string); 63 | var 64 | i : integer; 65 | count : integer; 66 | begin 67 | i := FPaths.IndexOf(APath); 68 | if i = -1 then 69 | begin 70 | FPaths.InsertObject(0, APath, TObject(1)); 71 | SetEnvironmentVariable('PATH', FPaths.DelimitedText); 72 | end 73 | else 74 | begin 75 | //already there, so just increment the reference count; 76 | count := Integer(FPaths.Objects[i]); 77 | Inc(count); 78 | FPaths.Objects[i] := TObject(count); 79 | end; 80 | end; 81 | 82 | procedure TDPMIDEPathManager.RemovePath(const APath: string); 83 | var 84 | i : integer; 85 | count : integer; 86 | begin 87 | i := FPaths.IndexOf(APath); 88 | if i = -1 then 89 | exit; 90 | count := Integer(FPaths.Objects[i]); 91 | if count > 1 then 92 | begin 93 | Dec(count); 94 | FPaths.Objects[i] := TObject(count); 95 | end 96 | else 97 | begin 98 | FPaths.Delete(i); 99 | SetEnvironmentVariable('PATH', FPaths.DelimitedText); 100 | end; 101 | end; 102 | 103 | end. 104 | -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.ProjectMenu.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.ProjectMenu.pas -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.ProjectNotifier.pas: -------------------------------------------------------------------------------- 1 | unit DPM.IDE.ProjectNotifier; 2 | 3 | interface 4 | uses 5 | System.Classes, 6 | ToolsApi, 7 | DPM.IDE.Types, 8 | DPM.IDE.Logger; 9 | 10 | //not used at the moment, but the plan is to use it to detect active platform changes. 11 | 12 | type 13 | TDPMProjectNotifier = class(TInterfacedObject,IOTAProjectNotifier, IOTAModuleNotifier,IOTANotifier ) 14 | private 15 | FLogger : IDPMIDELogger; 16 | FIDENotifier : IInterface; 17 | FFileName : string; 18 | FProject : IOTAProject; 19 | FCurrentPlatform : string; 20 | protected 21 | procedure AfterSave; 22 | procedure BeforeSave; 23 | procedure Destroyed; 24 | 25 | function CheckOverwrite: Boolean; 26 | procedure Modified; 27 | procedure ModuleRemoved(const AFileName: string); 28 | procedure ModuleAdded(const AFileName: string); 29 | procedure ModuleRenamedA(const AOldFileName, ANewFileName: string); 30 | procedure ModuleRenamed(const NewName: string); 31 | procedure IOTAProjectNotifier.ModuleRenamed = ModuleRenamedA; 32 | public 33 | constructor Create(const logger : IDPMIDELogger; const ideNotifier : IInterface; const fileName : string; const project : IOTAProject); 34 | end; 35 | implementation 36 | 37 | uses 38 | System.SysUtils, 39 | DPM.IDE.IDENotifier; 40 | 41 | { TDPMProjectNotifier } 42 | 43 | procedure TDPMProjectNotifier.AfterSave; 44 | begin 45 | 46 | end; 47 | 48 | procedure TDPMProjectNotifier.BeforeSave; 49 | begin 50 | 51 | end; 52 | 53 | function TDPMProjectNotifier.CheckOverwrite: Boolean; 54 | begin 55 | result := true; 56 | end; 57 | 58 | constructor TDPMProjectNotifier.Create(const logger: IDPMIDELogger; const ideNotifier : IInterface; const fileName : string; const project : IOTAProject); 59 | begin 60 | FLogger := logger; 61 | FIDENotifier := ideNotifier; 62 | FFileName := fileName; 63 | FProject := project; 64 | FCurrentPlatform := FProject.CurrentPlatform; 65 | end; 66 | 67 | procedure TDPMProjectNotifier.Destroyed; 68 | begin 69 | FProject := nil; 70 | 71 | end; 72 | 73 | procedure TDPMProjectNotifier.Modified; 74 | begin 75 | if FCurrentPlatform <> FProject.CurrentPlatform then 76 | begin 77 | FCurrentPlatform := FProject.CurrentPlatform; 78 | (FIDENotifier as IDPMIDENotifier).ProjectActivePlatformChanged(FCurrentPlatform); 79 | end; 80 | end; 81 | 82 | procedure TDPMProjectNotifier.ModuleAdded(const AFileName: string); 83 | begin 84 | 85 | end; 86 | 87 | procedure TDPMProjectNotifier.ModuleRemoved(const AFileName: string); 88 | begin 89 | 90 | end; 91 | 92 | 93 | procedure TDPMProjectNotifier.ModuleRenamedA(const AOldFileName, ANewFileName: string); 94 | begin 95 | 96 | end; 97 | 98 | procedure TDPMProjectNotifier.ModuleRenamed(const NewName: string); 99 | var 100 | oldFileName : string; 101 | begin 102 | oldFileName := FFileName; 103 | FFileName := NewName; 104 | (FIDENotifier as IDPMIDENotifier).ProjectRenamed(oldFileName, newName); 105 | end; 106 | 107 | end. 108 | -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.ProjectStorageNotifier.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.ProjectStorageNotifier.pas -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.ProjectTreeManager.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.ProjectTreeManager.pas -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.Resources.rc: -------------------------------------------------------------------------------- 1 | //wizard splash 2 | DPMIDELOGO BITMAP "..\\images\\dpm.bmp" 3 | 4 | //packagelist default icon 5 | DPM_ICON_MISSING_SVG RCDATA "..\\images\\dpm-large.svg" 6 | 7 | // 10.4 and earlier project tree 8 | DPMLOGOBMP_16 BITMAP "..\\images\\dpm16.bmp" 9 | PLATFORM_WIN32 BITMAP "..\\images\\platform-win32.bmp" 10 | PLATFORM_MACOS BITMAP "..\\images\\platform_macos.bmp" 11 | PLATFORM_ANDRIOD BITMAP "..\\images\\platform_andriod.bmp" 12 | PLATFORM_IOS BITMAP "..\\images\\platform_ios.bmp" 13 | PLATFORM_LINUX BITMAP "..\\images\\platform_linux.bmp" 14 | 15 | //11.x and later project tree 16 | //we use the IDE's own images for platforms 17 | DPMLOGO RCDATA "..\\images\\dpm_24.png" 18 | DPMLOGO_16 RCDATA "..\\images\\dpm_16.png" 19 | DPMLOGO_24 RCDATA "..\\images\\dpm_24.png" 20 | DPMLOGO_32 RCDATA "..\\images\\dpm_32.png" 21 | DPMLOGO_48 RCDATA "..\\images\\dpm_48.png" 22 | 23 | 24 | ADD_PACKAGE_16 RCDATA "..\\images\\add_16px.png" 25 | ADD_PACKAGE_24 RCDATA "..\\images\\add_24px.png" 26 | ADD_PACKAGE_32 RCDATA "..\\images\\add_32px.png" 27 | ADD_PACKAGE_48 RCDATA "..\\images\\add_48px.png" 28 | 29 | REMOVE_PACKAGE_16 RCDATA "..\\images\\remove_16px.png" 30 | REMOVE_PACKAGE_24 RCDATA "..\\images\\remove_24px.png" 31 | REMOVE_PACKAGE_32 RCDATA "..\\images\\remove_32px.png" 32 | REMOVE_PACKAGE_48 RCDATA "..\\images\\remove_48px.png" 33 | 34 | UPGRADE_PACKAGE_16 RCDATA "..\\images\\upgrade_16px.png" 35 | UPGRADE_PACKAGE_24 RCDATA "..\\images\\upgrade_24px.png" 36 | UPGRADE_PACKAGE_32 RCDATA "..\\images\\upgrade_32px.png" 37 | UPGRADE_PACKAGE_48 RCDATA "..\\images\\upgrade_48px.png" 38 | 39 | DOWNGRADE_PACKAGE_16 RCDATA "..\\images\\downgrade_16px.png" 40 | DOWNGRADE_PACKAGE_24 RCDATA "..\\images\\downgrade_24px.png" 41 | DOWNGRADE_PACKAGE_32 RCDATA "..\\images\\downgrade_32px.png" 42 | DOWNGRADE_PACKAGE_48 RCDATA "..\\images\\downgrade_48px.png" 43 | 44 | SETTINGS_16 RCDATA "..\\images\\settings_16px.png" 45 | SETTINGS_24 RCDATA "..\\images\\settings_24px.png" 46 | SETTINGS_32 RCDATA "..\\images\\settings_32px.png" 47 | SETTINGS_48 RCDATA "..\\images\\settings_48px.png" 48 | 49 | REFRESH_16 RCDATA "..\\images\\refresh_16px.png" 50 | REFRESH_24 RCDATA "..\\images\\refresh_24px.png" 51 | REFRESH_32 RCDATA "..\\images\\refresh_32px.png" 52 | REFRESH_48 RCDATA "..\\images\\refresh_48px.png" 53 | 54 | INFO_16 RCDATA "..\\images\\info_16px.png" 55 | INFO_24 RCDATA "..\\images\\info_24px.png" 56 | INFO_32 RCDATA "..\\images\\info_32px.png" 57 | INFO_48 RCDATA "..\\images\\info_48px.png" 58 | 59 | CANCEL_16 RCDATA "..\\images\\cancel_16px.png" 60 | CANCEL_24 RCDATA "..\\images\\cancel_24px.png" 61 | CANCEL_32 RCDATA "..\\images\\cancel_32px.png" 62 | CANCEL_48 RCDATA "..\\images\\cancel_48px.png" 63 | 64 | CANCEL_HOT_16 RCDATA "..\\images\\cancel_hot_16px.png" 65 | CANCEL_HOT_24 RCDATA "..\\images\\cancel_hot_24px.png" 66 | CANCEL_HOT_32 RCDATA "..\\images\\cancel_hot_32px.png" 67 | CANCEL_HOT_48 RCDATA "..\\images\\cancel_hot_48px.png" 68 | 69 | MOVE_UP_16 RCDATA "..\\images\\move-up_16px.png" 70 | MOVE_UP_24 RCDATA "..\\images\\move-up_24px.png" 71 | MOVE_UP_32 RCDATA "..\\images\\move-up_32px.png" 72 | MOVE_UP_48 RCDATA "..\\images\\move-up_48px.png" 73 | 74 | MOVE_DOWN_16 RCDATA "..\\images\\move-down_16px.png" 75 | MOVE_DOWN_24 RCDATA "..\\images\\move-down_24px.png" 76 | MOVE_DOWN_32 RCDATA "..\\images\\move-down_32px.png" 77 | MOVE_DOWN_48 RCDATA "..\\images\\move-down_48px.png" 78 | 79 | OPEN_16 RCDATA "..\\images\\open_16px.png" 80 | OPEN_24 RCDATA "..\\images\\open_24px.png" 81 | OPEN_32 RCDATA "..\\images\\open_32px.png" 82 | OPEN_48 RCDATA "..\\images\\open_48px.png" 83 | -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.Resources.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.Resources.res -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.Types.pas: -------------------------------------------------------------------------------- 1 | {***************************************************************************} 2 | { } 3 | { Delphi Package Manager - DPM } 4 | { } 5 | { Copyright � 2019 Vincent Parrett and contributors } 6 | { } 7 | { vincent@finalbuilder.com } 8 | { https://www.finalbuilder.com } 9 | { } 10 | { } 11 | {***************************************************************************} 12 | { } 13 | { Licensed under the Apache License, Version 2.0 (the "License"); } 14 | { you may not use this file except in compliance with the License. } 15 | { You may obtain a copy of the License at } 16 | { } 17 | { http://www.apache.org/licenses/LICENSE-2.0 } 18 | { } 19 | { Unless required by applicable law or agreed to in writing, software } 20 | { distributed under the License is distributed on an "AS IS" BASIS, } 21 | { WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. } 22 | { See the License for the specific language governing permissions and } 23 | { limitations under the License. } 24 | { } 25 | {***************************************************************************} 26 | 27 | unit DPM.IDE.Types; 28 | 29 | interface 30 | 31 | uses 32 | DPM.Core.Constants, 33 | DPM.Core.Types; 34 | 35 | {$SCOPEDENUMS ON} 36 | 37 | type 38 | TDPMPackageStatus = (NotInstalled, 39 | Installed, //latest version installed. 40 | UpdateAvailable //installed but not on the latest version 41 | ); 42 | 43 | TDPMEditViewMode = (vmProject, vmGroup); 44 | 45 | TDPMSearchOption = (IncludePrerelease, IncludeCommercial, IncludeTrial); 46 | 47 | TDPMSearchOptions = set of TDPMSearchOption; 48 | 49 | 50 | const 51 | //The current IDE version to TCompilerVersion. 52 | {$IFDEF VER370}IDECompilerVersion = TCompilerVersion.RS13_0; {$ENDIF} 53 | {$IFDEF VER360}IDECompilerVersion = TCompilerVersion.RS12_0; {$ENDIF} 54 | {$IFDEF VER350}IDECompilerVersion = TCompilerVersion.RS11_0; {$ENDIF} 55 | {$IFDEF VER340}IDECompilerVersion = TCompilerVersion.RS10_4; {$ENDIF} 56 | {$IFDEF VER330}IDECompilerVersion = TCompilerVersion.RS10_3; {$ENDIF} 57 | {$IFDEF VER320}IDECompilerVersion = TCompilerVersion.RS10_2; {$ENDIF} 58 | {$IFDEF VER310}IDECompilerVersion = TCompilerVersion.RS10_1; {$ENDIF} 59 | {$IFDEF VER300}IDECompilerVersion = TCompilerVersion.RS10_0; {$ENDIF} 60 | {$IFDEF VER290}IDECompilerVersion = TCompilerVersion.RSXE8; {$ENDIF} 61 | {$IFDEF VER280}IDECompilerVersion = TCompilerVersion.RSXE7; {$ENDIF} 62 | {$IFDEF VER270}IDECompilerVersion = TCompilerVersion.RSXE6; {$ENDIF} 63 | {$IFDEF VER260}IDECompilerVersion = TCompilerVersion.RSXE5; {$ENDIF} 64 | {$IFDEF VER250}IDECompilerVersion = TCompilerVersion.RSXE4; {$ENDIF} 65 | {$IFDEF VER240}IDECompilerVersion = TCompilerVersion.RSXE3; {$ENDIF} 66 | {$IFDEF VER230}IDECompilerVersion = TCompilerVersion.RSXE2; {$ENDIF} 67 | {$IFDEF VER220}IDECompilerVersion = TCompilerVersion.RSXE; {$ENDIF} 68 | {$IFDEF VER210}IDECompilerVersion = TCompilerVersion.RS2010; {$ENDIF} 69 | 70 | cDPMIDEOptionsFileName = 'dpm-ide.config'; 71 | cDPMIDEDefaultOptionsFile = cDefaultDPMFolder + '\' + cDPMIDEOptionsFileName; 72 | 73 | implementation 74 | 75 | end. 76 | 77 | -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.Utils.pas: -------------------------------------------------------------------------------- 1 | unit DPM.IDE.Utils; 2 | 3 | interface 4 | 5 | uses 6 | System.classes, 7 | Vcl.Controls; 8 | 9 | // Find a control that is a child of Application.Mainform or it's children 10 | function FindIDEControl(const className : string; const controlName : string) : TControl; 11 | 12 | implementation 13 | 14 | uses 15 | System.SysUtils, 16 | Vcl.Forms; 17 | 18 | function DoFindIDEControl(const parentControl : TControl; const className : string; const controlName : string) : TControl; 19 | var 20 | i : integer; 21 | begin 22 | result := nil; 23 | if SameText(parentControl.ClassName, className) and SameText(parentControl.Name, controlName) then 24 | exit(parentControl); 25 | 26 | if not (parentControl is TWinControl) then 27 | exit; 28 | 29 | //TWinControls have children, so recurse in to check those too. 30 | for i := 0 to TWinControl(parentControl).ControlCount - 1 do 31 | begin 32 | result := DoFindIDEControl(TWinControl(parentControl).Controls[i], className, controlName); 33 | if result <> nil then 34 | break; 35 | end; 36 | 37 | end; 38 | 39 | function FindIDEControl(const className : string; const controlName : string) : TControl; 40 | begin 41 | result := DoFindIDEControl(Application.MainForm, className, controlName); 42 | end; 43 | 44 | end. 45 | -------------------------------------------------------------------------------- /Source/IDE/DPM.IDE.VSTProxy.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/DPM.IDE.VSTProxy.pas -------------------------------------------------------------------------------- /Source/IDE/DPMIDE.inc: -------------------------------------------------------------------------------- 1 | {$IF CompilerVersion >= 24.0 } 2 | {$LEGACYIFEND ON} 3 | {$DEFINE STYLEELEMENTS} 4 | {$IFEND} 5 | 6 | {$IF CompilerVersion >= 32.0} 7 | // {$IF Declared(IOTAIDEThemingServices250)} //doesn't work in 10.2 when it should 8 | {$DEFINE THEMESERVICES} 9 | // {$IFEND} 10 | {$IFEND} 11 | 12 | {$IF CompilerVersion > 33.0} //10.4 or later 13 | {$DEFINE USEIMAGECOLLECTION} 14 | {$DEFINE USEBUTTONIMAGELIST} 15 | {$IFEND} 16 | 17 | 18 | -------------------------------------------------------------------------------- /Source/IDE/EditorView/DPM.IDE.ActivityIndicator.pas: -------------------------------------------------------------------------------- 1 | unit DPM.IDE.ActivityIndicator; 2 | 3 | interface 4 | 5 | type 6 | TActivityIndicator = record 7 | private 8 | FFrameIndex : integer; 9 | function GetCurrentFrame : string; 10 | function GetIsActive : boolean; 11 | public 12 | procedure Step; 13 | procedure Stop; 14 | property CurrentFrame : string read GetCurrentFrame; 15 | property IsActive : boolean read GetIsActive; 16 | 17 | end; 18 | 19 | 20 | 21 | implementation 22 | 23 | const activityIndicatorFrames : Array[0..7] of string = ( 24 | '⣷', 25 | '⣯', 26 | '⣟', 27 | '⡿', 28 | '⢿', 29 | '⣻', 30 | '⣽', 31 | '⣾' 32 | ); 33 | 34 | { TActivityIndicator } 35 | 36 | function TActivityIndicator.GetCurrentFrame: string; 37 | begin 38 | if FFrameIndex > -1 then 39 | result := activityIndicatorFrames[FFrameIndex] 40 | else 41 | result := ''; 42 | end; 43 | 44 | function TActivityIndicator.GetIsActive: boolean; 45 | begin 46 | result := FFrameIndex <> -1; 47 | end; 48 | 49 | procedure TActivityIndicator.Step; 50 | begin 51 | if (FFrameIndex < Length(activityIndicatorFrames) - 1 ) then 52 | Inc(FFrameIndex) 53 | else 54 | FFrameIndex := 0; 55 | end; 56 | 57 | procedure TActivityIndicator.Stop; 58 | begin 59 | FFrameIndex := -1; 60 | end; 61 | 62 | 63 | 64 | 65 | end. 66 | -------------------------------------------------------------------------------- /Source/IDE/EditorView/DPM.IDE.Details.Interfaces.pas: -------------------------------------------------------------------------------- 1 | unit DPM.IDE.Details.Interfaces; 2 | 3 | interface 4 | 5 | uses 6 | Vcl.Themes, 7 | ToolsApi, 8 | Spring.Container, 9 | Spring.Collections, 10 | VSoft.Awaitable, 11 | DPM.Core.Types, 12 | DPM.Core.Configuration.Interfaces, 13 | DPM.Core.Package.Interfaces, 14 | DPM.Core.Options.Search, 15 | DPM.Core.Dependency.Interfaces, 16 | DPM.IDE.IconCache, 17 | DPM.IDE.Types; 18 | 19 | {$I ..\DPMIDE.inc} 20 | 21 | 22 | type 23 | //implemented by the EditorViewFrame 24 | //TODO : This is far to convoluted - we should not need to use options here. 25 | // we never actually want more than 1 searchresult so this needs to change to 26 | // just get the get the package metadata - which might actually come from the 27 | // package cache! 28 | IDetailsHost = interface 29 | ['{4FBB9E7E-886A-4B7D-89FF-FA5DBC9D93FD}'] 30 | 31 | function GetPackageReferences : IPackageReference; 32 | procedure BeginInstall(const projectCount : integer); 33 | procedure PackageInstalled; 34 | procedure EndInstall; 35 | 36 | end; 37 | 38 | IPackageDetailsView = interface 39 | ['{B4B48A9A-D04A-4316-B3FB-B03E4BD763F3}'] 40 | procedure Init(const container : TContainer; const iconCache : TDPMIconCache; const config : IConfiguration; const host : IDetailsHost; const projectOrGroup : IOTAProject); 41 | procedure SetPackage(const package : IPackageSearchResultItem; const preRelease : boolean; const fetchVersions : boolean = true); 42 | procedure SetPlatform(const platform : TDPMPlatform); 43 | procedure ViewClosing; 44 | procedure ProjectReloaded; 45 | procedure ThemeChanged(const StyleServices : TCustomStyleServices {$IFDEF THEMESERVICES}; const ideThemeSvc : IOTAIDEThemingServices{$ENDIF}); 46 | end; 47 | 48 | implementation 49 | 50 | end. 51 | -------------------------------------------------------------------------------- /Source/IDE/EditorView/DPM.IDE.EditorView.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/EditorView/DPM.IDE.EditorView.pas -------------------------------------------------------------------------------- /Source/IDE/EditorView/DPM.IDE.EditorViewFrame.dfm: -------------------------------------------------------------------------------- 1 | object DPMEditViewFrame: TDPMEditViewFrame 2 | Left = 0 3 | Top = 0 4 | Width = 1010 5 | Height = 581 6 | Color = clBtnFace 7 | ParentBackground = False 8 | ParentColor = False 9 | TabOrder = 0 10 | object ContentPanel: TPanel 11 | Left = 0 12 | Top = 0 13 | Width = 1010 14 | Height = 581 15 | Align = alClient 16 | BevelEdges = [beTop] 17 | BevelOuter = bvNone 18 | Caption = 'ContentPanel' 19 | Constraints.MinWidth = 320 20 | ParentColor = True 21 | ShowCaption = False 22 | TabOrder = 0 23 | object Splitter2: TSplitter 24 | Left = 502 25 | Top = 0 26 | Width = 8 27 | Height = 581 28 | Align = alRight 29 | MinSize = 300 30 | ResizeStyle = rsUpdate 31 | end 32 | object PackageListPanel: TPanel 33 | Left = 0 34 | Top = 0 35 | Width = 502 36 | Height = 581 37 | Align = alClient 38 | BevelEdges = [beRight] 39 | BevelOuter = bvNone 40 | Caption = 'PackageListPanel' 41 | ParentBackground = False 42 | ParentColor = True 43 | ShowCaption = False 44 | TabOrder = 0 45 | end 46 | object DetailPanel: TPanel 47 | Left = 510 48 | Top = 0 49 | Width = 500 50 | Height = 581 51 | Align = alRight 52 | BevelEdges = [beRight] 53 | BevelOuter = bvNone 54 | Caption = 'DetailPanel' 55 | Constraints.MinWidth = 400 56 | ParentBackground = False 57 | ParentColor = True 58 | ShowCaption = False 59 | TabOrder = 1 60 | inline PackageDetailsFrame: TPackageDetailsFrame 61 | Left = 0 62 | Top = 0 63 | Width = 500 64 | Height = 581 65 | Align = alClient 66 | Color = clBtnFace 67 | ParentBackground = False 68 | ParentColor = False 69 | TabOrder = 0 70 | inherited sbPackageDetails: TScrollBox 71 | Width = 500 72 | Height = 581 73 | inherited DetailsSplitter: TSplitter 74 | Width = 500 75 | end 76 | inherited pnlPackageId: TPanel 77 | Width = 500 78 | end 79 | inherited pnlGridHost: TPanel 80 | Width = 500 81 | inherited pnlVersion: TPanel 82 | Width = 500 83 | inherited btnInstallAll: TSpeedButton 84 | Left = 395 85 | end 86 | inherited btnUpgradeAll: TSpeedButton 87 | Left = 431 88 | end 89 | inherited btnUninstallAll: TSpeedButton 90 | Left = 467 91 | end 92 | end 93 | end 94 | end 95 | end 96 | end 97 | end 98 | object ActivityTimer: TTimer 99 | Enabled = False 100 | Interval = 200 101 | OnTimer = ActivityTimerTimer 102 | Left = 320 103 | Top = 480 104 | end 105 | end 106 | -------------------------------------------------------------------------------- /Source/IDE/EditorView/DPM.IDE.EditorViewManager.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/EditorView/DPM.IDE.EditorViewManager.pas -------------------------------------------------------------------------------- /Source/IDE/EditorView/DPM.IDE.PackageDetailsFrame.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/EditorView/DPM.IDE.PackageDetailsFrame.pas -------------------------------------------------------------------------------- /Source/IDE/Logging/DPM.IDE.Logger.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/IDE/Logging/DPM.IDE.Logger.pas -------------------------------------------------------------------------------- /Source/IDE/Logging/DPM.IDE.MessageForm.dfm: -------------------------------------------------------------------------------- 1 | object DPMMessageForm: TDPMMessageForm 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu] 5 | Caption = 'DPM Package Manager' 6 | ClientHeight = 425 7 | ClientWidth = 879 8 | Color = clBtnFace 9 | Constraints.MinHeight = 300 10 | Constraints.MinWidth = 575 11 | Font.Charset = DEFAULT_CHARSET 12 | Font.Color = clWindowText 13 | Font.Height = -11 14 | Font.Name = 'Tahoma' 15 | Font.Style = [] 16 | Position = poMainFormCenter 17 | OnHide = FormHide 18 | OnShow = FormShow 19 | DesignSize = ( 20 | 879 21 | 425) 22 | TextHeight = 13 23 | object lblClosing: TLabel 24 | Left = 144 25 | Top = 394 26 | Width = 46 27 | Height = 13 28 | Anchors = [akLeft, akBottom] 29 | Caption = 'Closing...' 30 | Visible = False 31 | end 32 | object btnCancel: TButton 33 | Left = 758 34 | Top = 388 35 | Width = 89 36 | Height = 28 37 | Action = actCanCancel 38 | Anchors = [akRight, akBottom] 39 | TabOrder = 0 40 | end 41 | object btnCopy: TButton 42 | Left = 8 43 | Top = 388 44 | Width = 81 45 | Height = 28 46 | Action = actCopyLog 47 | Anchors = [akLeft, akBottom] 48 | TabOrder = 2 49 | end 50 | object btnClose: TButton 51 | Left = 652 52 | Top = 389 53 | Width = 89 54 | Height = 28 55 | Anchors = [akRight, akBottom] 56 | Caption = 'Close' 57 | TabOrder = 1 58 | OnClick = btnCloseClick 59 | end 60 | object lblDontClose: TLinkLabel 61 | Left = 216 62 | Top = 393 63 | Width = 95 64 | Height = 19 65 | Anchors = [akLeft, akBottom] 66 | Caption = '[ Cancel closing ]' 67 | TabOrder = 3 68 | UseVisualStyle = True 69 | Visible = False 70 | OnLinkClick = lblDontCloseLinkClick 71 | end 72 | object ActionList1: TActionList 73 | OnUpdate = ActionList1Update 74 | Left = 312 75 | Top = 312 76 | object actCanCancel: TAction 77 | Caption = 'Cancel' 78 | ShortCut = 27 79 | OnExecute = actCanCancelExecute 80 | end 81 | object actCopyLog: TAction 82 | Caption = 'Copy' 83 | OnExecute = actCopyLogExecute 84 | end 85 | end 86 | object ClosingInTimer: TTimer 87 | Enabled = False 88 | OnTimer = ClosingInTimerTimer 89 | Left = 40 90 | Top = 312 91 | end 92 | end 93 | -------------------------------------------------------------------------------- /Source/SVG/GDIPOBJ2.pas: -------------------------------------------------------------------------------- 1 | { *****************************************************************} 2 | { Added Support for RoundRect (GraphicsPath + TGPGraphics) } 3 | { } 4 | { date : 05-11-2006 } 5 | { } 6 | { email : martin.walter@winningcubed.de } 7 | { } 8 | { *****************************************************************} 9 | unit GDIPOBJ2; 10 | 11 | interface 12 | 13 | uses 14 | Winapi.GDIPAPI, Winapi.GDIPOBJ; 15 | 16 | type 17 | TGPGraphicsPath2 = class(TGPGraphicsPath) 18 | public 19 | function AddRoundRect(Rect: TGPRectF; RX, RY: Single): TStatus; overload; 20 | function AddRoundRect(X, Y, Width, Height, RX, RY: Single): TStatus; overload; 21 | function Clone: TGPGraphicsPath2; 22 | end; 23 | 24 | implementation 25 | 26 | { TGPGraphicsPath2 } 27 | 28 | function TGPGraphicsPath2.AddRoundRect(Rect: TGPRectF; RX, RY: Single): TStatus; 29 | begin 30 | Result := AddRoundRect(Rect.X, Rect.Y, Rect.Width, Rect.Height, RX, RY); 31 | end; 32 | 33 | function TGPGraphicsPath2.AddRoundRect(X, Y, Width, Height, RX, RY: Single) : TStatus; 34 | begin 35 | Result := AddLine(X + RX, Y, X + Width - RX, Y); 36 | if Result <> OK then 37 | Exit; 38 | Result := AddArc(X + Width - 2 * RX, Y, 2 * RX, 2 * RY, 270, 90); 39 | if Result <> OK then 40 | Exit; 41 | 42 | Result := AddLine(X + Width, Y + RY,X + Width, Y + Height - RY); 43 | if Result <> OK then 44 | Exit; 45 | Result := AddArc(X + Width - 2 * RX, Y + Height - 2 * RY, 2 * RX, 2 * RY, 0, 90); 46 | if Result <> OK then 47 | Exit; 48 | 49 | Result := AddLine(X + Width - RX, Y + Height, X + RX, Y + Height); 50 | if Result <> OK then 51 | Exit; 52 | Result := AddArc(X, Y + Height - 2 * RY, 2 * RX, 2 * RY, 90, 90); 53 | if Result <> OK then 54 | Exit; 55 | 56 | Result := AddLine(X, Y + Height - RY, X, Y + RY); 57 | if Result <> OK then 58 | Exit; 59 | Result := AddArc(X, Y, 2 * RX, 2 * RY, 180, 90); 60 | if Result <> OK then 61 | Exit; 62 | Result := CloseFigure; 63 | end; 64 | 65 | function TGPGraphicsPath2.Clone: TGPGraphicsPath2; 66 | var 67 | ClonePath: GpPath; 68 | begin 69 | Clonepath := nil; 70 | SetStatus(GdipClonePath(nativePath, Clonepath)); 71 | result := TGPGraphicsPath2.Create(ClonePath); 72 | end; 73 | 74 | end. 75 | -------------------------------------------------------------------------------- /Source/SVG/SVGInterfaces.pas: -------------------------------------------------------------------------------- 1 | {----------------------------------------------------------------------------- 2 | Unit Name: SVGInterfaces 3 | Author: PyScripter 4 | Purpose: Inteface-based access to Svg parsing and drawing 5 | History: 6 | -----------------------------------------------------------------------------} 7 | 8 | unit SVGInterfaces; 9 | 10 | interface 11 | 12 | Uses 13 | Winapi.Windows, 14 | System.Types, 15 | System.UITypes, 16 | System.SysUtils, 17 | System.Classes; 18 | 19 | const 20 | SVG_INHERIT_COLOR = TColors.SysDefault; 21 | SVG_NONE_COLOR = TColors.SysNone; 22 | 23 | type 24 | // Abstraction of an SVG document 25 | ISVG = interface 26 | ['{70F71B0C-95FA-4D2D-84F6-481BD871B20B}'] 27 | // property access methods 28 | function GetWidth: Single; 29 | function GetHeight: Single; 30 | function GetOpacity: Single; 31 | procedure SetOpacity(const Opacity: Single); 32 | function GetGrayScale: Boolean; 33 | procedure SetGrayScale(const IsGrayScale: Boolean); 34 | function GetFixedColor: TColor; 35 | procedure SetFixedColor(const Color: TColor); 36 | function GetSource: string; 37 | procedure SetSource(const ASource: string); 38 | // procedures and functions 39 | function IsEmpty: Boolean; 40 | procedure Clear; 41 | procedure SaveToStream(Stream: TStream); 42 | procedure SaveToFile(const FileName: string); 43 | procedure LoadFromStream(Stream: TStream); 44 | procedure LoadFromFile(const FileName: string); 45 | procedure PaintTo(DC: HDC; R: TRectF; KeepAspectRatio: Boolean = True); 46 | // properties 47 | property Width: Single read GetWidth; 48 | property Height: Single read GetHeight; 49 | property Opacity: Single read GetOpacity write SetOpacity; 50 | property GrayScale: Boolean read GetGrayScale write SetGrayScale; 51 | property FixedColor: TColor read GetFixedColor write SetFixedColor; 52 | property Source: string read GetSource write SetSource; 53 | end; 54 | 55 | 56 | // Factory type 57 | ISVGFactory = interface 58 | ['{D81A7410-F0DB-457E-BA9D-480A335A1337}'] 59 | // Factory method 60 | function NewSvg: ISVG; 61 | end; 62 | 63 | function GlobalSVGFactory: ISVGFactory; 64 | procedure SetGlobalSVGFactory(const SVGFactory : ISVGFactory); 65 | 66 | implementation 67 | 68 | //{$INCLUDE SVGIconImageList.inc} 69 | 70 | Uses 71 | PasSVGFactory; 72 | 73 | Var 74 | FGlobalSVGFactory: ISVGFactory; 75 | 76 | function GlobalSVGFactory: ISVGFactory; 77 | begin 78 | if not Assigned(FGlobalSVGFactory) then 79 | begin 80 | FGlobalSVGFactory := GetPasSVGFactory; 81 | end; 82 | Result := FGlobalSVGFactory; 83 | end; 84 | 85 | procedure SetGlobalSVGFactory(const SVGFactory : ISVGFactory); 86 | begin 87 | FGlobalSVGFactory := SVGFactory; 88 | end; 89 | 90 | end. 91 | -------------------------------------------------------------------------------- /Source/Tests/DPM.Core.Tests.PackageIdentity.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Tests.PackageIdentity; 2 | 3 | interface 4 | 5 | uses 6 | DPM.Core.Types, 7 | DPM.Core.Logging, 8 | DUnitX.TestFramework; 9 | 10 | type 11 | TPackageIdentityTestFixtue = class 12 | private 13 | FLogger : ILogger; 14 | public 15 | 16 | [SetupFixture] 17 | procedure FixtureSetup; 18 | 19 | //same thing failed randomly at runtime with a regex error 20 | //makes no sense. 21 | [Test] 22 | [TestCase('Spring4D.Core', 'Spring4D.Core-12.0-Win32-2.0.1')] 23 | procedure TestCreateFromString(const filename : string); 24 | end; 25 | 26 | implementation 27 | 28 | uses 29 | TestLogger, 30 | DPM.Core.Package.Interfaces, 31 | DPM.Core.Package.Classes; 32 | 33 | 34 | { TPackageIdentityTestFixtue } 35 | 36 | procedure TPackageIdentityTestFixtue.FixtureSetup; 37 | begin 38 | FLogger := TTestLogger.Create; 39 | end; 40 | 41 | procedure TPackageIdentityTestFixtue.TestCreateFromString(const filename: string); 42 | var 43 | identity : IPackageIdentity; 44 | begin 45 | 46 | Assert.IsTrue(TPackageIdentity.TryCreateFromString(FLogger, fileName, 'test', identity)); 47 | 48 | end; 49 | 50 | 51 | 52 | initialization 53 | TDUnitX.RegisterTestFixture(TPackageIdentityTestFixtue); 54 | end. 55 | -------------------------------------------------------------------------------- /Source/Tests/DPM.Core.Tests.PathUtils.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Tests.PathUtils; 2 | 3 | interface 4 | 5 | uses 6 | DUnitX.TestFramework; 7 | 8 | type 9 | [TestFixture] 10 | TPathUtilsTests = class 11 | public 12 | [Test] 13 | [TestCase('Simple', 'c:\test\foo\..\bar,c:\test\bar')] 14 | [TestCase('SimpleDot', 'c:\test\foo\.\bar,c:\test\foo\bar')] 15 | [TestCase('UNC', '\\test\foo\..\bar,\\test\bar')] 16 | [TestCase('Unrooted', 'test\foo\..\bar,test\bar')] 17 | procedure TestCompressRelativePath(const input, expected : string); 18 | 19 | [Test] 20 | [TestCase('UNCBase1', '\\test,\foo\..\bar,\\test\bar')] 21 | [TestCase('UNCBase2', '\\test,foo\..\bar,\\test\bar')] 22 | [TestCase('UNCBase3', '\\test\,foo\..\bar,\\test\bar')] 23 | [TestCase('UNCBase4', '\\test\,\foo\..\bar,\\test\bar')] 24 | [TestCase('Rooted', 'c:\test\,foo\..\bar,c:\test\bar')] 25 | procedure TestCompressRelativePathWithBase(const base, input, expected : string); 26 | 27 | [Test] 28 | procedure TestIsRelativePath; 29 | 30 | end; 31 | 32 | implementation 33 | 34 | uses 35 | System.SysUtils, 36 | DPM.Core.Utils.Path; 37 | 38 | { TPathUtilsTests } 39 | 40 | procedure TPathUtilsTests.TestCompressRelativePath(const input, expected: string); 41 | var 42 | actual : string; 43 | begin 44 | actual := TPathUtils.CompressRelativePath(input); 45 | Assert.AreEqual(expected, actual); 46 | end; 47 | 48 | procedure TPathUtilsTests.TestCompressRelativePathWithBase(const base, input, expected: string); 49 | var 50 | actual : string; 51 | begin 52 | actual := TPathUtils.CompressRelativePath(Trim(base), Trim(input)); 53 | Assert.AreEqual(Trim(expected), actual); 54 | end; 55 | 56 | function IsRelativePath2(const Path: string): Boolean; 57 | var 58 | L: Integer; 59 | begin 60 | L := Length(Path); 61 | Result := (L > 0) and (Path[1] <> PathDelim) 62 | {$IFDEF MSWINDOWS}and (L > 1) and (Path[2] <> ':'){$ENDIF MSWINDOWS}; 63 | end; 64 | 65 | procedure TPathUtilsTests.TestIsRelativePath; 66 | begin 67 | // Assert.IsTrue((IsRelativePath2('\\..\test'))); 68 | Assert.IsFalse((TPathUtils.IsRelativePath('\\..\test'))); 69 | end; 70 | 71 | initialization 72 | TDUnitX.RegisterTestFixture(TPathUtilsTests); 73 | 74 | end. 75 | -------------------------------------------------------------------------------- /Source/Tests/DPM.Core.Tests.Spec.Reader.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Tests/DPM.Core.Tests.Spec.Reader.pas -------------------------------------------------------------------------------- /Source/Tests/DPM.Core.Tests.Types.pas: -------------------------------------------------------------------------------- 1 | unit DPM.Core.Tests.Types; 2 | 3 | interface 4 | 5 | uses 6 | DPM.Core.Types, 7 | DUnitX.TestFramework; 8 | 9 | type 10 | {$M+} 11 | [TestFixture] 12 | TCoreTypesTests = class 13 | 14 | public 15 | // [SetupFixture] 16 | // procedure FixtureSetup; 17 | // 18 | // [TearDownFixture] 19 | // procedure FixtureTearDown; 20 | [Test] 21 | [TestCase('XE2', 'XE2')] 22 | [TestCase('XE3', 'XE3')] 23 | [TestCase('XE4', 'XE4')] 24 | [TestCase('XE5', 'XE5')] 25 | [TestCase('XE6', 'XE6')] 26 | [TestCase('XE7', 'XE7')] 27 | [TestCase('XE8', 'XE8')] 28 | [TestCase('10.0', '10.0')] 29 | [TestCase('10.1', '10.1')] 30 | [TestCase('10.2', '10.2')] 31 | [TestCase('10.3', '10.3')] 32 | [TestCase('10.4', '10.4')] 33 | procedure TestStringToCompiler(const value :string); 34 | end; 35 | 36 | implementation 37 | 38 | { TCoreTypesTests } 39 | 40 | procedure TCoreTypesTests.TestStringToCompiler(const value :string); 41 | var 42 | compilerVersion :TCompilerVersion; 43 | begin 44 | compilerVersion := StringToCompilerVersion(value); 45 | Assert.AreEqual(value, CompilerToString(compilerVersion)); 46 | end; 47 | 48 | initialization 49 | TDUnitX.RegisterTestFixture(TCoreTypesTests); 50 | 51 | end. 52 | 53 | -------------------------------------------------------------------------------- /Source/Tests/DependencyVersionTests.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Tests/DependencyVersionTests.pas -------------------------------------------------------------------------------- /Source/Tests/TargetPlatformTests.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/Tests/TargetPlatformTests.pas -------------------------------------------------------------------------------- /Source/Tests/TestLogger.pas: -------------------------------------------------------------------------------- 1 | unit TestLogger; 2 | 3 | interface 4 | 5 | uses 6 | DPM.Core.Types, 7 | DPM.Core.Logging; 8 | 9 | type 10 | TTestLogger = class(TInterfacedObject, ILogger) 11 | protected 12 | procedure Debug(const data: string); 13 | procedure Error(const data: string); 14 | procedure Information(const data: string; const important : boolean = false); 15 | procedure Success(const data: string; const important : boolean = false); 16 | procedure Verbose(const data: string; const important : boolean = false); 17 | procedure Warning(const data: string; const important : boolean = false); 18 | procedure Clear; 19 | procedure NewLine; 20 | 21 | function GetVerbosity : TVerbosity; 22 | procedure SetVerbosity(const value : TVerbosity); 23 | 24 | end; 25 | 26 | implementation 27 | 28 | { TTestLogger } 29 | 30 | procedure TTestLogger.Clear; 31 | begin 32 | 33 | end; 34 | 35 | procedure TTestLogger.Debug(const data: string); 36 | begin 37 | 38 | end; 39 | 40 | procedure TTestLogger.Error(const data: string); 41 | begin 42 | 43 | end; 44 | 45 | function TTestLogger.GetVerbosity: TVerbosity; 46 | begin 47 | result := TVerbosity.Normal; //just to shut the compiler up. 48 | end; 49 | 50 | procedure TTestLogger.Information(const data: string; const important : boolean); 51 | begin 52 | 53 | end; 54 | 55 | procedure TTestLogger.NewLine; 56 | begin 57 | /// 58 | end; 59 | 60 | procedure TTestLogger.SetVerbosity(const value: TVerbosity); 61 | begin 62 | 63 | end; 64 | 65 | procedure TTestLogger.Success(const data: string; const important: boolean); 66 | begin 67 | 68 | end; 69 | 70 | procedure TTestLogger.Verbose(const data: string; const important : boolean); 71 | begin 72 | 73 | end; 74 | 75 | procedure TTestLogger.Warning(const data: string; const important : boolean); 76 | begin 77 | 78 | end; 79 | 80 | end. 81 | -------------------------------------------------------------------------------- /Source/dpm-103.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {0AB3D6DE-F1E5-4E65-AE1A-CC0F664BE235} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | Default.Personality.12 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Source/dpm-104.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {AD0E587D-1B87-4605-8D09-480B22A09CD7} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | Default.Personality.12 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Source/dpm.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {04965F1A-39DC-4A87-8AD7-F20D4F935A9D} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Default.Personality.12 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /Source/dpm.prjmgc: -------------------------------------------------------------------------------- 1 | [Settings] 2 | AutoLibSuffix=0 3 | ClearChildAppSettings=0 4 | ClearChildPackageSettings=0 5 | ClearChildVersionInfo=1 6 | NormalizeDproj=1 7 | SplitDproj=0 8 | EnableMissingPlatforms=0 9 | RemoveUnusedPlatforms=1 10 | RefreshFormType=0 11 | RemoveExcludedPackages=1 12 | RemoveDeployment=1 13 | RemoveUWP=0 14 | RemoveExplicits=0 15 | 16 | -------------------------------------------------------------------------------- /Source/dpmManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Source/images/Refresh16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/Refresh16.png -------------------------------------------------------------------------------- /Source/images/add_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/add_16px.png -------------------------------------------------------------------------------- /Source/images/add_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/add_24px.png -------------------------------------------------------------------------------- /Source/images/add_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/add_32px.png -------------------------------------------------------------------------------- /Source/images/add_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/add_48px.png -------------------------------------------------------------------------------- /Source/images/cancel_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/cancel_16px.png -------------------------------------------------------------------------------- /Source/images/cancel_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/cancel_24px.png -------------------------------------------------------------------------------- /Source/images/cancel_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/cancel_32px.png -------------------------------------------------------------------------------- /Source/images/cancel_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/cancel_48px.png -------------------------------------------------------------------------------- /Source/images/cancel_hot_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/cancel_hot_16px.png -------------------------------------------------------------------------------- /Source/images/cancel_hot_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/cancel_hot_24px.png -------------------------------------------------------------------------------- /Source/images/cancel_hot_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/cancel_hot_32px.png -------------------------------------------------------------------------------- /Source/images/cancel_hot_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/cancel_hot_48px.png -------------------------------------------------------------------------------- /Source/images/downgrade_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/downgrade_16px.png -------------------------------------------------------------------------------- /Source/images/downgrade_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/downgrade_24px.png -------------------------------------------------------------------------------- /Source/images/downgrade_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/downgrade_32px.png -------------------------------------------------------------------------------- /Source/images/downgrade_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/downgrade_48px.png -------------------------------------------------------------------------------- /Source/images/dpm-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/dpm-large.png -------------------------------------------------------------------------------- /Source/images/dpm-large.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Source/images/dpm.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/dpm.bmp -------------------------------------------------------------------------------- /Source/images/dpm.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/dpm.ico -------------------------------------------------------------------------------- /Source/images/dpm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/dpm.png -------------------------------------------------------------------------------- /Source/images/dpm16.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/dpm16.bmp -------------------------------------------------------------------------------- /Source/images/dpm32light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/dpm32light.png -------------------------------------------------------------------------------- /Source/images/dpm_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/dpm_16.png -------------------------------------------------------------------------------- /Source/images/dpm_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/dpm_24.png -------------------------------------------------------------------------------- /Source/images/dpm_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/dpm_32.png -------------------------------------------------------------------------------- /Source/images/dpm_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/dpm_48.png -------------------------------------------------------------------------------- /Source/images/freeicons.io/about128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/freeicons.io/about128.png -------------------------------------------------------------------------------- /Source/images/freeicons.io/about16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/freeicons.io/about16.png -------------------------------------------------------------------------------- /Source/images/info_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/info_16px.png -------------------------------------------------------------------------------- /Source/images/info_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/info_24px.png -------------------------------------------------------------------------------- /Source/images/info_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/info_32px.png -------------------------------------------------------------------------------- /Source/images/info_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/info_48px.png -------------------------------------------------------------------------------- /Source/images/move-down_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/move-down_16px.png -------------------------------------------------------------------------------- /Source/images/move-down_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/move-down_24px.png -------------------------------------------------------------------------------- /Source/images/move-down_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/move-down_32px.png -------------------------------------------------------------------------------- /Source/images/move-down_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/move-down_48px.png -------------------------------------------------------------------------------- /Source/images/move-up_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/move-up_16px.png -------------------------------------------------------------------------------- /Source/images/move-up_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/move-up_24px.png -------------------------------------------------------------------------------- /Source/images/move-up_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/move-up_32px.png -------------------------------------------------------------------------------- /Source/images/move-up_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/move-up_48px.png -------------------------------------------------------------------------------- /Source/images/open_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/open_16px.png -------------------------------------------------------------------------------- /Source/images/open_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/open_24px.png -------------------------------------------------------------------------------- /Source/images/open_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/open_32px.png -------------------------------------------------------------------------------- /Source/images/open_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/open_48px.png -------------------------------------------------------------------------------- /Source/images/platform-win32.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/platform-win32.bmp -------------------------------------------------------------------------------- /Source/images/platform-win64.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/platform-win64.bmp -------------------------------------------------------------------------------- /Source/images/platform_andriod.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/platform_andriod.bmp -------------------------------------------------------------------------------- /Source/images/platform_andriod.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/platform_andriod.pdn -------------------------------------------------------------------------------- /Source/images/platform_ios.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/platform_ios.bmp -------------------------------------------------------------------------------- /Source/images/platform_linux.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/platform_linux.bmp -------------------------------------------------------------------------------- /Source/images/platform_macos.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/platform_macos.bmp -------------------------------------------------------------------------------- /Source/images/refresh_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/refresh_16px.png -------------------------------------------------------------------------------- /Source/images/refresh_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/refresh_24px.png -------------------------------------------------------------------------------- /Source/images/refresh_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/refresh_32px.png -------------------------------------------------------------------------------- /Source/images/refresh_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/refresh_48px.png -------------------------------------------------------------------------------- /Source/images/remove_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/remove_16px.png -------------------------------------------------------------------------------- /Source/images/remove_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/remove_24px.png -------------------------------------------------------------------------------- /Source/images/remove_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/remove_32px.png -------------------------------------------------------------------------------- /Source/images/remove_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/remove_48px.png -------------------------------------------------------------------------------- /Source/images/search-black.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/search-black.16.png -------------------------------------------------------------------------------- /Source/images/search-grey-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/search-grey-16.png -------------------------------------------------------------------------------- /Source/images/settings16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/settings16.png -------------------------------------------------------------------------------- /Source/images/settings_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/settings_16px.png -------------------------------------------------------------------------------- /Source/images/settings_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/settings_24px.png -------------------------------------------------------------------------------- /Source/images/settings_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/settings_32px.png -------------------------------------------------------------------------------- /Source/images/settings_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/settings_48px.png -------------------------------------------------------------------------------- /Source/images/upgrade_16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/upgrade_16px.png -------------------------------------------------------------------------------- /Source/images/upgrade_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/upgrade_24px.png -------------------------------------------------------------------------------- /Source/images/upgrade_32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/upgrade_32px.png -------------------------------------------------------------------------------- /Source/images/upgrade_48px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/images/upgrade_48px.png -------------------------------------------------------------------------------- /Source/mainicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DelphiPackageManager/DPM/4bc0ca1bb2f2905cfd58f04e3bbbe6b5ef6ade1e/Source/mainicon.ico -------------------------------------------------------------------------------- /Source/restore.bat: -------------------------------------------------------------------------------- 1 | dpm restore DPM.IDE.XE2.dproj -compiler=XE2 2 | dpm restore DPM.IDE.XE3.dproj -compiler=XE3 3 | dpm restore DPM.IDE.XE4.dproj -compiler=XE4 4 | dpm restore DPM.IDE.XE5.dproj -compiler=XE5 5 | dpm restore DPM.IDE.XE6.dproj -compiler=XE6 6 | dpm restore DPM.IDE.XE7.dproj -compiler=XE7 7 | dpm restore DPM.IDE.XE8.dproj -compiler=XE8 8 | dpm restore DPM.IDE.D100.dproj -compiler=10.0 9 | dpm restore DPM.IDE.D101.dproj -compiler=10.1 10 | dpm restore DPM.IDE.D102.dproj -compiler=10.2 11 | dpm restore DPM.IDE.D103.dproj -compiler=10.3 12 | dpm restore DPM.IDE.D104.dproj -compiler=10.4 13 | 14 | -------------------------------------------------------------------------------- /TestPackages/A/VSoft.A.dspec: -------------------------------------------------------------------------------- 1 | { 2 | metadata: { 3 | id : "VSoft.A", 4 | version : "0.0.1", 5 | description : "Test package A", 6 | authors : "Vincent Parrett", 7 | projectUrl : "https://github.com/DelphiPackageManager/DPM", 8 | license : "Apache-2.0", 9 | copyright : "2019 Vincent Parrett and contributors", 10 | tags : "Test" 11 | }, 12 | targetPlatforms : [ 13 | { 14 | compiler : "XE2", 15 | platforms : "Win32, Win64", 16 | template : "default" 17 | }, 18 | { 19 | compiler : "XE3", 20 | platforms : "Win32, Win64", 21 | template : "default" 22 | }, 23 | { 24 | compiler : "XE4", 25 | platforms : "Win32, Win64", 26 | template : "default" 27 | }, 28 | { 29 | compiler : "XE5", 30 | platforms : "Win32, Win64", 31 | template : "default" 32 | }, 33 | { 34 | compiler : "XE6", 35 | platforms : "Win32, Win64", 36 | template : "default" 37 | }, 38 | { 39 | compiler : "XE7", 40 | platforms : "Win32, Win64", 41 | template : "default" 42 | }, 43 | { 44 | compiler : "XE8", 45 | platforms : "Win32, Win64", 46 | template : "default" 47 | }, 48 | { 49 | compiler : "10.0", 50 | platforms : "Win32, Win64", 51 | template : "default" 52 | }, 53 | { 54 | compiler : "10.1", 55 | platforms : "Win32, Win64", 56 | template : "default" 57 | }, 58 | { 59 | compiler : "10.2", 60 | platforms : "Win32, Win64", 61 | template : "default" 62 | }, 63 | { 64 | compiler : "10.3", 65 | platforms : "Win32, Win64", 66 | template : "default" 67 | }, 68 | { 69 | compiler : "10.4", 70 | platforms : "Win32, Win64", 71 | template : "default" 72 | } 73 | ], 74 | templates : [ 75 | { 76 | name : "default", 77 | dependencies : [ 78 | { 79 | id : "VSoft.B", 80 | version : "[0.0.1,0.0.4]" 81 | }, 82 | { 83 | id : "VSoft.C", 84 | version : "[0.0.3,0.0.7]" 85 | } 86 | 87 | ], 88 | source : [ 89 | { 90 | src : ".\\VSoft.A.pas", 91 | dest : "src" 92 | } 93 | ], 94 | searchPaths : [ 95 | { 96 | path : "src" 97 | } 98 | 99 | ] 100 | } 101 | ] 102 | } -------------------------------------------------------------------------------- /TestPackages/A/VSoft.A.pas: -------------------------------------------------------------------------------- 1 | unit VSoft.A; 2 | 3 | interface 4 | 5 | function A(const a : string) : string; 6 | 7 | implementation 8 | 9 | uses 10 | VSoft.B, 11 | VSoft.C; 12 | 13 | function A(const a : string) : string; 14 | begin 15 | result := 'A = ' + a + B('b') + C('c'); 16 | end; 17 | 18 | end. 19 | -------------------------------------------------------------------------------- /TestPackages/B/VSoft.B.dspec: -------------------------------------------------------------------------------- 1 | { 2 | metadata: { 3 | id : "VSoft.B", 4 | version : "0.0.1", 5 | description : "Test package B", 6 | authors : "Vincent Parrett", 7 | projectUrl : "https://github.com/DelphiPackageManager/DPM", 8 | license : "Apache-2.0", 9 | copyright : "2019 Vincent Parrett and contributors", 10 | tags : "Test" 11 | }, 12 | targetPlatforms : [ 13 | { 14 | compiler : "XE2", 15 | platforms : "Win32, Win64", 16 | template : "default" 17 | }, 18 | { 19 | compiler : "XE3", 20 | platforms : "Win32, Win64", 21 | template : "default" 22 | }, 23 | { 24 | compiler : "XE4", 25 | platforms : "Win32, Win64", 26 | template : "default" 27 | }, 28 | { 29 | compiler : "XE5", 30 | platforms : "Win32, Win64", 31 | template : "default" 32 | }, 33 | { 34 | compiler : "XE6", 35 | platforms : "Win32, Win64", 36 | template : "default" 37 | }, 38 | { 39 | compiler : "XE7", 40 | platforms : "Win32, Win64", 41 | template : "default" 42 | }, 43 | { 44 | compiler : "XE8", 45 | platforms : "Win32, Win64", 46 | template : "default" 47 | }, 48 | { 49 | compiler : "10.0", 50 | platforms : "Win32, Win64", 51 | template : "default" 52 | }, 53 | { 54 | compiler : "10.1", 55 | platforms : "Win32, Win64", 56 | template : "default" 57 | }, 58 | { 59 | compiler : "10.2", 60 | platforms : "Win32, Win64", 61 | template : "default" 62 | }, 63 | { 64 | compiler : "10.3", 65 | platforms : "Win32, Win64", 66 | template : "default" 67 | }, 68 | { 69 | compiler : "10.4", 70 | platforms : "Win32, Win64", 71 | template : "default" 72 | } 73 | ], 74 | templates : [ 75 | { 76 | name : "default", 77 | dependencies : [ 78 | { 79 | id : "VSoft.D", 80 | version : "[0.0.6,0.0.10]" 81 | } 82 | ], 83 | source : [ 84 | { 85 | src : ".\\VSoft.B.pas", 86 | dest : "src" 87 | } 88 | ], 89 | searchPaths : [ 90 | { 91 | path : "src" 92 | } 93 | 94 | ] 95 | } 96 | ] 97 | } -------------------------------------------------------------------------------- /TestPackages/B/VSoft.B.pas: -------------------------------------------------------------------------------- 1 | unit VSoft.B; 2 | 3 | interface 4 | 5 | function B(const b : string) : string; 6 | 7 | implementation 8 | 9 | uses 10 | VSoft.D; 11 | 12 | function B(const b : string) : string; 13 | begin 14 | result := 'B = ' + b + D('d'); 15 | end; 16 | 17 | end. 18 | -------------------------------------------------------------------------------- /TestPackages/C/VSoft.C.dspec: -------------------------------------------------------------------------------- 1 | { 2 | metadata: { 3 | id : "VSoft.C", 4 | version : "0.0.1", 5 | description : "Test package C", 6 | authors : "Vincent Parrett", 7 | projectUrl : "https://github.com/DelphiPackageManager/DPM", 8 | license : "Apache-2.0", 9 | copyright : "2019 Vincent Parrett and contributors", 10 | tags : "Test" 11 | }, 12 | targetPlatforms : [ 13 | { 14 | compiler : "XE2", 15 | platforms : "Win32, Win64", 16 | template : "default" 17 | }, 18 | { 19 | compiler : "XE3", 20 | platforms : "Win32, Win64", 21 | template : "default" 22 | }, 23 | { 24 | compiler : "XE4", 25 | platforms : "Win32, Win64", 26 | template : "default" 27 | }, 28 | { 29 | compiler : "XE5", 30 | platforms : "Win32, Win64", 31 | template : "default" 32 | }, 33 | { 34 | compiler : "XE6", 35 | platforms : "Win32, Win64", 36 | template : "default" 37 | }, 38 | { 39 | compiler : "XE7", 40 | platforms : "Win32, Win64", 41 | template : "default" 42 | }, 43 | { 44 | compiler : "XE8", 45 | platforms : "Win32, Win64", 46 | template : "default" 47 | }, 48 | { 49 | compiler : "10.0", 50 | platforms : "Win32, Win64", 51 | template : "default" 52 | }, 53 | { 54 | compiler : "10.1", 55 | platforms : "Win32, Win64", 56 | template : "default" 57 | }, 58 | { 59 | compiler : "10.2", 60 | platforms : "Win32, Win64", 61 | template : "default" 62 | }, 63 | { 64 | compiler : "10.3", 65 | platforms : "Win32, Win64", 66 | template : "default" 67 | }, 68 | { 69 | compiler : "10.4", 70 | platforms : "Win32, Win64", 71 | template : "default" 72 | } 73 | ], 74 | templates : [ 75 | { 76 | name : "default", 77 | dependencies : [ 78 | { 79 | id : "VSoft.D", 80 | version : "[0.0.1,0.0.8]" 81 | } 82 | ], 83 | source : [ 84 | { 85 | src : ".\\VSoft.C.pas", 86 | dest : "src" 87 | } 88 | ], 89 | searchPaths : [ 90 | { 91 | path : "src" 92 | } 93 | 94 | ] 95 | } 96 | ] 97 | } -------------------------------------------------------------------------------- /TestPackages/C/VSoft.C.pas: -------------------------------------------------------------------------------- 1 | unit VSoft.C; 2 | 3 | interface 4 | 5 | function C(const c : string) : string; 6 | 7 | implementation 8 | 9 | uses 10 | VSoft.D; 11 | 12 | function C(const c : string) : string; 13 | begin 14 | result := 'A = ' + c + D('d'); 15 | end; 16 | 17 | end. 18 | -------------------------------------------------------------------------------- /TestPackages/D/VSoft.D.dspec: -------------------------------------------------------------------------------- 1 | { 2 | metadata: { 3 | id : "VSoft.D", 4 | version : "0.0.1", 5 | description : "Test package D", 6 | authors : "Vincent Parrett", 7 | projectUrl : "https://github.com/DelphiPackageManager/DPM", 8 | license : "Apache-2.0", 9 | copyright : "2019 Vincent Parrett and contributors", 10 | tags : "Test" 11 | }, 12 | targetPlatforms : [ 13 | { 14 | compiler : "XE2", 15 | platforms : "Win32, Win64", 16 | template : "default" 17 | }, 18 | { 19 | compiler : "XE3", 20 | platforms : "Win32, Win64", 21 | template : "default" 22 | }, 23 | { 24 | compiler : "XE4", 25 | platforms : "Win32, Win64", 26 | template : "default" 27 | }, 28 | { 29 | compiler : "XE5", 30 | platforms : "Win32, Win64", 31 | template : "default" 32 | }, 33 | { 34 | compiler : "XE6", 35 | platforms : "Win32, Win64", 36 | template : "default" 37 | }, 38 | { 39 | compiler : "XE7", 40 | platforms : "Win32, Win64", 41 | template : "default" 42 | }, 43 | { 44 | compiler : "XE8", 45 | platforms : "Win32, Win64", 46 | template : "default" 47 | }, 48 | { 49 | compiler : "10.0", 50 | platforms : "Win32, Win64", 51 | template : "default" 52 | }, 53 | { 54 | compiler : "10.1", 55 | platforms : "Win32, Win64", 56 | template : "default" 57 | }, 58 | { 59 | compiler : "10.2", 60 | platforms : "Win32, Win64", 61 | template : "default" 62 | }, 63 | { 64 | compiler : "10.3", 65 | platforms : "Win32, Win64", 66 | template : "default" 67 | }, 68 | { 69 | compiler : "10.4", 70 | platforms : "Win32, Win64", 71 | template : "default" 72 | } 73 | ], 74 | templates : [ 75 | { 76 | name : "default", 77 | source : [ 78 | { 79 | src : ".\\VSoft.D.pas", 80 | dest : "src" 81 | } 82 | ], 83 | searchPaths : [ 84 | { 85 | path : "src" 86 | } 87 | 88 | ] 89 | } 90 | ] 91 | } -------------------------------------------------------------------------------- /TestPackages/D/VSoft.D.pas: -------------------------------------------------------------------------------- 1 | unit VSoft.D; 2 | 3 | interface 4 | 5 | function D(const d : string) : string; 6 | 7 | implementation 8 | 9 | function D(const d : string) : string; 10 | begin 11 | result := 'D = ' + d; 12 | end; 13 | 14 | end. 15 | -------------------------------------------------------------------------------- /TestPackages/E/VSoft.E.dspec: -------------------------------------------------------------------------------- 1 | { 2 | metadata: { 3 | id : "VSoft.E", 4 | version : "0.0.1", 5 | description : "Test package E", 6 | authors : "Vincent Parrett", 7 | projectUrl : "https://github.com/DelphiPackageManager/DPM", 8 | license : "Apache-2.0", 9 | copyright : "2019 Vincent Parrett and contributors", 10 | tags : "Test" 11 | }, 12 | targetPlatforms : [ 13 | { 14 | compiler : "XE2", 15 | platforms : "Win32, Win64", 16 | template : "default" 17 | }, 18 | { 19 | compiler : "XE3", 20 | platforms : "Win32, Win64", 21 | template : "default" 22 | }, 23 | { 24 | compiler : "XE4", 25 | platforms : "Win32, Win64", 26 | template : "default" 27 | }, 28 | { 29 | compiler : "XE5", 30 | platforms : "Win32, Win64", 31 | template : "default" 32 | }, 33 | { 34 | compiler : "XE6", 35 | platforms : "Win32, Win64", 36 | template : "default" 37 | }, 38 | { 39 | compiler : "XE7", 40 | platforms : "Win32, Win64", 41 | template : "default" 42 | }, 43 | { 44 | compiler : "XE8", 45 | platforms : "Win32, Win64", 46 | template : "default" 47 | }, 48 | { 49 | compiler : "10.0", 50 | platforms : "Win32, Win64", 51 | template : "default" 52 | }, 53 | { 54 | compiler : "10.1", 55 | platforms : "Win32, Win64", 56 | template : "default" 57 | }, 58 | { 59 | compiler : "10.2", 60 | platforms : "Win32, Win64", 61 | template : "default" 62 | }, 63 | { 64 | compiler : "10.3", 65 | platforms : "Win32, Win64", 66 | template : "default" 67 | }, 68 | { 69 | compiler : "10.4", 70 | platforms : "Win32, Win64", 71 | template : "default" 72 | } 73 | ], 74 | templates : [ 75 | { 76 | name : "default", 77 | source : [ 78 | { 79 | src : ".\\VSoft.E.pas", 80 | dest : "src" 81 | } 82 | ], 83 | searchPaths : [ 84 | { 85 | path : "src" 86 | } 87 | 88 | ] 89 | } 90 | ] 91 | } -------------------------------------------------------------------------------- /TestPackages/E/VSoft.E.pas: -------------------------------------------------------------------------------- 1 | unit VSoft.E; 2 | 3 | interface 4 | 5 | function E(const a : string) : string; 6 | 7 | implementation 8 | 9 | function E(const a : string) : string; 10 | begin 11 | result := 'E = ' + a; 12 | end; 13 | 14 | end. 15 | -------------------------------------------------------------------------------- /TestPackages/F/VSoft.F.dspec: -------------------------------------------------------------------------------- 1 | { 2 | metadata: { 3 | id : "VSoft.F", 4 | version : "0.0.1", 5 | description : "Test package F", 6 | authors : "Vincent Parrett", 7 | projectUrl : "https://github.com/DelphiPackageManager/DPM", 8 | license : "Apache-2.0", 9 | copyright : "2019 Vincent Parrett and contributors", 10 | tags : "Test" 11 | }, 12 | targetPlatforms : [ 13 | { 14 | compiler : "XE2", 15 | platforms : "Win32, Win64", 16 | template : "default" 17 | }, 18 | { 19 | compiler : "XE3", 20 | platforms : "Win32, Win64", 21 | template : "default" 22 | }, 23 | { 24 | compiler : "XE4", 25 | platforms : "Win32, Win64", 26 | template : "default" 27 | }, 28 | { 29 | compiler : "XE5", 30 | platforms : "Win32, Win64", 31 | template : "default" 32 | }, 33 | { 34 | compiler : "XE6", 35 | platforms : "Win32, Win64", 36 | template : "default" 37 | }, 38 | { 39 | compiler : "XE7", 40 | platforms : "Win32, Win64", 41 | template : "default" 42 | }, 43 | { 44 | compiler : "XE8", 45 | platforms : "Win32, Win64", 46 | template : "default" 47 | }, 48 | { 49 | compiler : "10.0", 50 | platforms : "Win32, Win64", 51 | template : "default" 52 | }, 53 | { 54 | compiler : "10.1", 55 | platforms : "Win32, Win64", 56 | template : "default" 57 | }, 58 | { 59 | compiler : "10.2", 60 | platforms : "Win32, Win64", 61 | template : "default" 62 | }, 63 | { 64 | compiler : "10.3", 65 | platforms : "Win32, Win64", 66 | template : "default" 67 | }, 68 | { 69 | compiler : "10.4", 70 | platforms : "Win32, Win64", 71 | template : "default" 72 | } 73 | ], 74 | templates : [ 75 | { 76 | name : "default", 77 | source : [ 78 | { 79 | src : ".\\VSoft.F.pas", 80 | dest : "src" 81 | } 82 | ], 83 | searchPaths : [ 84 | { 85 | path : "src" 86 | } 87 | 88 | ] 89 | } 90 | ] 91 | } -------------------------------------------------------------------------------- /TestPackages/F/VSoft.F.pas: -------------------------------------------------------------------------------- 1 | unit VSoft.F; 2 | 3 | interface 4 | 5 | function F(const a : string) : string; 6 | 7 | implementation 8 | 9 | function F(const a : string) : string; 10 | begin 11 | result := 'F = ' + a; 12 | end; 13 | 14 | end. 15 | -------------------------------------------------------------------------------- /TestPackages/TestProject/TestProject.dpr: -------------------------------------------------------------------------------- 1 | program TestProject; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | {$R *.res} 6 | 7 | uses 8 | System.SysUtils, 9 | Unit1 in 'Unit1.pas'; 10 | 11 | begin 12 | try 13 | { TODO -oUser -cConsole Main : Insert code here } 14 | WriteLn(Foo); 15 | ReadLn; 16 | except 17 | on E: Exception do 18 | Writeln(E.ClassName, ': ', E.Message); 19 | end; 20 | end. 21 | -------------------------------------------------------------------------------- /TestPackages/TestProject/Unit1.pas: -------------------------------------------------------------------------------- 1 | unit Unit1; 2 | 3 | interface 4 | 5 | uses 6 | VSoft.B; 7 | 8 | function Foo : string; 9 | 10 | implementation 11 | 12 | function Foo : string; 13 | begin 14 | result := B('foo'); 15 | end; 16 | 17 | end. 18 | -------------------------------------------------------------------------------- /TestPackages/TestProject/dpm.config_: -------------------------------------------------------------------------------- 1 | { 2 | "packageCacheLocation": ".\\.packages", 3 | "packageSources": [ 4 | { 5 | "name": "local", 6 | "source": "i:\\dpmfeed", 7 | "enabled": true 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /ThirdParty/readme.txt: -------------------------------------------------------------------------------- 1 | The .dspec files in this folder are so you can build packages for the third party libs we use which do not currently publish packages. 2 | 3 | We will work with the authors to get packages published in the future, once we are close to a 1.0 release. 4 | 5 | Ahausladen.JsonDataObjects - https://github.com/ahausladen/JsonDataObjects 6 | 7 | Spring4D.Core, Spring4D.Base, Spring4D.Extensions - https://bitbucket.org/sglienke/spring4d/src/develop/ 8 | 9 | Gabr42.OmniThreadLibrary - https://github.com/gabr42/OmniThreadLibrary 10 | 11 | The dspec files for these are all available in their repositories - https://github.com/VSoftTechnologies 12 | We also publish packages for these under releases. 13 | 14 | VSoft.AntPatterns 15 | VSoft.Awaitable 16 | VSoft.HttpClient 17 | VSoft.CancellationToken 18 | VSoft.SemanticVersion 19 | VSoft.Uri 20 | VSoft.VirtualListView 21 | --------------------------------------------------------------------------------