private static void DrawEditableDependency(ref PackageDependencyId [] dependencies)
    {
        for (int i = 0; i < dependencies.Length; i++)
        {
            GUILayout.BeginHorizontal();
            dependencies[i].m_nameId = GUILayout.TextField(dependencies[i].m_nameId);
            dependencies[i].m_nameId =
                UnityPaths.NamespaceTrim(dependencies[i].m_nameId);

            dependencies[i].m_versionOrGitUrl = GUILayout.TextField(dependencies[i].m_versionOrGitUrl);
            if (string.IsNullOrEmpty(dependencies[i].m_versionOrGitUrl))
            {
                dependencies[i].m_versionOrGitUrl = "0.0.0";
            }
            GUILayout.EndHorizontal();
        }
        if (GUILayout.Button("Add Dependency"))
        {
            List <PackageDependencyId> d = dependencies.ToList();
            d.Add(new PackageDependencyId());
            dependencies = d.ToArray();
        }
        if (GUILayout.Button("Remove Empty"))
        {
            List <PackageDependencyId> d = dependencies.ToList();

            dependencies = d.Where(k => k.m_nameId != null && k.m_nameId.Length > 0).ToArray();
        }
    }
 public static void GetGitsInParents(string path, out List <GitLinkOnDisk> links)
 {
     links = new List <GitLinkOnDisk>();
     string[] parentsPath = UnityPaths.GetAllParents(path, true);
     for (int i = 0; i < parentsPath.Length; i++)
     {
         if (IsPathContaintGitRoot(parentsPath[i]))
         {
             GitLinkOnDisk gd = new GitLinkOnDisk(parentsPath[i]);
             links.Add(gd);
         }
     }
 }
    public string GetProjectNamespaceId(bool useLower = false)
    {
        string id = string.Format("{0}.{1}.{2}",
                                  UnityPaths.AlphaNumeric(m_country),
                                  UnityPaths.AlphaNumeric(m_company),
                                  UnityPaths.AlphaNumeric(m_projectAlphNumId));

        if (useLower)
        {
            id = id.ToLower();
        }
        return(id);
    }
예제 #4
0
    public FileStream(string folderPath, string fileName, string defaultIfNonExisting, params string[] extension)
    {
        bool   foundOne;
        string filePathFound;

        defaultIfNonExisting = UnityPaths.StartByPoint(defaultIfNonExisting);
        UnityPaths.GetPathOf(folderPath, fileName, extension, out foundOne, out filePathFound);
        if (foundOne)
        {
            m_pathToFile = filePathFound;
        }
        else
        {
            m_pathToFile = (folderPath + "/" + fileName + defaultIfNonExisting);
        }
    }
    private static string GetSamplesCompress(SampleInfo[] samples)
    {
        string[] tokens = new string[samples.Length];
        string   result = "";

        for (int i = 0; i < samples.Length; i++)
        {
            result    = "";
            result   += "\n{";
            result   += string.Format("\n\"displayName\":\"{0}\" ,", samples[i].m_displayName);
            result   += string.Format("\n\"description\":\"{0}\" ,", samples[i].m_description);
            result   += string.Format("\n\"path\":\"{0}\"", UnityPaths.ReplaceByBackslash(samples[i].m_assetRelativePath));
            result   += "\n}";
            tokens[i] = result;
        }
        return(string.Join(",\n", tokens));
    }
예제 #6
0
    public static string[] GetRelativeFoldersIn(SampleDirectoryStream samplesDir)
    {
        if (!samplesDir.Exist())
        {
            return(new string[0]);
        }
        string path = samplesDir.GetCurrentPath();

        string [] folders = Directory.GetDirectories(path);
        for (int i = 0; i < folders.Length; i++)
        {
            folders[i] = (samplesDir.IsVisible() ? "Samples/" : "Samples~/") + UnityPaths.GetRelativePath(path, folders[i]);

            Debug.Log(">>" + folders[i]);
        }
        return(folders);
    }
    private static void LoadSamplesFromDirectoryToPackage(UnityPathSelectionInfo selection, ref PackageBuildInformation package)
    {
        SampleDirectoryStream samplesDir = SampleUtility.GetSampleFolder(selection);

        string[] folders = SampleUtility.GetRelativeFoldersIn(samplesDir);
        for (int i = 0; i < folders.Length; i++)
        {
            string name = folders[i];
            name = UnityPaths.GetLastPartOfPath(name);
            package.m_samples.m_samples.Add(new SampleInfo()
            {
                m_displayName       = name,
                m_assetRelativePath = folders[i],
                m_description       = ""
            });
        }
    }
 public string GetNameSpace()
 {
     return(UnityPaths.NamespaceTrim(m_packageNamespaceId));
 }
 public void SetNameSpace(string namespaceID)
 {
     m_packageNamespaceId = UnityPaths.NamespaceTrim(namespaceID);
 }
    void OnGUI()
    {
        if (m_info == null)
        {
            m_info = new Info(50);
        }

        m_info.m_scollrPackagePosition = GUILayout.BeginScrollView(m_info.m_scollrPackagePosition);
        if (m_info == null)
        {
            m_info = new Info(50);
        }
        if (GUILayout.Button("Refresh"))
        {
            m_gitInProject.Refresh();
        }
        GUILayout.BeginHorizontal();
        GitEditorDrawer.ButtonDeleteEmptyFiles(UnityPaths.GetUnityAssetsPath());
        GitEditorDrawer.ButtonRefreshGitKeeper(UnityPaths.GetUnityAssetsPath());
        GUILayout.EndHorizontal();

        if (GUILayout.Button("Save Them All (Add>Commit)"))
        {
            m_gitInProject.AutoSaveLocal();
        }
        if (GUILayout.Button("Push Them All (A>C>Pull>Push)"))
        {
            m_gitInProject.AutoSaveAndPush();
        }
        m_info.m_inParent = EditorGUILayout.Toggle(" > Git(s) In Parent", m_info.m_inParent, EditorStyles.boldLabel);
        if (m_info.m_inParent)
        {
            List <GitLinkOnDisk> gits = m_gitInProject.GetParents();

            if (gits.Count <= 0)
            {
                GUILayout.Label("None found");
            }
            for (int i = 0; i < gits.Count; i++)
            {
                if (i >= m_info.m_tableCapacity)
                {
                    break;
                }
                GitEditorDrawer.DisplayGitInfoWithCommand(gits[i], ref m_info.m_displayprojectsInfoParent[i], ref m_info.m_displayInfoInGitsParent[i]);
                EditorGUILayout.Space();
            }
        }
        GUILayout.Space(space);
        m_info.m_inProject = EditorGUILayout.Toggle(" > Git(s) In Assets", m_info.m_inProject, EditorStyles.boldLabel);
        if (m_info.m_inProject)
        {
            List <GitLinkOnDisk> gits = m_gitInProject.GetGitInProject();
            if (gits.Count <= 0)
            {
                GUILayout.Label("None found");
            }
            for (int i = 0; i < gits.Count; i++)
            {
                if (i >= m_info.m_tableCapacity)
                {
                    break;
                }
                GitEditorDrawer.DisplayGitInfoWithCommand(gits[i], ref m_info.m_displayprojectsInfoInProject[i], ref m_info.m_displayInfoInGitsInProject[i]);
                EditorGUILayout.Space();
            }
        }

        GUILayout.Space(space);
        GUILayout.EndScrollView();
    }
    public static void DrawPackageEditor(UnityPathSelectionInfo selection, PackageJsonFileStream packageTarget, PackageBuildInformation package)
    {
        string        path      = packageTarget.GetAbsolutePath();
        GitLinkOnDisk gitLinked = packageTarget.GetLinkedGit();

        GUILayout.BeginHorizontal();

        if (GUILayout.Button("Create package.json"))
        {
            LoadSamplesFromDirectoryToPackage(selection, ref package);
            string json = PackageBuilder.GetPackageAsJson(package);
            packageTarget.Set(json, true);
            AssetDatabase.Refresh();
        }
        if (GUILayout.Button("Create Files & Folders"))
        {
            PackageBuilder.CreateUnityPackage(packageTarget.GetPackageProjectRoot(), package);
            AssetDatabase.Refresh();
        }


        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();

        if (string.IsNullOrEmpty(package.m_projectName))
        {
            package.m_projectName = UnityPaths.AlphaNumeric(Application.productName);
        }

        package.m_projectName = (GUILayout.TextField("" + package.m_projectName));
        GUILayout.EndHorizontal();


        GUILayout.BeginHorizontal();


        if (string.IsNullOrEmpty(package.m_projectAlphNumId))
        {
            // package.m_projectAlphNumId = UnityPaths.AlphaNumeric(Application.productName, true);
            package.m_projectAlphNumId = selection.GetSelectName(true);
        }
        if (string.IsNullOrEmpty(package.m_company))
        {
            package.m_company = UnityPaths.AlphaNumeric(Application.companyName);
        }

        package.m_country = UnityPaths.AlphaNumeric(GUILayout.TextField("" + package.m_country));
        GUILayout.Label(".", GUILayout.Width(5));
        package.m_company = UnityPaths.AlphaNumeric(GUILayout.TextField("" + package.m_company));
        GUILayout.Label(".", GUILayout.Width(5));
        package.m_projectAlphNumId = UnityPaths.AlphaNumeric(GUILayout.TextField("" + package.m_projectAlphNumId));
        GUILayout.EndHorizontal();
        GUILayout.Label("Namespace ID: " + package.GetProjectNamespaceId());

        GUILayout.Label("Description");
        package.m_description = GUILayout.TextArea(package.m_description, GUILayout.MinHeight(100));
        GUILayout.BeginHorizontal();
        GUILayout.Label("Tags:", GUILayout.MaxWidth(60));
        package.m_keywords = GUILayout.TextField(string.Join(",", package.m_keywords)).Split(',');
        GUILayout.EndHorizontal();

        GUILayout.Label("Author");
        GUILayout.BeginHorizontal();

        GUILayout.Label("Name: ", GUILayout.MaxWidth(60));
        package.m_author.m_name = GUILayout.TextField(package.m_author.m_name);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("Mail: ", GUILayout.MaxWidth(60));
        package.m_author.m_mail = GUILayout.TextField(package.m_author.m_mail);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("Url: ", GUILayout.MaxWidth(60));
        package.m_author.m_url = GUILayout.TextField(package.m_author.m_url);
        GUILayout.EndHorizontal();


        GUILayout.Label("Repository Info");
        GUILayout.BeginHorizontal();
        GUILayout.Label("Git Url: ", GUILayout.MaxWidth(60));


        package.m_repositoryLink.m_url = GUILayout.TextField(gitLinked.GetUrl());
        GUILayout.EndHorizontal();
        GUILayout.BeginHorizontal();
        GUILayout.Label("Revision: ", GUILayout.MaxWidth(60));
        package.m_repositoryLink.m_revision = GUILayout.TextField(gitLinked.GetLastRevision());

        GUILayout.EndHorizontal();


        GUILayout.Space(10);
        GUILayout.Label("Direct dependence");
        DrawEditableDependency(ref package.m_otherPackageDependency);
        GUILayout.Space(10);
        GUILayout.Label("Relative dependence");
        DrawEditableDependency(ref package.m_otherPackageRelation);


        SampleDirectoryStream sample = SampleUtility.GetSampleFolder(selection);

        SampleEditor.DrawInfoAboutInterface(sample);

        DocumentationDirectoryStream documentation = DocumentationUtility.GetDocumentFolder(selection);

        DocumentationEditor.DrawInfoAboutInterface(documentation);
    }